<?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>111724</bug_id>
          
          <creation_ts>2013-03-07 06:33:54 -0800</creation_ts>
          <short_desc>[V8] Store main world and non-main world templates separately.</short_desc>
          <delta_ts>2013-03-15 08:39:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>111968</dependson>
    
    <dependson>111971</dependson>
    
    <dependson>112136</dependson>
    
    <dependson>112182</dependson>
    
    <dependson>112262</dependson>
    
    <dependson>112444</dependson>
          <blocked>110874</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Marja Hölttä">marja</reporter>
          <assigned_to name="Marja Hölttä">marja</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dcarney</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>850040</commentid>
    <comment_count>0</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-07 06:33:54 -0800</bug_when>
    <thetext>- Add the &quot;world type&quot; parameter to V8PerIsolateData::(rawT|t)emplateMap and store templates for non-main world in a separate map.
- Static FunctionTemplates inside functions need to be separated by world too.
- Currently, all the templates will be equal (the main world ones won&apos;t contain different function pointers than the non-main world ones). After the next step, we&apos;ll specialize the main world templates so that some of them will be different than the non-main world ones.

This is needed for bug 110874 and needs to be done before the patch in bug 111417.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850120</commentid>
    <comment_count>1</comment_count>
      <attachid>192006</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-07 08:35:43 -0800</bug_when>
    <thetext>Created attachment 192006
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850145</commentid>
    <comment_count>2</comment_count>
      <attachid>192006</attachid>
    <who name="">jochen</who>
    <bug_when>2013-03-07 09:13:35 -0800</bug_when>
    <thetext>Comment on attachment 192006
Patch

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

ok

&gt; Source/WebCore/ChangeLog:30
&gt; +        * bindings/v8/custom/V8LocationCustom.cpp:

can you add a comment why you only had to change these custom bindings?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850314</commentid>
    <comment_count>3</comment_count>
      <attachid>192006</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 11:20:34 -0800</bug_when>
    <thetext>Comment on attachment 192006
Patch

Attachment 192006 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17086329

New failing tests:
inspector/extensions/extensions-eval-content-script.html
inspector/extensions/extensions-audits-content-script.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850441</commentid>
    <comment_count>4</comment_count>
      <attachid>192006</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-07 13:27:36 -0800</bug_when>
    <thetext>Comment on attachment 192006
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:792
&gt; +static v8::Handle&lt;v8::Value&gt; ${funcName}AttrGetterCallback(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info)
&gt; +{
&gt; +    if (worldType(info.GetIsolate()) == MainWorld)
&gt; +        return ${interfaceName}V8Internal::${funcName}AttrGetterInMainWorld(name, info);
&gt; +    return ${interfaceName}V8Internal::${funcName}AttrGetterInNonMainWorld(name, info);
&gt; +}

I don&apos;t understand why we need this special case for domain safe functions.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:798
&gt; +sub GenerateDomainSafeFunctionGetterHelper

&quot;Helper&quot; is not a very meaningful name for this function.  Is there a better name we can use?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850640</commentid>
    <comment_count>5</comment_count>
      <attachid>192006</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-07 16:54:20 -0800</bug_when>
    <thetext>Comment on attachment 192006
Patch

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

I might want to see a couple of more iterations:)

&gt; Source/WebCore/ChangeLog:13
&gt; +        No new tests (no changes in functionality yet).

Please update run-bindings-tests.

&gt;&gt; Source/WebCore/ChangeLog:30
&gt;&gt; +        * bindings/v8/custom/V8LocationCustom.cpp:
&gt; 
&gt; can you add a comment why you only had to change these custom bindings?

The change looks reasonable, although I don&apos;t understand why these custom getters are needed in the first place. I tried to kill all of them, but couldn&apos;t due to test failures... (https://bugs.webkit.org/show_bug.cgi?id=109789)

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:784
&gt; +    GenerateDomainSafeFunctionGetterHelper($function, $interfaceName, &quot;InMainWorld&quot;, &quot;MainWorld&quot;);
&gt; +    GenerateDomainSafeFunctionGetterHelper($function, $interfaceName, &quot;InNonMainWorld&quot;, &quot;NonMainWorld&quot;);

Let&apos;s make naming consistent: &quot;ForMainWorld&quot; or &quot;InMainWorld&quot;. You mix both in this patch. It looks like we prefer &quot;ForMainWorld&quot; in V8 bindings.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:-819
&gt; -static v8::Handle&lt;v8::Value&gt; ${funcName}AttrGetterCallback(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info)
&gt; -{
&gt; -    return ${interfaceName}V8Internal::${funcName}AttrGetter(name, info);
&gt; -}
&gt; -

You shouldn&apos;t remove this. We&apos;re currently implementing wrapper methods for all the entry points to DOM custom/non-custom getters/setters/callbacks/constructors. The wrapper methods are named xxxCallback(). The purpose is to enable us to hook all DOM operations (e.g. logging, profiling etc).

Thus, here you can generate:

  static v8::Handle&lt;v8::Value&gt; ${funcName}AttrGetterForMainWorldCallback(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info)
  {
    return ${interfaceName}V8Internal::${funcName}AttrGetterForMainWorld(name, info);
  }

  static v8::Handle&lt;v8::Value&gt; ${funcName}AttrGetterCallback(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info)
  {
    return ${interfaceName}V8Internal::${funcName}AttrGetter(name, info);
  }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852121</commentid>
    <comment_count>6</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-11 01:49:34 -0700</bug_when>
    <thetext>.. I need to split up this patch, too, there are too many fixes to make this work.

Known needed fixes:
- &quot;can access frame&quot; check in (V8)InjectedScriptManager
- killing the static functiontemplate parameters inside generated functions (and V8LocationCustom)
- something has to be done to HasInstance (either check all worlds, or pass a world type)

With these fixes, the 2 failing tests,
inspector/extensions/extensions-eval-content-script.html
and
inspector/extensions/extensions-audits-content-script.html
will pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852122</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-11 01:52:49 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Known needed fixes:
&gt; - &quot;can access frame&quot; check in (V8)InjectedScriptManager
&gt; - killing the static functiontemplate parameters inside generated functions (and V8LocationCustom)
&gt; - something has to be done to HasInstance (either check all worlds, or pass a world type)
&gt; 
&gt; With these fixes, the 2 failing tests,
&gt; inspector/extensions/extensions-eval-content-script.html
&gt; and
&gt; inspector/extensions/extensions-audits-content-script.html
&gt; will pass.

Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853304</commentid>
    <comment_count>8</comment_count>
      <attachid>192704</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-12 04:05:52 -0700</bug_when>
    <thetext>Created attachment 192704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853355</commentid>
    <comment_count>9</comment_count>
      <attachid>192006</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-12 05:05:53 -0700</bug_when>
    <thetext>Comment on attachment 192006
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:13
&gt;&gt; +        No new tests (no changes in functionality yet).
&gt; 
&gt; Please update run-bindings-tests.

Done.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:784
&gt;&gt; +    GenerateDomainSafeFunctionGetterHelper($function, $interfaceName, &quot;InNonMainWorld&quot;, &quot;NonMainWorld&quot;);
&gt; 
&gt; Let&apos;s make naming consistent: &quot;ForMainWorld&quot; or &quot;InMainWorld&quot;. You mix both in this patch. It looks like we prefer &quot;ForMainWorld&quot; in V8 bindings.

Fixed.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:792
&gt;&gt; +}
&gt; 
&gt; I don&apos;t understand why we need this special case for domain safe functions.

I simplified this, so we don&apos;t generate 2 functions (for main and non-main), but only one. That&apos;s not really needed in this step, it was just unnecessarily complication.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:798
&gt;&gt; +sub GenerateDomainSafeFunctionGetterHelper
&gt; 
&gt; &quot;Helper&quot; is not a very meaningful name for this function.  Is there a better name we can use?

This was removed.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:-819
&gt;&gt; -
&gt; 
&gt; You shouldn&apos;t remove this. We&apos;re currently implementing wrapper methods for all the entry points to DOM custom/non-custom getters/setters/callbacks/constructors. The wrapper methods are named xxxCallback(). The purpose is to enable us to hook all DOM operations (e.g. logging, profiling etc).
&gt; 
&gt; Thus, here you can generate:
&gt; 
&gt;   static v8::Handle&lt;v8::Value&gt; ${funcName}AttrGetterForMainWorldCallback(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info)
&gt;   {
&gt;     return ${interfaceName}V8Internal::${funcName}AttrGetterForMainWorld(name, info);
&gt;   }
&gt; 
&gt;   static v8::Handle&lt;v8::Value&gt; ${funcName}AttrGetterCallback(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info)
&gt;   {
&gt;     return ${interfaceName}V8Internal::${funcName}AttrGetter(name, info);
&gt;   }

I wasn&apos;t removing it, it was moved above. Anyway, this part of the code is simpler now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853470</commentid>
    <comment_count>10</comment_count>
      <attachid>192737</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-12 08:06:53 -0700</bug_when>
    <thetext>Created attachment 192737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853476</commentid>
    <comment_count>11</comment_count>
      <attachid>192737</attachid>
    <who name="">jochen</who>
    <bug_when>2013-03-12 08:14:44 -0700</bug_when>
    <thetext>Comment on attachment 192737
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853513</commentid>
    <comment_count>12</comment_count>
      <attachid>192747</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-12 08:56:01 -0700</bug_when>
    <thetext>Created attachment 192747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853562</commentid>
    <comment_count>13</comment_count>
      <attachid>192747</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 09:46:35 -0700</bug_when>
    <thetext>Comment on attachment 192747
Patch

Clearing flags on attachment: 192747

Committed r145554: &lt;http://trac.webkit.org/changeset/145554&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853563</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 09:46:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853725</commentid>
    <comment_count>15</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-12 13:06:23 -0700</bug_when>
    <thetext>I believe this broke several ExtensionBrowserTests:

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=@ToT - chromium.org&amp;testType=browser_tests&amp;tests=ExtensionBrowserTest.RSSMultiRelLink,ExecuteScriptApiTest.ExecuteScriptFrameAfterLoad,ExtensionBrowserTest.PageAction,ExecuteScriptApiTest.ExecuteScriptCallback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853728</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 13:09:46 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 112182</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854223</commentid>
    <comment_count>17</comment_count>
      <attachid>192905</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-13 05:33:14 -0700</bug_when>
    <thetext>Created attachment 192905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854239</commentid>
    <comment_count>18</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-13 06:02:56 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created an attachment (id=192905) [details]
&gt; Patch

What&apos;s the difference from the previous patch? I mean, what is the cause of the ExtensionBrowserTests&apos; failures?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854248</commentid>
    <comment_count>19</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-13 06:19:13 -0700</bug_when>
    <thetext>The difference is that that in this version hasInstance() checks from all worlds, and doesn&apos;t try to do things like
- try to determine the world type from the context
- only check templates from the given world type

This will &quot;fix&quot; the extension tests but only because it won&apos;t uncover some problems that the previous patch uncovered.

But I don&apos;t think we want to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854252</commentid>
    <comment_count>20</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-13 06:23:41 -0700</bug_when>
    <thetext>The change looks reasonable, but how about fixing bug 112250 first? Then you don&apos;t need to introduce GetFromContext, do you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855112</commentid>
    <comment_count>21</comment_count>
      <attachid>193101</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-14 03:24:30 -0700</bug_when>
    <thetext>Created attachment 193101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855113</commentid>
    <comment_count>22</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-14 03:26:46 -0700</bug_when>
    <thetext>The latest patch
- undoes the ugly hasInstance hack and does the check the right way
- does not introduce GetFromContext world type; call sites need to pass the world type explicitly
- fixes the rest of the failing chromium tests by checking hasInstance for all worlds in WebArrayBuffer(View?)

Now that the patch in bug 112262 has landed, all the previously failing chromium browser_tests now pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855114</commentid>
    <comment_count>23</comment_count>
      <attachid>193101</attachid>
    <who name="">jochen</who>
    <bug_when>2013-03-14 03:34:02 -0700</bug_when>
    <thetext>Comment on attachment 193101
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855125</commentid>
    <comment_count>24</comment_count>
      <attachid>193101</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-14 04:14:42 -0700</bug_when>
    <thetext>Comment on attachment 193101
Patch

Clearing flags on attachment: 193101

Committed r145802: &lt;http://trac.webkit.org/changeset/145802&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855126</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-14 04:14:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855969</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 07:10:00 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 112444</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855994</commentid>
    <comment_count>27</comment_count>
      <attachid>193310</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-15 08:04:03 -0700</bug_when>
    <thetext>Created attachment 193310
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855995</commentid>
    <comment_count>28</comment_count>
      <attachid>193310</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-15 08:07:01 -0700</bug_when>
    <thetext>Comment on attachment 193310
Patch

New try, since the landed version of this broke Chrome.

In the new try, we add HasInstanceInAnyWorld, and use that in WebBindings.cpp, and in the places where the previous patch had this multi-world HasInstance checking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856000</commentid>
    <comment_count>29</comment_count>
      <attachid>193310</attachid>
    <who name="">jochen</who>
    <bug_when>2013-03-15 08:14:05 -0700</bug_when>
    <thetext>Comment on attachment 193310
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856008</commentid>
    <comment_count>30</comment_count>
      <attachid>193310</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 08:39:47 -0700</bug_when>
    <thetext>Comment on attachment 193310
Patch

Clearing flags on attachment: 193310

Committed r145906: &lt;http://trac.webkit.org/changeset/145906&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856009</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 08:39:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192006</attachid>
            <date>2013-03-07 08:35:43 -0800</date>
            <delta_ts>2013-03-12 05:05:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111724-20130307173147.patch</filename>
            <type>text/plain</type>
            <size>24979</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjYzOGM5ZmUyZThiZDUz
MTEzNDA4MjU1MDBlOTVkNzJiNThjMDFiMS4uNDY3ZTEzOGY3MDMxNDZmMDU3ZjAyYjExZjhlNjVm
YmM2MjhmZGE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAzLTA3ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFN0b3JlIG1h
aW4gd29ybGQgYW5kIG5vbi1tYWluIHdvcmxkIHRlbXBsYXRlcyBzZXBhcmF0ZWx5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNzI0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgIndvcmxkIHR5
cGUiIHBhcmFtZXRlciB0byBWOFBlcklzb2xhdGVEYXRhOjoocmF3VHx0KWVtcGxhdGVNYXAgYW5k
IHN0b3JlCisgICAgICAgIHRoZSBtYWluIHdvcmxkIGFuZCBub24tbWFpbiB3b3JsZCB0ZW1wbGF0
ZXMgc2VwYXJhdGVseS4gQ3VycmVudGx5LCB0aGUgdGVtcGxhdGVzCisgICAgICAgIHdpbGwgYmUg
ZXF1YWwsIGJ1dCBuZXh0IHdlIHdpbGwgY3VzdG9taXplIHRoZSBtYWluIHdvcmxkIHRlbXBsYXRl
cyB0byBjb250YWluCisgICAgICAgIHBvaW50ZXJzIHRvIG1vcmUgZWZmaWNpZW50IG1haW4gd29y
bGQgdmVyc2lvbnMgZm9yIGdldHRlcnMgLyBzZXR0ZXJzIC8gbWV0aG9kcy4KKworICAgICAgICBO
byBuZXcgdGVzdHMgKG5vIGNoYW5nZXMgaW4gZnVuY3Rpb25hbGl0eSB5ZXQpLgorCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0
ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvbkdldHRlcik6Cisg
ICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvbkdldHRlckhlbHBlcik6CisgICAgICAg
IChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKENyZWF0ZUN1c3RvbVNpZ25hdHVy
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBsYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVy
SXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OFBlcklzb2xhdGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpWOFBlcklzb2xhdGVEYXRhOjpy
YXdUZW1wbGF0ZU1hcCk6CisgICAgICAgIChWOFBlcklzb2xhdGVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6OnRlbXBsYXRlTWFwKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9XcmFwcGVyVHlwZUluZm8uaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhM
b2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWxvYWRBdHRyR2V0dGVyQ3Vz
dG9tSW5NYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpy
ZWxvYWRBdHRyR2V0dGVyQ3VzdG9tSW5Ob25NYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VjhMb2NhdGlvbjo6cmVsb2FkQXR0ckdldHRlckN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpy
ZXBsYWNlQXR0ckdldHRlckN1c3RvbUluTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OnJl
cGxhY2VBdHRyR2V0dGVyQ3VzdG9tSW5Ob25NYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VjhMb2NhdGlvbjo6cmVwbGFjZUF0dHJHZXR0ZXJDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6
YXNzaWduQXR0ckdldHRlckN1c3RvbUluTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OmFz
c2lnbkF0dHJHZXR0ZXJDdXN0b21Jbk5vbk1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpW
OExvY2F0aW9uOjphc3NpZ25BdHRyR2V0dGVyQ3VzdG9tKToKKwogMjAxMy0wMy0wNyAgU2VyZ2lv
IENvcnJlaWEgIDxzZXJnaW8uY29ycmVpYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIE9wZW5H
TFNoaW1zOiBmaXggY2hlY2sgZm9yIEFOR0xFIEdMRVMyIGV4dGVuc2lvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZTM4
YWY0ZDE1NjVkZDliZTVkZjRiZjUwN2YzZjI4ZjZkZmMwMTQzYy4uZWUxMGY0MjJiZWIxNGNhNjg2
ZDNhYzE4NmVjMWRlNDQ4ZGM0MmE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTM2MSw3ICszNjEsNyBAQCBFTkQKIAog
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKICAgICBzdGF0aWMgYm9vbCBIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNv
bGF0ZSopOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJ
c29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljICR7bmF0aXZlVHlwZX0qIHRv
TmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKQEAgLTc3OCwxMCAr
Nzc4LDM0IEBAIHN1YiBHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvbkdldHRlcgogICAgIG15ICRm
dW5jdGlvbiA9IHNoaWZ0OwogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAKKyAgICBt
eSAkZnVuY05hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKworICAgIEdlbmVyYXRl
RG9tYWluU2FmZUZ1bmN0aW9uR2V0dGVySGVscGVyKCRmdW5jdGlvbiwgJGludGVyZmFjZU5hbWUs
ICJJbk1haW5Xb3JsZCIsICJNYWluV29ybGQiKTsKKyAgICBHZW5lcmF0ZURvbWFpblNhZmVGdW5j
dGlvbkdldHRlckhlbHBlcigkZnVuY3Rpb24sICRpbnRlcmZhY2VOYW1lLCAiSW5Ob25NYWluV29y
bGQiLCAiTm9uTWFpbldvcmxkIik7CisKKyAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywg
PDxFTkQpOworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2Z1bmNOYW1lfUF0dHJHZXR0
ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBpZiAod29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSA9PSBN
YWluV29ybGQpCisgICAgICAgIHJldHVybiAke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHtm
dW5jTmFtZX1BdHRyR2V0dGVySW5NYWluV29ybGQobmFtZSwgaW5mbyk7CisgICAgcmV0dXJuICR7
aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke2Z1bmNOYW1lfUF0dHJHZXR0ZXJJbk5vbk1haW5X
b3JsZChuYW1lLCBpbmZvKTsKK30KKworRU5ECisKK30KKworc3ViIEdlbmVyYXRlRG9tYWluU2Fm
ZUZ1bmN0aW9uR2V0dGVySGVscGVyCit7CisgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAg
bXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKKyAgICBteSAkZnVuY1N1ZmZpeCA9IHNoaWZ0Owor
ICAgIG15ICR3b3JsZFR5cGUgPSBzaGlmdDsKKwogICAgIG15ICR2OEludGVyZmFjZU5hbWUgPSAi
VjgiIC4gJGludGVyZmFjZU5hbWU7CiAgICAgbXkgJGZ1bmNOYW1lID0gJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPm5hbWU7CiAKLSAgICBteSAkc2lnbmF0dXJlID0gInY4OjpTaWduYXR1cmU6Ok5ldygi
IC4gJHY4SW50ZXJmYWNlTmFtZSAuICI6OkdldFJhd1RlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgp
KSkiOworICAgIG15ICRzaWduYXR1cmUgPSAidjg6OlNpZ25hdHVyZTo6TmV3KCIgLiAkdjhJbnRl
cmZhY2VOYW1lIC4gIjo6R2V0UmF3VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCksICIgLiAkd29y
bGRUeXBlIC4gIikpIjsKICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJWOERvTm90Q2hlY2tTaWduYXR1cmUifSkgewogICAgICAgICAkc2lnbmF0dXJl
ID0gInY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigpIjsKICAgICB9CkBAIC03OTAsMTAgKzgxNCwx
MCBAQCBzdWIgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIKIAogICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJGcmFtZS5oIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsIDw8
RU5EKTsKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtmdW5jTmFtZX1BdHRyR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2Z1bmNOYW1lfUF0dHJHZXR0ZXIke2Z1
bmNTdWZmaXh9KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+OjpOZXcoaW5mby5HZXRJc29sYXRlKCksICRuZXdUZW1wbGF0ZVN0cmluZyk7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Q
cm90b3R5cGVDaGFpbigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKGluZm8uR2V0SXNv
bGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSk7CisgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVD
aGFpbigke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpLCAk
e3dvcmxkVHlwZX0pKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewogICAgICAgICAvLyBj
YW4gb25seSByZWFjaCBoZXJlIGJ5ICdvYmplY3QuX19wcm90b19fLmZ1bmMnLCBhbmQgaXQgc2hv
dWxkIHBhc3NlZAogICAgICAgICAvLyBkb21haW4gc2VjdXJpdHkgY2hlY2sgYWxyZWFkeQpAQCAt
ODEyLDExICs4MzYsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7ZnVuY05hbWV9
QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgYwogICAgIHJldHVybiBwcml2
YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gJHtmdW5jTmFtZX1BdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCi17Ci0gICAgcmV0dXJuICR7aW50
ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke2Z1bmNOYW1lfUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7
Ci19Ci0KIEVORAogfQogCkBAIC0zMTQ3LDM2ICszMTY2LDM2IEBAIEVORAogICAgIHJldHVybiBk
ZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVy
ZmFjZU5hbWV9OjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFtZX06OkdldFJhd1Rl
bXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkK
IHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVz
dWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0
ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6
VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKHdvcmxk
VHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1h
cCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAg
IHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZShpc29sYXRlKTsKLSAgICBk
YXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgIGRhdGEtPnJhd1Rl
bXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBs
OwogfQogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFj
ZU5hbWV9OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0
ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVN
YXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAg
ICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlJHt2OEludGVyZmFjZU5h
bWV9VGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7
Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29u
ZmlndXJlJHt2OEludGVyZmFjZU5hbWV9VGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwg
d29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAogYm9v
bCAke3Y4SW50ZXJmYWNlTmFtZX06Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgcmV0dXJuIEdldFJhd1RlbXBsYXRl
KGlzb2xhdGUpLT5IYXNJbnN0YW5jZSh2YWx1ZSk7CisgICAgcmV0dXJuIEdldFJhd1RlbXBsYXRl
KGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSktPkhhc0luc3RhbmNlKHZhbHVlKTsKIH0KIAog
RU5ECkBAIC00MDk3LDcgKzQxMTYsNyBAQCBzdWIgQ3JlYXRlQ3VzdG9tU2lnbmF0dXJlCiAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoR2V0VjhIZWFkZXJOYW1lKCR0eXBlKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICRyZXN1bHQgLj0gIlY4JHt0eXBlfTo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkiOwor
ICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIlY4JHt0eXBlfTo6R2V0UmF3VGVtcGxhdGUoaXNv
bGF0ZSwgd29ybGRUeXBlKSI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAkcmVzdWx0IC49ICJ2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcApp
bmRleCAwNDFmNTI5YmI0OTg4OGQzYmNkNDQwMjkwMmMzMDJjMGUyNGExNmYxLi45MGMwMDE1OTFm
ZTkxYTVmZGRhNDhkYzk0MTg3ZjZjMjc2MTgzMjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uY3BwCkBAIC00NCwxMiArNDQsMTIgQEAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4QWRhcHRvckZ1bmN0aW9uOjpnZXRU
ZW1wbGF0ZSh2ODo6SXNvbGF0ZSoKIHsKICAgICBBU1NFUlQoaXNvbGF0ZSk7CiAgICAgVjhQZXJJ
c29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAg
VjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJh
d1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdU
ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjpp
dGVyYXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmlu
Zm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+cmF3VGVtcGxhdGVNYXAod29ybGRUeXBlKS5l
bmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAgICAgLy8gVGhlIGxpZmV0aW1l
IGlzIG9mIG5ld1RlbXBsYXRlIGlzIGRlbGVnYXRlZCB0byB0aGUgVGVtcGxhdGVNYXAgdGh1cyB0
aGlzIHdvbid0IGJlIGxlYWtlZC4KICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gbmV3VGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46
Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCkpOwotICAgIGRhdGEtPnJh
d1RlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCBjb25maWd1cmVUZW1wbGF0ZShuZXdUZW1wbGF0ZSkp
OworICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCBjb25maWd1
cmVUZW1wbGF0ZShuZXdUZW1wbGF0ZSkpOwogICAgIHJldHVybiBuZXdUZW1wbGF0ZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcAppbmRl
eCAwMTAwY2U2ZmFmNjI4NWQ2NGNlNWUyZjIyZTZiYzNhODM3MTJjN2Q1Li44NWYzMjEzOGI4YWRl
ZWI5NGJkNDFkOTEwMDZlNzkxOTAyYzljNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcApAQCAtMTAzLDggKzEwMywxMCBAQCB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjp0b1N0cmluZ1RlbXBs
YXRlKCkKIHZvaWQgVjhQZXJJc29sYXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkJpbmRpbmcp
OwotICAgIGluZm8uYWRkTWVtYmVyKG1fcmF3VGVtcGxhdGVzLCAicmF3VGVtcGxhdGVzIik7Ci0g
ICAgaW5mby5hZGRNZW1iZXIobV90ZW1wbGF0ZXMsICJ0ZW1wbGF0ZXMiKTsKKyAgICBpbmZvLmFk
ZE1lbWJlcihtX3Jhd1RlbXBsYXRlc0Zvck1haW5Xb3JsZCwgInJhd1RlbXBsYXRlc0Zvck1haW5X
b3JsZCIpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcmF3VGVtcGxhdGVzRm9yTm9uTWFpbldvcmxk
LCAicmF3VGVtcGxhdGVzRm9yTm9uTWFpbldvcmxkIik7CisgICAgaW5mby5hZGRNZW1iZXIobV90
ZW1wbGF0ZXNGb3JNYWluV29ybGQsICJ0ZW1wbGF0ZXNGb3JNYWluV29ybGQiKTsKKyAgICBpbmZv
LmFkZE1lbWJlcihtX3RlbXBsYXRlc0Zvck5vbk1haW5Xb3JsZCwgInRlbXBsYXRlc0Zvck5vbk1h
aW5Xb3JsZCIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fc3RyaW5nQ2FjaGUsICJzdHJpbmdDYWNo
ZSIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1faW50ZWdlckNhY2hlLCAiaW50ZWdlckNhY2hlIik7
CiAgICAgaW5mby5hZGRNZW1iZXIobV9kb21EYXRhTGlzdCwgImRvbURhdGFMaXN0Iik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmgKaW5kZXggMzNjZDg0
OTk0Nzk3ODg4YzgzOGQxMTQwZjk4ZWM2MGVkNmFiMzYwOC4uZTdlNDhjODNlODRjNTk3NmFlZGE1
ZDZkMmE1ZmUxZGIzZjFjNDcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhQZXJJc29sYXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UGVySXNvbGF0ZURhdGEuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBWOFBlcklzb2xhdGVE
YXRhX2gKIAogI2luY2x1ZGUgIlNjb3BlZFBlcnNpc3RlbnQuaCIKKyNpbmNsdWRlICJXcmFwcGVy
VHlwZUluZm8uaCIKICNpbmNsdWRlIDx2OC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTY2LDggKzY3LDE5IEBAIHB1YmxpYzoKIAogICAg
IHR5cGVkZWYgSGFzaE1hcDxXcmFwcGVyVHlwZUluZm8qLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gPiBUZW1wbGF0ZU1hcDsKIAotICAgIFRlbXBsYXRlTWFwJiByYXdUZW1w
bGF0ZU1hcCgpIHsgcmV0dXJuIG1fcmF3VGVtcGxhdGVzOyB9Ci0gICAgVGVtcGxhdGVNYXAmIHRl
bXBsYXRlTWFwKCkgeyByZXR1cm4gbV90ZW1wbGF0ZXM7IH0KKyAgICBUZW1wbGF0ZU1hcCYgcmF3
VGVtcGxhdGVNYXAoV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCisgICAgeworICAgICAgICBp
ZiAod29ybGRUeXBlID09IE1haW5Xb3JsZCkKKyAgICAgICAgICAgIHJldHVybiBtX3Jhd1RlbXBs
YXRlc0Zvck1haW5Xb3JsZDsKKyAgICAgICAgcmV0dXJuIG1fcmF3VGVtcGxhdGVzRm9yTm9uTWFp
bldvcmxkOworICAgIH0KKworICAgIFRlbXBsYXRlTWFwJiB0ZW1wbGF0ZU1hcChXcmFwcGVyV29y
bGRUeXBlIHdvcmxkVHlwZSkKKyAgICB7CisgICAgICAgIGlmICh3b3JsZFR5cGUgPT0gTWFpbldv
cmxkKQorICAgICAgICAgICAgcmV0dXJuIG1fdGVtcGxhdGVzRm9yTWFpbldvcmxkOworICAgICAg
ICByZXR1cm4gbV90ZW1wbGF0ZXNGb3JOb25NYWluV29ybGQ7CisgICAgfQogCiAgICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdG9TdHJpbmdUZW1wbGF0ZSgpOwogICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiYgbGF6eUV2ZW50TGlzdGVuZXJUb1N0cmlu
Z1RlbXBsYXRlKCkKQEAgLTEzMiw4ICsxNDQsMTAgQEAgcHJpdmF0ZToKICAgICB+VjhQZXJJc29s
YXRlRGF0YSgpOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JP
ZlRvU3RyaW5nKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKIAotICAgIFRlbXBsYXRlTWFwIG1fcmF3
VGVtcGxhdGVzOwotICAgIFRlbXBsYXRlTWFwIG1fdGVtcGxhdGVzOworICAgIFRlbXBsYXRlTWFw
IG1fcmF3VGVtcGxhdGVzRm9yTWFpbldvcmxkOworICAgIFRlbXBsYXRlTWFwIG1fcmF3VGVtcGxh
dGVzRm9yTm9uTWFpbldvcmxkOworICAgIFRlbXBsYXRlTWFwIG1fdGVtcGxhdGVzRm9yTWFpbldv
cmxkOworICAgIFRlbXBsYXRlTWFwIG1fdGVtcGxhdGVzRm9yTm9uTWFpbldvcmxkOwogICAgIFNj
b3BlZFBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1fdG9TdHJpbmdUZW1wbGF0ZTsK
ICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbV9sYXp5RXZlbnRMaXN0
ZW5lclRvU3RyaW5nVGVtcGxhdGU7CiAgICAgT3duUHRyPFN0cmluZ0NhY2hlPiBtX3N0cmluZ0Nh
Y2hlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJ
bmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAppbmRl
eCA0NTZlMDAyMDE5ZmZhYjU0MmZkZWI1ZmNhZTc2ODhmNzk1MGFhMzU2Li5lMjhiNjYyMmJkMTc0
ZjFlMmNlNDQ1YTI5MDY5NzkzZWE4MDMwNmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9XcmFwcGVyVHlwZUluZm8uaApAQCAtNTIsNyArNTIsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgZW51bSBXcmFwcGVyV29ybGRUeXBlIHsKICAgICAgICAgTWFpbldvcmxkLAogICAg
ICAgICBJc29sYXRlZFdvcmxkLAotICAgICAgICBXb3JrZXJXb3JsZAorICAgICAgICBXb3JrZXJX
b3JsZCwKKyAgICAgICAgLy8gTm9uTWFpbldvcmxkIGlzIHVzZWQgYXMgYSBwYXJhbWV0ZXIgdG8g
ZnVuY3Rpb25zIHdoZXJlIGl0IG9ubHkgbWF0dGVycyBpZiB0aGUgd29ybGQgdHlwZSBpcyBNYWlu
V29ybGQgb3Igc29tZXRoaW5nIGVsc2UuCisgICAgICAgIE5vbk1haW5Xb3JsZAogICAgIH07CiAK
ICAgICB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAoKkdldFRl
bXBsYXRlRnVuY3Rpb24pKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5j
cHAKaW5kZXggNmI2ZmU2ZjYxNWRlNzM2ZGZkYWY0NzVhMTQyMDczZjNlN2UzZmEzNi4uMzZkZjgz
MTdkODBiMGRjNzk1ZWM5YTNmMWQyZTQwYmRjMDRkOGEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMTM2
LDExICsxMzYsNzAgQEAgdm9pZCBWOExvY2F0aW9uOjpzZWFyY2hBdHRyU2V0dGVyQ3VzdG9tKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djgKICAgICBpbXBsLT5zZXRTZWFy
Y2goc2VhcmNoLCBhY3RpdmVET01XaW5kb3coc3RhdGUpLCBmaXJzdERPTVdpbmRvdyhzdGF0ZSkp
OwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQXR0ckdldHRl
ckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiByZWxvYWRBdHRyR2V0dGVyQ3VzdG9tSW5N
YWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSBpbmZvLkdldElzb2xhdGUo
KTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZh
dGVUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlz
b2xhdGUsIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6cmVsb2FkTWV0aG9k
Q3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0
UmF3VGVtcGxhdGUoaXNvbGF0ZSwgTWFpbldvcmxkKSkpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWlu
KFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUsIE1haW5Xb3JsZCkpOworICAgIGlmICho
b2xkZXIuSXNFbXB0eSgpKSB7CisgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29i
amVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCisgICAgICAgIC8vIGRv
bWFpbiBzZWN1cml0eSBjaGVjayBhbHJlYWR5CisgICAgICAgIHJldHVybiBwcml2YXRlVGVtcGxh
dGUtPkdldEZ1bmN0aW9uKCk7CisgICAgfQorICAgIExvY2F0aW9uKiBpbXAgPSBWOExvY2F0aW9u
Ojp0b05hdGl2ZShob2xkZXIpOworICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxv
d0FjY2Vzc1RvRnJhbWUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpLCBpbXAtPmZyYW1lKCksIERv
Tm90UmVwb3J0U2VjdXJpdHlFcnJvcikpIHsKKyAgICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpO
ZXcoVjhMb2NhdGlvbjo6cmVsb2FkTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2ln
bmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgTWFpbldvcmxk
KSkpKTsKKyAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOworICAg
IH0KKyAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOworfQorCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gcmVsb2FkQXR0ckdldHRlckN1c3RvbUluTm9uTWFpbldvcmxkKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewogICAgIHY4OjpJc29sYXRlKiBpc29sYXRlID0gaW5mby5HZXRJc29sYXRlKCk7Ci0gICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUg
PSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlbG9hZE1ldGhvZEN1c3RvbSwgdjhV
bmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRl
KGlzb2xhdGUpKSkpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5U
aGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxh
dGUoaXNvbGF0ZSwgd29ybGRUeXBlKGlzb2xhdGUpKSk7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0
ZTo6TmV3KFY4TG9jYXRpb246OnJlbG9hZE1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6
OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIE5vbk1h
aW5Xb3JsZCkpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRo
aXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9uOjpHZXRUZW1wbGF0
ZShpc29sYXRlLCBOb25NYWluV29ybGQpKTsKKyAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewor
ICAgICAgICAvLyBjYW4gb25seSByZWFjaCBoZXJlIGJ5ICdvYmplY3QuX19wcm90b19fLmZ1bmMn
LCBhbmQgaXQgc2hvdWxkIHBhc3NlZAorICAgICAgICAvLyBkb21haW4gc2VjdXJpdHkgY2hlY2sg
YWxyZWFkeQorICAgICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwor
ICAgIH0KKyAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsK
KyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRp
bmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJy
b3IpKSB7CisgICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gc2hhcmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46
Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlbG9h
ZE1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRp
b246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIE5vbk1haW5Xb3JsZCkpKSk7CisgICAgICAgIHJl
dHVybiBzaGFyZWRUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKKyAgICB9CisgICAgcmV0dXJuIHBy
aXZhdGVUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4TG9jYXRpb246OnJlbG9hZEF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgaWYgKHdvcmxkVHlw
ZShpbmZvLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKQorICAgICAgICByZXR1cm4gcmVsb2Fk
QXR0ckdldHRlckN1c3RvbUluTWFpbldvcmxkKG5hbWUsIGluZm8pOworICAgIHJldHVybiByZWxv
YWRBdHRyR2V0dGVyQ3VzdG9tSW5Ob25NYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiByZXBsYWNlQXR0ckdldHRlckN1c3RvbUluTWFpbldvcmxkKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreyAg
ICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IGluZm8uR2V0SXNvbGF0ZSgpOworICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZXBsYWNlTWV0aG9kQ3VzdG9tLCB2OFVuZGVm
aW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNv
bGF0ZSwgTWFpbldvcmxkKSkpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9
IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246Okdl
dFRlbXBsYXRlKGlzb2xhdGUsIE1haW5Xb3JsZCkpOworICAgIGlmIChob2xkZXIuSXNFbXB0eSgp
KSB7CisgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18u
ZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCisgICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBj
aGVjayBhbHJlYWR5CisgICAgICAgIHJldHVybiBwcml2YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9u
KCk7CisgICAgfQorICAgIExvY2F0aW9uKiBpbXAgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShob2xk
ZXIpOworICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUo
QmluZGluZ1N0YXRlOjppbnN0YW5jZSgpLCBpbXAtPmZyYW1lKCksIERvTm90UmVwb3J0U2VjdXJp
dHlFcnJvcikpIHsKKyAgICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPjo6TmV3KGlzb2xhdGUsIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6
cmVwbGFjZU1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4
TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIE1haW5Xb3JsZCkpKSk7CisgICAgICAg
IHJldHVybiBzaGFyZWRUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKKyAgICB9CisgICAgcmV0dXJu
IHByaXZhdGVUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHJlcGxhY2VBdHRyR2V0dGVyQ3VzdG9tSW5Ob25NYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7ICAgIHY4OjpJc29s
YXRlKiBpc29sYXRlID0gaW5mby5HZXRJc29sYXRlKCk7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0
ZTo6TmV3KFY4TG9jYXRpb246OnJlcGxhY2VNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4
OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCBOb25N
YWluV29ybGQpKSkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5U
aGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxh
dGUoaXNvbGF0ZSwgTm9uTWFpbldvcmxkKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsK
ICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5j
JywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5IGNoZWNr
IGFscmVhZHkKQEAgLTE0OCw3ICsyMDcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2Nh
dGlvbjo6cmVsb2FkQXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogICAg
IH0KICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsKICAg
ICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdT
dGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3Ip
KSB7Ci0gICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
c2hhcmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5l
dyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlbG9hZE1l
dGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246
OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpKSkpOworICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhWOExvY2F0aW9uOjpyZXBsYWNlTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6
U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgTm9uTWFp
bldvcmxkKSkpKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigp
OwogICAgIH0KICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpAQCAt
MTU2LDkgKzIxNSwxNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2Fk
QXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogCiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CisgICAgaWYg
KHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKQorICAgICAgICByZXR1
cm4gcmVwbGFjZUF0dHJHZXR0ZXJDdXN0b21Jbk1haW5Xb3JsZChuYW1lLCBpbmZvKTsKKyAgICBy
ZXR1cm4gcmVwbGFjZUF0dHJHZXR0ZXJDdXN0b21Jbk5vbk1haW5Xb3JsZChuYW1lLCBpbmZvKTsK
K30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFzc2lnbkF0dHJHZXR0ZXJDdXN0b21Jbk1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKICAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IGluZm8uR2V0SXNvbGF0ZSgpOwot
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRl
bXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0
ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZXBsYWNlTWV0aG9kQ3Vz
dG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3
VGVtcGxhdGUoaXNvbGF0ZSkpKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIg
PSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9uOjpH
ZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkpKTsKKyAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9CisgICAg
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHY4
OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6YXNzaWduTWV0aG9kQ3VzdG9tLCB2
OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxh
dGUoaXNvbGF0ZSwgTWFpbldvcmxkKSkpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhv
bGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRp
b246OkdldFRlbXBsYXRlKGlzb2xhdGUsIE1haW5Xb3JsZCkpOwogICAgIGlmIChob2xkZXIuSXNF
bXB0eSgpKSB7CiAgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3By
b3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCiAgICAgICAgIC8vIGRvbWFpbiBzZWN1
cml0eSBjaGVjayBhbHJlYWR5CkBAIC0xNjYsMTggKzIzMywxOCBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpT
dHJpbmc+CiAgICAgfQogICAgIExvY2F0aW9uKiBpbXAgPSBWOExvY2F0aW9uOjp0b05hdGl2ZSho
b2xkZXIpOwogICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJh
bWUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpLCBpbXAtPmZyYW1lKCksIERvTm90UmVwb3J0U2Vj
dXJpdHlFcnJvcikpIHsKLSAgICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPjo6TmV3KGlzb2xhdGUsIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlv
bjo6cmVwbGFjZU1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3
KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpKSkpOworICAgICAgICBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20sIHY4VW5kZWZp
bmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29s
YXRlLCBNYWluV29ybGQpKSkpOwogICAgICAgICByZXR1cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1
bmN0aW9uKCk7CiAgICAgfQogICAgIHJldHVybiBwcml2YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9u
KCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjphc3NpZ25BdHRyR2V0
dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFzc2lnbkF0dHJHZXR0ZXJDdXN0b21J
bk5vbk1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IGluZm8uR2V0SXNv
bGF0ZSgpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
cHJpdmF0ZVRlbXBsYXRlID0KLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9u
Ojphc3NpZ25NZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhW
OExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSkpKTsKLSAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNo
YWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSkp
OworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29s
YXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OmFzc2lnbk1ldGhvZEN1
c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJh
d1RlbXBsYXRlKGlzb2xhdGUsIE5vbk1haW5Xb3JsZCkpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFp
bihWOExvY2F0aW9uOjpHZXRUZW1wbGF0ZShpc29sYXRlLCBOb25NYWluV29ybGQpKTsKICAgICBp
ZiAoaG9sZGVyLklzRW1wdHkoKSkgewogICAgICAgICAvLyBjYW4gb25seSByZWFjaCBoZXJlIGJ5
ICdvYmplY3QuX19wcm90b19fLmZ1bmMnLCBhbmQgaXQgc2hvdWxkIHBhc3NlZAogICAgICAgICAv
LyBkb21haW4gc2VjdXJpdHkgY2hlY2sgYWxyZWFkeQpAQCAtMTg1LDEyICsyNTIsMTkgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OmFzc2lnbkF0dHJHZXR0ZXJDdXN0b20odjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAgICB9CiAgICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRp
b246OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFs
bG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUoKSwg
RG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKSkgewotICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpT
aWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSkpKTsKKyAg
ICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRU
ZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xh
dGUsIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6YXNzaWduTWV0aG9kQ3Vz
dG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3
VGVtcGxhdGUoaXNvbGF0ZSwgTm9uTWFpbldvcmxkKSkpKTsKICAgICAgICAgcmV0dXJuIHNoYXJl
ZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KICAgICByZXR1cm4gcHJpdmF0ZVRlbXBs
YXRlLT5HZXRGdW5jdGlvbigpOwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlv
bjo6YXNzaWduQXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBpZiAod29ybGRUeXBlKGluZm8uR2V0
SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpCisgICAgICAgIHJldHVybiBhc3NpZ25BdHRyR2V0dGVy
Q3VzdG9tSW5NYWluV29ybGQobmFtZSwgaW5mbyk7CisgICAgcmV0dXJuIGFzc2lnbkF0dHJHZXR0
ZXJDdXN0b21Jbk5vbk1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZE1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIExvY2F0aW9uKiBpbXBsID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192704</attachid>
            <date>2013-03-12 04:05:52 -0700</date>
            <delta_ts>2013-03-12 08:06:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111724-20130312120151.patch</filename>
            <type>text/plain</type>
            <size>89366</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdhODVlYjM5MDBmYmE0
YjY2NGQ1NjM2YTFlZTcxMzFkMTEwMzU5Zi4uNTVhM2EwZjUxNWY2MjA0NzMxZWFlNDI3MjQ3ZjE0
YWFkOTA3ZDZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEyNCBAQAogMjAxMy0wMy0xMiAgTWFy
amEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW1Y4XSBTdG9yZSBt
YWluIHdvcmxkIGFuZCBub24tbWFpbiB3b3JsZCB0ZW1wbGF0ZXMgc2VwYXJhdGVseS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTcyNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAo
dXBkYXRlZCBleGlzdGluZyBiaW5kaW5ncyB0ZXN0cykuCisKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAg
ICAgICAgKEdlbmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKEdlbmVy
YXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoQ3JlYXRlQ3VzdG9tU2lnbmF0dXJlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOEZsb2F0NjRBcnJheTo6R2V0UmF3VGVtcGxhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhGbG9hdDY0QXJyYXk6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
RmxvYXQ2NEFycmF5OjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5Lmg6CisgICAgICAgIChWOEZsb2F0NjRBcnJheSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6cG9zdE1l
c3NhZ2VBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEFjdGl2
ZURPTU9iamVjdFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURPTU9i
amVjdDo6R2V0UmF3VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZlRE9N
T2JqZWN0OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RBY3RpdmVET01P
YmplY3Q6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgIChWOFRlc3RBY3RpdmVET01PYmplY3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdl
dHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6R2V0
UmF3VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6
OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEN1c3RvbU5hbWVkR2V0dGVy
OjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEN1c3RvbU5hbWVkR2V0dGVyLmg6CisgICAgICAgIChWOFRlc3RDdXN0b21OYW1lZEdldHRlcik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0UmF3
VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0
VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SGFz
SW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dENvbnN0cnVjdG9yLmg6CisgICAgICAgIChWOFRlc3RFdmVudENvbnN0cnVjdG9yKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRlc3RFdmVudFRhcmdldDo6R2V0UmF3VGVtcGxhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRUYXJnZXQ6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4VGVzdEV2ZW50VGFyZ2V0OjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0Lmg6CisgICAgICAgIChWOFRlc3RF
dmVudFRhcmdldCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4
Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFeGNlcHRpb246OkdldFJhd1Rl
bXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXhjZXB0aW9uOjpIYXNJbnN0YW5jZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oOgorICAgICAg
ICAoVjhUZXN0RXhjZXB0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdElu
dGVyZmFjZVRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEludGVyZmFjZTo6R2V0
UmF3VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0SW50ZXJmYWNlOjpHZXRUZW1w
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6Okhhc0luc3RhbmNlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmg6Cisg
ICAgICAgIChWOFRlc3RJbnRlcmZhY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OkdldFJhd1RlbXBsYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OkdldFRlbXBsYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6Okhhc0luc3RhbmNl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5oOgorICAgICAgICAoVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6R2V0UmF3VGVt
cGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6R2V0VGVt
cGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SGFzSW5z
dGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENv
bnN0cnVjdG9yLmg6CisgICAgICAgIChWOFRlc3ROYW1lZENvbnN0cnVjdG9yKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOFRlc3ROb2RlOjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRl
c3ROb2RlOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpIYXNJ
bnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUu
aDoKKyAgICAgICAgKFY4VGVzdE5vZGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0T2Jq
VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2JqOjpHZXRSYXdUZW1wbGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4VGVzdE9iajo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPYmouaDoKKyAgICAgICAgKFY4VGVzdE9iaik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6R2V0UmF3
VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChWOFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0UmF3VGVtcGxhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpH
ZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2U6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmg6CisgICAgICAgIChW
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b25maWd1cmVWOFRlc3RUeXBlZGVmc1RlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dFR5cGVkZWZzOjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RUeXBl
ZGVmczo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0VHlwZWRlZnM6Okhh
c0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlw
ZWRlZnMuaDoKKyAgICAgICAgKFY4VGVzdFR5cGVkZWZzKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEFkYXB0b3JGdW5j
dGlvbjo6Z2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJJc29sYXRlRGF0YTo6cmVwb3J0TWVtb3J5
VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJJc29sYXRlRGF0YTo6cHJpdmF0ZVRlbXBs
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmg6CisgICAgICAg
IChXZWJDb3JlOjpWOFBlcklzb2xhdGVEYXRhOjpyYXdUZW1wbGF0ZU1hcCk6CisgICAgICAgIChW
OFBlcklzb2xhdGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6OnRl
bXBsYXRlTWFwKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZWxvYWRBdHRyR2V0dGVyQ3Vz
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnJlcGxhY2VBdHRyR2V0dGVyQ3Vz
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OmFzc2lnbkF0dHJHZXR0ZXJDdXN0
b20pOgorCisyMDEzLTAzLTEyICBNYXJqYSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4K
KwogICAgICAgICBbVjhdIEdldCByaWQgb2YgZnVuY3Rpb24tbGV2ZWwgc3RhdGljIEZ1bmN0aW9u
VGVtcGxhdGVzIGluIGdlbmVyYXRlZCBiaW5kaW5ncyBjb2RlCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE5NzEKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCA4YzI1N2M5ZTdl
OGY2Y2I2MDcwMGE2ZTI4YmI2ODcwNjJhMjkyMDk4Li4yYjNmYjc3OTU3MjE4Zjg5MjJkNzE2ZmZk
NGYzMTBlODZlMjcxYjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMzYxLDcgKzM2MSw3IEBAIEVORAogCiAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7
CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdU
ZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUq
LCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgJHtuYXRpdmVUeXBlfSogdG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpAQCAtNzgxLDcgKzc4MSw3IEBA
IHN1YiBHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvbkdldHRlcgogICAgIG15ICR2OEludGVyZmFj
ZU5hbWUgPSAiVjgiIC4gJGludGVyZmFjZU5hbWU7CiAgICAgbXkgJGZ1bmNOYW1lID0gJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAKLSAgICBteSAkc2lnbmF0dXJlID0gInY4OjpTaWduYXR1
cmU6Ok5ldygiIC4gJHY4SW50ZXJmYWNlTmFtZSAuICI6OkdldFJhd1RlbXBsYXRlKGluZm8uR2V0
SXNvbGF0ZSgpKSkiOworICAgIG15ICRzaWduYXR1cmUgPSAidjg6OlNpZ25hdHVyZTo6TmV3KCIg
LiAkdjhJbnRlcmZhY2VOYW1lIC4gIjo6R2V0UmF3VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCks
IGN1cnJlbnRXb3JsZFR5cGUpKSI7CiAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiVjhEb05vdENoZWNrU2lnbmF0dXJlIn0pIHsKICAgICAgICAgJHNp
Z25hdHVyZSA9ICJ2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4oKSI7CiAgICAgfQpAQCAtMzE1Miwz
NiArMzE1MiwzOCBAQCBFTkQKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0UmF3VGVtcGxhdGUo
djg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gJHt2OEludGVyZmFjZU5hbWV9OjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSog
ZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRl
RGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFw
KCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgp
LmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1
bHQgPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlm
IChyZXN1bHQgIT0gZGF0YS0+cmF3VGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAg
ICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2Nv
cGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3Jl
YXRlUmF3VGVtcGxhdGUoaXNvbGF0ZSk7Ci0gICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQo
JmluZm8sIHRlbXBsKTsKKyAgICBkYXRhLT5yYXdUZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgm
aW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAogdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVy
SXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAg
IFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50
ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxh
dGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0
b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAg
ICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAg
ICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0g
ICAgICAgIENvbmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKEdldFJhd1RlbXBsYXRl
KGlzb2xhdGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKCku
YWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1lfVRl
bXBsYXRlKEdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxk
VHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBs
KTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKIGJvb2wgJHt2OEludGVyZmFjZU5hbWV9OjpIYXNJ
bnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRl
KQogewotICAgIHJldHVybiBHZXRSYXdUZW1wbGF0ZShpc29sYXRlKS0+SGFzSW5zdGFuY2UodmFs
dWUpOworICAgIHJldHVybiBHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCBNYWluV29ybGQpLT5IYXNJ
bnN0YW5jZSh2YWx1ZSkKKyAgICAgICAgfHwgR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgSXNvbGF0
ZWRXb3JsZCktPkhhc0luc3RhbmNlKHZhbHVlKQorICAgICAgICB8fCBHZXRSYXdUZW1wbGF0ZShp
c29sYXRlLCBXb3JrZXJXb3JsZCktPkhhc0luc3RhbmNlKHZhbHVlKTsKIH0KIAogRU5ECkBAIC00
MTAyLDcgKzQxMDQsNyBAQCBzdWIgQ3JlYXRlQ3VzdG9tU2lnbmF0dXJlCiAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoR2V0VjhI
ZWFkZXJOYW1lKCR0eXBlKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICRy
ZXN1bHQgLj0gIlY4JHt0eXBlfTo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkiOworICAgICAgICAg
ICAgICAgICRyZXN1bHQgLj0gIlY4JHt0eXBlfTo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgd29y
bGRUeXBlKSI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAk
cmVzdWx0IC49ICJ2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJh
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0
QXJyYXkuY3BwCmluZGV4IGZmM2RlNTZmYTg1ODRmNTdlNGY4NjgyOWY5ZWQzMjZlMzgyZGVlYjAu
LmQ2MjQ5NWY3OWVhZGE2M2M3Y2ZlZDViNjc2MzFhNGM3YTM4YjBkY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFy
cmF5LmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSh2ODo6CiAKICAg
ICAvLyBDdXN0b20gU2lnbmF0dXJlICdmb28nCiAgICAgY29uc3QgaW50IGZvb0FyZ2MgPSAxOwot
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZvb0FyZ3ZbZm9vQXJnY10gPSB7
IFY4RmxvYXQzMkFycmF5OjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSB9OworICAgIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZvb0FyZ3ZbZm9vQXJnY10gPSB7IFY4RmxvYXQzMkFy
cmF5OjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRs
ZTx2ODo6U2lnbmF0dXJlPiBmb29TaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywg
Zm9vQXJnYywgZm9vQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2wo
ImZvbyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KEZsb2F0NjRBcnJheVY4SW50ZXJuYWw6
OmZvb01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBmb29TaWduYXR1cmUpKTsKIApAQCAt
MTYyLDM2ICsxNjIsMzggQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBDb25maWd1cmVWOEZsb2F0NjRBcnJheVRlbXBsYXRlKHY4OjoKICAgICByZXR1cm4gZGVz
YzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4RmxvYXQ2NEFy
cmF5OjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEZsb2F0NjRBcnJheTo6R2V0UmF3VGVtcGxhdGUodjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4
UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwot
ICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRh
LT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+
cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1h
cDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5k
KCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKHdvcmxkVHlw
ZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRs
ZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKGlzb2xhdGUpOwotICAgIGRhdGEtPnJhd1Rl
bXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEZsb2F0NjRBcnJheTo6R2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQog
ewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1
bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5k
KCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSku
ZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNj
b3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUoR2V0UmF3
VGVtcGxhdGUoaXNvbGF0ZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxh
dGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhGbG9hdDY0QXJy
YXlUZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3
b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0
ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCiBib29sIFY4RmxvYXQ2NEFycmF5OjpIYXNJ
bnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRl
KQogewotICAgIHJldHVybiBHZXRSYXdUZW1wbGF0ZShpc29sYXRlKS0+SGFzSW5zdGFuY2UodmFs
dWUpOworICAgIHJldHVybiBHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCBNYWluV29ybGQpLT5IYXNJ
bnN0YW5jZSh2YWx1ZSkKKyAgICAgICAgfHwgR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgSXNvbGF0
ZWRXb3JsZCktPkhhc0luc3RhbmNlKHZhbHVlKQorICAgICAgICB8fCBHZXRSYXdUZW1wbGF0ZShp
c29sYXRlLCBXb3JrZXJXb3JsZCktPkhhc0luc3RhbmNlKHZhbHVlKTsKIH0KIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJy
YXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRB
cnJheS5oCmluZGV4IGMwODQ0ODNlYWNkM2ZhODFmNmRiMGUxNDIyNzMyZmNjZDcxZmE2YWUuLmUy
YTdmYmM0ZDQ4MWRlYTVhYjM0MDM4ZjA0NGY4YjE0ZjA3ZDk5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5o
CkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFY4RmxvYXQ2NEFycmF5IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IFY4QXJyYXlCdWZmZXJWaWV3
OjpoYXNEZXBlbmRlbnRMaWZldGltZTsKICAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwor
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVt
cGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwg
V3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIEZsb2F0NjRBcnJheSogdG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9N
T2JqZWN0LmNwcAppbmRleCA3YzZlYWVmNzM2YzlhZDVmMDRlZjk3ZjcyYmRiMDhhMmU3YWQ5Nzg4
Li45YjhjNTE1NGUyMzZkMzFmMGMyNzA1NWQ1OWY3OTljZDk3N2IxODVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gcG9zdE1lc3NhZ2VBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjCiAgICAgLy8gVGhpcyBpcyBvbmx5IGZvciBnZXR0aW5nIGEgdW5pcXVlIHBvaW50
ZXIgd2hpY2ggd2UgY2FuIHBhc3MgdG8gcHJpdmF0ZVRlbXBsYXRlLgogICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBwcml2YXRlVGVtcGxhdGVVbmlxdWVLZXkgPSAicG9zdE1lc3NhZ2VQcml2YXRlVGVt
cGxhdGUiOwogICAgIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSA9IHdvcmxkVHlw
ZShpbmZvLkdldElzb2xhdGUoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJ
c29sYXRlKCkpLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZhdGVUZW1w
bGF0ZVVuaXF1ZUtleSwgVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBvc3RNZXNzYWdl
TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOFRlc3RB
Y3RpdmVET01PYmplY3Q6OkdldFJhd1RlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpKSkpOworICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0SXNvbGF0ZSgpKS0+cHJpdmF0ZVRlbXBsYXRl
KGN1cnJlbnRXb3JsZFR5cGUsICZwcml2YXRlVGVtcGxhdGVVbmlxdWVLZXksIFRlc3RBY3RpdmVE
T01PYmplY3RWOEludGVybmFsOjpwb3N0TWVzc2FnZU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5l
ZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRSYXdUZW1w
bGF0ZShpbmZvLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlwZSkpKTsKIAogICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJv
dG90eXBlQ2hhaW4oVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRUZW1wbGF0ZShpbmZvLkdldElz
b2xhdGUoKSwgY3VycmVudFdvcmxkVHlwZSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7
CkBAIC0xNDIsNyArMTQyLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwb3N0TWVz
c2FnZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGMKICAgICBUZXN0QWN0
aXZlRE9NT2JqZWN0KiBpbXAgPSBWOFRlc3RBY3RpdmVET01PYmplY3Q6OnRvTmF0aXZlKGhvbGRl
cik7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShC
aW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUoKSwgRG9Ob3RSZXBvcnRTZWN1cml0
eUVycm9yKSkgewogICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhcmVkVGVtcGxhdGVVbmlx
dWVLZXkgPSAicG9zdE1lc3NhZ2VTaGFyZWRUZW1wbGF0ZSI7Ci0gICAgICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaW5mby5HZXRJc29sYXRlKCkpLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxk
VHlwZSwgJnNoYXJlZFRlbXBsYXRlVW5pcXVlS2V5LCBUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRl
cm5hbDo6cG9zdE1lc3NhZ2VNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25h
dHVyZTo6TmV3KFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0UmF3VGVtcGxhdGUoaW5mby5HZXRJ
c29sYXRlKCkpKSk7CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBzaGFyZWRUZW1wbGF0ZSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRl
KCkpLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnNoYXJlZFRlbXBsYXRlVW5p
cXVlS2V5LCBUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6cG9zdE1lc3NhZ2VNZXRob2RD
YWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4VGVzdEFjdGl2ZURP
TU9iamVjdDo6R2V0UmF3VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5
cGUpKSk7CiAgICAgICAgIHJldHVybiBzaGFyZWRUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKICAg
ICB9CiAKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYQogCiAgICAg
Ly8gQ3VzdG9tIFNpZ25hdHVyZSAnZXhjaXRpbmdGdW5jdGlvbicKICAgICBjb25zdCBpbnQgZXhj
aXRpbmdGdW5jdGlvbkFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGV4Y2l0aW5nRnVuY3Rpb25Bcmd2W2V4Y2l0aW5nRnVuY3Rpb25BcmdjXSA9IHsgVjhOb2Rl
OjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGV4Y2l0aW5nRnVuY3Rpb25Bcmd2W2V4Y2l0aW5nRnVuY3Rpb25BcmdjXSA9IHsg
VjhOb2RlOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6Okhh
bmRsZTx2ODo6U2lnbmF0dXJlPiBleGNpdGluZ0Z1bmN0aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25h
dHVyZTo6TmV3KGRlc2MsIGV4Y2l0aW5nRnVuY3Rpb25BcmdjLCBleGNpdGluZ0Z1bmN0aW9uQXJn
dik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImV4Y2l0aW5nRnVuY3Rp
b24iKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRl
cm5hbDo6ZXhjaXRpbmdGdW5jdGlvbk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBleGNp
dGluZ0Z1bmN0aW9uU2lnbmF0dXJlKSk7CiAKQEAgLTIwNiwzNiArMjA2LDM4IEBAIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0QWN0aXZl
RE9NT2JqZWN0VGVtcGxhCiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFJhd1RlbXBsYXRl
KHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURh
dGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNv
bGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0
ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+cmF3VGVtcGxhdGVN
YXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAg
ICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAg
ICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRs
ZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9
IGNyZWF0ZVJhd1RlbXBsYXRlKGlzb2xhdGUpOwotICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFwKCku
YWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAod29ybGRUeXBlKS5h
ZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFRlbXBsYXRl
KHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAg
ICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0g
ZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEt
PnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5m
byk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgp
KQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBo
YW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVt
cGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGF0ZShHZXRS
YXdUZW1wbGF0ZShpc29sYXRlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1w
bGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RBY3Rp
dmVET01PYmplY3RUZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpLCBp
c29sYXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRk
KCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCiBib29sIFY4VGVzdEFjdGl2
ZURPTU9iamVjdDo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICByZXR1cm4gR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkt
Pkhhc0luc3RhbmNlKHZhbHVlKTsKKyAgICByZXR1cm4gR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwg
TWFpbldvcmxkKS0+SGFzSW5zdGFuY2UodmFsdWUpCisgICAgICAgIHx8IEdldFJhd1RlbXBsYXRl
KGlzb2xhdGUsIElzb2xhdGVkV29ybGQpLT5IYXNJbnN0YW5jZSh2YWx1ZSkKKyAgICAgICAgfHwg
R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgV29ya2VyV29ybGQpLT5IYXNJbnN0YW5jZSh2YWx1ZSk7
CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oCmluZGV4IGEyYTQ5MmUwMjU1NmVj
MDRiNWYwNDhhMWY3NzJiZWViOGJjOWE2OWMuLmVhODFiNGYwZDE1ZWM5OTI2MmJjZGIyOWFjZWQ1
Zjc5NTZjZDljNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKQEAgLTM1LDcgKzM1
LDcgQEAgY2xhc3MgVjhUZXN0QWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwogICAgIHN0YXRpYyBib29s
IEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKLSAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRl
KHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwog
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxh
dGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdEFjdGl2
ZURPTU9iamVjdCogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggNDM4YjAxODU4YTAx
NGNiNTYzM2ZkMjU0OTRmMThmODJkMTUxYTVlMi4uYTllZjIzOGU0ZmZmNmUxMTM2MDQxMWJhYjdm
MTRmYjFiZjViOGY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBA
IC0xMTIsMzYgKzExMiwzOCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IENvbmZpZ3VyZVY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyVGVtcAogICAgIHJldHVybiBk
ZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXI6OkdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVy
OjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3
b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0
ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNv
bGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0
ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+cmF3
VGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFs
dWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoaXNvbGF0
ZSk7Ci0gICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICBk
YXRhLT5yYXdUZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJl
dHVybiB0ZW1wbDsKIH0KIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0
YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0
YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmlu
ZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQor
ICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRh
LT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3Vs
dC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJl
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSwg
aXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywg
dGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRlclRlbXBsYXRl
KEdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7
CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAg
ICByZXR1cm4gdGVtcGw7CiB9CiAKIGJvb2wgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6Okhhc0lu
c3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiB7Ci0gICAgcmV0dXJuIEdldFJhd1RlbXBsYXRlKGlzb2xhdGUpLT5IYXNJbnN0YW5jZSh2YWx1
ZSk7CisgICAgcmV0dXJuIEdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIE1haW5Xb3JsZCktPkhhc0lu
c3RhbmNlKHZhbHVlKQorICAgICAgICB8fCBHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCBJc29sYXRl
ZFdvcmxkKS0+SGFzSW5zdGFuY2UodmFsdWUpCisgICAgICAgIHx8IEdldFJhd1RlbXBsYXRlKGlz
b2xhdGUsIFdvcmtlcldvcmxkKS0+SGFzSW5zdGFuY2UodmFsdWUpOwogfQogCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21O
YW1lZEdldHRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKaW5kZXggZTc0YWE2YTljYzlmNTA3ZmIzNzk0ODVkMDI5
NjYxMmI4ZjBkODFkZi4uNDVhYjFkNDQ0MDFjOTY1NmQ4Yzk2MzVmNjJmMDRiNWNmYTY1ZjM1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEN1c3RvbU5hbWVkR2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xh
c3MgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBi
b29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wgSGFzSW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklz
b2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
dmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCA0MjA0OGQ5ZWFlNTJhMmUwM2Yz
NGFiMmU2Y2U1Nzc2YzBjMTU3MTY1Li4zMGNhOGQwZTc2ODY1YThkNWY5YzRmNWZhYzhkNGEzYTQ3
YzdiZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0xNTQsMzYg
KzE1NCwzOCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbAogICAgIHJldHVybiBkZXNjOwogfQog
Ci12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXZlbnRDb25zdHJ1
Y3Rvcjo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0UmF3VGVt
cGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQog
ewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1
bHQgPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQg
IT0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpU
ZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAod29ybGRU
eXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFw
KHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKGlzb2xhdGUpOwotICAgIGRh
dGEtPnJhd1RlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgZGF0YS0+cmF3VGVt
cGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7
CiB9CiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFdmVudENv
bnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVN
YXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0g
ICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNv
bGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1h
cCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxh
dGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAK
ICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0RXZlbnRD
b25zdHJ1Y3RvclRlbXBsYXRlKEdldFJhd1RlbXBsYXRlKGlzb2xhdGUpLCBpc29sYXRlLCB3b3Js
ZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAg
ICAgIENvbmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbGF0ZShHZXRSYXdUZW1wbGF0
ZShpc29sYXRlLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRl
bXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBs
OwogfQogCiBib29sIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6Okhhc0luc3RhbmNlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgcmV0dXJu
IEdldFJhd1RlbXBsYXRlKGlzb2xhdGUpLT5IYXNJbnN0YW5jZSh2YWx1ZSk7CisgICAgcmV0dXJu
IEdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIE1haW5Xb3JsZCktPkhhc0luc3RhbmNlKHZhbHVlKQor
ICAgICAgICB8fCBHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCBJc29sYXRlZFdvcmxkKS0+SGFzSW5z
dGFuY2UodmFsdWUpCisgICAgICAgIHx8IEdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIFdvcmtlcldv
cmxkKS0+SGFzSW5zdGFuY2UodmFsdWUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5oCmluZGV4IDg3NjIyODRlNjI3MjJlM2YyNDA1ZmZjYzRlZDkzYzM0N2Q4MDBkMTEuLjg2
ZDk4Y2UxY2JkZDYxODM0ZGIxYzRjZTRkYjJjNzgwZTQzZDQ4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2
ZW50Q29uc3RydWN0b3IuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBWOFRlc3RFdmVudENvbnN0
cnVjdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZl
dGltZSA9IGZhbHNlOwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7CisgICAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29y
bGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdEV2ZW50Q29uc3RydWN0b3IqIHRvTmF0aXZlKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3Bw
CmluZGV4IGYzN2IyNTViZWQ4NmM0ZDM1ZWJhYTc2ODQ3NWJhOWQzZjhiYWE2NzEuLjkzY2ZkMTA3
YTM1MzNjNmZjZGMxZDZjMTc2MDdjMGZjYzcyYzJlN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0
LmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZSh2CiAKICAgICAv
LyBDdXN0b20gU2lnbmF0dXJlICdkaXNwYXRjaEV2ZW50JwogICAgIGNvbnN0IGludCBkaXNwYXRj
aEV2ZW50QXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGlz
cGF0Y2hFdmVudEFyZ3ZbZGlzcGF0Y2hFdmVudEFyZ2NdID0geyBWOEV2ZW50OjpHZXRSYXdUZW1w
bGF0ZShpc29sYXRlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRp
c3BhdGNoRXZlbnRBcmd2W2Rpc3BhdGNoRXZlbnRBcmdjXSA9IHsgVjhFdmVudDo6R2V0UmF3VGVt
cGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVy
ZT4gZGlzcGF0Y2hFdmVudFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBkaXNw
YXRjaEV2ZW50QXJnYywgZGlzcGF0Y2hFdmVudEFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0
cmluZzo6TmV3U3ltYm9sKCJkaXNwYXRjaEV2ZW50IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpO
ZXcoVGVzdEV2ZW50VGFyZ2V0VjhJbnRlcm5hbDo6ZGlzcGF0Y2hFdmVudE1ldGhvZENhbGxiYWNr
LCB2OFVuZGVmaW5lZCgpLCBkaXNwYXRjaEV2ZW50U2lnbmF0dXJlKSk7CiAKQEAgLTE4OCwzNiAr
MTg4LDM4IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29u
ZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZSh2CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAK
LXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFdmVudFRhcmdldDo6
R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXZlbnRUYXJnZXQ6OkdldFJhd1RlbXBsYXRlKHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBl
cklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAg
ICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+
cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJh
d1RlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgm
aW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCh3b3JsZFR5cGUp
LmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVT
Y29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gdGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZShpc29sYXRlKTsKLSAgICBkYXRhLT5yYXdUZW1w
bGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFwKHdv
cmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCiB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXZlbnRUYXJnZXQ6OkdldFRl
bXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkK
IHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVz
dWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9
IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxh
dGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmlu
ZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUp
LmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVT
Y29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKEdl
dFJhd1RlbXBsYXRlKGlzb2xhdGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRl
bXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdEV2
ZW50VGFyZ2V0VGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSwgaXNv
bGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgm
aW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAogYm9vbCBWOFRlc3RFdmVudFRh
cmdldDo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKIHsKLSAgICByZXR1cm4gR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSktPkhhc0lu
c3RhbmNlKHZhbHVlKTsKKyAgICByZXR1cm4gR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgTWFpbldv
cmxkKS0+SGFzSW5zdGFuY2UodmFsdWUpCisgICAgICAgIHx8IEdldFJhd1RlbXBsYXRlKGlzb2xh
dGUsIElzb2xhdGVkV29ybGQpLT5IYXNJbnN0YW5jZSh2YWx1ZSkKKyAgICAgICAgfHwgR2V0UmF3
VGVtcGxhdGUoaXNvbGF0ZSwgV29ya2VyV29ybGQpLT5IYXNJbnN0YW5jZSh2YWx1ZSk7CiB9CiAK
IEV2ZW50VGFyZ2V0KiBWOFRlc3RFdmVudFRhcmdldDo6dG9FdmVudFRhcmdldCh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggN2MwNWFmM2Y1
NDQ3MTAxMDc2OTk5MzhlMmEzYjU0NDA4MDRjMzUzZC4uYjU4YzFjYzQ1NWUxZWZhNjc5OWExY2M1
MjM2ZDhmNGU2NmM4M2Y3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTM1LDcgKzM1LDcg
QEAgY2xhc3MgVjhUZXN0RXZlbnRUYXJnZXQgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBi
b29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wgSGFzSW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklz
b2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0RXZlbnRUYXJnZXQq
IHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4
Y2VwdGlvbi5jcHAKaW5kZXggNzdlZjY5NWE3Y2JiY2U5ZjVkNTQ5ZTAwZTAzMmUxMzc4NjA4NjA0
MS4uNTMzZGU2NDA2ZDc0NWIzZjdjODE3N2M2NWRiNjlkYTNhZGVkOTFlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4
Y2VwdGlvbi5jcHAKQEAgLTEwMywzNiArMTAzLDM4IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXhjZXB0aW9uVGVtcGxhdGUodjg6
CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBWOFRlc3RFeGNlcHRpb246OkdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRl
KQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV4Y2VwdGlvbjo6
R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29y
bGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVy
YXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlm
IChyZXN1bHQgIT0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xh
dGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVN
YXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1Rl
bXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVl
OwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKGlzb2xhdGUp
OwotICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgZGF0
YS0+cmF3VGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1
cm4gdGVtcGw7CiB9CiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRl
c3RFeGNlcHRpb246OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29y
bGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsK
LSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJ
c29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1w
bGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsK
IAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RFeGNl
cHRpb25UZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSwgaXNvbGF0ZSwgd29ybGRUeXBl
KTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBD
b25maWd1cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCB3
b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdv
cmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCiBib29s
IFY4VGVzdEV4Y2VwdGlvbjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVl
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICByZXR1cm4gR2V0UmF3VGVtcGxhdGUoaXNv
bGF0ZSktPkhhc0luc3RhbmNlKHZhbHVlKTsKKyAgICByZXR1cm4gR2V0UmF3VGVtcGxhdGUoaXNv
bGF0ZSwgTWFpbldvcmxkKS0+SGFzSW5zdGFuY2UodmFsdWUpCisgICAgICAgIHx8IEdldFJhd1Rl
bXBsYXRlKGlzb2xhdGUsIElzb2xhdGVkV29ybGQpLT5IYXNJbnN0YW5jZSh2YWx1ZSkKKyAgICAg
ICAgfHwgR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgV29ya2VyV29ybGQpLT5IYXNJbnN0YW5jZSh2
YWx1ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCmluZGV4IDQzZGQyNTNiMjgyYWRhNjE2MzI1
ZTgwYWQ3Nzg2NWE4N2ZiOTA2NGYuLjE1Yzk5YjAzM2Q2MTk4OTVjMDc1NjZiMTEzODBhOWRlZDVj
NDM5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgVjhUZXN0
RXhjZXB0aW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRM
aWZldGltZSA9IGZhbHNlOwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7CisgICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2
ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVy
V29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdEV4Y2VwdGlvbiogdG9OYXRpdmUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAppbmRleCA0
MzI5YmYwZTg3ODdjOWFhMzEwMTM5ODYzZjMxZGZkOTFkMmFiOWM0Li4zYmY2ZWJkNzkwNzEyMTQw
OTg4N2QxMTFiNDBmMTExMzIzNzRkMWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcApAQCAtNDM4
LDcgKzQzOCw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
Q29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUodjg6CiAKICAgICAvLyBDdXN0b20gU2ln
bmF0dXJlICdzdXBwbGVtZW50YWxNZXRob2QyJwogICAgIGNvbnN0IGludCBzdXBwbGVtZW50YWxN
ZXRob2QyQXJnYyA9IDI7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3Vw
cGxlbWVudGFsTWV0aG9kMkFyZ3Zbc3VwcGxlbWVudGFsTWV0aG9kMkFyZ2NdID0geyB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RPYmo6OkdldFJhd1RlbXBsYXRlKGlz
b2xhdGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3VwcGxlbWVu
dGFsTWV0aG9kMkFyZ3Zbc3VwcGxlbWVudGFsTWV0aG9kMkFyZ2NdID0geyB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RPYmo6OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUs
IHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHN1cHBsZW1lbnRh
bE1ldGhvZDJTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgc3VwcGxlbWVudGFs
TWV0aG9kMkFyZ2MsIHN1cHBsZW1lbnRhbE1ldGhvZDJBcmd2KTsKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgic3VwcGxlbWVudGFsTWV0aG9kMiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6
TmV3KFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxNZXRob2QyTWV0aG9kQ2Fs
bGJhY2ssIHY4VW5kZWZpbmVkKCksIHN1cHBsZW1lbnRhbE1ldGhvZDJTaWduYXR1cmUpKTsKQEAg
LTQ1MywzNiArNDUzLDM4IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUodjg6CiAgICAgcmV0dXJuIGRl
c2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RJbnRl
cmZhY2U6OkdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFjZTo6R2V0UmF3VGVtcGxhdGUo
djg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAg
IFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
OwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBk
YXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0
YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAod29ybGRUeXBlKS5m
aW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKHdvcmxk
VHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6Okhh
bmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKGlzb2xhdGUpOwotICAgIGRhdGEtPnJh
d1RlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgZGF0YS0+cmF3VGVtcGxhdGVN
YXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAK
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RJbnRlcmZhY2U6Okdl
dFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlw
ZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0
ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVt
cGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSku
ZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5
cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5k
bGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZShH
ZXRSYXdUZW1wbGF0ZShpc29sYXRlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50
ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RJ
bnRlcmZhY2VUZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpLCBpc29s
YXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZp
bmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCiBib29sIFY4VGVzdEludGVyZmFj
ZTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKIHsKLSAgICByZXR1cm4gR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSktPkhhc0luc3Rh
bmNlKHZhbHVlKTsKKyAgICByZXR1cm4gR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgTWFpbldvcmxk
KS0+SGFzSW5zdGFuY2UodmFsdWUpCisgICAgICAgIHx8IEdldFJhd1RlbXBsYXRlKGlzb2xhdGUs
IElzb2xhdGVkV29ybGQpLT5IYXNJbnN0YW5jZSh2YWx1ZSkKKyAgICAgICAgfHwgR2V0UmF3VGVt
cGxhdGUoaXNvbGF0ZSwgV29ya2VyV29ybGQpLT5IYXNJbnN0YW5jZSh2YWx1ZSk7CiB9CiAKIEFj
dGl2ZURPTU9iamVjdCogVjhUZXN0SW50ZXJmYWNlOjp0b0FjdGl2ZURPTU9iamVjdCh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaAppbmRleCBhYTA5MzdjMjkx
ZjZhZDE0NzcxYTUzNDNmODFiOTBjNjM4ODUxZGFmLi43MjFkZDBlMjQ1ZWNmNjVjN2U2ZGI5YmMz
ZjAxNjE4NThhMGRkZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCkBAIC0zNiw3ICszNiw3IEBAIGNs
YXNzIFY4VGVzdEludGVyZmFjZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFz
RGVwZW5kZW50TGlmZXRpbWUgPSB0cnVlOwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7
CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdU
ZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUq
LCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdEludGVyZmFjZSogdG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDI1ZmZhNzE4OTY2NGRiZWYyNDQ2ZTY5
MGZjNmI5ODJmZjRhNTVlZjcuLjM2MWI2Mzk3ZmZhZGJmZmVmZDM5OGZjYjBmYTgzZjAzZDg3OTkx
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAg
LTExMiwzNiArMTEyLDM4IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lCiAgICAgcmV0dXJuIGRl
c2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyOjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
K3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyOjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldv
cmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxh
dGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5m
byk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAg
IFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5y
YXdUZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+cmF3VGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxh
dGUoaXNvbGF0ZSk7Ci0gICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBs
KTsKKyAgICBkYXRhLT5yYXdUZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwp
OwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OkdldFRlbXBsYXRlKHY4OjpJc29s
YXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklz
b2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBW
OFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVt
cGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRl
TWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9y
IHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAg
ICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29w
ZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAg
ICAgICBDb25maWd1cmVWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVGVtcGxhdGUoR2V0UmF3
VGVtcGxhdGUoaXNvbGF0ZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxh
dGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lclRlbXBsYXRlKEdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlw
ZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBl
KS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKIGJvb2wgVjhUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICByZXR1cm4gR2V0UmF3VGVtcGxh
dGUoaXNvbGF0ZSktPkhhc0luc3RhbmNlKHZhbHVlKTsKKyAgICByZXR1cm4gR2V0UmF3VGVtcGxh
dGUoaXNvbGF0ZSwgTWFpbldvcmxkKS0+SGFzSW5zdGFuY2UodmFsdWUpCisgICAgICAgIHx8IEdl
dFJhd1RlbXBsYXRlKGlzb2xhdGUsIElzb2xhdGVkV29ybGQpLT5IYXNJbnN0YW5jZSh2YWx1ZSkK
KyAgICAgICAgfHwgR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgV29ya2VyV29ybGQpLT5IYXNJbnN0
YW5jZSh2YWx1ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmgKaW5kZXggOTU1NTRjZTY3MDNmZWIyNTk0ZGFmMmNhYWI1OGIyY2MxMTY0ZDhjYy4uYmMw
YmQyZTk3ZGMzNDhiZTJkNzg2NzVkMDBmMjkyMzliYWVlY2VmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFY4VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29s
IGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFu
Y2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xh
dGUqKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdl
dFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNv
bGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lciogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IGQ2ODk0ZWU4NWRkOWNmMDdl
MzJlYWVkNjAzOGE1ODM5M2QzN2MzNjEuLjNkMDc4ZTk3NjRlZjRkNGY3ZTZlMDFjMjM2ZDA5ZjQ5
MWFmOWMxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE0Mywz
NiArMTQzLDM4IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
Q29uZmlndXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsCiAgICAgcmV0dXJuIGRlc2M7CiB9
CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0
cnVjdG9yOjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRSYXdU
ZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUp
CiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJl
c3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3Vs
dCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6
OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCh3b3Js
ZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+cmF3VGVtcGxhdGVN
YXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAg
ICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoaXNvbGF0ZSk7Ci0gICAg
ZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICBkYXRhLT5yYXdU
ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1w
bDsKIH0KIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5hbWVk
Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29y
bGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsK
LSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJ
c29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1w
bGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsK
IAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3ROYW1l
ZENvbnN0cnVjdG9yVGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSksIGlzb2xhdGUsIHdv
cmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAg
ICAgICAgQ29uZmlndXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKEdldFJhd1RlbXBs
YXRlKGlzb2xhdGUsIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+
dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVt
cGw7CiB9CiAKIGJvb2wgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2Uodjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICByZXR1
cm4gR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSktPkhhc0luc3RhbmNlKHZhbHVlKTsKKyAgICByZXR1
cm4gR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgTWFpbldvcmxkKS0+SGFzSW5zdGFuY2UodmFsdWUp
CisgICAgICAgIHx8IEdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIElzb2xhdGVkV29ybGQpLT5IYXNJ
bnN0YW5jZSh2YWx1ZSkKKyAgICAgICAgfHwgR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgV29ya2Vy
V29ybGQpLT5IYXNJbnN0YW5jZSh2YWx1ZSk7CiB9CiAKIEFjdGl2ZURPTU9iamVjdCogVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvcjo6dG9BY3RpdmVET01PYmplY3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaAppbmRleCA0ZmRlMjUzY2U1
MDBmN2E2Y2E0YmFkYTA0OGUyYmY4MzNjNzdjNjgzLi5lMDA3NjA0NGI0OThmYzNlYTQ5MWQ5ZjBj
MWNkNWY1ODNkY2FhNTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgKQEAgLTQx
LDcgKzQxLDcgQEAgY2xhc3MgVjhUZXN0TmFtZWRDb25zdHJ1Y3RvciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSB0cnVlOwogICAgIHN0YXRp
YyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsK
LSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1Rl
bXBsYXRlKHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5
cGUpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0
VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVz
dE5hbWVkQ29uc3RydWN0b3IqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROb2RlLmNwcAppbmRleCAzNTBmMGVjYzE1YzI1NjBhZGRjNTljZTA0YjZjODlj
OTk5MDVjNGFkLi4yYjc5ODg1OTAzODZkNDdkNzZhYzVkY2I5YWRkNjU5MjBhYjdhZTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE5vZGUuY3BwCkBAIC0xMTAsMzYgKzExMCwzOCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1wbGF0ZSh2ODo6UGVycwog
ICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gVjhUZXN0Tm9kZTo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0Tm9kZTo6R2V0UmF3VGVtcGxh
dGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewog
ICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQg
PSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1w
bGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAod29ybGRUeXBl
KS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKHdv
cmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6
OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKGlzb2xhdGUpOwotICAgIGRhdGEt
PnJhd1RlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgZGF0YS0+cmF3VGVtcGxh
dGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9
CiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROb2RlOjpHZXRU
ZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUp
CiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJl
c3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAh
PSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBs
YXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZp
bmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBl
KS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxl
U2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0Tm9kZVRlbXBsYXRlKEdldFJhd1Rl
bXBsYXRlKGlzb2xhdGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRl
TWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1w
bGF0ZShHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5
cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7
CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCiBib29sIFY4VGVzdE5vZGU6Okhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAg
cmV0dXJuIEdldFJhd1RlbXBsYXRlKGlzb2xhdGUpLT5IYXNJbnN0YW5jZSh2YWx1ZSk7CisgICAg
cmV0dXJuIEdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIE1haW5Xb3JsZCktPkhhc0luc3RhbmNlKHZh
bHVlKQorICAgICAgICB8fCBHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCBJc29sYXRlZFdvcmxkKS0+
SGFzSW5zdGFuY2UodmFsdWUpCisgICAgICAgIHx8IEdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIFdv
cmtlcldvcmxkKS0+SGFzSW5zdGFuY2UodmFsdWUpOwogfQogCiBFdmVudFRhcmdldCogVjhUZXN0
Tm9kZTo6dG9FdmVudFRhcmdldCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5o
CmluZGV4IDE0ZmVmNTcyOWYwZWQ5OTM3ZWFiNjY1MDcwOWVhZjhlOWZlMjZlYTYuLmQzZDJhOWJm
NGYyMzI3ZjU2OWIwM2QzNDUyZmViZmVlNjhmZDNkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaApAQCAtMzUsNyArMzUs
NyBAQCBjbGFzcyBWOFRlc3ROb2RlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBo
YXNEZXBlbmRlbnRMaWZldGltZSA9IHRydWU7CiAgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uo
djg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUq
KTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJh
d1RlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0
ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0Tm9kZSogdG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCA1ZWI0MWU1
ZDY2Y2NhZGQ5MzU4Yjk5Mjk1YTExMTExZjFiZTM3NjhiLi42NTQ4YmIxYTIzODg2OTQyNTk0MGQ4
NGVlOGFmNmVlMGZkMmZkZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMzA2MiwzMSArMzA2MiwzMSBAQCBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVz
dE9ialRlbXBsYXRlKHY4OjpQZXJzaQogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAndm9pZE1l
dGhvZFdpdGhBcmdzJwogICAgIGNvbnN0IGludCB2b2lkTWV0aG9kV2l0aEFyZ3NBcmdjID0gMzsK
LSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB2b2lkTWV0aG9kV2l0aEFyZ3NB
cmd2W3ZvaWRNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RPYmo6
OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gdm9pZE1ldGhvZFdpdGhBcmdzQXJndlt2b2lkTWV0aG9kV2l0aEFyZ3NBcmdjXSA9
IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0T2JqOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCB3b3Js
ZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiB2b2lkTWV0aG9kV2l0aEFy
Z3NTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgdm9pZE1ldGhvZFdpdGhBcmdz
QXJnYywgdm9pZE1ldGhvZFdpdGhBcmdzQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5n
OjpOZXdTeW1ib2woInZvaWRNZXRob2RXaXRoQXJncyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6
TmV3KFRlc3RPYmpWOEludGVybmFsOjp2b2lkTWV0aG9kV2l0aEFyZ3NNZXRob2RDYWxsYmFjaywg
djhVbmRlZmluZWQoKSwgdm9pZE1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlKSk7CiAKICAgICAvLyBD
dXN0b20gU2lnbmF0dXJlICdsb25nTWV0aG9kV2l0aEFyZ3MnCiAgICAgY29uc3QgaW50IGxvbmdN
ZXRob2RXaXRoQXJnc0FyZ2MgPSAzOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGxvbmdNZXRob2RXaXRoQXJnc0FyZ3ZbbG9uZ01ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+KCksIFY4VGVzdE9iajo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkgfTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBsb25nTWV0aG9kV2l0aEFyZ3NBcmd2W2xv
bmdNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RPYmo6OkdldFJh
d1RlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWdu
YXR1cmU+IGxvbmdNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhk
ZXNjLCBsb25nTWV0aG9kV2l0aEFyZ3NBcmdjLCBsb25nTWV0aG9kV2l0aEFyZ3NBcmd2KTsKICAg
ICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibG9uZ01ldGhvZFdpdGhBcmdzIiks
IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdNZXRob2RX
aXRoQXJnc01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBsb25nTWV0aG9kV2l0aEFyZ3NT
aWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ29iak1ldGhvZFdpdGhBcmdz
JwogICAgIGNvbnN0IGludCBvYmpNZXRob2RXaXRoQXJnc0FyZ2MgPSAzOwotICAgIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG9iak1ldGhvZFdpdGhBcmdzQXJndltvYmpNZXRob2RX
aXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RPYmo6OkdldFJhd1RlbXBsYXRl
KGlzb2xhdGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gb2JqTWV0
aG9kV2l0aEFyZ3NBcmd2W29iak1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCks
IFY4VGVzdE9iajo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSB9OwogICAgIHY4
OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gb2JqTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUgPSB2ODo6
U2lnbmF0dXJlOjpOZXcoZGVzYywgb2JqTWV0aG9kV2l0aEFyZ3NBcmdjLCBvYmpNZXRob2RXaXRo
QXJnc0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJvYmpNZXRo
b2RXaXRoQXJncyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFs
OjpvYmpNZXRob2RXaXRoQXJnc01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBvYmpNZXRo
b2RXaXRoQXJnc1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnbWV0aG9k
V2l0aFNlcXVlbmNlQXJnJwogICAgIGNvbnN0IGludCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdj
ID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RXaXRoU2Vx
dWVuY2VBcmdBcmd2W21ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2NdID0geyBWOHNlcXVlbmNlPFNj
cmlwdFByb2ZpbGU+OjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSB9OworICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3ZbbWV0aG9kV2l0
aFNlcXVlbmNlQXJnQXJnY10gPSB7IFY4c2VxdWVuY2U8U2NyaXB0UHJvZmlsZT46OkdldFJhd1Rl
bXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1
cmU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhk
ZXNjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2
KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibWV0aG9kV2l0aFNlcXVl
bmNlQXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6Om1l
dGhvZFdpdGhTZXF1ZW5jZUFyZ01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RX
aXRoU2VxdWVuY2VBcmdTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ21l
dGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MnCiAgICAgY29uc3QgaW50IG1ldGhvZFRo
YXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjID0gMjsKLSAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJndltt
ZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdE9iajo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkg
fTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RUaGF0UmVxdWly
ZXNBbGxBcmdzQW5kVGhyb3dzQXJndlttZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dz
QXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdE9iajo6
R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6
OlNpZ25hdHVyZT4gbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c1NpZ25hdHVyZSA9
IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhy
b3dzQXJnYywgbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ3YpOwogICAgIHBy
b3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdz
QW5kVGhyb3dzIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6
Om1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NNZXRob2RDYWxsYmFjaywgdjhVbmRl
ZmluZWQoKSwgbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c1NpZ25hdHVyZSkpOwog
ICAgIGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN0YXRpY01ldGhvZFdpdGhDYWxs
YmFja0FuZE9wdGlvbmFsQXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4
SW50ZXJuYWw6OnN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnTWV0aG9kQ2Fs
bGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigpKSk7CkBAIC0z
MTA0LDQzICszMTA0LDQzIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNpCiAKICAgICAvLyBDdXN0
b20gU2lnbmF0dXJlICdzdHJpbmdBcnJheUZ1bmN0aW9uJwogICAgIGNvbnN0IGludCBzdHJpbmdB
cnJheUZ1bmN0aW9uQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2NdID0geyBW
OERPTVN0cmluZ1tdOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSB9OworICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2W3N0cmluZ0FycmF5
RnVuY3Rpb25BcmdjXSA9IHsgVjhET01TdHJpbmdbXTo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwg
d29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gc3RyaW5nQXJyYXlG
dW5jdGlvblNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBzdHJpbmdBcnJheUZ1
bmN0aW9uQXJnYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJzdHJpbmdBcnJheUZ1bmN0aW9uIiksIHY4OjpGdW5jdGlvblRl
bXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0FycmF5RnVuY3Rpb25NZXRob2RD
YWxsYmFjaywgdjhVbmRlZmluZWQoKSwgc3RyaW5nQXJyYXlGdW5jdGlvblNpZ25hdHVyZSkpOwog
CiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnZG9tU3RyaW5nTGlzdEZ1bmN0aW9uJwogICAgIGNv
bnN0IGludCBkb21TdHJpbmdMaXN0RnVuY3Rpb25BcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBkb21TdHJpbmdMaXN0RnVuY3Rpb25Bcmd2W2RvbVN0cmluZ0xp
c3RGdW5jdGlvbkFyZ2NdID0geyBWOERPTVN0cmluZ0xpc3Q6OkdldFJhd1RlbXBsYXRlKGlzb2xh
dGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZG9tU3RyaW5nTGlz
dEZ1bmN0aW9uQXJndltkb21TdHJpbmdMaXN0RnVuY3Rpb25BcmdjXSA9IHsgVjhET01TdHJpbmdM
aXN0OjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRs
ZTx2ODo6U2lnbmF0dXJlPiBkb21TdHJpbmdMaXN0RnVuY3Rpb25TaWduYXR1cmUgPSB2ODo6U2ln
bmF0dXJlOjpOZXcoZGVzYywgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJnYywgZG9tU3RyaW5nTGlz
dEZ1bmN0aW9uQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImRv
bVN0cmluZ0xpc3RGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpW
OEludGVybmFsOjpkb21TdHJpbmdMaXN0RnVuY3Rpb25NZXRob2RDYWxsYmFjaywgdjhVbmRlZmlu
ZWQoKSwgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20g
U2lnbmF0dXJlICdjb252ZXJ0MScKICAgICBjb25zdCBpbnQgY29udmVydDFBcmdjID0gMTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0MUFyZ3ZbY29udmVydDFB
cmdjXSA9IHsgVjhhOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSB9OworICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQxQXJndltjb252ZXJ0MUFyZ2NdID0geyBWOGE6
OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4
OjpTaWduYXR1cmU+IGNvbnZlcnQxU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2Ms
IGNvbnZlcnQxQXJnYywgY29udmVydDFBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgiY29udmVydDEiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2Jq
VjhJbnRlcm5hbDo6Y29udmVydDFNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29udmVy
dDFTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2NvbnZlcnQyJwogICAg
IGNvbnN0IGludCBjb252ZXJ0MkFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGNvbnZlcnQyQXJndltjb252ZXJ0MkFyZ2NdID0geyBWOGI6OkdldFJhd1RlbXBs
YXRlKGlzb2xhdGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29u
dmVydDJBcmd2W2NvbnZlcnQyQXJnY10gPSB7IFY4Yjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwg
d29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDJTaWdu
YXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgY29udmVydDJBcmdjLCBjb252ZXJ0MkFy
Z3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0MiIpLCB2
ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0Mk1ldGhv
ZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBjb252ZXJ0MlNpZ25hdHVyZSkpOwogCiAgICAgLy8g
Q3VzdG9tIFNpZ25hdHVyZSAnY29udmVydDQnCiAgICAgY29uc3QgaW50IGNvbnZlcnQ0QXJnYyA9
IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDRBcmd2W2Nv
bnZlcnQ0QXJnY10gPSB7IFY4ZDo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkgfTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0NEFyZ3ZbY29udmVydDRBcmdjXSA9
IHsgVjhkOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6Okhh
bmRsZTx2ODo6U2lnbmF0dXJlPiBjb252ZXJ0NFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5l
dyhkZXNjLCBjb252ZXJ0NEFyZ2MsIGNvbnZlcnQ0QXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6
U3RyaW5nOjpOZXdTeW1ib2woImNvbnZlcnQ0IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXco
VGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQ0TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCks
IGNvbnZlcnQ0U2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdjb252ZXJ0
NScKICAgICBjb25zdCBpbnQgY29udmVydDVBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0NUFyZ3ZbY29udmVydDVBcmdjXSA9IHsgVjhlOjpHZXRS
YXdUZW1wbGF0ZShpc29sYXRlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGNvbnZlcnQ1QXJndltjb252ZXJ0NUFyZ2NdID0geyBWOGU6OkdldFJhd1RlbXBsYXRlKGlz
b2xhdGUsIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZl
cnQ1U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGNvbnZlcnQ1QXJnYywgY29u
dmVydDVBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY29udmVy
dDUiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVy
dDVNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29udmVydDVTaWduYXR1cmUpKTsKIAog
ICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3ZhcmlhZGljTm9kZU1ldGhvZCcKICAgICBjb25zdCBp
bnQgdmFyaWFkaWNOb2RlTWV0aG9kQXJnYyA9IDI7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gdmFyaWFkaWNOb2RlTWV0aG9kQXJndlt2YXJpYWRpY05vZGVNZXRob2RBcmdj
XSA9IHsgVjhOb2RlOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSwgVjhOb2RlOjpHZXRSYXdUZW1w
bGF0ZShpc29sYXRlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHZh
cmlhZGljTm9kZU1ldGhvZEFyZ3ZbdmFyaWFkaWNOb2RlTWV0aG9kQXJnY10gPSB7IFY4Tm9kZTo6
R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSwgVjhOb2RlOjpHZXRSYXdUZW1wbGF0
ZShpc29sYXRlLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiB2
YXJpYWRpY05vZGVNZXRob2RTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgdmFy
aWFkaWNOb2RlTWV0aG9kQXJnYywgdmFyaWFkaWNOb2RlTWV0aG9kQXJndik7CiAgICAgcHJvdG8t
PlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInZhcmlhZGljTm9kZU1ldGhvZCIpLCB2ODo6RnVu
Y3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY05vZGVNZXRob2RN
ZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdmFyaWFkaWNOb2RlTWV0aG9kU2lnbmF0dXJl
KSk7CiAgICAgVjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyhkZXNj
LCBwcm90bywgVjhUZXN0T2JqQ29uc3RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdE9iakNvbnN0
cyksIGlzb2xhdGUpOwpAQCAtMzE1MCwzNiArMzE1MCwzOCBAQCBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQ
ZXJzaQogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gVjhUZXN0T2JqOjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
K3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPYmo6OkdldFJhd1Rl
bXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkK
IHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVz
dWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0
ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6
VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKHdvcmxk
VHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1h
cCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAg
IHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZShpc29sYXRlKTsKLSAgICBk
YXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgIGRhdGEtPnJhd1Rl
bXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBs
OwogfQogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0T2JqOjpH
ZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5
cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9y
IHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3Vs
dCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRl
bXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUp
LmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRU
eXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFu
ZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUoR2V0UmF3
VGVtcGxhdGUoaXNvbGF0ZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxh
dGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0T2JqVGVt
cGxhdGUoR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRU
eXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwp
OwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAogYm9vbCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAg
cmV0dXJuIEdldFJhd1RlbXBsYXRlKGlzb2xhdGUpLT5IYXNJbnN0YW5jZSh2YWx1ZSk7CisgICAg
cmV0dXJuIEdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIE1haW5Xb3JsZCktPkhhc0luc3RhbmNlKHZh
bHVlKQorICAgICAgICB8fCBHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCBJc29sYXRlZFdvcmxkKS0+
SGFzSW5zdGFuY2UodmFsdWUpCisgICAgICAgIHx8IEdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIFdv
cmtlcldvcmxkKS0+SGFzSW5zdGFuY2UodmFsdWUpOwogfQogCiB2b2lkIFY4VGVzdE9iajo6aW5z
dGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaW5zdGFuY2Us
IFRlc3RPYmoqIGltcGwsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCmluZGV4IDEwZmJiMmZk
MzlhODQ5Y2RmMTYzNjA5OWRiOWViOWNjM2JlMTI0NWIuLjJmZmZjMTkwYjI2MDM5N2M5OTUzYTk3
NjljMjAzNzViYWE4NWYwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgVjhUZXN0
T2JqIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGlt
ZSA9IGZhbHNlOwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiwgdjg6Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNv
bGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRU
eXBlKTsKICAgICBzdGF0aWMgVGVzdE9iaiogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMuY3BwCmluZGV4IDI1NTM3OTc0ZTc5YzdmNTU1NjMxYzJhMjA5YmY3MDFhMzlhZWEyMzkuLjA4
NjFiODIwMDFmNjdmYjRhMjQyNjJhMWJiM2ZhZGMyZDAxNjkzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTE2NCwzNiArMTY0LDM4IEBAIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yCiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpH
ZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRSYXdUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7
CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3Vs
dCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAh
PSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRl
bXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCh3b3JsZFR5
cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+cmF3VGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2
ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoaXNvbGF0ZSk7Ci0gICAgZGF0
YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICBkYXRhLT5yYXdUZW1w
bGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsK
IH0KIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
V29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1w
bGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZv
KTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQ
ZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBs
YXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50
ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1
ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzVGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSksIGlz
b2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRl
bXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RlbXBs
YXRlKEdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlw
ZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsK
ICAgICByZXR1cm4gdGVtcGw7CiB9CiAKIGJvb2wgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKIHsKLSAgICByZXR1cm4gR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSktPkhhc0luc3Rh
bmNlKHZhbHVlKTsKKyAgICByZXR1cm4gR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgTWFpbldvcmxk
KS0+SGFzSW5zdGFuY2UodmFsdWUpCisgICAgICAgIHx8IEdldFJhd1RlbXBsYXRlKGlzb2xhdGUs
IElzb2xhdGVkV29ybGQpLT5IYXNJbnN0YW5jZSh2YWx1ZSkKKyAgICAgICAgfHwgR2V0UmF3VGVt
cGxhdGUoaXNvbGF0ZSwgV29ya2VyV29ybGQpLT5IYXNJbnN0YW5jZSh2YWx1ZSk7CiB9CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKaW5kZXggNDlkZTZiMDg5
NDlmNTFkZmFjZTkyYjU2Mzc1MjU0YTU2ZDVlMzM2OC4uODNlZWY1NjIzZjE3OTMxZDZmODQyNTY4
ZDA1M2I2YWZmZDRiZjU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1l
ID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFs
dWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29s
YXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5
cGUpOwogICAgIHN0YXRpYyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCBjYWYxYmI0Nzg4
YTIyNjdmMmExZWY0NjQxYzk4ZGYwMzJiZmJiZjI5Li41ZDRmYmRmOGE0NjkxNGEyZTZiYjM0NDBj
ZDJjNzAyYzc5ODU0N2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMzI5LDM2ICszMjksMzggQEAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWUKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6
R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpH
ZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3Js
ZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJh
dG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYg
KHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0
ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0ZU1h
cCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+cmF3VGVt
cGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7
CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoaXNvbGF0ZSk7
Ci0gICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICBkYXRh
LT5yYXdUZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVy
biB0ZW1wbDsKIH0KIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUq
IGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0
ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVy
SXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0
ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAo
KS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVz
dWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAo
cmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJl
dHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwog
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAg
IENvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVRlbXBsYXRlKEdl
dFJhd1RlbXBsYXRlKGlzb2xhdGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRl
bXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVRlbXBsYXRlKEdldFJhd1RlbXBsYXRlKGlzb2xh
dGUsIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVN
YXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAK
IGJvb2wgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpIYXNJbnN0YW5jZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAg
IHJldHVybiBHZXRSYXdUZW1wbGF0ZShpc29sYXRlKS0+SGFzSW5zdGFuY2UodmFsdWUpOworICAg
IHJldHVybiBHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCBNYWluV29ybGQpLT5IYXNJbnN0YW5jZSh2
YWx1ZSkKKyAgICAgICAgfHwgR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgSXNvbGF0ZWRXb3JsZCkt
Pkhhc0luc3RhbmNlKHZhbHVlKQorICAgICAgICB8fCBHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCBX
b3JrZXJXb3JsZCktPkhhc0luc3RhbmNlKHZhbHVlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKaW5kZXggOGJjZjUzNmQx
NmEyOGQzNTg0ZTJmMjYyYjYyM2RjODkzYmNlNzQxNS4uY2Q5MzRhNDExNjlkODYwNjI0OTlkYzE0
NThjYjg0ZDhlMzIzZTI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBWOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBi
b29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wgSGFzSW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklz
b2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVj
dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNwcAppbmRleCA2MTI5ZDExZDcxM2YyZGE5NDdlZThj
Y2FhMDIxZjliNTEyNzUzMTI3Li5lMGZhZmI5NjU5OWEwNjE3ZTA4MzhmNjI0ZWI1MmRhY2QwN2Ix
YjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHAKQEAgLTU1MSwyNSArNTUxLDI1IEBAIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0VHlwZWRl
ZnNUZW1wbGF0ZSh2ODo6CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdtZXRob2RXaXRoU2Vx
dWVuY2VBcmcnCiAgICAgY29uc3QgaW50IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2MgPSAxOwot
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFy
Z0FyZ3ZbbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnY10gPSB7IFY4c2VxdWVuY2U8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkgfTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2W21ldGhvZFdp
dGhTZXF1ZW5jZUFyZ0FyZ2NdID0geyBWOHNlcXVlbmNlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT46
OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4
OjpTaWduYXR1cmU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1
cmU6Ok5ldyhkZXNjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjLCBtZXRob2RXaXRoU2VxdWVu
Y2VBcmdBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibWV0aG9k
V2l0aFNlcXVlbmNlQXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdFR5cGVkZWZz
VjhJbnRlcm5hbDo6bWV0aG9kV2l0aFNlcXVlbmNlQXJnTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZp
bmVkKCksIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9t
IFNpZ25hdHVyZSAnbnVsbGFibGVBcnJheUFyZycKICAgICBjb25zdCBpbnQgbnVsbGFibGVBcnJh
eUFyZ0FyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG51bGxh
YmxlQXJyYXlBcmdBcmd2W251bGxhYmxlQXJyYXlBcmdBcmdjXSA9IHsgVjhET01TdHJpbmdbXTo6
R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBudWxsYWJsZUFycmF5QXJnQXJndltudWxsYWJsZUFycmF5QXJnQXJnY10gPSB7IFY4
RE9NU3RyaW5nW106OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZSkgfTsKICAgICB2
ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG51bGxhYmxlQXJyYXlBcmdTaWduYXR1cmUgPSB2ODo6
U2lnbmF0dXJlOjpOZXcoZGVzYywgbnVsbGFibGVBcnJheUFyZ0FyZ2MsIG51bGxhYmxlQXJyYXlB
cmdBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibnVsbGFibGVB
cnJheUFyZyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RUeXBlZGVmc1Y4SW50ZXJu
YWw6Om51bGxhYmxlQXJyYXlBcmdNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgbnVsbGFi
bGVBcnJheUFyZ1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnc3RyaW5n
QXJyYXlGdW5jdGlvbicKICAgICBjb25zdCBpbnQgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2MgPSAx
OwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5RnVuY3Rp
b25Bcmd2W3N0cmluZ0FycmF5RnVuY3Rpb25BcmdjXSA9IHsgVjhET01TdHJpbmdbXTo6R2V0UmF3
VGVtcGxhdGUoaXNvbGF0ZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndltzdHJpbmdBcnJheUZ1bmN0aW9uQXJnY10gPSB7IFY4
RE9NU3RyaW5nW106OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZSkgfTsKICAgICB2
ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHN0cmluZ0FycmF5RnVuY3Rpb25TaWduYXR1cmUgPSB2
ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2MsIHN0cmluZ0Fy
cmF5RnVuY3Rpb25Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgi
c3RyaW5nQXJyYXlGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RUeXBl
ZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0FycmF5RnVuY3Rpb25NZXRob2RDYWxsYmFjaywgdjhVbmRl
ZmluZWQoKSwgc3RyaW5nQXJyYXlGdW5jdGlvblNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9t
IFNpZ25hdHVyZSAnc3RyaW5nQXJyYXlGdW5jdGlvbjInCiAgICAgY29uc3QgaW50IHN0cmluZ0Fy
cmF5RnVuY3Rpb24yQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmd2W3N0cmluZ0FycmF5RnVuY3Rpb24yQXJnY10gPSB7
IFY4RE9NU3RyaW5nW106OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpIH07CisgICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmd2W3N0cmluZ0Fy
cmF5RnVuY3Rpb24yQXJnY10gPSB7IFY4RE9NU3RyaW5nW106OkdldFJhd1RlbXBsYXRlKGlzb2xh
dGUsIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHN0cmluZ0Fy
cmF5RnVuY3Rpb24yU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIHN0cmluZ0Fy
cmF5RnVuY3Rpb24yQXJnYywgc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmd2KTsKICAgICBwcm90by0+
U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3RyaW5nQXJyYXlGdW5jdGlvbjIiKSwgdjg6OkZ1
bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBcnJheUZ1
bmN0aW9uMk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdHJpbmdBcnJheUZ1bmN0aW9u
MlNpZ25hdHVyZSkpOwogCkBAIC01NzgsMzYgKzU3OCwzOCBAQCBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUo
djg6OgogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gVjhUZXN0VHlwZWRlZnM6OkdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29s
YXRlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdFR5cGVkZWZz
OjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3
b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0
ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNv
bGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0
ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+cmF3
VGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFs
dWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoaXNvbGF0
ZSk7Ci0gICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICBk
YXRhLT5yYXdUZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJl
dHVybiB0ZW1wbDsKIH0KIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
VGVzdFR5cGVkZWZzOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldv
cmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxh
dGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7
Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVy
SXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0
ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVt
cGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7
CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0VHlw
ZWRlZnNUZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSwgaXNvbGF0ZSwgd29ybGRUeXBl
KTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBD
b25maWd1cmVWOFRlc3RUeXBlZGVmc1RlbXBsYXRlKEdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIHdv
cmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29y
bGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKIGJvb2wg
VjhUZXN0VHlwZWRlZnM6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgcmV0dXJuIEdldFJhd1RlbXBsYXRlKGlzb2xh
dGUpLT5IYXNJbnN0YW5jZSh2YWx1ZSk7CisgICAgcmV0dXJuIEdldFJhd1RlbXBsYXRlKGlzb2xh
dGUsIE1haW5Xb3JsZCktPkhhc0luc3RhbmNlKHZhbHVlKQorICAgICAgICB8fCBHZXRSYXdUZW1w
bGF0ZShpc29sYXRlLCBJc29sYXRlZFdvcmxkKS0+SGFzSW5zdGFuY2UodmFsdWUpCisgICAgICAg
IHx8IEdldFJhd1RlbXBsYXRlKGlzb2xhdGUsIFdvcmtlcldvcmxkKS0+SGFzSW5zdGFuY2UodmFs
dWUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmgKaW5kZXggNDA0YWY3Yjk3NDAyZDExOWUxOWQ3YjRj
NDA0M2E1YjhjZDk0NzU1MS4uNjM1ZTJiMWQ2ZDY5NjM3MmVkOGU5YzIzZDA5MzkzMWJiYzhkYTlk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdFR5cGVkZWZzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdFR5cGVkZWZzLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgVjhUZXN0VHlwZWRl
ZnMgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1l
ID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFs
dWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29s
YXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5
cGUpOwogICAgIHN0YXRpYyBUZXN0VHlwZWRlZnMqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QWRhcHRvckZ1bmN0aW9uLmNwcAppbmRleCA2YmM4MDNhNDE3ZGVhMDhmY2RmODgzNWQ1YmJlMjU5
ZmIzMzNlMTgxLi5jOTdiNTkzYjg0NjMzZGQzZjM0MTEwYmYxMmI2NjcwNGZhODVhMmE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uY3BwCkBA
IC00NCwxMiArNDQsMTIgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
QWRhcHRvckZ1bmN0aW9uOjpnZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSoKIHsKICAgICBBU1NFUlQo
aXNvbGF0ZSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJh
dG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYg
KHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0
ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0ZU1h
cCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+cmF3VGVt
cGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7
CiAgICAgLy8gVGhlIGxpZmV0aW1lIGlzIG9mIG5ld1RlbXBsYXRlIGlzIGRlbGVnYXRlZCB0byB0
aGUgVGVtcGxhdGVNYXAgdGh1cyB0aGlzIHdvbid0IGJlIGxlYWtlZC4KICAgICB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbmV3VGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6
TmV3KCkpOwotICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCBjb25maWd1cmVU
ZW1wbGF0ZShuZXdUZW1wbGF0ZSkpOworICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFwKHdvcmxkVHlw
ZSkuYWRkKCZpbmZvLCBjb25maWd1cmVUZW1wbGF0ZShuZXdUZW1wbGF0ZSkpOwogICAgIHJldHVy
biBuZXdUZW1wbGF0ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhQZXJJc29sYXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBl
cklzb2xhdGVEYXRhLmNwcAppbmRleCA5ODZjYTIzYzExMDFmNGZiMDNmMTY3MDA1MTIyMjE4MjJh
YTVmYTcxLi5kYmFmMjY4YmZiMzk2NGZlYzFhM2QyNGUxOTZlZWMwNjRkMjJkNWUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcApAQCAtMTA0
LDggKzEwNCwxMCBAQCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFBlcklzb2xh
dGVEYXRhOjp0b1N0cmluZ1RlbXBsYXRlKCkKIHZvaWQgVjhQZXJJc29sYXRlRGF0YTo6cmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsK
ICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3Jl
TWVtb3J5VHlwZXM6OkJpbmRpbmcpOwotICAgIGluZm8uYWRkTWVtYmVyKG1fcmF3VGVtcGxhdGVz
LCAicmF3VGVtcGxhdGVzIik7Ci0gICAgaW5mby5hZGRNZW1iZXIobV90ZW1wbGF0ZXMsICJ0ZW1w
bGF0ZXMiKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3Jhd1RlbXBsYXRlc0Zvck1haW5Xb3JsZCwg
InJhd1RlbXBsYXRlc0Zvck1haW5Xb3JsZCIpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcmF3VGVt
cGxhdGVzRm9yTm9uTWFpbldvcmxkLCAicmF3VGVtcGxhdGVzRm9yTm9uTWFpbldvcmxkIik7Cisg
ICAgaW5mby5hZGRNZW1iZXIobV90ZW1wbGF0ZXNGb3JNYWluV29ybGQsICJ0ZW1wbGF0ZXNGb3JN
YWluV29ybGQiKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3RlbXBsYXRlc0Zvck5vbk1haW5Xb3Js
ZCwgInRlbXBsYXRlc0Zvck5vbk1haW5Xb3JsZCIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fc3Ry
aW5nQ2FjaGUsICJzdHJpbmdDYWNoZSIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1faW50ZWdlckNh
Y2hlLCAiaW50ZWdlckNhY2hlIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9kb21EYXRhTGlzdCwg
ImRvbURhdGFMaXN0Iik7CkBAIC0xMjIsMTQgKzEyNCwxNSBAQCB2b2lkIFY4UGVySXNvbGF0ZURh
dGE6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbgogICAgIGluZm8uaWdub3JlTWVtYmVyKG1fYXV4aWxpYXJ5Q29udGV4dCk7CiB9CiAKLXY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjpwcml2
YXRlVGVtcGxhdGUoV3JhcHBlcldvcmxkVHlwZSwgdm9pZCogcHJpdmF0ZVBvaW50ZXIsIHY4OjpJ
bnZvY2F0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkYXRhLCB2
ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHNpZ25hdHVyZSwgaW50IGxlbmd0aCkKK3Y4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjpwcml2YXRlVGVt
cGxhdGUoV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUsIHZvaWQqIHByaXZhdGVQb2ludGVyLCB2
ODo6SW52b2NhdGlvbkNhbGxiYWNrIGNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGF0
YSwgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBzaWduYXR1cmUsIGludCBsZW5ndGgpCiB7CiAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZTsK
LSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gbV90
ZW1wbGF0ZXMuZmluZChwcml2YXRlUG9pbnRlcik7Ci0gICAgaWYgKHJlc3VsdCAhPSBtX3RlbXBs
YXRlcy5lbmQoKSkKKyAgICBUZW1wbGF0ZU1hcCYgdGVtcGxhdGVzID0gdGVtcGxhdGVNYXAod29y
bGRUeXBlKTsKKyAgICBUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gdGVtcGxhdGVzLmZp
bmQocHJpdmF0ZVBvaW50ZXIpOworICAgIGlmIChyZXN1bHQgIT0gdGVtcGxhdGVzLmVuZCgpKQog
ICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gbmV3UHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+OjpOZXcobV9pc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KGNhbGxiYWNrLCBkYXRhLCBzaWduYXR1cmUsIGxlbmd0aCkpOwotICAgIG1fdGVtcGxhdGVzLmFk
ZChwcml2YXRlUG9pbnRlciwgbmV3UHJpdmF0ZVRlbXBsYXRlKTsKKyAgICB0ZW1wbGF0ZXMuYWRk
KHByaXZhdGVQb2ludGVyLCBuZXdQcml2YXRlVGVtcGxhdGUpOwogICAgIHJldHVybiBuZXdQcml2
YXRlVGVtcGxhdGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UGVySXNvbGF0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNv
bGF0ZURhdGEuaAppbmRleCAwZTdhN2Y5ZTU4MjI5YWFiNzNjNzJlYWZmZTlhMTk4MDMxMzQ0NjEy
Li5hMDhjMzkwMTQ3NWQ3YTcwODY0MGUxMzYzMDgzNGI0Yzc0YmMxNzU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oCkBAIC02Nyw4ICs2NywxOSBA
QCBwdWJsaWM6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8dm9pZCosIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiA+IFRlbXBsYXRlTWFwOwogCi0gICAgVGVtcGxhdGVNYXAmIHJh
d1RlbXBsYXRlTWFwKCkgeyByZXR1cm4gbV9yYXdUZW1wbGF0ZXM7IH0KLSAgICBUZW1wbGF0ZU1h
cCYgdGVtcGxhdGVNYXAoKSB7IHJldHVybiBtX3RlbXBsYXRlczsgfQorICAgIFRlbXBsYXRlTWFw
JiByYXdUZW1wbGF0ZU1hcChXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKKyAgICB7CisgICAg
ICAgIGlmICh3b3JsZFR5cGUgPT0gTWFpbldvcmxkKQorICAgICAgICAgICAgcmV0dXJuIG1fcmF3
VGVtcGxhdGVzRm9yTWFpbldvcmxkOworICAgICAgICByZXR1cm4gbV9yYXdUZW1wbGF0ZXNGb3JO
b25NYWluV29ybGQ7CisgICAgfQorCisgICAgVGVtcGxhdGVNYXAmIHRlbXBsYXRlTWFwKFdyYXBw
ZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorICAgIHsKKyAgICAgICAgaWYgKHdvcmxkVHlwZSA9PSBN
YWluV29ybGQpCisgICAgICAgICAgICByZXR1cm4gbV90ZW1wbGF0ZXNGb3JNYWluV29ybGQ7Cisg
ICAgICAgIHJldHVybiBtX3RlbXBsYXRlc0Zvck5vbk1haW5Xb3JsZDsKKyAgICB9CiAKICAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0b1N0cmluZ1RlbXBsYXRlKCk7CiAgICAg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+JiBsYXp5RXZlbnRMaXN0ZW5lclRv
U3RyaW5nVGVtcGxhdGUoKQpAQCAtMTM2LDggKzE0NywxMCBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JPZlRvU3RyaW5nKGNvbnN0IHY4OjpB
cmd1bWVudHMmKTsKIAogICAgIHY4OjpJc29sYXRlKiBtX2lzb2xhdGU7Ci0gICAgVGVtcGxhdGVN
YXAgbV9yYXdUZW1wbGF0ZXM7Ci0gICAgVGVtcGxhdGVNYXAgbV90ZW1wbGF0ZXM7CisgICAgVGVt
cGxhdGVNYXAgbV9yYXdUZW1wbGF0ZXNGb3JNYWluV29ybGQ7CisgICAgVGVtcGxhdGVNYXAgbV9y
YXdUZW1wbGF0ZXNGb3JOb25NYWluV29ybGQ7CisgICAgVGVtcGxhdGVNYXAgbV90ZW1wbGF0ZXNG
b3JNYWluV29ybGQ7CisgICAgVGVtcGxhdGVNYXAgbV90ZW1wbGF0ZXNGb3JOb25NYWluV29ybGQ7
CiAgICAgU2NvcGVkUGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbV90b1N0cmluZ1Rl
bXBsYXRlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtX2xhenlF
dmVudExpc3RlbmVyVG9TdHJpbmdUZW1wbGF0ZTsKICAgICBPd25QdHI8U3RyaW5nQ2FjaGU+IG1f
c3RyaW5nQ2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggODk3ODEzOGZmZGI0M2QzZmE5MjljZjNmZTVi
NDk0MDU0ZDEyNDFmOS4uNGJmNzNlMjEzMDk1NTQ4ZWJhYTIzYjE1MTFmY2Y2OTYzM2QyYzMzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25D
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0
aW9uQ3VzdG9tLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OExvY2F0aW9uOjpyZWxvYWRBdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
CiAgICAgLy8gVGhpcyBpcyBvbmx5IGZvciBnZXR0aW5nIGEgdW5pcXVlIHBvaW50ZXIgd2hpY2gg
d2UgY2FuIHBhc3MgdG8gcHJpdmF0ZVRlbXBsYXRlLgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBw
cml2YXRlVGVtcGxhdGVVbmlxdWVLZXkgPSAicmVsb2FkUHJpdmF0ZVRlbXBsYXRlIjsKICAgICBX
cmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUgPSB3b3JsZFR5cGUoaXNvbGF0ZSk7Ci0g
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50
V29ybGRUeXBlLCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjpyZWxvYWRN
ZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9u
OjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSkpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZhdGVUZW1wbGF0
ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6cmVsb2FkTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgp
LCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwg
Y3VycmVudFdvcmxkVHlwZSkpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVy
ID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6
R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpOwogICAgIGlmIChob2xkZXIu
SXNFbXB0eSgpKSB7CkBAIC0xNTMsNyArMTUzLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
TG9jYXRpb246OnJlbG9hZEF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4K
ICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBp
ZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0
ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpKSB7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSA9ICJy
ZWxvYWRTaGFyZWRUZW1wbGF0ZSI7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5H
ZXRJc29sYXRlKCkpLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnNoYXJlZFRl
bXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjpyZWxvYWRNZXRob2RDdXN0b20sIHY4VW5kZWZp
bmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29s
YXRlKSkpOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hh
cmVkVGVtcGxhdGUgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0SXNvbGF0ZSgpKS0+
cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtl
eSwgVjhMb2NhdGlvbjo6cmVsb2FkTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2ln
bmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdv
cmxkVHlwZSkpKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigp
OwogICAgIH0KICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpAQCAt
MTY1LDcgKzE2NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZXBsYWNl
QXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICAvLyBUaGlzIGlzIG9u
bHkgZm9yIGdldHRpbmcgYSB1bmlxdWUgcG9pbnRlciB3aGljaCB3ZSBjYW4gcGFzcyB0byBwcml2
YXRlVGVtcGxhdGVNYXAuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHByaXZhdGVUZW1wbGF0ZVVu
aXF1ZUtleSA9ICJyZXBsYWNlUHJpdmF0ZVRlbXBsYXRlIjsKICAgICBXcmFwcGVyV29ybGRUeXBl
IGN1cnJlbnRXb3JsZFR5cGUgPSB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpOwotICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxk
VHlwZSwgJnByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6cmVwbGFjZU1ldGhv
ZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246Okdl
dFJhd1RlbXBsYXRlKGlzb2xhdGUpKSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmcHJpdmF0ZVRlbXBsYXRlVW5p
cXVlS2V5LCBWOExvY2F0aW9uOjpyZXBsYWNlTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2
ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgY3Vy
cmVudFdvcmxkVHlwZSkpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0g
aW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0
VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpOwogICAgIGlmIChob2xkZXIuSXNF
bXB0eSgpKSB7CkBAIC0xNzYsNyArMTc2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9j
YXRpb246OnJlcGxhY2VBdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAg
IExvY2F0aW9uKiBpbXAgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmICgh
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoQmluZGluZ1N0YXRlOjpp
bnN0YW5jZSgpLCBpbXAtPmZyYW1lKCksIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcikpIHsKICAg
ICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYXJlZFRlbXBsYXRlVW5pcXVlS2V5ID0gInJlcGxh
Y2VTaGFyZWRUZW1wbGF0ZSI7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJ
c29sYXRlKCkpLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnNoYXJlZFRlbXBs
YXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjpyZXBsYWNlTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5l
ZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0
ZSkpKTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJl
ZFRlbXBsYXRlID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnBy
aXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXks
IFY4TG9jYXRpb246OnJlcGxhY2VNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWdu
YXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlLCBjdXJyZW50V29y
bGRUeXBlKSkpOwogICAgICAgICByZXR1cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7
CiAgICAgfQogICAgIHJldHVybiBwcml2YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CkBAIC0x
ODgsNyArMTg4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OmFzc2lnbkF0
dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAgICAvLyBUaGlzIGlzIG9u
bHkgZm9yIGdldHRpbmcgYSB1bmlxdWUgcG9pbnRlciB3aGljaCB3ZSBjYW4gcGFzcyB0byBwcml2
YXRlVGVtcGxhdGVNYXAuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHByaXZhdGVUZW1wbGF0ZVVu
aXF1ZUtleSA9ICJhc3NpZ25Qcml2YXRlVGVtcGxhdGUiOwogICAgIFdyYXBwZXJXb3JsZFR5cGUg
Y3VycmVudFdvcmxkVHlwZSA9IHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSk7Ci0gICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRU
eXBlLCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjphc3NpZ25NZXRob2RD
dXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRS
YXdUZW1wbGF0ZShpc29sYXRlKSkpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZhdGVUZW1wbGF0ZVVuaXF1
ZUtleSwgVjhMb2NhdGlvbjo6YXNzaWduTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6
U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVu
dFdvcmxkVHlwZSkpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5m
by5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVt
cGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0
eSgpKSB7CkBAIC0xOTksNyArMTk5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRp
b246OmFzc2lnbkF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAgICBM
b2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBpZiAoIUJp
bmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5z
dGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpKSB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSA9ICJhc3NpZ25T
aGFyZWRUZW1wbGF0ZSI7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBzaGFyZWRUZW1wbGF0ZSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29s
YXRlKCkpLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnNoYXJlZFRlbXBsYXRl
VW5pcXVlS2V5LCBWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCks
IHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSkp
OworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVt
cGxhdGUgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0SXNvbGF0ZSgpKS0+cHJpdmF0
ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSwgVjhM
b2NhdGlvbjo6YXNzaWduTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJl
OjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlw
ZSkpKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAg
IH0KICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192737</attachid>
            <date>2013-03-12 08:06:53 -0700</date>
            <delta_ts>2013-03-12 08:55:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111724-20130312160250.patch</filename>
            <type>text/plain</type>
            <size>79954</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjdiOWIxZDU4NDczNjY1
NGE0N2EzYWU5MjA3ODFiY2EzMjJlZGQyNy4uOTNkMDQwMDVlZTdiNjA3YTA3ZDY3YzZjOTE1Y2Uw
M2YzYWZkNmIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAxMy0wMy0xMiAgTWFy
amEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBTdG9yZSBt
YWluIHdvcmxkIGFuZCBub24tbWFpbiB3b3JsZCB0ZW1wbGF0ZXMgc2VwYXJhdGVseS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTcyNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgbmVlZGVk
IGZvciBnZW5lcmF0aW5nIHNwZWNpYWxpemVkIGJpbmRpbmdzIGZvciB0aGUgbWFpbgorICAgICAg
ICB3b3JsZCAoYnVnIDExMDg3NCkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzICh1cGRhdGVkIGV4
aXN0aW5nIGJpbmRpbmdzIHRlc3RzKS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2Vu
ZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbik6CisgICAgICAgIChDcmVhdGVDdXN0b21TaWduYXR1cmUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb25maWd1cmVWOEZsb2F0NjRBcnJheVRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4RmxvYXQ2NEFycmF5OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEZsb2F0
NjRBcnJheTo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOEZsb2F0NjRBcnJheS5oOgorICAgICAgICAoVjhGbG9hdDY0QXJyYXkpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBvc3RNZXNzYWdl
QXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RBY3RpdmVET01P
YmplY3RUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RBY3RpdmVET01PYmplY3Q6
OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6
SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RB
Y3RpdmVET01PYmplY3QuaDoKKyAgICAgICAgKFY4VGVzdEFjdGl2ZURPTU9iamVjdCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRUZW1wbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6SGFzSW5zdGFu
Y2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1l
ZEdldHRlci5oOgorICAgICAgICAoVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6Okhhc0luc3RhbmNlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAoVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
VjhUZXN0RXZlbnRUYXJnZXQ6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEV2ZW50VGFyZ2V0OjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0Lmg6CisgICAgICAgIChWOFRlc3RFdmVudFRhcmdldCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFeGNlcHRpb246OkdldFRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4VGVzdEV4Y2VwdGlvbjo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaDoKKyAgICAgICAgKFY4VGVz
dEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdElu
dGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VU
ZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6OkdldFRlbXBsYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEludGVyZmFjZTo6SGFzSW5zdGFuY2UpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaDoKKyAgICAg
ICAgKFY4VGVzdEludGVyZmFjZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6SGFzSW5zdGFuY2UpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6
CisgICAgICAgIChWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKFY4VGVzdE5hbWVkQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6
OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6Okhhc0luc3RhbmNl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oOgorICAg
ICAgICAoVjhUZXN0Tm9kZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6OkdldFRlbXBsYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4VGVzdE9iajo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaDoKKyAgICAgICAgKFY4VGVzdE9iaik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6R2V0
VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChWOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0VGVtcGxhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpIYXNJbnN0YW5j
ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5oOgorICAgICAgICAoVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0VHlwZWRlZnNU
ZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RUeXBlZGVmczo6R2V0VGVtcGxhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0VHlwZWRlZnM6Okhhc0luc3RhbmNlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuaDoKKyAgICAgICAg
KFY4VGVzdFR5cGVkZWZzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVy
SXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVy
SXNvbGF0ZURhdGE6OnByaXZhdGVUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlcklz
b2xhdGVEYXRhOjpyYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlcklzb2xhdGVE
YXRhOjpoYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJJc29sYXRlRGF0YTo6cmF3VGVtcGxhdGVNYXAp
OgorICAgICAgICAoVjhQZXJJc29sYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlcklz
b2xhdGVEYXRhOjp0ZW1wbGF0ZU1hcCk6CisgICAgICAgICogYmluZGluZ3MvdjgvV3JhcHBlclR5
cGVJbmZvLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6cmVsb2FkQXR0ckdldHRlckN1c3Rv
bSk6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZXBsYWNlQXR0ckdldHRlckN1c3Rv
bSk6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjphc3NpZ25BdHRyR2V0dGVyQ3VzdG9t
KToKKwogMjAxMy0wMy0xMiAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXNvdXJjZVNjcmlwdEZpbGUgZGl2ZXJnZWQgc3Rh
dGUgc2hvdWxkIGJlIGNvcnJlY3RseSByZXNldCBhZnRlciBkZWJ1Z2dlciByZXNldC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5k
ZXggZWYyMGY5ZmVlZDNjZDRmM2E2Mjg2NzA5ZmY3MDU0NTlmOTM2ZTkyZi4uY2RlZjY0NGI3ZTdi
N2JlYjI2NzRiZjIyMjQ0YzIzZGQxYTk4MTdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTM2MCw3ICszNjAsNyBAQCBF
TkQKICAgICB9CiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7Ci0gICAgc3RhdGlj
IGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwor
ICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklz
b2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlID0gR2V0RnJvbUNvbnRleHQpOwogICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xh
dGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgJHtuYXRpdmVUeXBlfSogdG9OYXRp
dmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpAQCAtNzgwLDcgKzc4MCw3
IEBAIHN1YiBHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvbkdldHRlcgogICAgIG15ICR2OEludGVy
ZmFjZU5hbWUgPSAiVjgiIC4gJGludGVyZmFjZU5hbWU7CiAgICAgbXkgJGZ1bmNOYW1lID0gJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAKLSAgICBteSAkc2lnbmF0dXJlID0gInY4OjpTaWdu
YXR1cmU6Ok5ldyhWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0SXNvbGF0ZSgpKS0+cmF3
VGVtcGxhdGUoJiIgLiAkdjhJbnRlcmZhY2VOYW1lIC4gIjo6aW5mbykpIjsKKyAgICBteSAkc2ln
bmF0dXJlID0gInY4OjpTaWduYXR1cmU6Ok5ldyhWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8u
R2V0SXNvbGF0ZSgpKS0+cmF3VGVtcGxhdGUoJiIgLiAkdjhJbnRlcmZhY2VOYW1lIC4gIjo6aW5m
bywgY3VycmVudFdvcmxkVHlwZSkpIjsKICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJWOERvTm90Q2hlY2tTaWduYXR1cmUifSkgewogICAgICAgICAk
c2lnbmF0dXJlID0gInY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigpIjsKICAgICB9CkBAIC0zMTU1
LDIwICszMTU1LDIwIEBAIEVORAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdy
YXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEg
PSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6
OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQo
JmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAg
ICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+
dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRh
dGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQt
PnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZSR7
djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0
ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwp
OworICAgICAgICBDb25maWd1cmUke3Y4SW50ZXJmYWNlTmFtZX1UZW1wbGF0ZShkYXRhLT5yYXdU
ZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRh
LT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0
ZW1wbDsKIH0KIAotYm9vbCAke3Y4SW50ZXJmYWNlTmFtZX06Okhhc0luc3RhbmNlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitib29sICR7djhJbnRl
cmZhY2VOYW1lfTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7Ci0gICAgcmV0
dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2
YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0lu
c3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKIH0KIAogRU5ECkBAIC00MDg5LDcgKzQw
ODksNyBAQCBzdWIgQ3JlYXRlQ3VzdG9tU2lnbmF0dXJlCiAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoR2V0VjhIZWFkZXJOYW1l
KCR0eXBlKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICRyZXN1bHQgLj0g
IlY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOCR7dHlwZX06
OmluZm8pIjsKKyAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICJWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjgke3R5cGV9OjppbmZvLCB3b3JsZFR5cGUpIjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICRyZXN1bHQgLj0g
InY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCkiOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAK
aW5kZXggZGQ3NmVhZjQzMTIyN2JmNzBmMWMzNTE0MWE3NjM5ZTlmNmRhYTM3ZS4uNGI4YjM2NTc4
YTc4ODdiNWQxY2E1MmUxMDM2ZTM3OGI2MWFmN2NkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCkBA
IC0xNTMsNyArMTUzLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBDb25maWd1cmVWOEZsb2F0NjRBcnJheVRlbXBsYXRlKHY4OjoKIAogICAgIC8vIEN1c3Rv
bSBTaWduYXR1cmUgJ2ZvbycKICAgICBjb25zdCBpbnQgZm9vQXJnYyA9IDE7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZm9vQXJndltmb29BcmdjXSA9IHsgVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RmxvYXQzMkFycmF5OjppbmZv
KSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZvb0FyZ3ZbZm9vQXJn
Y10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOEZs
b2F0MzJBcnJheTo6aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25h
dHVyZT4gZm9vU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGZvb0FyZ2MsIGZv
b0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJmb28iKSwgdjg6
OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhGbG9hdDY0QXJyYXlWOEludGVybmFsOjpmb29NZXRob2RD
YWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZm9vU2lnbmF0dXJlKSk7CiAKQEAgLTE2NSwyMCArMTY1
LDIwIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmln
dXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSh2ODo6CiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gVjhGbG9hdDY0QXJyYXk6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRh
KiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xh
dGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAo
KS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5k
KCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9
IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3Vs
dCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4g
cmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25m
aWd1cmVWOEZsb2F0NjRBcnJheVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNv
bGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVt
cGwpOworICAgICAgICBDb25maWd1cmVWOEZsb2F0NjRBcnJheVRlbXBsYXRlKGRhdGEtPnJhd1Rl
bXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEt
PnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRl
bXBsOwogfQogCi1ib29sIFY4RmxvYXQ2NEFycmF5OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorYm9vbCBWOEZsb2F0NjRBcnJh
eTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZp
bmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oCmluZGV4IGFmZTI4
OTMzODgyMGVmMTA0Nzk5MzBhZDUwY2UzZjBlMjNkNTEyNmYuLjliM2M2MWY4NWE2NjkwMmE4MzBl
OGM5YWQyMWRiMjk1ZWI5YjIwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4RmxvYXQ2NEFycmF5IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IFY4QXJyYXlCdWZmZXJW
aWV3OjpoYXNEZXBlbmRlbnRMaWZldGltZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIGJvb2wgSGFz
SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3Js
ZFR5cGUgPSBHZXRGcm9tQ29udGV4dCk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5
cGUpOwogICAgIHN0YXRpYyBGbG9hdDY0QXJyYXkqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5k
ZXggYWUzYTg1MWU0NDljZDAwMmY5ZDAwY2I2ODg2OWE2Y2VhMmNkMTY4NS4uZTYxNGIwYjExZWU2
OWYyMDhlMGJlZmZhMmY0M2U4NWI2NTIzMjg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9i
amVjdC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHBvc3RNZXNzYWdlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgYwogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBwcml2YXRlVGVtcGxhdGVVbmlxdWVLZXkgPSAicG9zdE1lc3Nh
Z2VQcml2YXRlVGVtcGxhdGUiOwogICAgIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlw
ZSA9IHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSog
ZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRlKCkpOwotICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSBkYXRh
LT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZhdGVUZW1wbGF0ZVVuaXF1
ZUtleSwgVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBvc3RNZXNzYWdlTWV0aG9kQ2Fs
bGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGluZm8uR2V0SXNvbGF0ZSgpKS0+cmF3VGVtcGxhdGUoJlY4VGVzdEFjdGl2ZURPTU9i
amVjdDo6aW5mbykpKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
cHJpdmF0ZVRlbXBsYXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUs
ICZwcml2YXRlVGVtcGxhdGVVbmlxdWVLZXksIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFs
Ojpwb3N0TWVzc2FnZU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJl
OjpOZXcoVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnJhd1RlbXBs
YXRlKCZWOFRlc3RBY3RpdmVET01PYmplY3Q6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpKSk7CiAK
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5z
dGFuY2VJblByb3RvdHlwZUNoYWluKFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVtcGxhdGUo
aW5mby5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpKTsKICAgICBpZiAoaG9sZGVyLklz
RW1wdHkoKSkgewpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcG9zdE1lc3NhZ2VBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjCiAg
ICAgVGVzdEFjdGl2ZURPTU9iamVjdCogaW1wID0gVjhUZXN0QWN0aXZlRE9NT2JqZWN0Ojp0b05h
dGl2ZShob2xkZXIpOwogICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vz
c1RvRnJhbWUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpLCBpbXAtPmZyYW1lKCksIERvTm90UmVw
b3J0U2VjdXJpdHlFcnJvcikpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYXJlZFRl
bXBsYXRlVW5pcXVlS2V5ID0gInBvc3RNZXNzYWdlU2hhcmVkVGVtcGxhdGUiOwotICAgICAgICB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSBkYXRh
LT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnNoYXJlZFRlbXBsYXRlVW5pcXVl
S2V5LCBUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6cG9zdE1lc3NhZ2VNZXRob2RDYWxs
YmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaW5mby5HZXRJc29sYXRlKCkpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0QWN0aXZlRE9NT2Jq
ZWN0OjppbmZvKSkpOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gc2hhcmVkVGVtcGxhdGUgPSBkYXRhLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlw
ZSwgJnNoYXJlZFRlbXBsYXRlVW5pcXVlS2V5LCBUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5h
bDo6cG9zdE1lc3NhZ2VNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVy
ZTo6TmV3KFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRlKCkpLT5yYXdUZW1w
bGF0ZSgmVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSkpOwog
ICAgICAgICByZXR1cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQogCkBA
IC0xOTUsNyArMTk1LDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBDb25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGEKIAogICAgIC8vIEN1c3Rv
bSBTaWduYXR1cmUgJ2V4Y2l0aW5nRnVuY3Rpb24nCiAgICAgY29uc3QgaW50IGV4Y2l0aW5nRnVu
Y3Rpb25BcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBleGNp
dGluZ0Z1bmN0aW9uQXJndltleGNpdGluZ0Z1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOE5vZGU6OmluZm8pIH07CisgICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZXhjaXRpbmdGdW5jdGlvbkFyZ3ZbZXhjaXRp
bmdGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdU
ZW1wbGF0ZSgmVjhOb2RlOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6
U2lnbmF0dXJlPiBleGNpdGluZ0Z1bmN0aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3
KGRlc2MsIGV4Y2l0aW5nRnVuY3Rpb25BcmdjLCBleGNpdGluZ0Z1bmN0aW9uQXJndik7CiAgICAg
cHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImV4Y2l0aW5nRnVuY3Rpb24iKSwgdjg6
OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6ZXhj
aXRpbmdGdW5jdGlvbk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBleGNpdGluZ0Z1bmN0
aW9uU2lnbmF0dXJlKSk7CiAKQEAgLTIxMCwyMCArMjEwLDIwIEBAIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0QWN0aXZlRE9NT2JqZWN0
VGVtcGxhCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0QWN0aXZl
RE9NT2JqZWN0OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVN
YXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0g
ICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNv
bGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1h
cCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxh
dGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAK
ICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0QWN0aXZl
RE9NT2JqZWN0VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3Js
ZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAg
ICAgIENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYXRlKGRhdGEtPnJhd1RlbXBs
YXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRl
bXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBs
OwogfQogCi1ib29sIFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6SGFzSW5zdGFuY2Uodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2Jvb2wgVjhUZXN0QWN0
aXZlRE9NT2JqZWN0OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKLSAgICBy
ZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8s
IHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFz
SW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3Rp
dmVET01PYmplY3QuaAppbmRleCBkMjM1YmM1NDU0MWFkNjkzNGI4YTY3ZjkwMDlkZjgwMGEzOWM4
ZTdkLi43MjM2NDhjYmQyZjcxYjk5MWIwOGY3N2I1Yzk5ZDg3MzM0NDgzZjJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9N
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEFjdGl2ZURPTU9iamVjdC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFY4VGVzdEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBI
YXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CisgICAgc3Rh
dGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSos
IFdyYXBwZXJXb3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4dCk7CiAgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdy
YXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0QWN0aXZlRE9NT2JqZWN0KiB0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRleCA0NjAxNDhjMmI0YjA2ZmIzZWZiYTU1NWI5MzJlYjhm
ZDhkZTQxYzdlLi5lZTVlMzcyZWY0Yzc4Y2U0ODZmODNkMGQ5M2Y4MDkwY2YwZDhmZjg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAgLTExNSwyMCArMTE1LDIwIEBA
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVE
YXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklz
b2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVN
YXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCku
ZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3Vs
dCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJl
c3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1
cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBD
b25maWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRlclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRl
KCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFk
ZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRl
clRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3
b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0
ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdEN1c3RvbU5hbWVkR2V0
dGVyOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQorYm9vbCBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6SGFzSW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldv
cmxkVHlwZSB3b3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRU
eXBlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCmluZGV4IGUyZjFk
NWE0ZWQ5NGJhOTBjZThlNWIxOGI4OWFlZTBkNzc5ZGQwNzEuLjExMzAzYWIxZDg2YjNjNzNkNTgz
ZDhmNzUyNDI0MjAxZmI2MGE3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5o
CkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVzdEN1c3Rv
bU5hbWVkR2V0dGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRl
bnRMaWZldGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSA9
IEdldEZyb21Db250ZXh0KTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAg
ICAgc3RhdGljIFRlc3RDdXN0b21OYW1lZEdldHRlciogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3Bw
CmluZGV4IGU2Yzg5OGUxMDA4NDY0M2I1MTkyMTA5N2NkMjRkMjc2ZWY3MjA3MWIuLjJjNjhlZTk0
YmYzYWYxNDhmNTU2MGFiNWZjOWMwODBiNzQ3YzlmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRD
b25zdHJ1Y3Rvci5jcHAKQEAgLTE1NywyMCArMTU3LDIwIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZlbnRDb25zdHJ1Y3RvclRl
bXBsCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXZlbnRDb25z
dHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5
cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFw
OjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAg
IGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xh
dGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAg
ICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEV2ZW50Q29u
c3RydWN0b3JUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxk
VHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAg
ICAgQ29uZmlndXJlVjhUZXN0RXZlbnRDb25zdHJ1Y3RvclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBs
YXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRl
bXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBs
OwogfQogCi1ib29sIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6Okhhc0luc3RhbmNlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitib29sIFY4VGVzdEV2
ZW50Q29uc3RydWN0b3I6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwg
djg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewotICAg
IHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5m
bywgdmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5o
YXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3Ry
dWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
dmVudENvbnN0cnVjdG9yLmgKaW5kZXggNmYxN2Y2NmQ0Mzg5ZmVjZjJiOWI3OGNjOWI5YjBiNDhj
M2JjNzQ4Ny4uNDJiNjY2OTNkNzg3MTgxNmI2ZTlkODE3Nzc1YmIxYTE4NDkxYjRhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIERpY3Rp
b25hcnk7CiBjbGFzcyBWOFRlc3RFdmVudENvbnN0cnVjdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBi
b29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKKyAg
ICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29s
YXRlKiwgV3JhcHBlcldvcmxkVHlwZSA9IEdldEZyb21Db250ZXh0KTsKICAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRl
KiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RFdmVudENvbnN0cnVjdG9yKiB0
b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJn
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2
ZW50VGFyZ2V0LmNwcAppbmRleCA4NDg1ZjA5NzI4MTU3NjBlMjEzNWM3Y2VkMmNiNGExM2JkNjc5
OThjLi40NDg2ZWUyZDYxNzg5NDI3ZjgxMjRmZjBjOTE2MWY3MDAwNjJhMDI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJn
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudFRhcmdldC5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxh
dGUodgogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnZGlzcGF0Y2hFdmVudCcKICAgICBjb25z
dCBpbnQgZGlzcGF0Y2hFdmVudEFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGRpc3BhdGNoRXZlbnRBcmd2W2Rpc3BhdGNoRXZlbnRBcmdjXSA9IHsgVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RXZlbnQ6OmluZm8pIH07
CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGlzcGF0Y2hFdmVudEFyZ3Zb
ZGlzcGF0Y2hFdmVudEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5y
YXdUZW1wbGF0ZSgmVjhFdmVudDo6aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8
djg6OlNpZ25hdHVyZT4gZGlzcGF0Y2hFdmVudFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5l
dyhkZXNjLCBkaXNwYXRjaEV2ZW50QXJnYywgZGlzcGF0Y2hFdmVudEFyZ3YpOwogICAgIHByb3Rv
LT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJkaXNwYXRjaEV2ZW50IiksIHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoVGVzdEV2ZW50VGFyZ2V0VjhJbnRlcm5hbDo6ZGlzcGF0Y2hFdmVudE1l
dGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBkaXNwYXRjaEV2ZW50U2lnbmF0dXJlKSk7CiAK
QEAgLTE5MSwyMCArMTkxLDIwIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZSh2CiB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXZlbnRUYXJnZXQ6OkdldFRlbXBsYXRl
KHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAg
ICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0g
ZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEt
PnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5m
byk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgp
KQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBo
YW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVt
cGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKGRhdGEtPnJh
d1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0
ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RFdmVudFRh
cmdldFRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRl
LCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZv
LCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdEV2ZW50VGFyZ2V0
OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQorYm9vbCBWOFRlc3RFdmVudFRhcmdldDo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3
b3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSkt
Pmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKIH0K
IAogRXZlbnRUYXJnZXQqIFY4VGVzdEV2ZW50VGFyZ2V0Ojp0b0V2ZW50VGFyZ2V0KHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaAppbmRleCBhYmEyYjNh
OTRiMDkzNTY5ODI3NzVmZTk1ODBkMTgwYTg3N2ZiZWE3Li5kODg4MzM4NDE1OTllMzBmNTBmZDQx
NGQ0NGEyZTE2Nzc3M2M3Njk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaApAQCAtMzQsNyArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOFRlc3RFdmVudFRhcmdldCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsK
LSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJ
c29sYXRlKik7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFs
dWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4dCk7CiAg
ICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0
ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0RXZlbnRU
YXJnZXQqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
eGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggN2MwMzMxNjczOWM0MGMyZDZjN2UxNGIyYzgwMTg4M2Fm
ZjVkODY1ZC4uNDdjZjFmZTgyYjZjZWY1NzJkNzkxNWRlZTMzNjlhM2Q1YzRjNWJmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2Vw
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTEwNiwyMCArMTA2LDIwIEBAIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXhjZXB0aW9uVGVtcGxh
dGUodjg6CiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXhjZXB0
aW9uOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3
b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0
ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYg
KHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURh
dGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3Js
ZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2
ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0RXhjZXB0aW9uVGVt
cGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAg
IGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3Vy
ZVY4VGVzdEV4Y2VwdGlvblRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5
cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlw
ZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVz
dEV4Y2VwdGlvbjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK2Jvb2wgVjhUZXN0RXhjZXB0aW9uOjpIYXNJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29y
bGRUeXBlIHdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5
cGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaAppbmRleCA2NjYzYTI1OGMyNmRmMWEyMzMyNTM0
ZTc4NGJkY2VhYzk4YjczOTRjLi5iYmI3NmRkODY2ZDViYjkxNDI2ZWQ4NDdlYjY5MTQ2NTcxOGU1
N2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFY4VGVzdEV4Y2VwdGlvbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJ
bnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGlj
IGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdy
YXBwZXJXb3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4dCk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBw
ZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0RXhjZXB0aW9uKiB0b05hdGl2ZSh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCmluZGV4
IDNlMjMzZjc5MThlYzRiZDU5ZTE3MjFhMDJmZmJiZDQyNjAxYTVmYWUuLmU5ZTk1MjU0YTMwYzY0
OWUzMWM2NmM0MmJiZGQ0NDU5ZTQyYWNmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCkBAIC00
MzgsNyArNDM4LDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoKIAogICAgIC8vIEN1c3RvbSBT
aWduYXR1cmUgJ3N1cHBsZW1lbnRhbE1ldGhvZDInCiAgICAgY29uc3QgaW50IHN1cHBsZW1lbnRh
bE1ldGhvZDJBcmdjID0gMjsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBz
dXBwbGVtZW50YWxNZXRob2QyQXJndltzdXBwbGVtZW50YWxNZXRob2QyQXJnY10gPSB7IHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3VwcGxlbWVudGFsTWV0aG9kMkFyZ3Zbc3VwcGxlbWVudGFs
TWV0aG9kMkFyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZv
LCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBzdXBwbGVtZW50
YWxNZXRob2QyU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIHN1cHBsZW1lbnRh
bE1ldGhvZDJBcmdjLCBzdXBwbGVtZW50YWxNZXRob2QyQXJndik7CiAjaWYgRU5BQkxFKENvbmRp
dGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5n
OjpOZXdTeW1ib2woInN1cHBsZW1lbnRhbE1ldGhvZDIiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTWV0aG9kMk1ldGhvZENh
bGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdXBwbGVtZW50YWxNZXRob2QyU2lnbmF0dXJlKSk7CkBA
IC00NTYsMjAgKzQ1NiwyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IENvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKHY4Ogogdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFjZTo6R2V0VGVtcGxhdGUodjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4
UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwot
ICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRh
LT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVt
cGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsK
KyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAg
ICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRs
ZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9
Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBs
YXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCgp
LmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1w
bGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRU
eXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwp
OwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RJbnRlcmZhY2U6Okhhc0luc3Rh
bmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiti
b29sIFY4VGVzdEludGVyZmFjZTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7
Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNl
KCZpbmZvLCB2YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKIH0KIAogQWN0aXZlRE9N
T2JqZWN0KiBWOFRlc3RJbnRlcmZhY2U6OnRvQWN0aXZlRE9NT2JqZWN0KHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCmluZGV4IDViNzhiOGFjMzk2Y2JlOGM0
ZTc3ODNhMmUyMjZhY2Q2MmZjYjI5YzEuLjY3MjMyOTdiZjBkNDRiYjc2ZTY1MzZiYjZkODYxZTA4
ZGFmNDdkY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgVjhUZXN0SW50ZXJmYWNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IHRydWU7Ci0gICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0
YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUq
LCBXcmFwcGVyV29ybGRUeXBlID0gR2V0RnJvbUNvbnRleHQpOwogICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBX
cmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdEludGVyZmFjZSogdG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDI5MWRmY2U1OTdhMWEwZDZmYzM5YzllYzUy
ZjE0MjE3MDYwODU1NDQuLmQxNDdjN2JmZTRhMzY0NzFiOTg0NmQ2NWJlNTJhMGM0YWE1NmVkOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTEx
NSwyMCArMTE1LDIwIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lCiB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQog
ewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1
bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5k
KCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSku
ZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNj
b3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJU
ZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0g
ICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmln
dXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRl
KCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBs
YXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwog
fQogCi1ib29sIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6Okhhc0luc3RhbmNlKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitib29sIFY4VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBl
KQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0
YW5jZSgmaW5mbywgdmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CiB9CiAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKaW5kZXggNGUzNjZjZGY1NTFm
MTYxNjBmNmQxYzc2OGViNDE0NTk5YTdjNGNhYy4uNTJiNmIwNjQzNmY4ZDBhYTNlNWQ0OTFiM2Zi
ZjRkZjVlOGM0MGJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhh
c0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uo
djg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBib29sIEhh
c0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29y
bGRUeXBlID0gR2V0RnJvbUNvbnRleHQpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRU
eXBlKTsKICAgICBzdGF0aWMgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIHRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENv
bnN0cnVjdG9yLmNwcAppbmRleCAxMWFjOWNmNWI1YzdhN2ZlNjk2Yjk2M2I3NzE5ZDI1YTNjYWE3
Yjc4Li4xZWNjNDRiN2UxNGY1NmRmZGI2MWY5N2MxNzA3ODNkNGNmY2FkYTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC0xNDYsMjAgKzE0NiwyMCBAQCBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5hbWVk
Q29uc3RydWN0b3JUZW1wbAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
VGVzdE5hbWVkQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRh
ID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRh
OjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5k
KCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisg
ICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEt
PnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBk
YXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0
LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVW
OFRlc3ROYW1lZENvbnN0cnVjdG9yVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBp
c29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0
ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbGF0ZShk
YXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsK
KyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAg
IHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQor
Ym9vbCBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxk
VHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFz
SW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOwogfQogCiBB
Y3RpdmVET01PYmplY3QqIFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OnRvQWN0aXZlRE9NT2JqZWN0
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVj
dG9yLmgKaW5kZXggYTE5ZGJjNjZjZWNlNGM0ZThjNTNkZmEyNGRhZjc2NDU4NzA4YjU0MC4uZjA1
ZGNmYzVkOGNlMjc3MmUzZWEwZmUxYjVkZmQzNGE2ZmJlMDk3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIGNsYXNzIFY4VGVzdE5h
bWVkQ29uc3RydWN0b3IgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVu
ZGVudExpZmV0aW1lID0gdHJ1ZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFu
Y2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUg
PSBHZXRGcm9tQ29udGV4dCk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwog
ICAgIHN0YXRpYyBUZXN0TmFtZWRDb25zdHJ1Y3RvciogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCmluZGV4IDIyNmIzNDQzOWZlNjZmZTU4
MzBhZTI3MzVmZjIzZjk0MWU1ZWM0ZTcuLmYzN2Y2NjdhMjIwYmNhMGZkYzU2ZDFmMGFhNjNhZTg1
ODllNThlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKQEAgLTExMywyMCArMTEzLDIwIEBAIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0Tm9kZVRlbXBs
YXRlKHY4OjpQZXJzCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0
Tm9kZTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUg
d29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjpp
dGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlm
IChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVE
YXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29y
bGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFw
KHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1wbGF0
ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0
YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhU
ZXN0Tm9kZVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29s
YXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZp
bmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdE5vZGU6Okhh
c0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUpCitib29sIFY4VGVzdE5vZGU6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQog
ewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5j
ZSgmaW5mbywgdmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CiB9CiAKIEV2ZW50VGFy
Z2V0KiBWOFRlc3ROb2RlOjp0b0V2ZW50VGFyZ2V0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2Jq
ZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3ROb2RlLmgKaW5kZXggOTc4NjAzNzYzMDU5OGYwNmI3ZjdmNjc0ZWQzMDAzMjhjNWFjYWMy
Ni4uZjhjOWY5NjM2M2EwZjAxODhiZWY1ODBiOTZhZTJmMzQxNjBlYTc0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oCkBA
IC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVzdE5vZGUgewog
cHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gdHJ1
ZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4
OjpJc29sYXRlKik7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4dCk7
CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0Tm9k
ZSogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNw
cAppbmRleCAwYTRjYzMzM2EyOTIyMTM0YzNkODUyZmQzMmRkY2U2MjBiZjJjZDE0Li44MGFlNTk5
NDhmNzNkZDMzMTI0Y2JiZDMwNWM2MDQyNWU5NDgyM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMzA2Miwz
MSArMzA2MiwzMSBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaQogCiAgICAgLy8gQ3VzdG9tIFNp
Z25hdHVyZSAndm9pZE1ldGhvZFdpdGhBcmdzJwogICAgIGNvbnN0IGludCB2b2lkTWV0aG9kV2l0
aEFyZ3NBcmdjID0gMzsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB2b2lk
TWV0aG9kV2l0aEFyZ3NBcmd2W3ZvaWRNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0
T2JqOjppbmZvKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHZvaWRN
ZXRob2RXaXRoQXJnc0FyZ3Zbdm9pZE1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RP
Ymo6OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHZv
aWRNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCB2b2lk
TWV0aG9kV2l0aEFyZ3NBcmdjLCB2b2lkTWV0aG9kV2l0aEFyZ3NBcmd2KTsKICAgICBwcm90by0+
U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgidm9pZE1ldGhvZFdpdGhBcmdzIiksIHY4OjpGdW5j
dGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OnZvaWRNZXRob2RXaXRoQXJnc01l
dGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2b2lkTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUp
KTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2xvbmdNZXRob2RXaXRoQXJncycKICAgICBj
b25zdCBpbnQgbG9uZ01ldGhvZFdpdGhBcmdzQXJnYyA9IDM7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gbG9uZ01ldGhvZFdpdGhBcmdzQXJndltsb25nTWV0aG9kV2l0aEFy
Z3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBsb25nTWV0aG9kV2l0aEFyZ3NBcmd2W2xvbmdNZXRob2RXaXRoQXJn
c0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6Okhh
bmRsZTx2ODo6U2lnbmF0dXJlPiBsb25nTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUgPSB2ODo6U2ln
bmF0dXJlOjpOZXcoZGVzYywgbG9uZ01ldGhvZFdpdGhBcmdzQXJnYywgbG9uZ01ldGhvZFdpdGhB
cmdzQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImxvbmdNZXRo
b2RXaXRoQXJncyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFs
Ojpsb25nTWV0aG9kV2l0aEFyZ3NNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgbG9uZ01l
dGhvZFdpdGhBcmdzU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdvYmpN
ZXRob2RXaXRoQXJncycKICAgICBjb25zdCBpbnQgb2JqTWV0aG9kV2l0aEFyZ3NBcmdjID0gMzsK
LSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBvYmpNZXRob2RXaXRoQXJnc0Fy
Z3Zbb2JqTWV0aG9kV2l0aEFyZ3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbykgfTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBvYmpNZXRob2RXaXRoQXJnc0FyZ3Zb
b2JqTWV0aG9kV2l0aEFyZ3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbywgd29ybGRUeXBl
KSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gb2JqTWV0aG9kV2l0aEFyZ3NTaWdu
YXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgb2JqTWV0aG9kV2l0aEFyZ3NBcmdjLCBv
YmpNZXRob2RXaXRoQXJnc0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3lt
Ym9sKCJvYmpNZXRob2RXaXRoQXJncyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RP
YmpWOEludGVybmFsOjpvYmpNZXRob2RXaXRoQXJnc01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5l
ZCgpLCBvYmpNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25h
dHVyZSAnbWV0aG9kV2l0aFNlcXVlbmNlQXJnJwogICAgIGNvbnN0IGludCBtZXRob2RXaXRoU2Vx
dWVuY2VBcmdBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBt
ZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2W21ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2NdID0geyBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhzZXF1ZW5jZTxT
Y3JpcHRQcm9maWxlPjo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2W21ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2Nd
ID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhzZXF1
ZW5jZTxTY3JpcHRQcm9maWxlPjo6aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8
djg6OlNpZ25hdHVyZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnU2lnbmF0dXJlID0gdjg6OlNpZ25h
dHVyZTo6TmV3KGRlc2MsIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2MsIG1ldGhvZFdpdGhTZXF1
ZW5jZUFyZ0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJtZXRo
b2RXaXRoU2VxdWVuY2VBcmciKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJ
bnRlcm5hbDo6bWV0aG9kV2l0aFNlcXVlbmNlQXJnTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVk
KCksIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNp
Z25hdHVyZSAnbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cycKICAgICBjb25zdCBp
bnQgbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ2MgPSAyOwotICAgIHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRU
aHJvd3NBcmd2W21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjXSA9IHsgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dz
QXJndlttZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJnY10gPSB7IHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6
SGFuZGxlPHY4OjpTaWduYXR1cmU+IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NT
aWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgbWV0aG9kVGhhdFJlcXVpcmVzQWxs
QXJnc0FuZFRocm93c0FyZ2MsIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmd2
KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibWV0aG9kVGhhdFJlcXVp
cmVzQWxsQXJnc0FuZFRocm93cyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpW
OEludGVybmFsOjptZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzTWV0aG9kQ2FsbGJh
Y2ssIHY4VW5kZWZpbmVkKCksIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NTaWdu
YXR1cmUpKTsKICAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdGF0aWNNZXRo
b2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KFRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFy
Z01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4o
KSkpOwpAQCAtMzEwNCw0MyArMzEwNCw0MyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaQogCiAg
ICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnc3RyaW5nQXJyYXlGdW5jdGlvbicKICAgICBjb25zdCBp
bnQgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2W3N0cmluZ0FycmF5RnVuY3Rpb25B
cmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4
RE9NU3RyaW5nW106OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2NdID0geyBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdb
XTo6aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gc3Ry
aW5nQXJyYXlGdW5jdGlvblNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBzdHJp
bmdBcnJheUZ1bmN0aW9uQXJnYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3YpOwogICAgIHByb3Rv
LT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdHJpbmdBcnJheUZ1bmN0aW9uIiksIHY4OjpG
dW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0FycmF5RnVuY3Rp
b25NZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgc3RyaW5nQXJyYXlGdW5jdGlvblNpZ25h
dHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnZG9tU3RyaW5nTGlzdEZ1bmN0aW9u
JwogICAgIGNvbnN0IGludCBkb21TdHJpbmdMaXN0RnVuY3Rpb25BcmdjID0gMTsKLSAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkb21TdHJpbmdMaXN0RnVuY3Rpb25Bcmd2W2Rv
bVN0cmluZ0xpc3RGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdMaXN0OjppbmZvKSB9OworICAgIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ3ZbZG9tU3Ry
aW5nTGlzdEZ1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSkt
PnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ0xpc3Q6OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2
ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGRvbVN0cmluZ0xpc3RGdW5jdGlvblNpZ25hdHVyZSA9
IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBkb21TdHJpbmdMaXN0RnVuY3Rpb25BcmdjLCBkb21T
dHJpbmdMaXN0RnVuY3Rpb25Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5
bWJvbCgiZG9tU3RyaW5nTGlzdEZ1bmN0aW9uIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXco
VGVzdE9ialY4SW50ZXJuYWw6OmRvbVN0cmluZ0xpc3RGdW5jdGlvbk1ldGhvZENhbGxiYWNrLCB2
OFVuZGVmaW5lZCgpLCBkb21TdHJpbmdMaXN0RnVuY3Rpb25TaWduYXR1cmUpKTsKIAogICAgIC8v
IEN1c3RvbSBTaWduYXR1cmUgJ2NvbnZlcnQxJwogICAgIGNvbnN0IGludCBjb252ZXJ0MUFyZ2Mg
PSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQxQXJndltj
b252ZXJ0MUFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1w
bGF0ZSgmVjhhOjppbmZvKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IGNvbnZlcnQxQXJndltjb252ZXJ0MUFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhhOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6Okhh
bmRsZTx2ODo6U2lnbmF0dXJlPiBjb252ZXJ0MVNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5l
dyhkZXNjLCBjb252ZXJ0MUFyZ2MsIGNvbnZlcnQxQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6
U3RyaW5nOjpOZXdTeW1ib2woImNvbnZlcnQxIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXco
VGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQxTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCks
IGNvbnZlcnQxU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdjb252ZXJ0
MicKICAgICBjb25zdCBpbnQgY29udmVydDJBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0MkFyZ3ZbY29udmVydDJBcmdjXSA9IHsgVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Yjo6aW5mbykgfTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0MkFyZ3ZbY29udmVydDJBcmdj
XSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Yjo6
aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVy
dDJTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgY29udmVydDJBcmdjLCBjb252
ZXJ0MkFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0
MiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0
Mk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBjb252ZXJ0MlNpZ25hdHVyZSkpOwogCiAg
ICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnY29udmVydDQnCiAgICAgY29uc3QgaW50IGNvbnZlcnQ0
QXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDRB
cmd2W2NvbnZlcnQ0QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJh
d1RlbXBsYXRlKCZWOGQ6OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gY29udmVydDRBcmd2W2NvbnZlcnQ0QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGQ6OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2
ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZlcnQ0U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVy
ZTo6TmV3KGRlc2MsIGNvbnZlcnQ0QXJnYywgY29udmVydDRBcmd2KTsKICAgICBwcm90by0+U2V0
KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY29udmVydDQiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVydDRNZXRob2RDYWxsYmFjaywgdjhVbmRlZmlu
ZWQoKSwgY29udmVydDRTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2Nv
bnZlcnQ1JwogICAgIGNvbnN0IGludCBjb252ZXJ0NUFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQ1QXJndltjb252ZXJ0NUFyZ2NdID0geyBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhlOjppbmZvKSB9Owor
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQ1QXJndltjb252ZXJ0
NUFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgm
VjhlOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBj
b252ZXJ0NVNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBjb252ZXJ0NUFyZ2Ms
IGNvbnZlcnQ1QXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNv
bnZlcnQ1IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNv
bnZlcnQ1TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGNvbnZlcnQ1U2lnbmF0dXJlKSk7
CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICd2YXJpYWRpY05vZGVNZXRob2QnCiAgICAgY29u
c3QgaW50IHZhcmlhZGljTm9kZU1ldGhvZEFyZ2MgPSAyOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IHZhcmlhZGljTm9kZU1ldGhvZEFyZ3ZbdmFyaWFkaWNOb2RlTWV0aG9k
QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZW
OE5vZGU6OmluZm8pLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0
ZSgmVjhOb2RlOjppbmZvKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHZhcmlhZGljTm9kZU1ldGhvZEFyZ3ZbdmFyaWFkaWNOb2RlTWV0aG9kQXJnY10gPSB7IFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOE5vZGU6OmluZm8sIHdv
cmxkVHlwZSksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZW
OE5vZGU6OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+
IHZhcmlhZGljTm9kZU1ldGhvZFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCB2
YXJpYWRpY05vZGVNZXRob2RBcmdjLCB2YXJpYWRpY05vZGVNZXRob2RBcmd2KTsKICAgICBwcm90
by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgidmFyaWFkaWNOb2RlTWV0aG9kIiksIHY4OjpG
dW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OnZhcmlhZGljTm9kZU1ldGhv
ZE1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2YXJpYWRpY05vZGVNZXRob2RTaWduYXR1
cmUpKTsKICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmJhdGNoQ29uZmlndXJlQ29uc3RhbnRzKGRl
c2MsIHByb3RvLCBWOFRlc3RPYmpDb25zdHMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0T2JqQ29u
c3RzKSwgaXNvbGF0ZSk7CkBAIC0zMTUzLDIwICszMTUzLDIwIEBAIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6
OlBlcnNpCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0T2JqOjpH
ZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5
cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9y
IHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3Vs
dCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRl
bXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUp
LmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRU
eXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFu
ZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUoZGF0YS0+
cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBs
YXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE9ialRl
bXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3Js
ZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1w
bCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdE9iajo6SGFzSW5zdGFuY2Uo
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2Jvb2wg
VjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKLSAgICByZXR1
cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZh
bHVlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5z
dGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOwogfQogCiB2b2lkIFY4VGVzdE9iajo6aW5z
dGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaW5zdGFuY2Us
IFRlc3RPYmoqIGltcGwsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCmluZGV4IGFmZGY3Njdm
YmViY2ZlMzU3ZmUzZTZkMWY5M2M0ODA3MWIyZDkwNWQuLmVkNTI5NmFkZWMzMTNjZmY1Y2Y0ODEx
MDgxMzgzNzA0NTE1NjcyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgVjhUZXN0T2JqIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9v
bCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIEhhc0luc3Rh
bmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgYm9v
bCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBl
cldvcmxkVHlwZSA9IEdldEZyb21Db250ZXh0KTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldv
cmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RPYmoqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcAppbmRleCAwZDgwNTk5YmQ5ZDM5NGZkYTAwODNmODFmOTFlYzNkY2ZiNGQzMjU0
Li41NTEzNTkxMWU2NzQzZTcwMDdkNTY1ZGQ0MmJjZmY1ZWU3MTEzZGZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0xNjcsMjAgKzE2NywyMCBA
QCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rvcgogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OkdldFRlbXBsYXRlKHY4OjpJc29s
YXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklz
b2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBW
OFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVt
cGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRl
TWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9y
IHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAg
ICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29w
ZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAg
ICAgICBDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGVtcGxhdGUoZGF0YS0+
cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBs
YXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRU
eXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5
cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorYm9vbCBWOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKLSAgICByZXR1
cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZh
bHVlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5z
dGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCmluZGV4IGFlNTIxMDEyZDg5Y2I3ZjllYzBkNWIwMjRj
OWQ1YWVmMTBkZTc0NDAuLjU1NzZhMWU2YzFhOGI1OWQ4OTEzNzJmZWRiMTBkNjEwODA5NDk2OGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtMzQsNyAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZl
dGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSA9IEdldEZy
b21Db250ZXh0KTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3Rh
dGljIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDcwZGZjYTdiMjliYmQ2M2JjNTUzYjIz
ODYzNWJkZjExMTcyYTQ2NTcuLjhlNWM3YzQ1ZmQ5NWRjZDU1MDdjOTU1YWViYzdiYjY3Y2EwNjc3
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UuY3BwCkBAIC0zMzIsMjAgKzMzMiwyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZQogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdy
YXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEg
PSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6
OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQo
JmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAg
ICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+
dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRh
dGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQt
PnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBs
YXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCgp
LmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRU
eXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5
cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitib29sIFY4VGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5
cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0lu
c3RhbmNlKCZpbmZvLCB2YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKIH0KIAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgK
aW5kZXggMGE1ZmEzZjIyNDM1YjY5YTQwN2I3M2M5OTcxZTdiNTM2ZTE4MTAyNi4uMGQ0ZTU5ZWZi
ZmQzYzU0YWVmODM4MzU4ODc5MDQ4NzZmNzk4MjZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaApAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0
aW1lID0gZmFsc2U7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlID0gR2V0RnJv
bUNvbnRleHQpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0
aWMgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogdG9OYXRpdmUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHAKaW5kZXggZTY3
N2ViYzk1ODFjMGIzZDVjMzJlOTQ4MGFjZjU4NzNmZjk1NjA2My4uMWEyYTI4Njk2ZTg4N2Q3ZDEw
NmJmNzYyNjU0ZDdhNTI5OWZiMjMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuY3BwCkBAIC01NTEsMjUg
KzU1MSwyNSBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUodjg6OgogCiAgICAgLy8gQ3VzdG9tIFNpZ25h
dHVyZSAnbWV0aG9kV2l0aFNlcXVlbmNlQXJnJwogICAgIGNvbnN0IGludCBtZXRob2RXaXRoU2Vx
dWVuY2VBcmdBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBt
ZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2W21ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2NdID0geyBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhzZXF1ZW5jZTxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+OjppbmZvKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3ZbbWV0aG9kV2l0aFNlcXVlbmNl
QXJnQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRl
KCZWOHNlcXVlbmNlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT46OmluZm8sIHdvcmxkVHlwZSkgfTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25h
dHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdj
LCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgibWV0aG9kV2l0aFNlcXVlbmNlQXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRl
OjpOZXcoVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6bWV0aG9kV2l0aFNlcXVlbmNlQXJnTWV0aG9k
Q2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSkp
OwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnbnVsbGFibGVBcnJheUFyZycKICAgICBjb25z
dCBpbnQgbnVsbGFibGVBcnJheUFyZ0FyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IG51bGxhYmxlQXJyYXlBcmdBcmd2W251bGxhYmxlQXJyYXlBcmdBcmdjXSA9
IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3Ry
aW5nW106OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbnVs
bGFibGVBcnJheUFyZ0FyZ3ZbbnVsbGFibGVBcnJheUFyZ0FyZ2NdID0geyBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbywgd29y
bGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbnVsbGFibGVBcnJheUFy
Z1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBudWxsYWJsZUFycmF5QXJnQXJn
YywgbnVsbGFibGVBcnJheUFyZ0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3
U3ltYm9sKCJudWxsYWJsZUFycmF5QXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVz
dFR5cGVkZWZzVjhJbnRlcm5hbDo6bnVsbGFibGVBcnJheUFyZ01ldGhvZENhbGxiYWNrLCB2OFVu
ZGVmaW5lZCgpLCBudWxsYWJsZUFycmF5QXJnU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20g
U2lnbmF0dXJlICdzdHJpbmdBcnJheUZ1bmN0aW9uJwogICAgIGNvbnN0IGludCBzdHJpbmdBcnJh
eUZ1bmN0aW9uQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
c3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2NdID0geyBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6
aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJh
eUZ1bmN0aW9uQXJndltzdHJpbmdBcnJheUZ1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjppbmZvLCB3b3Js
ZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBzdHJpbmdBcnJheUZ1bmN0
aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIHN0cmluZ0FycmF5RnVuY3Rp
b25BcmdjLCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3Ry
aW5nOjpOZXdTeW1ib2woInN0cmluZ0FycmF5RnVuY3Rpb24iKSwgdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBcnJheUZ1bmN0aW9uTWV0aG9k
Q2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHN0cmluZ0FycmF5RnVuY3Rpb25TaWduYXR1cmUpKTsK
IAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N0cmluZ0FycmF5RnVuY3Rpb24yJwogICAgIGNv
bnN0IGludCBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5RnVuY3Rpb24yQXJndltzdHJpbmdBcnJheUZ1
bmN0aW9uMkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1w
bGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlvbjJB
cmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4
RE9NU3RyaW5nW106OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWdu
YXR1cmU+IHN0cmluZ0FycmF5RnVuY3Rpb24yU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3
KGRlc2MsIHN0cmluZ0FycmF5RnVuY3Rpb24yQXJnYywgc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmd2
KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3RyaW5nQXJyYXlGdW5j
dGlvbjIiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFs
OjpzdHJpbmdBcnJheUZ1bmN0aW9uMk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdHJp
bmdBcnJheUZ1bmN0aW9uMlNpZ25hdHVyZSkpOwogCkBAIC01ODEsMjAgKzU4MSwyMCBAQCBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFR5
cGVkZWZzVGVtcGxhdGUodjg6Ogogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IFY4VGVzdFR5cGVkZWZzOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBl
cldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVt
cGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5m
byk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4
UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1w
bGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+
dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFs
dWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0
VHlwZWRlZnNUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxk
VHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAg
ICAgQ29uZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5m
bywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1h
cCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAot
Ym9vbCBWOFRlc3RUeXBlZGVmczo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2Jvb2wgVjhUZXN0VHlwZWRlZnM6Okhhc0luc3Rh
bmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdy
YXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOworICAgIHJldHVybiBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUs
IHdvcmxkVHlwZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuaAppbmRleCAxNGRiMWU1NWQ5ODI4N2Ew
ZTdkY2UwNzQyYzNhMThjNTVhYjczOTdiLi5jNTJlMjAzM2NmMGQ1NzFkNGUxYmY5NGFmMDU2OGFk
N2Q4YzJjZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0VHlwZWRlZnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBWOFRlc3RUeXBlZGVmcyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBI
YXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CisgICAgc3Rh
dGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSos
IFdyYXBwZXJXb3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4dCk7CiAgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdy
YXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0VHlwZWRlZnMqIHRvTmF0aXZlKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcAppbmRleCA2YmM4MDNhNDE3ZGVhMDhmY2Rm
ODgzNWQ1YmJlMjU5ZmIzMzNlMTgxLi5jOTdiNTkzYjg0NjMzZGQzZjM0MTEwYmYxMmI2NjcwNGZh
ODVhMmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JG
dW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVu
Y3Rpb24uY3BwCkBAIC00NCwxMiArNDQsMTIgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IFY4QWRhcHRvckZ1bmN0aW9uOjpnZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSoKIHsK
ICAgICBBU1NFUlQoaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxh
dGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5m
byk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAg
IFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5y
YXdUZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+cmF3VGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdC0+dmFsdWU7CiAgICAgLy8gVGhlIGxpZmV0aW1lIGlzIG9mIG5ld1RlbXBsYXRlIGlzIGRl
bGVnYXRlZCB0byB0aGUgVGVtcGxhdGVNYXAgdGh1cyB0aGlzIHdvbid0IGJlIGxlYWtlZC4KICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbmV3VGVtcGxhdGUgPSB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KCkpOwotICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuYWRkKCZpbmZv
LCBjb25maWd1cmVUZW1wbGF0ZShuZXdUZW1wbGF0ZSkpOworICAgIGRhdGEtPnJhd1RlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCBjb25maWd1cmVUZW1wbGF0ZShuZXdUZW1wbGF0ZSkp
OwogICAgIHJldHVybiBuZXdUZW1wbGF0ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCmluZGV4IGE0ZGRjODMwODY4MWY3ZmE2MzYxMmIyZmY4
MDVjY2M1NGIxMTljZjMuLmQ1YmEyMTAwYTQyM2IxMTIyYjlkN2I1OWM1NjU3NTZhZWE4MTViYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKQEAg
LTMwMyw3ICszMDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCh2YWx1ZS0+SXNPYmplY3Qo
KSk7CiAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7CiAgICAgICAgIEFTU0VSVChWOERPTVdy
YXBwZXI6Om1heWJlRE9NV3JhcHBlcih2YWx1ZSkpOwotICAgICAgICBBU1NFUlQoVjhOb2RlOjpI
YXNJbnN0YW5jZSh3cmFwcGVyLCBtX2lzb2xhdGUpKTsKKyAgICAgICAgQVNTRVJUKFY4Tm9kZTo6
SGFzSW5zdGFuY2Uod3JhcHBlciwgbV9pc29sYXRlLCBNYWluV29ybGQpIHx8IFY4Tm9kZTo6SGFz
SW5zdGFuY2Uod3JhcHBlciwgbV9pc29sYXRlLCBJc29sYXRlZFdvcmxkKSk7CiAgICAgICAgIE5v
ZGUqIG5vZGUgPSBWOE5vZGU6OnRvTmF0aXZlKHdyYXBwZXIpOwogICAgICAgICAvLyBBIG1pbm9y
IERPTSBHQyBjYW4gaGFuZGxlIG9ubHkgbm9kZSB3cmFwcGVycyBpbiB0aGUgbWFpbiB3b3JsZC4K
ICAgICAgICAgLy8gTm90ZSB0aGF0IG5vZGUtPndyYXBwZXIoKS5Jc0VtcHR5KCkgcmV0dXJucyB0
cnVlIGZvciBub2RlcyB0aGF0CkBAIC0zNzYsNyArMzc2LDcgQEAgcHVibGljOgogCiAgICAgICAg
IGlmIChjbGFzc0lkID09IHY4RE9NTm9kZUNsYXNzSWQpIHsKICAgICAgICAgICAgIFVOVVNFRF9Q
QVJBTShtX2lzb2xhdGUpOwotICAgICAgICAgICAgQVNTRVJUKFY4Tm9kZTo6SGFzSW5zdGFuY2Uo
d3JhcHBlciwgbV9pc29sYXRlKSk7CisgICAgICAgICAgICBBU1NFUlQoVjhOb2RlOjpIYXNJbnN0
YW5jZSh3cmFwcGVyLCBtX2lzb2xhdGUsIE1haW5Xb3JsZCkgfHwgVjhOb2RlOjpIYXNJbnN0YW5j
ZSh3cmFwcGVyLCBtX2lzb2xhdGUsIElzb2xhdGVkV29ybGQpKTsKICAgICAgICAgICAgIEFTU0VS
VCghd3JhcHBlci5Jc0luZGVwZW5kZW50KG1faXNvbGF0ZSkpOwogCiAgICAgICAgICAgICBOb2Rl
KiBub2RlID0gc3RhdGljX2Nhc3Q8Tm9kZSo+KG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwCmluZGV4IDJmZmMxOTQyYmQ0NmFmMzQ5
YjZmMjI2Njg5NTljYjM5ZmI0NzEwZTMuLjU5YTIzYWZkOTdmZGE0OWQ4NjlmNGNhYzY5MGQzNjIz
ZTRhNjZhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNv
bGF0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0
ZURhdGEuY3BwCkBAIC0xMDQsOCArMTA0LDEwIEBAIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4UGVySXNvbGF0ZURhdGE6OnRvU3RyaW5nVGVtcGxhdGUoKQogdm9pZCBWOFBlcklz
b2xhdGVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdElu
Zm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6QmluZGluZyk7Ci0gICAgaW5mby5hZGRNZW1i
ZXIobV9yYXdUZW1wbGF0ZXMsICJyYXdUZW1wbGF0ZXMiKTsKLSAgICBpbmZvLmFkZE1lbWJlciht
X3RlbXBsYXRlcywgInRlbXBsYXRlcyIpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcmF3VGVtcGxh
dGVzRm9yTWFpbldvcmxkLCAicmF3VGVtcGxhdGVzRm9yTWFpbldvcmxkIik7CisgICAgaW5mby5h
ZGRNZW1iZXIobV9yYXdUZW1wbGF0ZXNGb3JOb25NYWluV29ybGQsICJyYXdUZW1wbGF0ZXNGb3JO
b25NYWluV29ybGQiKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3RlbXBsYXRlc0Zvck1haW5Xb3Js
ZCwgInRlbXBsYXRlc0Zvck1haW5Xb3JsZCIpOworICAgIGluZm8uYWRkTWVtYmVyKG1fdGVtcGxh
dGVzRm9yTm9uTWFpbldvcmxkLCAidGVtcGxhdGVzRm9yTm9uTWFpbldvcmxkIik7CiAgICAgaW5m
by5hZGRNZW1iZXIobV9zdHJpbmdDYWNoZSwgInN0cmluZ0NhY2hlIik7CiAgICAgaW5mby5hZGRN
ZW1iZXIobV9pbnRlZ2VyQ2FjaGUsICJpbnRlZ2VyQ2FjaGUiKTsKICAgICBpbmZvLmFkZE1lbWJl
cihtX2RvbURhdGFMaXN0LCAiZG9tRGF0YUxpc3QiKTsKQEAgLTEyMiwzMiArMTI0LDQyIEBAIHZv
aWQgVjhQZXJJc29sYXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uCiAgICAgaW5mby5pZ25vcmVNZW1iZXIobV9hdXhpbGlhcnlD
b250ZXh0KTsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4UGVy
SXNvbGF0ZURhdGE6OnByaXZhdGVUZW1wbGF0ZShXcmFwcGVyV29ybGRUeXBlLCB2b2lkKiBwcml2
YXRlUG9pbnRlciwgdjg6Okludm9jYXRpb25DYWxsYmFjayBjYWxsYmFjaywgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGRhdGEsIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gc2lnbmF0dXJlLCBpbnQg
bGVuZ3RoKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4UGVySXNvbGF0
ZURhdGE6OnByaXZhdGVUZW1wbGF0ZShXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUs
IHZvaWQqIHByaXZhdGVQb2ludGVyLCB2ODo6SW52b2NhdGlvbkNhbGxiYWNrIGNhbGxiYWNrLCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGF0YSwgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBzaWdu
YXR1cmUsIGludCBsZW5ndGgpCiB7CisgICAgQVNTRVJUKGN1cnJlbnRXb3JsZFR5cGUgIT0gR2V0
RnJvbUNvbnRleHQpOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBw
cml2YXRlVGVtcGxhdGU7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJh
dG9yIHJlc3VsdCA9IG1fdGVtcGxhdGVzLmZpbmQocHJpdmF0ZVBvaW50ZXIpOwotICAgIGlmIChy
ZXN1bHQgIT0gbV90ZW1wbGF0ZXMuZW5kKCkpCisgICAgVGVtcGxhdGVNYXAmIHRlbXBsYXRlcyA9
IHRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpOworICAgIFRlbXBsYXRlTWFwOjppdGVyYXRv
ciByZXN1bHQgPSB0ZW1wbGF0ZXMuZmluZChwcml2YXRlUG9pbnRlcik7CisgICAgaWYgKHJlc3Vs
dCAhPSB0ZW1wbGF0ZXMuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBuZXdQcml2YXRlVGVtcGxhdGUg
PSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhtX2lzb2xhdGUsIHY4
OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoY2FsbGJhY2ssIGRhdGEsIHNpZ25hdHVyZSwgbGVuZ3Ro
KSk7Ci0gICAgbV90ZW1wbGF0ZXMuYWRkKHByaXZhdGVQb2ludGVyLCBuZXdQcml2YXRlVGVtcGxh
dGUpOworICAgIHRlbXBsYXRlcy5hZGQocHJpdmF0ZVBvaW50ZXIsIG5ld1ByaXZhdGVUZW1wbGF0
ZSk7CiAgICAgcmV0dXJuIG5ld1ByaXZhdGVUZW1wbGF0ZTsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4UGVySXNvbGF0ZURhdGE6OnJhd1RlbXBsYXRlKFdyYXBw
ZXJUeXBlSW5mbyogaW5mbykKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBW
OFBlcklzb2xhdGVEYXRhOjpyYXdUZW1wbGF0ZShXcmFwcGVyVHlwZUluZm8qIGluZm8sIFdyYXBw
ZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICBUZW1wbGF0ZU1hcDo6aXRlcmF0
b3IgcmVzdWx0ID0gbV9yYXdUZW1wbGF0ZXMuZmluZChpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9
IG1fcmF3VGVtcGxhdGVzLmVuZCgpKQorICAgIEFTU0VSVChjdXJyZW50V29ybGRUeXBlICE9IEdl
dEZyb21Db250ZXh0KTsKKyAgICBUZW1wbGF0ZU1hcCYgdGVtcGxhdGVzID0gcmF3VGVtcGxhdGVN
YXAoY3VycmVudFdvcmxkVHlwZSk7CisgICAgVGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9
IHRlbXBsYXRlcy5maW5kKGluZm8pOworICAgIGlmIChyZXN1bHQgIT0gdGVtcGxhdGVzLmVuZCgp
KQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBo
YW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVt
cGwgPSBjcmVhdGVSYXdUZW1wbGF0ZShtX2lzb2xhdGUpOwotICAgIG1fcmF3VGVtcGxhdGVzLmFk
ZChpbmZvLCB0ZW1wbCk7CisgICAgdGVtcGxhdGVzLmFkZChpbmZvLCB0ZW1wbCk7CiAgICAgcmV0
dXJuIHRlbXBsOwogfQogCi1ib29sIFY4UGVySXNvbGF0ZURhdGE6Omhhc0luc3RhbmNlKFdyYXBw
ZXJUeXBlSW5mbyogaW5mbywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQorYm9vbCBWOFBl
cklzb2xhdGVEYXRhOjpoYXNJbnN0YW5jZShXcmFwcGVyVHlwZUluZm8qIGluZm8sIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQog
ewotICAgIHJldHVybiByYXdUZW1wbGF0ZShpbmZvKS0+SGFzSW5zdGFuY2UodmFsdWUpOworICAg
IGlmIChjdXJyZW50V29ybGRUeXBlID09IEdldEZyb21Db250ZXh0KQorICAgICAgICBjdXJyZW50
V29ybGRUeXBlID0gd29ybGRUeXBlKG1faXNvbGF0ZSk7CisgICAgVGVtcGxhdGVNYXAmIHRlbXBs
YXRlcyA9IHJhd1RlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpOworICAgIFRlbXBsYXRlTWFw
OjppdGVyYXRvciByZXN1bHQgPSB0ZW1wbGF0ZXMuZmluZChpbmZvKTsKKyAgICBpZiAocmVzdWx0
ID09IHRlbXBsYXRlcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBy
ZXN1bHQtPnZhbHVlLT5IYXNJbnN0YW5jZSh2YWx1ZSk7CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRl
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oCmlu
ZGV4IGMzYzAyYjAxM2U5YTRmODU5MzljNjY3NWI5NWE1MTg3NjRjZjE0YWMuLjhkZGIwOGM4MGVm
MzAyYzA0ZWM5NzA0OWFjNjdhNjUxZDgwNTc4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmgKQEAgLTY3LDggKzY3LDE5IEBAIHB1YmxpYzoKIAog
ICAgIHR5cGVkZWYgSGFzaE1hcDx2b2lkKiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+ID4gVGVtcGxhdGVNYXA7CiAKLSAgICBUZW1wbGF0ZU1hcCYgcmF3VGVtcGxhdGVNYXAo
KSB7IHJldHVybiBtX3Jhd1RlbXBsYXRlczsgfQotICAgIFRlbXBsYXRlTWFwJiB0ZW1wbGF0ZU1h
cCgpIHsgcmV0dXJuIG1fdGVtcGxhdGVzOyB9CisgICAgVGVtcGxhdGVNYXAmIHJhd1RlbXBsYXRl
TWFwKFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorICAgIHsKKyAgICAgICAgaWYgKHdvcmxk
VHlwZSA9PSBNYWluV29ybGQpCisgICAgICAgICAgICByZXR1cm4gbV9yYXdUZW1wbGF0ZXNGb3JN
YWluV29ybGQ7CisgICAgICAgIHJldHVybiBtX3Jhd1RlbXBsYXRlc0Zvck5vbk1haW5Xb3JsZDsK
KyAgICB9CisKKyAgICBUZW1wbGF0ZU1hcCYgdGVtcGxhdGVNYXAoV3JhcHBlcldvcmxkVHlwZSB3
b3JsZFR5cGUpCisgICAgeworICAgICAgICBpZiAod29ybGRUeXBlID09IE1haW5Xb3JsZCkKKyAg
ICAgICAgICAgIHJldHVybiBtX3RlbXBsYXRlc0Zvck1haW5Xb3JsZDsKKyAgICAgICAgcmV0dXJu
IG1fdGVtcGxhdGVzRm9yTm9uTWFpbldvcmxkOworICAgIH0KIAogICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHRvU3RyaW5nVGVtcGxhdGUoKTsKICAgICB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4mIGxhenlFdmVudExpc3RlbmVyVG9TdHJpbmdUZW1wbGF0
ZSgpCkBAIC0xMzAsOSArMTQxLDkgQEAgcHVibGljOgogCiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZShXcmFwcGVyV29ybGRUeXBlLCB2b2lk
KiBwcml2YXRlUG9pbnRlciwgdjg6Okludm9jYXRpb25DYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGRhdGEsIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4sIGludCBsZW5ndGggPSAwKTsK
IAotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiByYXdUZW1wbGF0ZShX
cmFwcGVyVHlwZUluZm8qKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gcmF3VGVtcGxhdGUoV3JhcHBlclR5cGVJbmZvKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAKLSAg
ICBib29sIGhhc0luc3RhbmNlKFdyYXBwZXJUeXBlSW5mbyosIHY4OjpIYW5kbGU8djg6OlZhbHVl
Pik7CisgICAgYm9vbCBoYXNJbnN0YW5jZShXcmFwcGVyVHlwZUluZm8qLCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4sIFdyYXBwZXJXb3JsZFR5cGUpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFY4
UGVySXNvbGF0ZURhdGEodjg6Oklzb2xhdGUqKTsKQEAgLTE0MCw4ICsxNTEsMTAgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yT2ZUb1N0cmlu
Zyhjb25zdCB2ODo6QXJndW1lbnRzJik7CiAKICAgICB2ODo6SXNvbGF0ZSogbV9pc29sYXRlOwot
ICAgIFRlbXBsYXRlTWFwIG1fcmF3VGVtcGxhdGVzOwotICAgIFRlbXBsYXRlTWFwIG1fdGVtcGxh
dGVzOworICAgIFRlbXBsYXRlTWFwIG1fcmF3VGVtcGxhdGVzRm9yTWFpbldvcmxkOworICAgIFRl
bXBsYXRlTWFwIG1fcmF3VGVtcGxhdGVzRm9yTm9uTWFpbldvcmxkOworICAgIFRlbXBsYXRlTWFw
IG1fdGVtcGxhdGVzRm9yTWFpbldvcmxkOworICAgIFRlbXBsYXRlTWFwIG1fdGVtcGxhdGVzRm9y
Tm9uTWFpbldvcmxkOwogICAgIFNjb3BlZFBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IG1fdG9TdHJpbmdUZW1wbGF0ZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gbV9sYXp5RXZlbnRMaXN0ZW5lclRvU3RyaW5nVGVtcGxhdGU7CiAgICAgT3duUHRyPFN0
cmluZ0NhY2hlPiBtX3N0cmluZ0NhY2hlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9X
cmFwcGVyVHlwZUluZm8uaAppbmRleCA0NTZlMDAyMDE5ZmZhYjU0MmZkZWI1ZmNhZTc2ODhmNzk1
MGFhMzU2Li42NWZhNmZjNmVhNTkzODNiZjUxOGNjYjE1MWNiMWFiMzBlYTE0ZDIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaApAQCAtNTIsNyArNTIs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgZW51bSBXcmFwcGVyV29ybGRUeXBlIHsKICAg
ICAgICAgTWFpbldvcmxkLAogICAgICAgICBJc29sYXRlZFdvcmxkLAotICAgICAgICBXb3JrZXJX
b3JsZAorICAgICAgICBXb3JrZXJXb3JsZCwKKyAgICAgICAgLy8gV2hhdGV2ZXIgd29ybGQgdHlw
ZSB0aGUgY3VycmVudCBjb250ZXh0IGhhcy4gRklYTUU6IHJlbW92ZSB0aGlzLgorICAgICAgICBH
ZXRGcm9tQ29udGV4dAogICAgIH07CiAKICAgICB0eXBlZGVmIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiAoKkdldFRlbXBsYXRlRnVuY3Rpb24pKHY4OjpJc29sYXRlKiwgV3Jh
cHBlcldvcmxkVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggMWVmZDg1YWM4ZjVhZmQ1ZWFjMDQ5ZjJm
MGI4MWM2NGI1OGVkZWIzMS4uY2ZlZDcyYzZkMjAzOTE4NTI2MzM2MjdhOWRiMDVkNDk3N2E5OTE0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRp
b25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExv
Y2F0aW9uQ3VzdG9tLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOExvY2F0aW9uOjpyZWxvYWRBdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSA9ICJy
ZWxvYWRQcml2YXRlVGVtcGxhdGUiOwogICAgIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxk
VHlwZSA9IHdvcmxkVHlwZShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSk7Ci0gICAgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IGRhdGEtPnByaXZh
dGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBW
OExvY2F0aW9uOjpyZWxvYWRNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1
cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbykpKTsKKyAgICB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gZGF0YS0+
cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZwcml2YXRlVGVtcGxhdGVVbmlxdWVL
ZXksIFY4TG9jYXRpb246OnJlbG9hZE1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNp
Z25hdHVyZTo6TmV3KGRhdGEtPnJhd1RlbXBsYXRlKCZWOExvY2F0aW9uOjppbmZvLCBjdXJyZW50
V29ybGRUeXBlKSkpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZv
LlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9uOjpHZXRUZW1w
bGF0ZShpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5
KCkpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlv
bjo6cmVsb2FkQXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogICAgIExv
Y2F0aW9uKiBpbXAgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoQmluZGluZ1N0YXRlOjppbnN0
YW5jZSgpLCBpbXAtPmZyYW1lKCksIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcikpIHsKICAgICAg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYXJlZFRlbXBsYXRlVW5pcXVlS2V5ID0gInJlbG9hZFNo
YXJlZFRlbXBsYXRlIjsKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IHNoYXJlZFRlbXBsYXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5
cGUsICZzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6cmVsb2FkTWV0aG9kQ3Vz
dG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxhdGUo
JlY4TG9jYXRpb246OmluZm8pKSk7CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50
V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246OnJlbG9hZE1l
dGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJhd1Rl
bXBsYXRlKCZWOExvY2F0aW9uOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSkpOwogICAgICAgICBy
ZXR1cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQogICAgIHJldHVybiBw
cml2YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlcGxhY2VBdHRyR2V0dGVyQ3VzdG9tKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwcml2YXRlVGVtcGxhdGVV
bmlxdWVLZXkgPSAicmVwbGFjZVByaXZhdGVUZW1wbGF0ZSI7CiAgICAgV3JhcHBlcldvcmxkVHlw
ZSBjdXJyZW50V29ybGRUeXBlID0gd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICBW
OFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElz
b2xhdGUoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZh
dGVUZW1wbGF0ZSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnByaXZhdGVUZW1w
bGF0ZShjdXJyZW50V29ybGRUeXBlLCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0
aW9uOjpyZXBsYWNlTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpO
ZXcoZGF0YS0+cmF3VGVtcGxhdGUoJlY4TG9jYXRpb246OmluZm8pKSk7CisgICAgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSktPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAm
cHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjpyZXBsYWNlTWV0aG9kQ3VzdG9t
LCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxhdGUoJlY4
TG9jYXRpb246OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpKSk7CiAKICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNo
YWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpKTsK
ICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewpAQCAtMTc4LDcgKzE3OCw3IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZXBsYWNlQXR0ckdldHRlckN1c3RvbSh2ODo6TG9j
YWw8djg6OlN0cmluZz4KICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUo
aG9sZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0Zy
YW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNl
Y3VyaXR5RXJyb3IpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFyZWRUZW1wbGF0
ZVVuaXF1ZUtleSA9ICJyZXBsYWNlU2hhcmVkVGVtcGxhdGUiOwotICAgICAgICB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGluZm8uR2V0SXNvbGF0ZSgpKS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3Js
ZFR5cGUsICZzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6cmVwbGFjZU1ldGhv
ZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJhd1RlbXBs
YXRlKCZWOExvY2F0aW9uOjppbmZvKSkpOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlu
Zm8uR2V0SXNvbGF0ZSgpKS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZzaGFy
ZWRUZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6cmVwbGFjZU1ldGhvZEN1c3RvbSwgdjhV
bmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJhd1RlbXBsYXRlKCZWOExvY2F0
aW9uOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSkpOwogICAgICAgICByZXR1cm4gc2hhcmVkVGVt
cGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQogICAgIHJldHVybiBwcml2YXRlVGVtcGxhdGUt
PkdldEZ1bmN0aW9uKCk7CkBAIC0xOTEsNyArMTkxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4TG9jYXRpb246OmFzc2lnbkF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG4KICAgICBzdGF0aWMgY29uc3QgY2hhciogcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5ID0gImFz
c2lnblByaXZhdGVUZW1wbGF0ZSI7CiAgICAgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRU
eXBlID0gd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICBWOFBlcklzb2xhdGVEYXRh
KiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSk7Ci0gICAg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IGRh
dGEtPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmcHJpdmF0ZVRlbXBsYXRlVW5p
cXVlS2V5LCBWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4
OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbykpKTsK
KyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRl
ID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZwcml2YXRlVGVtcGxh
dGVVbmlxdWVLZXksIFY4TG9jYXRpb246OmFzc2lnbk1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQo
KSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJhd1RlbXBsYXRlKCZWOExvY2F0aW9uOjppbmZv
LCBjdXJyZW50V29ybGRUeXBlKSkpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xk
ZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9u
OjpHZXRUZW1wbGF0ZShpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKSk7CiAgICAgaWYgKGhvbGRl
ci5Jc0VtcHR5KCkpIHsKQEAgLTIwMiw3ICsyMDIsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhMb2NhdGlvbjo6YXNzaWduQXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bgogICAgIExvY2F0aW9uKiBpbXAgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShob2xkZXIpOwogICAg
IGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoQmluZGluZ1N0
YXRlOjppbnN0YW5jZSgpLCBpbXAtPmZyYW1lKCksIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcikp
IHsKICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYXJlZFRlbXBsYXRlVW5pcXVlS2V5ID0g
ImFzc2lnblNoYXJlZFRlbXBsYXRlIjsKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJl
bnRXb3JsZFR5cGUsICZzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6YXNzaWdu
TWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3
VGVtcGxhdGUoJlY4TG9jYXRpb246OmluZm8pKSk7CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0
ZShjdXJyZW50V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246
OmFzc2lnbk1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRh
dGEtPnJhd1RlbXBsYXRlKCZWOExvY2F0aW9uOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSkpOwog
ICAgICAgICByZXR1cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQogICAg
IHJldHVybiBwcml2YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192747</attachid>
            <date>2013-03-12 08:56:01 -0700</date>
            <delta_ts>2013-03-13 05:33:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111724-20130312165159.patch</filename>
            <type>text/plain</type>
            <size>80804</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjdiOWIxZDU4NDczNjY1
NGE0N2EzYWU5MjA3ODFiY2EzMjJlZGQyNy4uMGI5N2JmZDFlNWQ3ZTRlNTQzYzg3YmM4MjQ4NjBh
ZWU0NTJlYjk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAxMy0wMy0xMiAgTWFy
amEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBTdG9yZSBt
YWluIHdvcmxkIGFuZCBub24tbWFpbiB3b3JsZCB0ZW1wbGF0ZXMgc2VwYXJhdGVseS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTcyNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IEpvY2hlbiBFaXNpbmdlci4KKworICAgICAgICBUaGlzIGlzIG5lZWRl
ZCBmb3IgZ2VuZXJhdGluZyBzcGVjaWFsaXplZCBiaW5kaW5ncyBmb3IgdGhlIG1haW4KKyAgICAg
ICAgd29ybGQgKGJ1ZyAxMTA4NzQpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAodXBkYXRlZCBl
eGlzdGluZyBiaW5kaW5ncyB0ZXN0cykuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdl
bmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24pOgorICAgICAgICAoQ3JlYXRlQ3VzdG9tU2lnbmF0dXJlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOEZsb2F0NjRBcnJheTo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9h
dDY0QXJyYXk6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhGbG9hdDY0QXJyYXkuaDoKKyAgICAgICAgKFY4RmxvYXQ2NEFycmF5KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpwb3N0TWVzc2Fn
ZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0QWN0aXZlRE9N
T2JqZWN0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZlRE9NT2JqZWN0
OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RBY3RpdmVET01PYmplY3Q6
Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgIChWOFRlc3RBY3RpdmVET01PYmplY3QpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6R2V0VGVtcGxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6Okhhc0luc3Rh
bmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIuaDoKKyAgICAgICAgKFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKFY4VGVzdEV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4VGVzdEV2ZW50VGFyZ2V0OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRl
c3RFdmVudFRhcmdldDo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAoVjhUZXN0RXZlbnRUYXJnZXQp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXhjZXB0aW9uOjpHZXRUZW1wbGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRlc3RFeGNlcHRpb246Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgIChWOFRl
c3RFeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJ
bnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0SW50ZXJmYWNl
VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0SW50ZXJmYWNlOjpHZXRUZW1wbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6Okhhc0luc3RhbmNlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmg6CisgICAg
ICAgIChWOFRlc3RJbnRlcmZhY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6Okhhc0luc3RhbmNlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5o
OgorICAgICAgICAoVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2UpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmg6Cisg
ICAgICAgIChWOFRlc3ROYW1lZENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2Rl
OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpIYXNJbnN0YW5j
ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaDoKKyAg
ICAgICAgKFY4VGVzdE5vZGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0T2JqVGVtcGxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2JqOjpHZXRUZW1wbGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOFRlc3RPYmo6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmg6CisgICAgICAgIChWOFRlc3RPYmopOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Okdl
dFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOgorICAgICAgICAoVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkdldFRlbXBsYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6SGFzSW5zdGFu
Y2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAgICAgKFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdFR5cGVkZWZz
VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0VHlwZWRlZnM6OkdldFRlbXBsYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdFR5cGVkZWZzOjpIYXNJbnN0YW5jZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmg6CisgICAgICAg
IChWOFRlc3RUeXBlZGVmcyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBsYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHA6CisgICAgICAgICog
YmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFBl
cklzb2xhdGVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBl
cklzb2xhdGVEYXRhOjpwcml2YXRlVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJJ
c29sYXRlRGF0YTo6cmF3VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJJc29sYXRl
RGF0YTo6aGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6OnJhd1RlbXBsYXRlTWFw
KToKKyAgICAgICAgKFY4UGVySXNvbGF0ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJJ
c29sYXRlRGF0YTo6dGVtcGxhdGVNYXApOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dyYXBwZXJU
eXBlSW5mby5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnJlbG9hZEF0dHJHZXR0ZXJDdXN0
b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6cmVwbGFjZUF0dHJHZXR0ZXJDdXN0
b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6YXNzaWduQXR0ckdldHRlckN1c3Rv
bSk6CisKIDIwMTMtMDMtMTIgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVzb3VyY2VTY3JpcHRGaWxlIGRpdmVyZ2VkIHN0
YXRlIHNob3VsZCBiZSBjb3JyZWN0bHkgcmVzZXQgYWZ0ZXIgZGVidWdnZXIgcmVzZXQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmlu
ZGV4IGVmMjBmOWZlZWQzY2Q0ZjNhNjI4NjcwOWZmNzA1NDU5ZjkzNmU5MmYuLmNkZWY2NDRiN2U3
YjdiZWIyNjc0YmYyMjI0NGMyM2RkMWE5ODE3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0zNjAsNyArMzYwLDcgQEAg
RU5ECiAgICAgfQogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwotICAgIHN0YXRp
YyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsK
KyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJ
c29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSA9IEdldEZyb21Db250ZXh0KTsKICAgICBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29s
YXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljICR7bmF0aXZlVHlwZX0qIHRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKQEAgLTc4MCw3ICs3ODAs
NyBAQCBzdWIgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIKICAgICBteSAkdjhJbnRl
cmZhY2VOYW1lID0gIlY4IiAuICRpbnRlcmZhY2VOYW1lOwogICAgIG15ICRmdW5jTmFtZSA9ICRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogCi0gICAgbXkgJHNpZ25hdHVyZSA9ICJ2ODo6U2ln
bmF0dXJlOjpOZXcoVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnJh
d1RlbXBsYXRlKCYiIC4gJHY4SW50ZXJmYWNlTmFtZSAuICI6OmluZm8pKSI7CisgICAgbXkgJHNp
Z25hdHVyZSA9ICJ2ODo6U2lnbmF0dXJlOjpOZXcoVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZv
LkdldElzb2xhdGUoKSktPnJhd1RlbXBsYXRlKCYiIC4gJHY4SW50ZXJmYWNlTmFtZSAuICI6Omlu
Zm8sIGN1cnJlbnRXb3JsZFR5cGUpKSI7CiAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhEb05vdENoZWNrU2lnbmF0dXJlIn0pIHsKICAgICAgICAg
JHNpZ25hdHVyZSA9ICJ2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4oKSI7CiAgICAgfQpAQCAtMzE1
NSwyMCArMzE1NSwyMCBAQCBFTkQKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiAke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRh
ID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRh
OjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5k
KCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisg
ICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEt
PnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBk
YXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0
LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmUk
e3Y4SW50ZXJmYWNlTmFtZX1UZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xh
dGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBs
KTsKKyAgICAgICAgQ29uZmlndXJlJHt2OEludGVyZmFjZU5hbWV9VGVtcGxhdGUoZGF0YS0+cmF3
VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0
YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4g
dGVtcGw7CiB9CiAKLWJvb2wgJHt2OEludGVyZmFjZU5hbWV9OjpIYXNJbnN0YW5jZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorYm9vbCAke3Y4SW50
ZXJmYWNlTmFtZX06Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewotICAgIHJl
dHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywg
dmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJ
bnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CiB9CiAKIEVORApAQCAtNDA4OSw3ICs0
MDg5LDcgQEAgc3ViIENyZWF0ZUN1c3RvbVNpZ25hdHVyZQogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKEdldFY4SGVhZGVyTmFt
ZSgkdHlwZSkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAkcmVzdWx0IC49
ICJWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjgke3R5cGV9
OjppbmZvKSI7CisgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4JHt0eXBlfTo6aW5mbywgd29ybGRUeXBlKSI7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAkcmVzdWx0IC49
ICJ2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpIjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3Bw
CmluZGV4IGRkNzZlYWY0MzEyMjdiZjcwZjFjMzUxNDFhNzYzOWU5ZjZkYWEzN2UuLjRiOGIzNjU3
OGE3ODg3YjVkMWNhNTJlMTAzNmUzNzhiNjFhZjdjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcApA
QCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gQ29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSh2ODo6CiAKICAgICAvLyBDdXN0
b20gU2lnbmF0dXJlICdmb28nCiAgICAgY29uc3QgaW50IGZvb0FyZ2MgPSAxOwotICAgIHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZvb0FyZ3ZbZm9vQXJnY10gPSB7IFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOEZsb2F0MzJBcnJheTo6aW5m
bykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBmb29Bcmd2W2Zvb0Fy
Z2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhG
bG9hdDMyQXJyYXk6OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWdu
YXR1cmU+IGZvb1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBmb29BcmdjLCBm
b29Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZm9vIiksIHY4
OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoRmxvYXQ2NEFycmF5VjhJbnRlcm5hbDo6Zm9vTWV0aG9k
Q2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGZvb1NpZ25hdHVyZSkpOwogCkBAIC0xNjUsMjAgKzE2
NSwyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZp
Z3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUodjg6Ogogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IFY4RmxvYXQ2NEFycmF5OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNv
bGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0
YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29s
YXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFw
KCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVu
ZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQg
PSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1
bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJu
IHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29u
ZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlz
b2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRl
bXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZShkYXRhLT5yYXdU
ZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRh
LT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0
ZW1wbDsKIH0KIAotYm9vbCBWOEZsb2F0NjRBcnJheTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2Jvb2wgVjhGbG9hdDY0QXJy
YXk6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOwor
ICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgm
aW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaAppbmRleCBhZmUy
ODkzMzg4MjBlZjEwNDc5OTMwYWQ1MGNlM2YwZTIzZDUxMjZmLi45YjNjNjFmODVhNjY5MDJhODMw
ZThjOWFkMjFkYjI5NWViOWIyMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaApAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOEZsb2F0NjRBcnJheSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBWOEFycmF5QnVmZmVy
Vmlldzo6aGFzRGVwZW5kZW50TGlmZXRpbWU7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uo
djg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBib29sIEhh
c0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29y
bGRUeXBlID0gR2V0RnJvbUNvbnRleHQpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRU
eXBlKTsKICAgICBzdGF0aWMgRmxvYXQ2NEFycmF5KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCmlu
ZGV4IGFlM2E4NTFlNDQ5Y2QwMDJmOWQwMGNiNjg4NjlhNmNlYTJjZDE2ODUuLmU2MTRiMGIxMWVl
NjlmMjA4ZTBiZWZmYTJmNDNlODViNjUyMzI4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01P
YmplY3QuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBwb3N0TWVzc2FnZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGMKICAg
ICBzdGF0aWMgY29uc3QgY2hhciogcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5ID0gInBvc3RNZXNz
YWdlUHJpdmF0ZVRlbXBsYXRlIjsKICAgICBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5
cGUgPSB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpOwogICAgIFY4UGVySXNvbGF0ZURhdGEq
IGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0SXNvbGF0ZSgpKTsKLSAgICB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gZGF0
YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZwcml2YXRlVGVtcGxhdGVVbmlx
dWVLZXksIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpwb3N0TWVzc2FnZU1ldGhvZENh
bGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnJhd1RlbXBsYXRlKCZWOFRlc3RBY3RpdmVET01P
YmplY3Q6OmluZm8pKSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHByaXZhdGVUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBl
LCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5h
bDo6cG9zdE1lc3NhZ2VNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVy
ZTo6TmV3KFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRlKCkpLT5yYXdUZW1w
bGF0ZSgmVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSkpOwog
CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZElu
c3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFRlbXBsYXRl
KGluZm8uR2V0SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSk7CiAgICAgaWYgKGhvbGRlci5J
c0VtcHR5KCkpIHsKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHBvc3RNZXNzYWdlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgYwog
ICAgIFRlc3RBY3RpdmVET01PYmplY3QqIGltcCA9IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6dG9O
YXRpdmUoaG9sZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJl
cG9ydFNlY3VyaXR5RXJyb3IpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFyZWRU
ZW1wbGF0ZVVuaXF1ZUtleSA9ICJwb3N0TWVzc2FnZVNoYXJlZFRlbXBsYXRlIjsKLSAgICAgICAg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gZGF0
YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZzaGFyZWRUZW1wbGF0ZVVuaXF1
ZUtleSwgVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBvc3RNZXNzYWdlTWV0aG9kQ2Fs
bGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGluZm8uR2V0SXNvbGF0ZSgpKS0+cmF3VGVtcGxhdGUoJlY4VGVzdEFjdGl2ZURPTU9i
amVjdDo6aW5mbykpKTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IHNoYXJlZFRlbXBsYXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5
cGUsICZzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSwgVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJu
YWw6OnBvc3RNZXNzYWdlTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1
cmU6Ok5ldyhWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0SXNvbGF0ZSgpKS0+cmF3VGVt
cGxhdGUoJlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkpKTsK
ICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KIApA
QCAtMTk1LDcgKzE5NSw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gQ29uZmlndXJlVjhUZXN0QWN0aXZlRE9NT2JqZWN0VGVtcGxhCiAKICAgICAvLyBDdXN0
b20gU2lnbmF0dXJlICdleGNpdGluZ0Z1bmN0aW9uJwogICAgIGNvbnN0IGludCBleGNpdGluZ0Z1
bmN0aW9uQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZXhj
aXRpbmdGdW5jdGlvbkFyZ3ZbZXhjaXRpbmdGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvKSB9OworICAgIHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGV4Y2l0aW5nRnVuY3Rpb25Bcmd2W2V4Y2l0
aW5nRnVuY3Rpb25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3
VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6
OlNpZ25hdHVyZT4gZXhjaXRpbmdGdW5jdGlvblNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5l
dyhkZXNjLCBleGNpdGluZ0Z1bmN0aW9uQXJnYywgZXhjaXRpbmdGdW5jdGlvbkFyZ3YpOwogICAg
IHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJleGNpdGluZ0Z1bmN0aW9uIiksIHY4
OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OmV4
Y2l0aW5nRnVuY3Rpb25NZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZXhjaXRpbmdGdW5j
dGlvblNpZ25hdHVyZSkpOwogCkBAIC0yMTAsMjAgKzIxMCwyMCBAQCBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVj
dFRlbXBsYQogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEFjdGl2
ZURPTU9iamVjdDo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3Js
ZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRl
TWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwot
ICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklz
b2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVN
YXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBs
YXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwog
CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEFjdGl2
ZURPTU9iamVjdFRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29y
bGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAg
ICAgICBDb25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGF0ZShkYXRhLT5yYXdUZW1w
bGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50
ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1w
bDsKIH0KIAotYm9vbCBWOFRlc3RBY3RpdmVET01PYmplY3Q6Okhhc0luc3RhbmNlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitib29sIFY4VGVzdEFj
dGl2ZURPTU9iamVjdDo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7Ci0gICAg
cmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZv
LCB2YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhh
c0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0
aXZlRE9NT2JqZWN0LmgKaW5kZXggZDIzNWJjNTQ1NDFhZDY5MzRiOGE2N2Y5MDA5ZGY4MDBhMzlj
OGU3ZC4uNzIzNjQ4Y2JkMmY3MWI5OTFiMDhmNzdiNWM5OWQ4NzMzNDQ4M2YyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURP
TU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RBY3RpdmVET01PYmplY3QuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBWOFRlc3RBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0gICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0
YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUq
LCBXcmFwcGVyV29ybGRUeXBlID0gR2V0RnJvbUNvbnRleHQpOwogICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBX
cmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdEFjdGl2ZURPTU9iamVjdCogdG9OYXRp
dmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RD
dXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggNDYwMTQ4YzJiNGIwNmZiM2VmYmE1NTViOTMyZWI4
ZmQ4ZGU0MWM3ZS4uZWU1ZTM3MmVmNGM3OGNlNDg2ZjgzZDBkOTNmODA5MGNmMGQ4ZmY4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0xMTUsMjAgKzExNSwyMCBA
QCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4
VGVzdEN1c3RvbU5hbWVkR2V0dGVyVGVtcAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRl
RGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJ
c29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRl
TWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgp
LmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1
bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChy
ZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0
dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAg
Q29uZmlndXJlVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0
ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5h
ZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXJUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwg
d29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywg
dGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RDdXN0b21OYW1lZEdl
dHRlcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKK2Jvb2wgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6Okhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJX
b3JsZFR5cGUgd29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOworICAgIHJldHVybiBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxk
VHlwZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAppbmRleCBlMmYx
ZDVhNGVkOTRiYTkwY2U4ZTViMThiODlhZWUwZDc3OWRkMDcxLi4xMTMwM2FiMWQ4NmIzYzczZDU4
M2Q4Zjc1MjQyNDIwMWZiNjBhNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
aApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOFRlc3RDdXN0
b21OYW1lZEdldHRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5k
ZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFu
Y2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUg
PSBHZXRGcm9tQ29udGV4dCk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwog
ICAgIHN0YXRpYyBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNw
cAppbmRleCBlNmM4OThlMTAwODQ2NDNiNTE5MjEwOTdjZDI0ZDI3NmVmNzIwNzFiLi4yYzY4ZWU5
NGJmM2FmMTQ4ZjU1NjBhYjVmYzljMDgwYjc0N2M5ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCkBAIC0xNTcsMjAgKzE1NywyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JU
ZW1wbAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50Q29u
c3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRU
eXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1h
cDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAg
ICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29s
YXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFw
KHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0
ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAog
ICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RFdmVudENv
bnN0cnVjdG9yVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3Js
ZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAg
ICAgIENvbmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbGF0ZShkYXRhLT5yYXdUZW1w
bGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50
ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1w
bDsKIH0KIAotYm9vbCBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorYm9vbCBWOFRlc3RF
dmVudENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUs
IHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKLSAg
ICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmlu
Zm8sIHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOwogfQogCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0
cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5oCmluZGV4IDZmMTdmNjZkNDM4OWZlY2YyYjliNzhjYzliOWIwYjQ4
YzNiYzc0ODcuLjQyYjY2NjkzZDc4NzE4MTZiNmU5ZDgxNzc3NWJiMWExODQ5MWI0YTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBEaWN0
aW9uYXJ5OwogY2xhc3MgVjhUZXN0RXZlbnRDb25zdHJ1Y3RvciB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAgICBzdGF0aWMg
Ym9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7Cisg
ICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNv
bGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4dCk7CiAgICAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0
ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0RXZlbnRDb25zdHJ1Y3Rvciog
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFy
Z2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
dmVudFRhcmdldC5jcHAKaW5kZXggODQ4NWYwOTcyODE1NzYwZTIxMzVjN2NlZDJjYjRhMTNiZDY3
OTk4Yy4uNDQ4NmVlMmQ2MTc4OTQyN2Y4MTI0ZmYwYzkxNjFmNzAwMDYyYTAyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFy
Z2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBs
YXRlKHYKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2Rpc3BhdGNoRXZlbnQnCiAgICAgY29u
c3QgaW50IGRpc3BhdGNoRXZlbnRBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBkaXNwYXRjaEV2ZW50QXJndltkaXNwYXRjaEV2ZW50QXJnY10gPSB7IFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOEV2ZW50OjppbmZvKSB9
OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRpc3BhdGNoRXZlbnRBcmd2
W2Rpc3BhdGNoRXZlbnRBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
cmF3VGVtcGxhdGUoJlY4RXZlbnQ6OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxl
PHY4OjpTaWduYXR1cmU+IGRpc3BhdGNoRXZlbnRTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpO
ZXcoZGVzYywgZGlzcGF0Y2hFdmVudEFyZ2MsIGRpc3BhdGNoRXZlbnRBcmd2KTsKICAgICBwcm90
by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZGlzcGF0Y2hFdmVudCIpLCB2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KFRlc3RFdmVudFRhcmdldFY4SW50ZXJuYWw6OmRpc3BhdGNoRXZlbnRN
ZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZGlzcGF0Y2hFdmVudFNpZ25hdHVyZSkpOwog
CkBAIC0xOTEsMjAgKzE5MSwyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUodgogdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50VGFyZ2V0OjpHZXRUZW1wbGF0
ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAg
ICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9
IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRh
LT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFw
OjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmlu
Zm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQo
KSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUg
aGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRl
bXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZShkYXRhLT5y
YXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxh
dGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0RXZlbnRU
YXJnZXRUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0
ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5m
bywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RFdmVudFRhcmdl
dDo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKK2Jvb2wgVjhUZXN0RXZlbnRUYXJnZXQ6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUg
d29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CiB9
CiAKIEV2ZW50VGFyZ2V0KiBWOFRlc3RFdmVudFRhcmdldDo6dG9FdmVudFRhcmdldCh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggYWJhMmIz
YTk0YjA5MzU2OTgyNzc1ZmU5NTgwZDE4MGE4NzdmYmVhNy4uZDg4ODMzODQxNTk5ZTMwZjUwZmQ0
MTRkNDRhMmUxNjc3NzNjNzY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTM0LDcgKzM0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0RXZlbnRUYXJnZXQgewogcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7
Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6
SXNvbGF0ZSopOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlID0gR2V0RnJvbUNvbnRleHQpOwog
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxh
dGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdEV2ZW50
VGFyZ2V0KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFeGNlcHRpb24uY3BwCmluZGV4IDdjMDMzMTY3MzljNDBjMmQ2YzdlMTRiMmM4MDE4ODNh
ZmY1ZDg2NWQuLjQ3Y2YxZmU4MmI2Y2VmNTcyZDc5MTVkZWUzMzY5YTNkNWM0YzViZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNl
cHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFeGNlcHRpb24uY3BwCkBAIC0xMDYsMjAgKzEwNiwyMCBAQCBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV4Y2VwdGlvblRlbXBs
YXRlKHY4Ogogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV4Y2Vw
dGlvbjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUg
d29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjpp
dGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlm
IChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVE
YXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29y
bGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFw
KHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEV4Y2VwdGlvblRl
bXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAg
ICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1
cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRU
eXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5
cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRl
c3RFeGNlcHRpb246Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCitib29sIFY4VGVzdEV4Y2VwdGlvbjo6SGFzSW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldv
cmxkVHlwZSB3b3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRU
eXBlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKaW5kZXggNjY2M2EyNThjMjZkZjFhMjMzMjUz
NGU3ODRiZGNlYWM5OGI3Mzk0Yy4uYmJiNzZkZDg2NmQ1YmI5MTQyNmVkODQ3ZWI2OTE0NjU3MThl
NTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBWOFRlc3RFeGNlcHRpb24gewogcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0gICAgc3RhdGljIGJvb2wgSGFz
SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRp
YyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBX
cmFwcGVyV29ybGRUeXBlID0gR2V0RnJvbUNvbnRleHQpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFw
cGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdEV4Y2VwdGlvbiogdG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAppbmRl
eCAzZTIzM2Y3OTE4ZWM0YmQ1OWUxNzIxYTAyZmZiYmQ0MjYwMWE1ZmFlLi5lOWU5NTI1NGEzMGM2
NDllMzFjNjZjNDJiYmRkNDQ1OWU0MmFjZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcApAQCAt
NDM4LDcgKzQzOCw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUodjg6CiAKICAgICAvLyBDdXN0b20g
U2lnbmF0dXJlICdzdXBwbGVtZW50YWxNZXRob2QyJwogICAgIGNvbnN0IGludCBzdXBwbGVtZW50
YWxNZXRob2QyQXJnYyA9IDI7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
c3VwcGxlbWVudGFsTWV0aG9kMkFyZ3Zbc3VwcGxlbWVudGFsTWV0aG9kMkFyZ2NdID0geyB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvKSB9OworICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN1cHBsZW1lbnRhbE1ldGhvZDJBcmd2W3N1cHBsZW1lbnRh
bE1ldGhvZDJBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5m
bywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gc3VwcGxlbWVu
dGFsTWV0aG9kMlNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBzdXBwbGVtZW50
YWxNZXRob2QyQXJnYywgc3VwcGxlbWVudGFsTWV0aG9kMkFyZ3YpOwogI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIHByb3RvLT5TZXQodjg6OlN0cmlu
Zzo6TmV3U3ltYm9sKCJzdXBwbGVtZW50YWxNZXRob2QyIiksIHY4OjpGdW5jdGlvblRlbXBsYXRl
OjpOZXcoVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE1ldGhvZDJNZXRob2RD
YWxsYmFjaywgdjhVbmRlZmluZWQoKSwgc3VwcGxlbWVudGFsTWV0aG9kMlNpZ25hdHVyZSkpOwpA
QCAtNDU2LDIwICs0NTYsMjAgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoKIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RJbnRlcmZhY2U6OkdldFRlbXBsYXRlKHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBW
OFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsK
LSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRl
bXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0
ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7
CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQog
ICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5k
bGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwg
PQotICAgICAgICBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZShkYXRhLT5yYXdUZW1w
bGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAo
KS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVt
cGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxk
VHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBs
KTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0SW50ZXJmYWNlOjpIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQor
Ym9vbCBWOFRlc3RJbnRlcmZhY2U6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQog
ewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5j
ZSgmaW5mbywgdmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CiB9CiAKIEFjdGl2ZURP
TU9iamVjdCogVjhUZXN0SW50ZXJmYWNlOjp0b0FjdGl2ZURPTU9iamVjdCh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaAppbmRleCA1Yjc4YjhhYzM5NmNiZThj
NGU3NzgzYTJlMjI2YWNkNjJmY2IyOWMxLi42NzIzMjk3YmYwZDQ0YmI3NmU2NTM2YmI2ZDg2MWUw
OGRhZjQ3ZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVzdEludGVyZmFjZSB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSB0cnVlOwotICAgIHN0YXRpYyBib29s
IEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKKyAgICBz
dGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRl
KiwgV3JhcHBlcldvcmxkVHlwZSA9IEdldEZyb21Db250ZXh0KTsKICAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwg
V3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RJbnRlcmZhY2UqIHRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCAyOTFkZmNlNTk3YTFhMGQ2ZmMzOWM5ZWM1
MmYxNDIxNzA2MDg1NTQ0Li5kMTQ3YzdiZmU0YTM2NDcxYjk4NDZkNjViZTUyYTBjNGFhNTZlZDlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC0x
MTUsMjAgKzExNSwyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZQogdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OkdldFRl
bXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkK
IHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVz
dWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9
IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxh
dGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmlu
ZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUp
LmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVT
Y29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3JsZFR5cGUpOwot
ICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZp
Z3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0
ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1w
bGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsK
IH0KIAotYm9vbCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpIYXNJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorYm9vbCBWOFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlw
ZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5z
dGFuY2UoJmluZm8sIHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOwogfQogCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCmluZGV4IDRlMzY2Y2RmNTUx
ZjE2MTYwZjZkMWM3NjhlYjQxNDU5OWE3YzRjYWMuLjUyYjZiMDY0MzZmOGQwYWEzZTVkNDkxYjNm
YmY0ZGY1ZThjNDBiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOFRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBo
YXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgYm9vbCBI
YXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldv
cmxkVHlwZSA9IEdldEZyb21Db250ZXh0KTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxk
VHlwZSk7CiAgICAgc3RhdGljIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiB0b05hdGl2ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggMTFhYzljZjViNWM3YTdmZTY5NmI5NjNiNzcxOWQyNWEzY2Fh
N2I3OC4uMWVjYzQ0YjdlMTRmNTZkZmRiNjFmOTdjMTcwNzgzZDRjZmNhZGE0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtMTQ2LDIwICsxNDYsMjAgQEAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3ROYW1l
ZENvbnN0cnVjdG9yVGVtcGwKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBW
OFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0
YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0
YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmlu
ZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQor
ICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRh
LT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3Vs
dC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJl
VjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwg
aXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywg
dGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3ROYW1lZENvbnN0cnVjdG9yVGVtcGxhdGUo
ZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7
CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAg
ICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SGFzSW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
K2Jvb2wgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3Js
ZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhh
c0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKIH0KIAog
QWN0aXZlRE9NT2JqZWN0KiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjp0b0FjdGl2ZURPTU9iamVj
dCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1
Y3Rvci5oCmluZGV4IGExOWRiYzY2Y2VjZTRjNGU4YzUzZGZhMjRkYWY3NjQ1ODcwOGI1NDAuLmYw
NWRjZmM1ZDhjZTI3NzJlM2VhMGZlMWI1ZGZkMzRhNmZiZTA5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5h
bWVkQ29uc3RydWN0b3IuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiBjbGFzcyBWOFRlc3RO
YW1lZENvbnN0cnVjdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBl
bmRlbnRMaWZldGltZSA9IHRydWU7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6Okhh
bmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBib29sIEhhc0luc3Rh
bmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBl
ID0gR2V0RnJvbUNvbnRleHQpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsK
ICAgICBzdGF0aWMgVGVzdE5hbWVkQ29uc3RydWN0b3IqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcAppbmRleCAyMjZiMzQ0MzlmZTY2ZmU1
ODMwYWUyNzM1ZmYyM2Y5NDFlNWVjNGU3Li5mMzdmNjY3YTIyMGJjYTBmZGM1NmQxZjBhYTYzYWU4
NTg5ZTU4ZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCkBAIC0xMTMsMjAgKzExMywyMCBAQCBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1w
bGF0ZSh2ODo6UGVycwogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dE5vZGU6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6
aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBp
ZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRl
RGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdv
cmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1h
cCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAg
IHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3ROb2RlVGVtcGxh
dGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRh
dGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4
VGVzdE5vZGVUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNv
bGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgm
aW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3ROb2RlOjpI
YXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQorYm9vbCBWOFRlc3ROb2RlOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkK
IHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFu
Y2UoJmluZm8sIHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOwogfQogCiBFdmVudFRh
cmdldCogVjhUZXN0Tm9kZTo6dG9FdmVudFRhcmdldCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9i
amVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0Tm9kZS5oCmluZGV4IDk3ODYwMzc2MzA1OThmMDZiN2Y3ZjY3NGVkMzAwMzI4YzVhY2Fj
MjYuLmY4YzlmOTYzNjNhMGYwMTg4YmVmNTgwYjk2YWUyZjM0MTYwZWE3NDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaApA
QCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOFRlc3ROb2RlIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IHRy
dWU7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2
ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlID0gR2V0RnJvbUNvbnRleHQp
OwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdE5v
ZGUqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmou
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5j
cHAKaW5kZXggMGE0Y2MzMzNhMjkyMjEzNGMzZDg1MmZkMzJkZGNlNjIwYmYyY2QxNC4uODBhZTU5
OTQ4ZjczZGQzMzEyNGNiYmQzMDVjNjA0MjVlOTQ4MjNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTMwNjIs
MzEgKzMwNjIsMzEgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kKIAogICAgIC8vIEN1c3RvbSBT
aWduYXR1cmUgJ3ZvaWRNZXRob2RXaXRoQXJncycKICAgICBjb25zdCBpbnQgdm9pZE1ldGhvZFdp
dGhBcmdzQXJnYyA9IDM7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdm9p
ZE1ldGhvZFdpdGhBcmdzQXJndlt2b2lkTWV0aG9kV2l0aEFyZ3NBcmdjXSA9IHsgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4VGVz
dE9iajo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB2b2lk
TWV0aG9kV2l0aEFyZ3NBcmd2W3ZvaWRNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0
T2JqOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiB2
b2lkTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgdm9p
ZE1ldGhvZFdpdGhBcmdzQXJnYywgdm9pZE1ldGhvZFdpdGhBcmdzQXJndik7CiAgICAgcHJvdG8t
PlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInZvaWRNZXRob2RXaXRoQXJncyIpLCB2ODo6RnVu
Y3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjp2b2lkTWV0aG9kV2l0aEFyZ3NN
ZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdm9pZE1ldGhvZFdpdGhBcmdzU2lnbmF0dXJl
KSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdsb25nTWV0aG9kV2l0aEFyZ3MnCiAgICAg
Y29uc3QgaW50IGxvbmdNZXRob2RXaXRoQXJnc0FyZ2MgPSAzOwotICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IGxvbmdNZXRob2RXaXRoQXJnc0FyZ3ZbbG9uZ01ldGhvZFdpdGhB
cmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gbG9uZ01ldGhvZFdpdGhBcmdzQXJndltsb25nTWV0aG9kV2l0aEFy
Z3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpI
YW5kbGU8djg6OlNpZ25hdHVyZT4gbG9uZ01ldGhvZFdpdGhBcmdzU2lnbmF0dXJlID0gdjg6OlNp
Z25hdHVyZTo6TmV3KGRlc2MsIGxvbmdNZXRob2RXaXRoQXJnc0FyZ2MsIGxvbmdNZXRob2RXaXRo
QXJnc0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJsb25nTWV0
aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5h
bDo6bG9uZ01ldGhvZFdpdGhBcmdzTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGxvbmdN
ZXRob2RXaXRoQXJnc1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnb2Jq
TWV0aG9kV2l0aEFyZ3MnCiAgICAgY29uc3QgaW50IG9iak1ldGhvZFdpdGhBcmdzQXJnYyA9IDM7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gb2JqTWV0aG9kV2l0aEFyZ3NB
cmd2W29iak1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8pIH07Cisg
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gb2JqTWV0aG9kV2l0aEFyZ3NBcmd2
W29iak1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxkVHlw
ZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG9iak1ldGhvZFdpdGhBcmdzU2ln
bmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG9iak1ldGhvZFdpdGhBcmdzQXJnYywg
b2JqTWV0aG9kV2l0aEFyZ3NBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5
bWJvbCgib2JqTWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0
T2JqVjhJbnRlcm5hbDo6b2JqTWV0aG9kV2l0aEFyZ3NNZXRob2RDYWxsYmFjaywgdjhVbmRlZmlu
ZWQoKSwgb2JqTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWdu
YXR1cmUgJ21ldGhvZFdpdGhTZXF1ZW5jZUFyZycKICAgICBjb25zdCBpbnQgbWV0aG9kV2l0aFNl
cXVlbmNlQXJnQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
bWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndlttZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjXSA9IHsg
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4c2VxdWVuY2U8
U2NyaXB0UHJvZmlsZT46OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndlttZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdj
XSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4c2Vx
dWVuY2U8U2NyaXB0UHJvZmlsZT46OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxl
PHY4OjpTaWduYXR1cmU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSA9IHY4OjpTaWdu
YXR1cmU6Ok5ldyhkZXNjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjLCBtZXRob2RXaXRoU2Vx
dWVuY2VBcmdBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibWV0
aG9kV2l0aFNlcXVlbmNlQXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4
SW50ZXJuYWw6Om1ldGhvZFdpdGhTZXF1ZW5jZUFyZ01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5l
ZCgpLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBT
aWduYXR1cmUgJ21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MnCiAgICAgY29uc3Qg
aW50IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjID0gMjsKLSAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5k
VGhyb3dzQXJndlttZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJnY10gPSB7IHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8pIH07CisgICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93
c0FyZ3ZbbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ2NdID0geyB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6
OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dz
U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG1ldGhvZFRoYXRSZXF1aXJlc0Fs
bEFyZ3NBbmRUaHJvd3NBcmdjLCBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJn
dik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm1ldGhvZFRoYXRSZXF1
aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2Jq
VjhJbnRlcm5hbDo6bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c01ldGhvZENhbGxi
YWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzU2ln
bmF0dXJlKSk7CiAgICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3RhdGljTWV0
aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5l
dyhUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxB
cmdNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+
KCkpKTsKQEAgLTMxMDQsNDMgKzMxMDQsNDMgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kKIAog
ICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N0cmluZ0FycmF5RnVuY3Rpb24nCiAgICAgY29uc3Qg
aW50IHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndltzdHJpbmdBcnJheUZ1bmN0aW9u
QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZW
OERPTVN0cmluZ1tdOjppbmZvKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2W3N0cmluZ0FycmF5RnVuY3Rpb25BcmdjXSA9IHsg
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5n
W106OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHN0
cmluZ0FycmF5RnVuY3Rpb25TaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgc3Ry
aW5nQXJyYXlGdW5jdGlvbkFyZ2MsIHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2KTsKICAgICBwcm90
by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3RyaW5nQXJyYXlGdW5jdGlvbiIpLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBcnJheUZ1bmN0
aW9uTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHN0cmluZ0FycmF5RnVuY3Rpb25TaWdu
YXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2RvbVN0cmluZ0xpc3RGdW5jdGlv
bicKICAgICBjb25zdCBpbnQgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJnYyA9IDE7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJndltk
b21TdHJpbmdMaXN0RnVuY3Rpb25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nTGlzdDo6aW5mbykgfTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkb21TdHJpbmdMaXN0RnVuY3Rpb25Bcmd2W2RvbVN0
cmluZ0xpc3RGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdMaXN0OjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAg
djg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBkb21TdHJpbmdMaXN0RnVuY3Rpb25TaWduYXR1cmUg
PSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJnYywgZG9t
U3RyaW5nTGlzdEZ1bmN0aW9uQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdT
eW1ib2woImRvbVN0cmluZ0xpc3RGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KFRlc3RPYmpWOEludGVybmFsOjpkb21TdHJpbmdMaXN0RnVuY3Rpb25NZXRob2RDYWxsYmFjaywg
djhVbmRlZmluZWQoKSwgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uU2lnbmF0dXJlKSk7CiAKICAgICAv
LyBDdXN0b20gU2lnbmF0dXJlICdjb252ZXJ0MScKICAgICBjb25zdCBpbnQgY29udmVydDFBcmdj
ID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0MUFyZ3Zb
Y29udmVydDFBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVt
cGxhdGUoJlY4YTo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBjb252ZXJ0MUFyZ3ZbY29udmVydDFBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4YTo6aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpI
YW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDFTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpO
ZXcoZGVzYywgY29udmVydDFBcmdjLCBjb252ZXJ0MUFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0MSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0MU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgp
LCBjb252ZXJ0MVNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnY29udmVy
dDInCiAgICAgY29uc3QgaW50IGNvbnZlcnQyQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDJBcmd2W2NvbnZlcnQyQXJnY10gPSB7IFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGI6OmluZm8pIH07CisgICAg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDJBcmd2W2NvbnZlcnQyQXJn
Y10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGI6
OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZl
cnQyU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGNvbnZlcnQyQXJnYywgY29u
dmVydDJBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY29udmVy
dDIiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVy
dDJNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29udmVydDJTaWduYXR1cmUpKTsKIAog
ICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2NvbnZlcnQ0JwogICAgIGNvbnN0IGludCBjb252ZXJ0
NEFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQ0
QXJndltjb252ZXJ0NEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5y
YXdUZW1wbGF0ZSgmVjhkOjppbmZvKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGNvbnZlcnQ0QXJndltjb252ZXJ0NEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhkOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAg
djg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBjb252ZXJ0NFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1
cmU6Ok5ldyhkZXNjLCBjb252ZXJ0NEFyZ2MsIGNvbnZlcnQ0QXJndik7CiAgICAgcHJvdG8tPlNl
dCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNvbnZlcnQ0IiksIHY4OjpGdW5jdGlvblRlbXBsYXRl
OjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQ0TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZp
bmVkKCksIGNvbnZlcnQ0U2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdj
b252ZXJ0NScKICAgICBjb25zdCBpbnQgY29udmVydDVBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0NUFyZ3ZbY29udmVydDVBcmdjXSA9IHsgVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4ZTo6aW5mbykgfTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0NUFyZ3ZbY29udmVy
dDVBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUo
JlY4ZTo6aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4g
Y29udmVydDVTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgY29udmVydDVBcmdj
LCBjb252ZXJ0NUFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJj
b252ZXJ0NSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpj
b252ZXJ0NU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBjb252ZXJ0NVNpZ25hdHVyZSkp
OwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAndmFyaWFkaWNOb2RlTWV0aG9kJwogICAgIGNv
bnN0IGludCB2YXJpYWRpY05vZGVNZXRob2RBcmdjID0gMjsKLSAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiB2YXJpYWRpY05vZGVNZXRob2RBcmd2W3ZhcmlhZGljTm9kZU1ldGhv
ZEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgm
VjhOb2RlOjppbmZvKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxh
dGUoJlY4Tm9kZTo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PiB2YXJpYWRpY05vZGVNZXRob2RBcmd2W3ZhcmlhZGljTm9kZU1ldGhvZEFyZ2NdID0geyBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvLCB3
b3JsZFR5cGUpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgm
VjhOb2RlOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJl
PiB2YXJpYWRpY05vZGVNZXRob2RTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywg
dmFyaWFkaWNOb2RlTWV0aG9kQXJnYywgdmFyaWFkaWNOb2RlTWV0aG9kQXJndik7CiAgICAgcHJv
dG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInZhcmlhZGljTm9kZU1ldGhvZCIpLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY05vZGVNZXRo
b2RNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdmFyaWFkaWNOb2RlTWV0aG9kU2lnbmF0
dXJlKSk7CiAgICAgVjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyhk
ZXNjLCBwcm90bywgVjhUZXN0T2JqQ29uc3RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdE9iakNv
bnN0cyksIGlzb2xhdGUpOwpAQCAtMzE1MywyMCArMzE1MywyMCBAQCBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4
OjpQZXJzaQogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE9iajo6
R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRU
eXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRv
ciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1
bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpU
ZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBl
KS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxk
VHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6Okhh
bmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKGRhdGEt
PnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1w
bGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RPYmpU
ZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29y
bGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVt
cGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RPYmo6Okhhc0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitib29s
IFY4VGVzdE9iajo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7Ci0gICAgcmV0
dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2
YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0lu
c3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKIH0KIAogdm9pZCBWOFRlc3RPYmo6Omlu
c3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGluc3RhbmNl
LCBUZXN0T2JqKiBpbXBsLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaAppbmRleCBhZmRmNzY3
ZmJlYmNmZTM1N2ZlM2U2ZDFmOTNjNDgwNzFiMmQ5MDVkLi5lZDUyOTZhZGVjMzEzY2ZmNWNmNDgx
MTA4MTM4MzcwNDUxNTY3MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFY4VGVzdE9iaiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIGJv
b2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBw
ZXJXb3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4dCk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJX
b3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0T2JqKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5jcHAKaW5kZXggMGQ4MDU5OWJkOWQzOTRmZGEwMDgzZjgxZjkxZWMzZGNmYjRkMzI1
NC4uNTUxMzU5MTFlNjc0M2U3MDA3ZDU2NWRkNDJiY2ZmNWVlNzExM2RmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMTY3LDIwICsxNjcsMjAg
QEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVW
OFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3IKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRUZW1wbGF0ZSh2ODo6SXNv
bGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJ
c29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAg
VjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRl
bXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0
ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRv
ciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAg
IGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAg
ICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2Nv
cGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAg
ICAgICAgQ29uZmlndXJlVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RlbXBsYXRlKGRhdGEt
PnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1w
bGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxk
VHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRU
eXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2Jvb2wgVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7Ci0gICAgcmV0
dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2
YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0lu
c3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaAppbmRleCBhZTUyMTAxMmQ4OWNiN2Y5ZWMwZDViMDI0
YzlkNWFlZjEwZGU3NDQwLi41NTc2YTFlNmMxYThiNTlkODkxMzcyZmVkYjEwZDYxMDgwOTQ5Njhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKQEAgLTM0LDcg
KzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlm
ZXRpbWUgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUgPSBHZXRG
cm9tQ29udGV4dCk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0
YXRpYyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCA3MGRmY2E3YjI5YmJkNjNiYzU1M2Iy
Mzg2MzViZGYxMTE3MmE0NjU3Li44ZTVjN2M0NWZkOTVkY2Q1NTA3Yzk1NWFlYmM3YmI2N2NhMDY3
N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcApAQCAtMzMyLDIwICszMzIsMjAgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWUKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2U6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRh
ID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRh
OjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5k
KCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisg
ICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEt
PnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBk
YXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0
LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVW
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VUZW1wbGF0ZShkYXRhLT5yYXdUZW1w
bGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAo
KS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxk
VHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRU
eXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorYm9vbCBWOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRU
eXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJ
bnN0YW5jZSgmaW5mbywgdmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CiB9CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5o
CmluZGV4IDBhNWZhM2YyMjQzNWI2OWE0MDdiNzNjOTk3MWU3YjUzNmUxODEwMjYuLjBkNGU1OWVm
YmZkM2M1NGFlZjgzODM1ODg3OTA0ODc2Zjc5ODI2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKQEAgLTM1LDcgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZl
dGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSA9IEdldEZy
b21Db250ZXh0KTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3Rh
dGljIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIHRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuY3BwCmluZGV4IGU2
NzdlYmM5NTgxYzBiM2Q1YzMyZTk0ODBhY2Y1ODczZmY5NTYwNjMuLjFhMmEyODY5NmU4ODdkN2Qx
MDZiZjc2MjY1NGQ3YTUyOTlmYjIzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNwcApAQCAtNTUxLDI1
ICs1NTEsMjUgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBD
b25maWd1cmVWOFRlc3RUeXBlZGVmc1RlbXBsYXRlKHY4OjoKIAogICAgIC8vIEN1c3RvbSBTaWdu
YXR1cmUgJ21ldGhvZFdpdGhTZXF1ZW5jZUFyZycKICAgICBjb25zdCBpbnQgbWV0aG9kV2l0aFNl
cXVlbmNlQXJnQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
bWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndlttZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjXSA9IHsg
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4c2VxdWVuY2U8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPjo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2W21ldGhvZFdpdGhTZXF1ZW5j
ZUFyZ0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0
ZSgmVjhzZXF1ZW5jZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+OjppbmZvLCB3b3JsZFR5cGUpIH07
CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdTaWdu
YXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJn
YywgbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5n
OjpOZXdTeW1ib2woIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0
ZTo6TmV3KFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6Om1ldGhvZFdpdGhTZXF1ZW5jZUFyZ01ldGhv
ZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdTaWduYXR1cmUp
KTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ251bGxhYmxlQXJyYXlBcmcnCiAgICAgY29u
c3QgaW50IG51bGxhYmxlQXJyYXlBcmdBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBudWxsYWJsZUFycmF5QXJnQXJndltudWxsYWJsZUFycmF5QXJnQXJnY10g
PSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0
cmluZ1tdOjppbmZvKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG51
bGxhYmxlQXJyYXlBcmdBcmd2W251bGxhYmxlQXJyYXlBcmdBcmdjXSA9IHsgVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8sIHdv
cmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG51bGxhYmxlQXJyYXlB
cmdTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgbnVsbGFibGVBcnJheUFyZ0Fy
Z2MsIG51bGxhYmxlQXJyYXlBcmdBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbCgibnVsbGFibGVBcnJheUFyZyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRl
c3RUeXBlZGVmc1Y4SW50ZXJuYWw6Om51bGxhYmxlQXJyYXlBcmdNZXRob2RDYWxsYmFjaywgdjhV
bmRlZmluZWQoKSwgbnVsbGFibGVBcnJheUFyZ1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9t
IFNpZ25hdHVyZSAnc3RyaW5nQXJyYXlGdW5jdGlvbicKICAgICBjb25zdCBpbnQgc3RyaW5nQXJy
YXlGdW5jdGlvbkFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2W3N0cmluZ0FycmF5RnVuY3Rpb25BcmdjXSA9IHsgVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106
OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJy
YXlGdW5jdGlvbkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbywgd29y
bGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gc3RyaW5nQXJyYXlGdW5j
dGlvblNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBzdHJpbmdBcnJheUZ1bmN0
aW9uQXJnYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0
cmluZzo6TmV3U3ltYm9sKCJzdHJpbmdBcnJheUZ1bmN0aW9uIiksIHY4OjpGdW5jdGlvblRlbXBs
YXRlOjpOZXcoVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXJyYXlGdW5jdGlvbk1ldGhv
ZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdHJpbmdBcnJheUZ1bmN0aW9uU2lnbmF0dXJlKSk7
CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdzdHJpbmdBcnJheUZ1bmN0aW9uMicKICAgICBj
b25zdCBpbnQgc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ3Zbc3RyaW5nQXJyYXlG
dW5jdGlvbjJBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVt
cGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmd2W3N0cmluZ0FycmF5RnVuY3Rpb24y
QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZW
OERPTVN0cmluZ1tdOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2ln
bmF0dXJlPiBzdHJpbmdBcnJheUZ1bmN0aW9uMlNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5l
dyhkZXNjLCBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ2MsIHN0cmluZ0FycmF5RnVuY3Rpb24yQXJn
dik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN0cmluZ0FycmF5RnVu
Y3Rpb24yIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdFR5cGVkZWZzVjhJbnRlcm5h
bDo6c3RyaW5nQXJyYXlGdW5jdGlvbjJNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgc3Ry
aW5nQXJyYXlGdW5jdGlvbjJTaWduYXR1cmUpKTsKIApAQCAtNTgxLDIwICs1ODEsMjAgQEAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RU
eXBlZGVmc1RlbXBsYXRlKHY4OjoKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBWOFRlc3RUeXBlZGVmczo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBw
ZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRl
bXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmlu
Zm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBW
OFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVt
cGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEt
PnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZh
bHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVz
dFR5cGVkZWZzVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3Js
ZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAg
ICAgIENvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmlu
Zm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVN
YXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAK
LWJvb2wgVjhUZXN0VHlwZWRlZnM6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitib29sIFY4VGVzdFR5cGVkZWZzOjpIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKKyAgICByZXR1cm4g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVl
LCB3b3JsZFR5cGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmgKaW5kZXggMTRkYjFlNTVkOTgyODdh
MGU3ZGNlMDc0MmMzYTE4YzU1YWI3Mzk3Yi4uYzUyZTIwMzNjZjBkNTcxZDRlMWJmOTRhZjA1Njhh
ZDdkOGMyY2RmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgVjhUZXN0VHlwZWRlZnMgewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0gICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0
YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUq
LCBXcmFwcGVyV29ybGRUeXBlID0gR2V0RnJvbUNvbnRleHQpOwogICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBX
cmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdFR5cGVkZWZzKiB0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHAKaW5kZXggNmJjODAzYTQxN2RlYTA4ZmNk
Zjg4MzVkNWJiZTI1OWZiMzMzZTE4MS4uYzk3YjU5M2I4NDYzM2RkM2YzNDExMGJmMTJiNjY3MDRm
YTg1YTJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9y
RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1
bmN0aW9uLmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqCiB7
CiAgICAgQVNTRVJUKGlzb2xhdGUpOwogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBs
YXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmlu
Zm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAg
ICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+
cmF3VGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9
IGRhdGEtPnJhd1RlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQtPnZhbHVlOwogICAgIC8vIFRoZSBsaWZldGltZSBpcyBvZiBuZXdUZW1wbGF0ZSBpcyBk
ZWxlZ2F0ZWQgdG8gdGhlIFRlbXBsYXRlTWFwIHRodXMgdGhpcyB3b24ndCBiZSBsZWFrZWQuCiAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG5ld1RlbXBsYXRlID0gdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldygpKTsKLSAgICBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmFkZCgmaW5m
bywgY29uZmlndXJlVGVtcGxhdGUobmV3VGVtcGxhdGUpKTsKKyAgICBkYXRhLT5yYXdUZW1wbGF0
ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgY29uZmlndXJlVGVtcGxhdGUobmV3VGVtcGxhdGUp
KTsKICAgICByZXR1cm4gbmV3VGVtcGxhdGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAppbmRleCBhNGRkYzgzMDg2ODFmN2ZhNjM2MTJiMmZm
ODA1Y2NjNTRiMTE5Y2YzLi5kNWJhMjEwMGE0MjNiMTEyMmI5ZDdiNTljNTY1NzU2YWVhODE1YmI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCkBA
IC0zMDMsNyArMzAzLDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQodmFsdWUtPklzT2JqZWN0
KCkpOwogICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpOwogICAgICAgICBBU1NFUlQoVjhET01X
cmFwcGVyOjptYXliZURPTVdyYXBwZXIodmFsdWUpKTsKLSAgICAgICAgQVNTRVJUKFY4Tm9kZTo6
SGFzSW5zdGFuY2Uod3JhcHBlciwgbV9pc29sYXRlKSk7CisgICAgICAgIEFTU0VSVChWOE5vZGU6
Okhhc0luc3RhbmNlKHdyYXBwZXIsIG1faXNvbGF0ZSwgTWFpbldvcmxkKSB8fCBWOE5vZGU6Okhh
c0luc3RhbmNlKHdyYXBwZXIsIG1faXNvbGF0ZSwgSXNvbGF0ZWRXb3JsZCkpOwogICAgICAgICBO
b2RlKiBub2RlID0gVjhOb2RlOjp0b05hdGl2ZSh3cmFwcGVyKTsKICAgICAgICAgLy8gQSBtaW5v
ciBET00gR0MgY2FuIGhhbmRsZSBvbmx5IG5vZGUgd3JhcHBlcnMgaW4gdGhlIG1haW4gd29ybGQu
CiAgICAgICAgIC8vIE5vdGUgdGhhdCBub2RlLT53cmFwcGVyKCkuSXNFbXB0eSgpIHJldHVybnMg
dHJ1ZSBmb3Igbm9kZXMgdGhhdApAQCAtMzc2LDcgKzM3Niw3IEBAIHB1YmxpYzoKIAogICAgICAg
ICBpZiAoY2xhc3NJZCA9PSB2OERPTU5vZGVDbGFzc0lkKSB7CiAgICAgICAgICAgICBVTlVTRURf
UEFSQU0obV9pc29sYXRlKTsKLSAgICAgICAgICAgIEFTU0VSVChWOE5vZGU6Okhhc0luc3RhbmNl
KHdyYXBwZXIsIG1faXNvbGF0ZSkpOworICAgICAgICAgICAgQVNTRVJUKFY4Tm9kZTo6SGFzSW5z
dGFuY2Uod3JhcHBlciwgbV9pc29sYXRlLCBNYWluV29ybGQpIHx8IFY4Tm9kZTo6SGFzSW5zdGFu
Y2Uod3JhcHBlciwgbV9pc29sYXRlLCBJc29sYXRlZFdvcmxkKSk7CiAgICAgICAgICAgICBBU1NF
UlQoIXdyYXBwZXIuSXNJbmRlcGVuZGVudChtX2lzb2xhdGUpKTsKIAogICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IHN0YXRpY19jYXN0PE5vZGUqPihvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcAppbmRleCAyZmZjMTk0MmJkNDZhZjM0
OWI2ZjIyNjY4OTU5Y2IzOWZiNDcxMGUzLi41OWEyM2FmZDk3ZmRhNDlkODY5ZjRjYWM2OTBkMzYy
M2U0YTY2YWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklz
b2xhdGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xh
dGVEYXRhLmNwcApAQCAtMTA0LDggKzEwNCwxMCBAQCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjp0b1N0cmluZ1RlbXBsYXRlKCkKIHZvaWQgVjhQZXJJ
c29sYXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2Jq
ZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkJpbmRpbmcpOwotICAgIGluZm8uYWRkTWVt
YmVyKG1fcmF3VGVtcGxhdGVzLCAicmF3VGVtcGxhdGVzIik7Ci0gICAgaW5mby5hZGRNZW1iZXIo
bV90ZW1wbGF0ZXMsICJ0ZW1wbGF0ZXMiKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3Jhd1RlbXBs
YXRlc0Zvck1haW5Xb3JsZCwgInJhd1RlbXBsYXRlc0Zvck1haW5Xb3JsZCIpOworICAgIGluZm8u
YWRkTWVtYmVyKG1fcmF3VGVtcGxhdGVzRm9yTm9uTWFpbldvcmxkLCAicmF3VGVtcGxhdGVzRm9y
Tm9uTWFpbldvcmxkIik7CisgICAgaW5mby5hZGRNZW1iZXIobV90ZW1wbGF0ZXNGb3JNYWluV29y
bGQsICJ0ZW1wbGF0ZXNGb3JNYWluV29ybGQiKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3RlbXBs
YXRlc0Zvck5vbk1haW5Xb3JsZCwgInRlbXBsYXRlc0Zvck5vbk1haW5Xb3JsZCIpOwogICAgIGlu
Zm8uYWRkTWVtYmVyKG1fc3RyaW5nQ2FjaGUsICJzdHJpbmdDYWNoZSIpOwogICAgIGluZm8uYWRk
TWVtYmVyKG1faW50ZWdlckNhY2hlLCAiaW50ZWdlckNhY2hlIik7CiAgICAgaW5mby5hZGRNZW1i
ZXIobV9kb21EYXRhTGlzdCwgImRvbURhdGFMaXN0Iik7CkBAIC0xMjIsMzIgKzEyNCw0MiBAQCB2
b2lkIFY4UGVySXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
IG1lbW9yeU9iamVjdEluZm8pIGNvbgogICAgIGluZm8uaWdub3JlTWVtYmVyKG1fYXV4aWxpYXJ5
Q29udGV4dCk7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFBl
cklzb2xhdGVEYXRhOjpwcml2YXRlVGVtcGxhdGUoV3JhcHBlcldvcmxkVHlwZSwgdm9pZCogcHJp
dmF0ZVBvaW50ZXIsIHY4OjpJbnZvY2F0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBkYXRhLCB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHNpZ25hdHVyZSwgaW50
IGxlbmd0aCkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFBlcklzb2xh
dGVEYXRhOjpwcml2YXRlVGVtcGxhdGUoV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBl
LCB2b2lkKiBwcml2YXRlUG9pbnRlciwgdjg6Okludm9jYXRpb25DYWxsYmFjayBjYWxsYmFjaywg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGEsIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gc2ln
bmF0dXJlLCBpbnQgbGVuZ3RoKQogeworICAgIEFTU0VSVChjdXJyZW50V29ybGRUeXBlICE9IEdl
dEZyb21Db250ZXh0KTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
cHJpdmF0ZVRlbXBsYXRlOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVy
YXRvciByZXN1bHQgPSBtX3RlbXBsYXRlcy5maW5kKHByaXZhdGVQb2ludGVyKTsKLSAgICBpZiAo
cmVzdWx0ICE9IG1fdGVtcGxhdGVzLmVuZCgpKQorICAgIFRlbXBsYXRlTWFwJiB0ZW1wbGF0ZXMg
PSB0ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKTsKKyAgICBUZW1wbGF0ZU1hcDo6aXRlcmF0
b3IgcmVzdWx0ID0gdGVtcGxhdGVzLmZpbmQocHJpdmF0ZVBvaW50ZXIpOworICAgIGlmIChyZXN1
bHQgIT0gdGVtcGxhdGVzLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbmV3UHJpdmF0ZVRlbXBsYXRl
ID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcobV9pc29sYXRlLCB2
ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KGNhbGxiYWNrLCBkYXRhLCBzaWduYXR1cmUsIGxlbmd0
aCkpOwotICAgIG1fdGVtcGxhdGVzLmFkZChwcml2YXRlUG9pbnRlciwgbmV3UHJpdmF0ZVRlbXBs
YXRlKTsKKyAgICB0ZW1wbGF0ZXMuYWRkKHByaXZhdGVQb2ludGVyLCBuZXdQcml2YXRlVGVtcGxh
dGUpOwogICAgIHJldHVybiBuZXdQcml2YXRlVGVtcGxhdGU7CiB9CiAKLXY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjpyYXdUZW1wbGF0ZShXcmFw
cGVyVHlwZUluZm8qIGluZm8pCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
VjhQZXJJc29sYXRlRGF0YTo6cmF3VGVtcGxhdGUoV3JhcHBlclR5cGVJbmZvKiBpbmZvLCBXcmFw
cGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgVGVtcGxhdGVNYXA6Oml0ZXJh
dG9yIHJlc3VsdCA9IG1fcmF3VGVtcGxhdGVzLmZpbmQoaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAh
PSBtX3Jhd1RlbXBsYXRlcy5lbmQoKSkKKyAgICBBU1NFUlQoY3VycmVudFdvcmxkVHlwZSAhPSBH
ZXRGcm9tQ29udGV4dCk7CisgICAgVGVtcGxhdGVNYXAmIHRlbXBsYXRlcyA9IHJhd1RlbXBsYXRl
TWFwKGN1cnJlbnRXb3JsZFR5cGUpOworICAgIFRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQg
PSB0ZW1wbGF0ZXMuZmluZChpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IHRlbXBsYXRlcy5lbmQo
KSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUg
aGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRl
bXBsID0gY3JlYXRlUmF3VGVtcGxhdGUobV9pc29sYXRlKTsKLSAgICBtX3Jhd1RlbXBsYXRlcy5h
ZGQoaW5mbywgdGVtcGwpOworICAgIHRlbXBsYXRlcy5hZGQoaW5mbywgdGVtcGwpOwogICAgIHJl
dHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFBlcklzb2xhdGVEYXRhOjpoYXNJbnN0YW5jZShXcmFw
cGVyVHlwZUluZm8qIGluZm8sIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKK2Jvb2wgVjhQ
ZXJJc29sYXRlRGF0YTo6aGFzSW5zdGFuY2UoV3JhcHBlclR5cGVJbmZvKiBpbmZvLCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkK
IHsKLSAgICByZXR1cm4gcmF3VGVtcGxhdGUoaW5mbyktPkhhc0luc3RhbmNlKHZhbHVlKTsKKyAg
ICBpZiAoY3VycmVudFdvcmxkVHlwZSA9PSBHZXRGcm9tQ29udGV4dCkKKyAgICAgICAgY3VycmVu
dFdvcmxkVHlwZSA9IHdvcmxkVHlwZShtX2lzb2xhdGUpOworICAgIFRlbXBsYXRlTWFwJiB0ZW1w
bGF0ZXMgPSByYXdUZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKTsKKyAgICBUZW1wbGF0ZU1h
cDo6aXRlcmF0b3IgcmVzdWx0ID0gdGVtcGxhdGVzLmZpbmQoaW5mbyk7CisgICAgaWYgKHJlc3Vs
dCA9PSB0ZW1wbGF0ZXMuZW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
cmVzdWx0LT52YWx1ZS0+SGFzSW5zdGFuY2UodmFsdWUpOwogfQogCiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0
ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaApp
bmRleCBjM2MwMmIwMTNlOWE0Zjg1OTM5YzY2NzViOTVhNTE4NzY0Y2YxNGFjLi44ZGRiMDhjODBl
ZjMwMmMwNGVjOTcwNDlhYzY3YTY1MWQ4MDU3OGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oCkBAIC02Nyw4ICs2NywxOSBAQCBwdWJsaWM6CiAK
ICAgICB0eXBlZGVmIEhhc2hNYXA8dm9pZCosIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiA+IFRlbXBsYXRlTWFwOwogCi0gICAgVGVtcGxhdGVNYXAmIHJhd1RlbXBsYXRlTWFw
KCkgeyByZXR1cm4gbV9yYXdUZW1wbGF0ZXM7IH0KLSAgICBUZW1wbGF0ZU1hcCYgdGVtcGxhdGVN
YXAoKSB7IHJldHVybiBtX3RlbXBsYXRlczsgfQorICAgIFRlbXBsYXRlTWFwJiByYXdUZW1wbGF0
ZU1hcChXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKKyAgICB7CisgICAgICAgIGlmICh3b3Js
ZFR5cGUgPT0gTWFpbldvcmxkKQorICAgICAgICAgICAgcmV0dXJuIG1fcmF3VGVtcGxhdGVzRm9y
TWFpbldvcmxkOworICAgICAgICByZXR1cm4gbV9yYXdUZW1wbGF0ZXNGb3JOb25NYWluV29ybGQ7
CisgICAgfQorCisgICAgVGVtcGxhdGVNYXAmIHRlbXBsYXRlTWFwKFdyYXBwZXJXb3JsZFR5cGUg
d29ybGRUeXBlKQorICAgIHsKKyAgICAgICAgaWYgKHdvcmxkVHlwZSA9PSBNYWluV29ybGQpCisg
ICAgICAgICAgICByZXR1cm4gbV90ZW1wbGF0ZXNGb3JNYWluV29ybGQ7CisgICAgICAgIHJldHVy
biBtX3RlbXBsYXRlc0Zvck5vbk1haW5Xb3JsZDsKKyAgICB9CiAKICAgICB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvblRlbXBsYXRlPiB0b1N0cmluZ1RlbXBsYXRlKCk7CiAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+JiBsYXp5RXZlbnRMaXN0ZW5lclRvU3RyaW5nVGVtcGxh
dGUoKQpAQCAtMTMwLDkgKzE0MSw5IEBAIHB1YmxpYzoKIAogICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUoV3JhcHBlcldvcmxkVHlwZSwgdm9p
ZCogcHJpdmF0ZVBvaW50ZXIsIHY4OjpJbnZvY2F0aW9uQ2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBkYXRhLCB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+LCBpbnQgbGVuZ3RoID0gMCk7
CiAKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcmF3VGVtcGxhdGUo
V3JhcHBlclR5cGVJbmZvKik7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IHJhd1RlbXBsYXRlKFdyYXBwZXJUeXBlSW5mbyosIFdyYXBwZXJXb3JsZFR5cGUpOwogCi0g
ICAgYm9vbCBoYXNJbnN0YW5jZShXcmFwcGVyVHlwZUluZm8qLCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4pOworICAgIGJvb2wgaGFzSW5zdGFuY2UoV3JhcHBlclR5cGVJbmZvKiwgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+LCBXcmFwcGVyV29ybGRUeXBlKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBW
OFBlcklzb2xhdGVEYXRhKHY4OjpJc29sYXRlKik7CkBAIC0xNDAsOCArMTUxLDEwIEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3Rvck9mVG9TdHJp
bmcoY29uc3Qgdjg6OkFyZ3VtZW50cyYpOwogCiAgICAgdjg6Oklzb2xhdGUqIG1faXNvbGF0ZTsK
LSAgICBUZW1wbGF0ZU1hcCBtX3Jhd1RlbXBsYXRlczsKLSAgICBUZW1wbGF0ZU1hcCBtX3RlbXBs
YXRlczsKKyAgICBUZW1wbGF0ZU1hcCBtX3Jhd1RlbXBsYXRlc0Zvck1haW5Xb3JsZDsKKyAgICBU
ZW1wbGF0ZU1hcCBtX3Jhd1RlbXBsYXRlc0Zvck5vbk1haW5Xb3JsZDsKKyAgICBUZW1wbGF0ZU1h
cCBtX3RlbXBsYXRlc0Zvck1haW5Xb3JsZDsKKyAgICBUZW1wbGF0ZU1hcCBtX3RlbXBsYXRlc0Zv
ck5vbk1haW5Xb3JsZDsKICAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBtX3RvU3RyaW5nVGVtcGxhdGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IG1fbGF6eUV2ZW50TGlzdGVuZXJUb1N0cmluZ1RlbXBsYXRlOwogICAgIE93blB0cjxT
dHJpbmdDYWNoZT4gbV9zdHJpbmdDYWNoZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
V3JhcHBlclR5cGVJbmZvLmgKaW5kZXggNDU2ZTAwMjAxOWZmYWI1NDJmZGViNWZjYWU3Njg4Zjc5
NTBhYTM1Ni4uNjVmYTZmYzZlYTU5MzgzYmY1MThjY2IxNTFjYjFhYjMwZWExNGQyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKQEAgLTUyLDcgKzUy
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGVudW0gV3JhcHBlcldvcmxkVHlwZSB7CiAg
ICAgICAgIE1haW5Xb3JsZCwKICAgICAgICAgSXNvbGF0ZWRXb3JsZCwKLSAgICAgICAgV29ya2Vy
V29ybGQKKyAgICAgICAgV29ya2VyV29ybGQsCisgICAgICAgIC8vIFdoYXRldmVyIHdvcmxkIHR5
cGUgdGhlIGN1cnJlbnQgY29udGV4dCBoYXMuIEZJWE1FOiByZW1vdmUgdGhpcy4KKyAgICAgICAg
R2V0RnJvbUNvbnRleHQKICAgICB9OwogCiAgICAgdHlwZWRlZiB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gKCpHZXRUZW1wbGF0ZUZ1bmN0aW9uKSh2ODo6SXNvbGF0ZSosIFdy
YXBwZXJXb3JsZFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDFlZmQ4NWFjOGY1YWZkNWVhYzA0OWYy
ZjBiODFjNjRiNThlZGViMzEuLmNmZWQ3MmM2ZDIwMzkxODUyNjMzNjI3YTlkYjA1ZDQ5NzdhOTkx
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0
aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhM
b2NhdGlvbkN1c3RvbS5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwcml2YXRlVGVtcGxhdGVVbmlxdWVLZXkgPSAi
cmVsb2FkUHJpdmF0ZVRlbXBsYXRlIjsKICAgICBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3Js
ZFR5cGUgPSB3b3JsZFR5cGUoaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRlKCkpOwotICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSBkYXRhLT5wcml2
YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSwg
VjhMb2NhdGlvbjo6cmVsb2FkTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0
dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxhdGUoJlY4TG9jYXRpb246OmluZm8pKSk7CisgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IGRhdGEt
PnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVl
S2V5LCBWOExvY2F0aW9uOjpyZWxvYWRNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpT
aWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbywgY3VycmVu
dFdvcmxkVHlwZSkpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5m
by5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVt
cGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0
eSgpKSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRp
b246OnJlbG9hZEF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAgICBM
b2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBpZiAoIUJp
bmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5z
dGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpKSB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSA9ICJyZWxvYWRT
aGFyZWRUZW1wbGF0ZSI7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBzaGFyZWRUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRU
eXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246OnJlbG9hZE1ldGhvZEN1
c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJhd1RlbXBsYXRl
KCZWOExvY2F0aW9uOjppbmZvKSkpOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSBkYXRhLT5wcml2YXRlVGVtcGxhdGUoY3VycmVu
dFdvcmxkVHlwZSwgJnNoYXJlZFRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjpyZWxvYWRN
ZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdU
ZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkpKTsKICAgICAgICAg
cmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KICAgICByZXR1cm4g
cHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZXBsYWNlQXR0ckdldHRlckN1c3RvbSh2ODo6
TG9jYWw8djg6OlN0cmluZz4KICAgICBzdGF0aWMgY29uc3QgY2hhciogcHJpdmF0ZVRlbXBsYXRl
VW5pcXVlS2V5ID0gInJlcGxhY2VQcml2YXRlVGVtcGxhdGUiOwogICAgIFdyYXBwZXJXb3JsZFR5
cGUgY3VycmVudFdvcmxkVHlwZSA9IHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSk7CiAgICAg
VjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJ
c29sYXRlKCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2
YXRlVGVtcGxhdGUgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5wcml2YXRlVGVt
cGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2Nh
dGlvbjo6cmVwbGFjZU1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6
TmV3KGRhdGEtPnJhd1RlbXBsYXRlKCZWOExvY2F0aW9uOjppbmZvKSkpOworICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwg
JnByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6cmVwbGFjZU1ldGhvZEN1c3Rv
bSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJhd1RlbXBsYXRlKCZW
OExvY2F0aW9uOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSkpOwogCiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVD
aGFpbihWOExvY2F0aW9uOjpHZXRUZW1wbGF0ZShpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKSk7
CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKQEAgLTE3OCw3ICsxNzgsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUF0dHJHZXR0ZXJDdXN0b20odjg6Okxv
Y2FsPHY4OjpTdHJpbmc+CiAgICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRvTmF0aXZl
KGhvbGRlcik7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9G
cmFtZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUoKSwgRG9Ob3RSZXBvcnRT
ZWN1cml0eUVycm9yKSkgewogICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhcmVkVGVtcGxh
dGVVbmlxdWVLZXkgPSAicmVwbGFjZVNoYXJlZFRlbXBsYXRlIjsKLSAgICAgICAgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29y
bGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246OnJlcGxhY2VNZXRo
b2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1w
bGF0ZSgmVjhMb2NhdGlvbjo6aW5mbykpKTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
bmZvLkdldElzb2xhdGUoKSktPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmc2hh
cmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246OnJlcGxhY2VNZXRob2RDdXN0b20sIHY4
VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2Nh
dGlvbjo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkpKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRl
bXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRl
LT5HZXRGdW5jdGlvbigpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOExvY2F0aW9uOjphc3NpZ25BdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSA9ICJh
c3NpZ25Qcml2YXRlVGVtcGxhdGUiOwogICAgIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxk
VHlwZSA9IHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSk7CiAgICAgVjhQZXJJc29sYXRlRGF0
YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRlKCkpOwotICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSBk
YXRhLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZhdGVUZW1wbGF0ZVVu
aXF1ZUtleSwgVjhMb2NhdGlvbjo6YXNzaWduTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2
ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxhdGUoJlY4TG9jYXRpb246OmluZm8pKSk7
CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0
ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmcHJpdmF0ZVRlbXBs
YXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20sIHY4VW5kZWZpbmVk
KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5m
bywgY3VycmVudFdvcmxkVHlwZSkpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9s
ZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlv
bjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpOwogICAgIGlmIChob2xk
ZXIuSXNFbXB0eSgpKSB7CkBAIC0yMDIsNyArMjAyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4TG9jYXRpb246OmFzc2lnbkF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG4KICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsKICAg
ICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdT
dGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3Ip
KSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSA9
ICJhc3NpZ25TaGFyZWRUZW1wbGF0ZSI7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJy
ZW50V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246OmFzc2ln
bk1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJh
d1RlbXBsYXRlKCZWOExvY2F0aW9uOjppbmZvKSkpOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSBkYXRhLT5wcml2YXRlVGVtcGxh
dGUoY3VycmVudFdvcmxkVHlwZSwgJnNoYXJlZFRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9u
Ojphc3NpZ25NZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhk
YXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkpKTsK
ICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KICAg
ICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20uY3BwCmluZGV4
IDkwNGFiMzExNzY2YjVkMTQxN2I5NWE4MTUzMzljNGNiZDU4ODViMWMuLmY1NTJmNzA4MDZhNjAz
OTVlNGVjYmQ2YzVlODY4NGUyNzg5M2YxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAKQEAgLTYxLDcgKzYxLDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZUxpc3Q6Om5hbWVkUHJvcGVydHlHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUKIAogdm9pZCogVjhOb2RlTGlzdDo6b3BhcXVlUm9v
dEZvckdDKHZvaWQqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgQVNTRVJUKFY4Tm9kZUxpc3Q6Okhhc0luc3Rh
bmNlKHdyYXBwZXIsIGlzb2xhdGUpKTsKKyAgICBBU1NFUlQoVjhOb2RlTGlzdDo6SGFzSW5zdGFu
Y2Uod3JhcHBlciwgaXNvbGF0ZSwgTWFpbldvcmxkKSB8fCBWOE5vZGVMaXN0OjpIYXNJbnN0YW5j
ZSh3cmFwcGVyLCBpc29sYXRlLCBJc29sYXRlZFdvcmxkKSk7CiAgICAgTm9kZUxpc3QqIGltcGwg
PSBzdGF0aWNfY2FzdDxOb2RlTGlzdCo+KG9iamVjdCk7CiAgICAgaWYgKCFpbXBsLT5pc0xpdmVO
b2RlTGlzdCgpKQogICAgICAgICByZXR1cm4gb2JqZWN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192905</attachid>
            <date>2013-03-13 05:33:14 -0700</date>
            <delta_ts>2013-03-14 03:24:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111724-20130313132911.patch</filename>
            <type>text/plain</type>
            <size>81060</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQwZTk5ZjUxYTJhNmUy
MmExMTEyZGQ1MWI2NmFkZjMxYzdlMDQzMC4uMGYwM2VjOWI3YmU4ZTI3OTA5YzYzMmJhODExYzFl
MzM1NzkzNzkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxMy0wMy0xMyAgTWFy
amEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBTdG9yZSBt
YWluIHdvcmxkIGFuZCBub24tbWFpbiB3b3JsZCB0ZW1wbGF0ZXMgc2VwYXJhdGVseS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTcyNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgbmVlZGVk
IGZvciBnZW5lcmF0aW5nIHNwZWNpYWxpemVkIGJpbmRpbmdzIGZvciB0aGUgbWFpbgorICAgICAg
ICB3b3JsZCAoYnVnIDExMDg3NCkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzICh1cGRhdGVkIGV4
aXN0aW5nIGJpbmRpbmdzIHRlc3RzKS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2Vu
ZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbik6CisgICAgICAgIChDcmVhdGVDdXN0b21TaWduYXR1cmUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb25maWd1cmVWOEZsb2F0NjRBcnJheVRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4RmxvYXQ2NEFycmF5OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEZsb2F0
NjRBcnJheTo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOEZsb2F0NjRBcnJheS5oOgorICAgICAgICAoVjhGbG9hdDY0QXJyYXkpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBvc3RNZXNzYWdl
QXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RBY3RpdmVET01P
YmplY3RUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RBY3RpdmVET01PYmplY3Q6
OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6
SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RB
Y3RpdmVET01PYmplY3QuaDoKKyAgICAgICAgKFY4VGVzdEFjdGl2ZURPTU9iamVjdCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRUZW1wbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6SGFzSW5zdGFu
Y2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1l
ZEdldHRlci5oOgorICAgICAgICAoVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6Okhhc0luc3RhbmNlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAoVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
VjhUZXN0RXZlbnRUYXJnZXQ6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEV2ZW50VGFyZ2V0OjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0Lmg6CisgICAgICAgIChWOFRlc3RFdmVudFRhcmdldCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFeGNlcHRpb246OkdldFRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4VGVzdEV4Y2VwdGlvbjo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaDoKKyAgICAgICAgKFY4VGVz
dEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdElu
dGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VU
ZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6OkdldFRlbXBsYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEludGVyZmFjZTo6SGFzSW5zdGFuY2UpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaDoKKyAgICAg
ICAgKFY4VGVzdEludGVyZmFjZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6SGFzSW5zdGFuY2UpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6
CisgICAgICAgIChWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKFY4VGVzdE5hbWVkQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6
OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6Okhhc0luc3RhbmNl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oOgorICAg
ICAgICAoVjhUZXN0Tm9kZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6OkdldFRlbXBsYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4VGVzdE9iajo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaDoKKyAgICAgICAgKFY4VGVzdE9iaik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6R2V0
VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChWOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0VGVtcGxhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpIYXNJbnN0YW5j
ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5oOgorICAgICAgICAoVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0VHlwZWRlZnNU
ZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RUeXBlZGVmczo6R2V0VGVtcGxhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0VHlwZWRlZnM6Okhhc0luc3RhbmNlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuaDoKKyAgICAgICAg
KFY4VGVzdFR5cGVkZWZzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVy
SXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVy
SXNvbGF0ZURhdGE6OnByaXZhdGVUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlcklz
b2xhdGVEYXRhOjpyYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlcklzb2xhdGVE
YXRhOjpoYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJJc29sYXRlRGF0YTo6cmF3VGVtcGxhdGVNYXAp
OgorICAgICAgICAoVjhQZXJJc29sYXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlcklz
b2xhdGVEYXRhOjp0ZW1wbGF0ZU1hcCk6CisgICAgICAgICogYmluZGluZ3MvdjgvV3JhcHBlclR5
cGVJbmZvLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6cmVsb2FkQXR0ckdldHRlckN1c3Rv
bSk6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZXBsYWNlQXR0ckdldHRlckN1c3Rv
bSk6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjphc3NpZ25BdHRyR2V0dGVyQ3VzdG9t
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOE5vZGVMaXN0OjpvcGFxdWVSb290Rm9yR0MpOgorCiAyMDEzLTAz
LTEzICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUGFzcyB0aGUg
WFNTQXVkaXRvcidzIHJlcG9ydCBVUkwgdG8gdGhlIFhTU0F1ZGl0b3JEZWxlZ2F0ZSBvbiB0aGUg
bWFpbiB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCmluZGV4IGVmMjBmOWZlZWQzY2Q0ZjNhNjI4NjcwOWZmNzA1NDU5Zjkz
NmU5MmYuLmNkZWY2NDRiN2U3YjdiZWIyNjc0YmYyMjI0NGMyM2RkMWE5ODE3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBA
IC0zNjAsNyArMzYwLDcgQEAgRU5ECiAgICAgfQogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
PDxFTkQpOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
Piwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSA9IEdldEZyb21Db250
ZXh0KTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdl
dFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljICR7
bmF0aXZlVHlwZX0qIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAg
IHsKQEAgLTc4MCw3ICs3ODAsNyBAQCBzdWIgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0
ZXIKICAgICBteSAkdjhJbnRlcmZhY2VOYW1lID0gIlY4IiAuICRpbnRlcmZhY2VOYW1lOwogICAg
IG15ICRmdW5jTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogCi0gICAgbXkgJHNp
Z25hdHVyZSA9ICJ2ODo6U2lnbmF0dXJlOjpOZXcoVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZv
LkdldElzb2xhdGUoKSktPnJhd1RlbXBsYXRlKCYiIC4gJHY4SW50ZXJmYWNlTmFtZSAuICI6Omlu
Zm8pKSI7CisgICAgbXkgJHNpZ25hdHVyZSA9ICJ2ODo6U2lnbmF0dXJlOjpOZXcoVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnJhd1RlbXBsYXRlKCYiIC4gJHY4SW50
ZXJmYWNlTmFtZSAuICI6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpKSI7CiAgICAgaWYgKCRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhEb05vdENoZWNrU2lnbmF0
dXJlIn0pIHsKICAgICAgICAgJHNpZ25hdHVyZSA9ICJ2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4o
KSI7CiAgICAgfQpAQCAtMzE1NSwyMCArMzE1NSwyMCBAQCBFTkQKIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBl
cklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAg
ICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+
dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBs
YXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJh
dG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Cisg
ICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAg
ICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVT
Y29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQot
ICAgICAgICBDb25maWd1cmUke3Y4SW50ZXJmYWNlTmFtZX1UZW1wbGF0ZShkYXRhLT5yYXdUZW1w
bGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAo
KS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlJHt2OEludGVyZmFjZU5hbWV9
VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdv
cmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRl
bXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgJHt2OEludGVyZmFjZU5hbWV9OjpI
YXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQorYm9vbCAke3Y4SW50ZXJmYWNlTmFtZX06Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29y
bGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5o
YXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CiB9CiAK
IEVORApAQCAtNDA4OSw3ICs0MDg5LDcgQEAgc3ViIENyZWF0ZUN1c3RvbVNpZ25hdHVyZQogICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKEdldFY4SGVhZGVyTmFtZSgkdHlwZSkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAkcmVzdWx0IC49ICJWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdU
ZW1wbGF0ZSgmVjgke3R5cGV9OjppbmZvKSI7CisgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAi
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4JHt0eXBlfTo6
aW5mbywgd29ybGRUeXBlKSI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAkcmVzdWx0IC49ICJ2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZs
b2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhGbG9hdDY0QXJyYXkuY3BwCmluZGV4IGRkNzZlYWY0MzEyMjdiZjcwZjFjMzUxNDFhNzYzOWU5
ZjZkYWEzN2UuLjRiOGIzNjU3OGE3ODg3YjVkMWNhNTJlMTAzNmUzNzhiNjFhZjdjZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRB
cnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
RmxvYXQ2NEFycmF5LmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSh2
ODo6CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdmb28nCiAgICAgY29uc3QgaW50IGZvb0Fy
Z2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZvb0FyZ3ZbZm9v
QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZW
OEZsb2F0MzJBcnJheTo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBmb29Bcmd2W2Zvb0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5yYXdUZW1wbGF0ZSgmVjhGbG9hdDMyQXJyYXk6OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2
ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGZvb1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5l
dyhkZXNjLCBmb29BcmdjLCBmb29Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbCgiZm9vIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoRmxvYXQ2NEFycmF5VjhJ
bnRlcm5hbDo6Zm9vTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGZvb1NpZ25hdHVyZSkp
OwogCkBAIC0xNjUsMjAgKzE2NSwyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUodjg6Ogogdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4RmxvYXQ2NEFycmF5OjpHZXRUZW1wbGF0
ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAg
ICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9
IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRh
LT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFw
OjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmlu
Zm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQo
KSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUg
aGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRl
bXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZShkYXRhLT5yYXdU
ZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVN
YXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhGbG9hdDY0QXJyYXlU
ZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29y
bGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVt
cGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOEZsb2F0NjRBcnJheTo6SGFzSW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
K2Jvb2wgVjhGbG9hdDY0QXJyYXk6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQog
ewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5j
ZSgmaW5mbywgdmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CiB9CiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFy
cmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0
QXJyYXkuaAppbmRleCBhZmUyODkzMzg4MjBlZjEwNDc5OTMwYWQ1MGNlM2YwZTIzZDUxMjZmLi45
YjNjNjFmODVhNjY5MDJhODMwZThjOWFkMjFkYjI5NWViOWIyMDdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXku
aApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOEZsb2F0NjRB
cnJheSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRp
bWUgPSBWOEFycmF5QnVmZmVyVmlldzo6aGFzRGVwZW5kZW50TGlmZXRpbWU7Ci0gICAgc3RhdGlj
IGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwor
ICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklz
b2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlID0gR2V0RnJvbUNvbnRleHQpOwogICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xh
dGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgRmxvYXQ2NEFycmF5KiB0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3Rp
dmVET01PYmplY3QuY3BwCmluZGV4IGFlM2E4NTFlNDQ5Y2QwMDJmOWQwMGNiNjg4NjlhNmNlYTJj
ZDE2ODUuLmU2MTRiMGIxMWVlNjlmMjA4ZTBiZWZmYTJmNDNlODViNjUyMzI4OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVE
T01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBwb3N0TWVzc2FnZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGMKICAgICBzdGF0aWMgY29uc3QgY2hhciogcHJpdmF0ZVRlbXBsYXRlVW5p
cXVlS2V5ID0gInBvc3RNZXNzYWdlUHJpdmF0ZVRlbXBsYXRlIjsKICAgICBXcmFwcGVyV29ybGRU
eXBlIGN1cnJlbnRXb3JsZFR5cGUgPSB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpOwogICAg
IFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0
SXNvbGF0ZSgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJp
dmF0ZVRlbXBsYXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZw
cml2YXRlVGVtcGxhdGVVbmlxdWVLZXksIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpw
b3N0TWVzc2FnZU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpO
ZXcoVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnJhd1RlbXBsYXRl
KCZWOFRlc3RBY3RpdmVET01PYmplY3Q6OmluZm8pKSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0
ZShjdXJyZW50V29ybGRUeXBlLCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBUZXN0QWN0aXZl
RE9NT2JqZWN0VjhJbnRlcm5hbDo6cG9zdE1lc3NhZ2VNZXRob2RDYWxsYmFjaywgdjhVbmRlZmlu
ZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJ
c29sYXRlKCkpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjppbmZvLCBjdXJy
ZW50V29ybGRUeXBlKSkpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBp
bmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOFRlc3RBY3RpdmVET01P
YmplY3Q6OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSk7
CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvc3RNZXNzYWdlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgYwogICAgIFRlc3RBY3RpdmVET01PYmplY3QqIGltcCA9IFY4VGVzdEFj
dGl2ZURPTU9iamVjdDo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0
eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1w
LT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpKSB7CiAgICAgICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSA9ICJwb3N0TWVzc2FnZVNoYXJlZFRl
bXBsYXRlIjsKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNo
YXJlZFRlbXBsYXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZz
aGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSwgVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBv
c3RNZXNzYWdlTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5l
dyhWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0SXNvbGF0ZSgpKS0+cmF3VGVtcGxhdGUo
JlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6aW5mbykpKTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBs
YXRlKGN1cnJlbnRXb3JsZFR5cGUsICZzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSwgVGVzdEFjdGl2
ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBvc3RNZXNzYWdlTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZp
bmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0
SXNvbGF0ZSgpKS0+cmF3VGVtcGxhdGUoJlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6aW5mbywgY3Vy
cmVudFdvcmxkVHlwZSkpKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5j
dGlvbigpOwogICAgIH0KIApAQCAtMTk1LDcgKzE5NSw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0QWN0aXZlRE9NT2JqZWN0VGVt
cGxhCiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdleGNpdGluZ0Z1bmN0aW9uJwogICAgIGNv
bnN0IGludCBleGNpdGluZ0Z1bmN0aW9uQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gZXhjaXRpbmdGdW5jdGlvbkFyZ3ZbZXhjaXRpbmdGdW5jdGlvbkFyZ2Nd
ID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2Rl
OjppbmZvKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGV4Y2l0aW5n
RnVuY3Rpb25Bcmd2W2V4Y2l0aW5nRnVuY3Rpb25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbywgd29ybGRUeXBlKSB9Owog
ICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gZXhjaXRpbmdGdW5jdGlvblNpZ25hdHVyZSA9
IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBleGNpdGluZ0Z1bmN0aW9uQXJnYywgZXhjaXRpbmdG
dW5jdGlvbkFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJleGNp
dGluZ0Z1bmN0aW9uIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEFjdGl2ZURPTU9i
amVjdFY4SW50ZXJuYWw6OmV4Y2l0aW5nRnVuY3Rpb25NZXRob2RDYWxsYmFjaywgdjhVbmRlZmlu
ZWQoKSwgZXhjaXRpbmdGdW5jdGlvblNpZ25hdHVyZSkpOwogCkBAIC0yMTAsMjAgKzIxMCwyMCBA
QCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4
VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYQogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURh
dGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNv
bGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1h
cCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5l
bmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0
ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVz
dWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVy
biByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENv
bmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZp
bmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgm
aW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1w
bGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRU
eXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwp
OwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RBY3RpdmVET01PYmplY3Q6Okhh
c0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUpCitib29sIFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3
b3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSkt
Pmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKIH0K
IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0QWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggZDIzNWJjNTQ1NDFhZDY5MzRi
OGE2N2Y5MDA5ZGY4MDBhMzljOGU3ZC4uNzIzNjQ4Y2JkMmY3MWI5OTFiMDhmNzdiNWM5OWQ4NzMz
NDQ4M2YyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaApAQCAtMzQsNyArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOFRlc3RBY3RpdmVET01PYmplY3QgewogcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7
Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6
SXNvbGF0ZSopOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlID0gR2V0RnJvbUNvbnRleHQpOwog
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxh
dGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdEFjdGl2
ZURPTU9iamVjdCogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggNDYwMTQ4YzJiNGIw
NmZiM2VmYmE1NTViOTMyZWI4ZmQ4ZGU0MWM3ZS4uZWU1ZTM3MmVmNGM3OGNlNDg2ZjgzZDBkOTNm
ODA5MGNmMGQ4ZmY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBA
IC0xMTUsMjAgKzExNSwyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IENvbmZpZ3VyZVY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyVGVtcAogdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7
CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3Vs
dCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBk
YXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRl
TWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQo
JmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5l
bmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2Nv
cGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wbGF0
ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0
YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29y
bGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3Js
ZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBW
OFRlc3RDdXN0b21OYW1lZEdldHRlcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2Jvb2wgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXI6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOwor
ICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgm
aW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIuaAppbmRleCBlMmYxZDVhNGVkOTRiYTkwY2U4ZTViMThiODlhZWUwZDc3OWRkMDcxLi4x
MTMwM2FiMWQ4NmIzYzczZDU4M2Q4Zjc1MjQyNDIwMWZiNjBhNzkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBWOFRlc3RDdXN0b21OYW1lZEdldHRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBI
YXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CisgICAgc3Rh
dGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSos
IFdyYXBwZXJXb3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4dCk7CiAgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdy
YXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIHRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
dmVudENvbnN0cnVjdG9yLmNwcAppbmRleCBlNmM4OThlMTAwODQ2NDNiNTE5MjEwOTdjZDI0ZDI3
NmVmNzIwNzFiLi4yYzY4ZWU5NGJmM2FmMTQ4ZjU1NjBhYjVmYzljMDgwYjc0N2M5ZmJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0xNTcsMjAgKzE1NywyMCBAQCBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVz
dEV2ZW50Q29uc3RydWN0b3JUZW1wbAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRh
KiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xh
dGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAo
KS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5k
KCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9
IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3Vs
dCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4g
cmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25m
aWd1cmVWOFRlc3RFdmVudENvbnN0cnVjdG9yVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmlu
Zm8pLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZp
bmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1w
bGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRU
eXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwp
OwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpI
YXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQorYm9vbCBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IHdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOwog
fQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCmluZGV4IDZmMTdmNjZkNDM4OWZl
Y2YyYjliNzhjYzliOWIwYjQ4YzNiYzc0ODcuLjQyYjY2NjkzZDc4NzE4MTZiNmU5ZDgxNzc3NWJi
MWExODQ5MWI0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaApAQCAtMzUsNyAr
MzUsNyBAQCBjbGFzcyBEaWN0aW9uYXJ5OwogY2xhc3MgVjhUZXN0RXZlbnRDb25zdHJ1Y3RvciB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBm
YWxzZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4s
IHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2
ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4
dCk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRU
ZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0
RXZlbnRDb25zdHJ1Y3RvciogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3Qp
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggODQ4NWYwOTcyODE1NzYwZTIx
MzVjN2NlZDJjYjRhMTNiZDY3OTk4Yy4uNDQ4NmVlMmQ2MTc4OTQyN2Y4MTI0ZmYwYzkxNjFmNzAw
MDYyYTAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRl
c3RFdmVudFRhcmdldFRlbXBsYXRlKHYKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2Rpc3Bh
dGNoRXZlbnQnCiAgICAgY29uc3QgaW50IGRpc3BhdGNoRXZlbnRBcmdjID0gMTsKLSAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkaXNwYXRjaEV2ZW50QXJndltkaXNwYXRjaEV2
ZW50QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRl
KCZWOEV2ZW50OjppbmZvKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IGRpc3BhdGNoRXZlbnRBcmd2W2Rpc3BhdGNoRXZlbnRBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RXZlbnQ6OmluZm8sIHdvcmxkVHlwZSkg
fTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGRpc3BhdGNoRXZlbnRTaWduYXR1cmUg
PSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgZGlzcGF0Y2hFdmVudEFyZ2MsIGRpc3BhdGNoRXZl
bnRBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZGlzcGF0Y2hF
dmVudCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RFdmVudFRhcmdldFY4SW50ZXJu
YWw6OmRpc3BhdGNoRXZlbnRNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZGlzcGF0Y2hF
dmVudFNpZ25hdHVyZSkpOwogCkBAIC0xOTEsMjAgKzE5MSwyMCBAQCBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVt
cGxhdGUodgogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50
VGFyZ2V0OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0
ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVN
YXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAg
ICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0RXZlbnRUYXJn
ZXRUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7
Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29u
ZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywg
d29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9v
bCBWOFRlc3RFdmVudFRhcmdldDo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2Jvb2wgVjhUZXN0RXZlbnRUYXJnZXQ6Okhhc0lu
c3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUs
IFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOworICAgIHJldHVy
biBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFs
dWUsIHdvcmxkVHlwZSk7CiB9CiAKIEV2ZW50VGFyZ2V0KiBWOFRlc3RFdmVudFRhcmdldDo6dG9F
dmVudFRhcmdldCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFy
Z2V0LmgKaW5kZXggYWJhMmIzYTk0YjA5MzU2OTgyNzc1ZmU5NTgwZDE4MGE4NzdmYmVhNy4uZDg4
ODMzODQxNTk5ZTMwZjUwZmQ0MTRkNDRhMmUxNjc3NzNjNzY5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFy
Z2V0LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0
RXZlbnRUYXJnZXQgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVu
dExpZmV0aW1lID0gZmFsc2U7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlID0g
R2V0RnJvbUNvbnRleHQpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAg
ICBzdGF0aWMgVGVzdEV2ZW50VGFyZ2V0KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCmluZGV4IDdjMDMzMTY3MzljNDBj
MmQ2YzdlMTRiMmM4MDE4ODNhZmY1ZDg2NWQuLjQ3Y2YxZmU4MmI2Y2VmNTcyZDc5MTVkZWUzMzY5
YTNkNWM0YzViZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCkBAIC0xMDYsMjAgKzEwNiwyMCBA
QCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4
VGVzdEV4Y2VwdGlvblRlbXBsYXRlKHY4Ogogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUs
IFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRh
dGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURh
dGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZp
bmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkK
KyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9
IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1
bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3Vy
ZVY4VGVzdEV4Y2VwdGlvblRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0
ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwp
OworICAgICAgICBDb25maWd1cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0ZShkYXRhLT5yYXdUZW1w
bGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50
ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1w
bDsKIH0KIAotYm9vbCBWOFRlc3RFeGNlcHRpb246Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitib29sIFY4VGVzdEV4Y2VwdGlv
bjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZp
bmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKaW5kZXggNjY2
M2EyNThjMjZkZjFhMjMzMjUzNGU3ODRiZGNlYWM5OGI3Mzk0Yy4uYmJiNzZkZDg2NmQ1YmI5MTQy
NmVkODQ3ZWI2OTE0NjU3MThlNTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaApAQCAtMzQsNyArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOFRlc3RFeGNlcHRpb24gewogcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0g
ICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNv
bGF0ZSopOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
Piwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlID0gR2V0RnJvbUNvbnRleHQpOwogICAg
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUo
djg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdEV4Y2VwdGlv
biogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVy
ZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
SW50ZXJmYWNlLmNwcAppbmRleCAzZTIzM2Y3OTE4ZWM0YmQ1OWUxNzIxYTAyZmZiYmQ0MjYwMWE1
ZmFlLi5lOWU5NTI1NGEzMGM2NDllMzFjNjZjNDJiYmRkNDQ1OWU0MmFjZjRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
SW50ZXJmYWNlLmNwcApAQCAtNDM4LDcgKzQzOCw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUodjg6
CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdzdXBwbGVtZW50YWxNZXRob2QyJwogICAgIGNv
bnN0IGludCBzdXBwbGVtZW50YWxNZXRob2QyQXJnYyA9IDI7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gc3VwcGxlbWVudGFsTWV0aG9kMkFyZ3Zbc3VwcGxlbWVudGFsTWV0
aG9kMkFyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvKSB9
OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN1cHBsZW1lbnRhbE1ldGhv
ZDJBcmd2W3N1cHBsZW1lbnRhbE1ldGhvZDJBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxh
dGUoJlY4VGVzdE9iajo6aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNp
Z25hdHVyZT4gc3VwcGxlbWVudGFsTWV0aG9kMlNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5l
dyhkZXNjLCBzdXBwbGVtZW50YWxNZXRob2QyQXJnYywgc3VwcGxlbWVudGFsTWV0aG9kMkFyZ3Yp
OwogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIHBy
b3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdXBwbGVtZW50YWxNZXRob2QyIiksIHY4
OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1l
bnRhbE1ldGhvZDJNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgc3VwcGxlbWVudGFsTWV0
aG9kMlNpZ25hdHVyZSkpOwpAQCAtNDU2LDIwICs0NTYsMjAgQEAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0
ZSh2ODoKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RJbnRlcmZh
Y2U6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdv
cmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAo
cmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0
YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxk
VHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4
OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1w
bGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAg
ZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJl
VjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlw
ZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBl
KS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0
SW50ZXJmYWNlOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQorYm9vbCBWOFRlc3RJbnRlcmZhY2U6Okhhc0luc3RhbmNlKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3Js
ZFR5cGUgd29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlw
ZSk7CiB9CiAKIEFjdGl2ZURPTU9iamVjdCogVjhUZXN0SW50ZXJmYWNlOjp0b0FjdGl2ZURPTU9i
amVjdCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaAppbmRl
eCA1Yjc4YjhhYzM5NmNiZThjNGU3NzgzYTJlMjI2YWNkNjJmY2IyOWMxLi42NzIzMjk3YmYwZDQ0
YmI3NmU2NTM2YmI2ZDg2MWUwOGRhZjQ3ZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCkBAIC0zNSw3
ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVzdEludGVyZmFjZSB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSB0cnVl
OwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6
Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSA9IEdldEZyb21Db250ZXh0KTsK
ICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBs
YXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RJbnRl
cmZhY2UqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCAyOTFkZmNl
NTk3YTFhMGQ2ZmMzOWM5ZWM1MmYxNDIxNzA2MDg1NTQ0Li5kMTQ3YzdiZmU0YTM2NDcxYjk4NDZk
NjViZTUyYTBjNGFhNTZlZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwCkBAIC0xMTUsMjAgKzExNSwyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZQogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXI6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29y
bGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsK
LSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJ
c29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1w
bGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsK
IAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29s
YXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1w
bCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJUZW1wbGF0
ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBl
KTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwog
ICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQorYm9vbCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpIYXNJbnN0YW5jZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
V29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3Js
ZFR5cGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5o
CmluZGV4IDRlMzY2Y2RmNTUxZjE2MTYwZjZkMWM3NjhlYjQxNDU5OWE3YzRjYWMuLjUyYjZiMDY0
MzZmOGQwYWEzZTVkNDkxYjNmYmY0ZGY1ZThjNDBiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwotICAgIHN0YXRp
YyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsK
KyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJ
c29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSA9IEdldEZyb21Db250ZXh0KTsKICAgICBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29s
YXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMTFhYzljZjViNWM3YTdmZTY5
NmI5NjNiNzcxOWQyNWEzY2FhN2I3OC4uMWVjYzQ0YjdlMTRmNTZkZmRiNjFmOTdjMTcwNzgzZDRj
ZmNhZGE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtMTQ2LDIw
ICsxNDYsMjAgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBD
b25maWd1cmVWOFRlc3ROYW1lZENvbnN0cnVjdG9yVGVtcGwKIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQ
ZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0g
ICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEt
PnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1w
bGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVy
YXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwor
ICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxl
U2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0K
LSAgICAgICAgQ29uZmlndXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKGRhdGEtPnJh
d1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0
ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3ROYW1lZENv
bnN0cnVjdG9yVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlz
b2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQo
JmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0TmFtZWRD
b25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK2Jvb2wgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFu
Y2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3Jh
cHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CisgICAgcmV0dXJuIFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwg
d29ybGRUeXBlKTsKIH0KIAogQWN0aXZlRE9NT2JqZWN0KiBWOFRlc3ROYW1lZENvbnN0cnVjdG9y
Ojp0b0FjdGl2ZURPTU9iamVjdCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1l
ZENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCmluZGV4IGExOWRiYzY2Y2VjZTRjNGU4YzUzZGZhMjRk
YWY3NjQ1ODcwOGI1NDAuLmYwNWRjZmM1ZDhjZTI3NzJlM2VhMGZlMWI1ZGZkMzRhNmZiZTA5N2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3ROYW1lZENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiBjbGFzcyBWOFRlc3ROYW1lZENvbnN0cnVjdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IHRydWU7Ci0gICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0
YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUq
LCBXcmFwcGVyV29ybGRUeXBlID0gR2V0RnJvbUNvbnRleHQpOwogICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBX
cmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdE5hbWVkQ29uc3RydWN0b3IqIHRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcAppbmRl
eCAyMjZiMzQ0MzlmZTY2ZmU1ODMwYWUyNzM1ZmYyM2Y5NDFlNWVjNGU3Li5mMzdmNjY3YTIyMGJj
YTBmZGM1NmQxZjBhYTYzYWU4NTg5ZTU4ZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCkBAIC0xMTMsMjAgKzEx
MywyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZp
Z3VyZVY4VGVzdE5vZGVUZW1wbGF0ZSh2ODo6UGVycwogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IFY4VGVzdE5vZGU6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBk
YXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVE
YXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5m
aW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkp
CisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRh
dGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAh
PSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVz
dWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1
cmVWOFRlc3ROb2RlVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3
b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7Cisg
ICAgICAgIENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5m
bywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1h
cCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAot
Ym9vbCBWOFRlc3ROb2RlOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQorYm9vbCBWOFRlc3ROb2RlOjpIYXNJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29y
bGRUeXBlIHdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5
cGUpOwogfQogCiBFdmVudFRhcmdldCogVjhUZXN0Tm9kZTo6dG9FdmVudFRhcmdldCh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oCmluZGV4IDk3ODYwMzc2MzA1OThmMDZiN2Y3
ZjY3NGVkMzAwMzI4YzVhY2FjMjYuLmY4YzlmOTYzNjNhMGYwMTg4YmVmNTgwYjk2YWUyZjM0MTYw
ZWE3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5vZGUuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBWOFRlc3ROb2RlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBl
bmRlbnRMaWZldGltZSA9IHRydWU7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6Okhh
bmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBib29sIEhhc0luc3Rh
bmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBl
ID0gR2V0RnJvbUNvbnRleHQpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsK
ICAgICBzdGF0aWMgVGVzdE5vZGUqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2Jq
ZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggMGE0Y2MzMzNhMjkyMjEzNGMzZDg1MmZkMzJkZGNl
NjIwYmYyY2QxNC4uODBhZTU5OTQ4ZjczZGQzMzEyNGNiYmQzMDVjNjA0MjVlOTQ4MjNlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9i
ai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE9iai5jcHAKQEAgLTMwNjIsMzEgKzMwNjIsMzEgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kK
IAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3ZvaWRNZXRob2RXaXRoQXJncycKICAgICBjb25z
dCBpbnQgdm9pZE1ldGhvZFdpdGhBcmdzQXJnYyA9IDM7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gdm9pZE1ldGhvZFdpdGhBcmdzQXJndlt2b2lkTWV0aG9kV2l0aEFyZ3NB
cmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiB2b2lkTWV0aG9kV2l0aEFyZ3NBcmd2W3ZvaWRNZXRob2RXaXRoQXJnc0Fy
Z2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5y
YXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRs
ZTx2ODo6U2lnbmF0dXJlPiB2b2lkTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUgPSB2ODo6U2lnbmF0
dXJlOjpOZXcoZGVzYywgdm9pZE1ldGhvZFdpdGhBcmdzQXJnYywgdm9pZE1ldGhvZFdpdGhBcmdz
QXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInZvaWRNZXRob2RX
aXRoQXJncyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjp2
b2lkTWV0aG9kV2l0aEFyZ3NNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdm9pZE1ldGhv
ZFdpdGhBcmdzU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdsb25nTWV0
aG9kV2l0aEFyZ3MnCiAgICAgY29uc3QgaW50IGxvbmdNZXRob2RXaXRoQXJnc0FyZ2MgPSAzOwot
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGxvbmdNZXRob2RXaXRoQXJnc0Fy
Z3ZbbG9uZ01ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8pIH07Cisg
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbG9uZ01ldGhvZFdpdGhBcmdzQXJn
dltsb25nTWV0aG9kV2l0aEFyZ3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbywgd29ybGRU
eXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbG9uZ01ldGhvZFdpdGhBcmdz
U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGxvbmdNZXRob2RXaXRoQXJnc0Fy
Z2MsIGxvbmdNZXRob2RXaXRoQXJnc0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJsb25nTWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5l
dyhUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ01ldGhvZFdpdGhBcmdzTWV0aG9kQ2FsbGJhY2ssIHY4
VW5kZWZpbmVkKCksIGxvbmdNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3Vz
dG9tIFNpZ25hdHVyZSAnb2JqTWV0aG9kV2l0aEFyZ3MnCiAgICAgY29uc3QgaW50IG9iak1ldGhv
ZFdpdGhBcmdzQXJnYyA9IDM7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
b2JqTWV0aG9kV2l0aEFyZ3NBcmd2W29iak1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRl
c3RPYmo6OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gb2Jq
TWV0aG9kV2l0aEFyZ3NBcmd2W29iak1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RP
Ymo6OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG9i
ak1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG9iak1l
dGhvZFdpdGhBcmdzQXJnYywgb2JqTWV0aG9kV2l0aEFyZ3NBcmd2KTsKICAgICBwcm90by0+U2V0
KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgib2JqTWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9u
VGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6b2JqTWV0aG9kV2l0aEFyZ3NNZXRob2RD
YWxsYmFjaywgdjhVbmRlZmluZWQoKSwgb2JqTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUpKTsKIAog
ICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ21ldGhvZFdpdGhTZXF1ZW5jZUFyZycKICAgICBjb25z
dCBpbnQgbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndlttZXRob2RXaXRoU2Vx
dWVuY2VBcmdBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVt
cGxhdGUoJlY4c2VxdWVuY2U8U2NyaXB0UHJvZmlsZT46OmluZm8pIH07CisgICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndlttZXRob2RX
aXRoU2VxdWVuY2VBcmdBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
cmF3VGVtcGxhdGUoJlY4c2VxdWVuY2U8U2NyaXB0UHJvZmlsZT46OmluZm8sIHdvcmxkVHlwZSkg
fTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1Np
Z25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdB
cmdjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJp
bmc6Ok5ld1N5bWJvbCgibWV0aG9kV2l0aFNlcXVlbmNlQXJnIiksIHY4OjpGdW5jdGlvblRlbXBs
YXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhTZXF1ZW5jZUFyZ01ldGhvZENh
bGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdTaWduYXR1cmUpKTsK
IAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRU
aHJvd3MnCiAgICAgY29uc3QgaW50IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NB
cmdjID0gMjsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RUaGF0
UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJndlttZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5k
VGhyb3dzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8p
IH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kVGhhdFJlcXVp
cmVzQWxsQXJnc0FuZFRocm93c0FyZ3ZbbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93
c0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3Js
ZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RUaGF0UmVxdWly
ZXNBbGxBcmdzQW5kVGhyb3dzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG1l
dGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjLCBtZXRob2RUaGF0UmVxdWlyZXNB
bGxBcmdzQW5kVGhyb3dzQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1i
b2woIm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0Fu
ZFRocm93c01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RUaGF0UmVxdWlyZXNB
bGxBcmdzQW5kVGhyb3dzU2lnbmF0dXJlKSk7CiAgICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbCgic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKSwgdjg6OkZ1
bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljTWV0aG9kV2l0aENh
bGxiYWNrQW5kT3B0aW9uYWxBcmdNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6Okxv
Y2FsPHY4OjpTaWduYXR1cmU+KCkpKTsKQEAgLTMxMDQsNDMgKzMxMDQsNDMgQEAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1w
bGF0ZSh2ODo6UGVyc2kKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N0cmluZ0FycmF5RnVu
Y3Rpb24nCiAgICAgY29uc3QgaW50IHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjID0gMTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndltz
dHJpbmdBcnJheUZ1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjppbmZvKSB9OworICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2W3N0cmluZ0FycmF5
RnVuY3Rpb25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVt
cGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxl
PHY4OjpTaWduYXR1cmU+IHN0cmluZ0FycmF5RnVuY3Rpb25TaWduYXR1cmUgPSB2ODo6U2lnbmF0
dXJlOjpOZXcoZGVzYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2MsIHN0cmluZ0FycmF5RnVuY3Rp
b25Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3RyaW5nQXJy
YXlGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFs
OjpzdHJpbmdBcnJheUZ1bmN0aW9uTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHN0cmlu
Z0FycmF5RnVuY3Rpb25TaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2Rv
bVN0cmluZ0xpc3RGdW5jdGlvbicKICAgICBjb25zdCBpbnQgZG9tU3RyaW5nTGlzdEZ1bmN0aW9u
QXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZG9tU3RyaW5n
TGlzdEZ1bmN0aW9uQXJndltkb21TdHJpbmdMaXN0RnVuY3Rpb25BcmdjXSA9IHsgVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nTGlzdDo6aW5m
bykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkb21TdHJpbmdMaXN0
RnVuY3Rpb25Bcmd2W2RvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdMaXN0OjppbmZvLCB3
b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBkb21TdHJpbmdMaXN0
RnVuY3Rpb25TaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgZG9tU3RyaW5nTGlz
dEZ1bmN0aW9uQXJnYywgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJndik7CiAgICAgcHJvdG8tPlNl
dCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImRvbVN0cmluZ0xpc3RGdW5jdGlvbiIpLCB2ODo6RnVu
Y3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpkb21TdHJpbmdMaXN0RnVuY3Rp
b25NZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uU2ln
bmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdjb252ZXJ0MScKICAgICBjb25z
dCBpbnQgY29udmVydDFBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBjb252ZXJ0MUFyZ3ZbY29udmVydDFBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4YTo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0MUFyZ3ZbY29udmVydDFBcmdjXSA9IHsgVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4YTo6aW5mbywgd29ybGRU
eXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDFTaWduYXR1cmUg
PSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgY29udmVydDFBcmdjLCBjb252ZXJ0MUFyZ3YpOwog
ICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0MSIpLCB2ODo6RnVu
Y3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0MU1ldGhvZENhbGxi
YWNrLCB2OFVuZGVmaW5lZCgpLCBjb252ZXJ0MVNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9t
IFNpZ25hdHVyZSAnY29udmVydDInCiAgICAgY29uc3QgaW50IGNvbnZlcnQyQXJnYyA9IDE7Ci0g
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDJBcmd2W2NvbnZlcnQy
QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZW
OGI6OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVy
dDJBcmd2W2NvbnZlcnQyQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSkt
PnJhd1RlbXBsYXRlKCZWOGI6OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4
OjpTaWduYXR1cmU+IGNvbnZlcnQyU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2Ms
IGNvbnZlcnQyQXJnYywgY29udmVydDJBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgiY29udmVydDIiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2Jq
VjhJbnRlcm5hbDo6Y29udmVydDJNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29udmVy
dDJTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2NvbnZlcnQ0JwogICAg
IGNvbnN0IGludCBjb252ZXJ0NEFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGNvbnZlcnQ0QXJndltjb252ZXJ0NEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhkOjppbmZvKSB9OworICAgIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQ0QXJndltjb252ZXJ0NEFyZ2NdID0geyBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhkOjppbmZvLCB3
b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBjb252ZXJ0NFNpZ25h
dHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBjb252ZXJ0NEFyZ2MsIGNvbnZlcnQ0QXJn
dik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNvbnZlcnQ0IiksIHY4
OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQ0TWV0aG9k
Q2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGNvbnZlcnQ0U2lnbmF0dXJlKSk7CiAKICAgICAvLyBD
dXN0b20gU2lnbmF0dXJlICdjb252ZXJ0NScKICAgICBjb25zdCBpbnQgY29udmVydDVBcmdjID0g
MTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0NUFyZ3ZbY29u
dmVydDVBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxh
dGUoJlY4ZTo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBj
b252ZXJ0NUFyZ3ZbY29udmVydDVBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+cmF3VGVtcGxhdGUoJlY4ZTo6aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5k
bGU8djg6OlNpZ25hdHVyZT4gY29udmVydDVTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXco
ZGVzYywgY29udmVydDVBcmdjLCBjb252ZXJ0NUFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0
cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0NSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRl
c3RPYmpWOEludGVybmFsOjpjb252ZXJ0NU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBj
b252ZXJ0NVNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAndmFyaWFkaWNO
b2RlTWV0aG9kJwogICAgIGNvbnN0IGludCB2YXJpYWRpY05vZGVNZXRob2RBcmdjID0gMjsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB2YXJpYWRpY05vZGVNZXRob2RBcmd2
W3ZhcmlhZGljTm9kZU1ldGhvZEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvblRlbXBsYXRlPiB2YXJpYWRpY05vZGVNZXRob2RBcmd2W3ZhcmlhZGljTm9kZU1l
dGhvZEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0
ZSgmVjhOb2RlOjppbmZvLCB3b3JsZFR5cGUpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6Okhh
bmRsZTx2ODo6U2lnbmF0dXJlPiB2YXJpYWRpY05vZGVNZXRob2RTaWduYXR1cmUgPSB2ODo6U2ln
bmF0dXJlOjpOZXcoZGVzYywgdmFyaWFkaWNOb2RlTWV0aG9kQXJnYywgdmFyaWFkaWNOb2RlTWV0
aG9kQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInZhcmlhZGlj
Tm9kZU1ldGhvZCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFs
Ojp2YXJpYWRpY05vZGVNZXRob2RNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdmFyaWFk
aWNOb2RlTWV0aG9kU2lnbmF0dXJlKSk7CiAgICAgVjhET01Db25maWd1cmF0aW9uOjpiYXRjaENv
bmZpZ3VyZUNvbnN0YW50cyhkZXNjLCBwcm90bywgVjhUZXN0T2JqQ29uc3RzLCBXVEZfQVJSQVlf
TEVOR1RIKFY4VGVzdE9iakNvbnN0cyksIGlzb2xhdGUpOwpAQCAtMzE1MywyMCArMzE1MywyMCBA
QCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4
VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaQogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4VGVzdE9iajo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBw
ZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRl
bXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmlu
Zm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBW
OFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVt
cGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEt
PnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZh
bHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVz
dE9ialRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBl
KTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBD
b25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRU
eXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5
cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRl
c3RPYmo6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUpCitib29sIFY4VGVzdE9iajo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3Js
ZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhh
c0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKIH0KIAog
dm9pZCBWOFRlc3RPYmo6Omluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGluc3RhbmNlLCBUZXN0T2JqKiBpbXBsLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
YmouaAppbmRleCBhZmRmNzY3ZmJlYmNmZTM1N2ZlM2U2ZDFmOTNjNDgwNzFiMmQ5MDVkLi5lZDUy
OTZhZGVjMzEzY2ZmNWNmNDgxMTA4MTM4MzcwNDUxNTY3MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCkBAIC0zNCw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVzdE9iaiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAgICBz
dGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRl
Kik7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2
ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4dCk7CiAgICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0T2JqKiB0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggMGQ4MDU5OWJkOWQzOTRmZGEwMDgz
ZjgxZjkxZWMzZGNmYjRkMzI1NC4uNTUxMzU5MTFlNjc0M2U3MDA3ZDU2NWRkNDJiY2ZmNWVlNzEx
M2RmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApA
QCAtMTY3LDIwICsxNjcsMjAgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3IKIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpH
ZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5
cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9y
IHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3Vs
dCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRl
bXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUp
LmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRU
eXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFu
ZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1RlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBl
KTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBD
b25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGVtcGxhdGUoZGF0YS0+cmF3VGVt
cGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+
dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVt
cGw7CiB9CiAKLWJvb2wgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6SGFzSW5zdGFuY2Uo
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2Jvb2wg
VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3Js
ZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhh
c0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKIH0KIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaAppbmRleCBhZTUyMTAx
MmQ4OWNiN2Y5ZWMwZDViMDI0YzlkNWFlZjEwZGU3NDQwLi41NTc2YTFlNmMxYThiNTlkODkxMzcy
ZmVkYjEwZDYxMDgwOTQ5NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIGJv
b2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBw
ZXJXb3JsZFR5cGUgPSBHZXRGcm9tQ29udGV4dCk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJX
b3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9OYXRp
dmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCA3MGRm
Y2E3YjI5YmJkNjNiYzU1M2IyMzg2MzViZGYxMTE3MmE0NjU3Li44ZTVjN2M0NWZkOTVkY2Q1NTA3
Yzk1NWFlYmM3YmI2N2NhMDY3N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMzMyLDIwICszMzIsMjAgQEAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWUKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkdldFRlbXBsYXRlKHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBl
cklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAg
ICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+
dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBs
YXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJh
dG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Cisg
ICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAg
ICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVT
Y29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQot
ICAgICAgICBDb25maWd1cmVWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VUZW1w
bGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAg
ZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJl
VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVGVtcGxhdGUoZGF0YS0+cmF3VGVt
cGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+
dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVt
cGw7CiB9CiAKLWJvb2wgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpIYXNJ
bnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRl
KQorYm9vbCBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Okhhc0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBw
ZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOworICAgIHJldHVybiBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdv
cmxkVHlwZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5oCmluZGV4IDBhNWZhM2YyMjQzNWI2OWE0MDdiNzNjOTk3MWU3YjUz
NmUxODEwMjYuLjBkNGU1OWVmYmZkM2M1NGFlZjgzODM1ODg3OTA0ODc2Zjc5ODI2ZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgK
QEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9v
bCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIEhhc0luc3Rh
bmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgYm9v
bCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBl
cldvcmxkVHlwZSA9IEdldEZyb21Db250ZXh0KTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldv
cmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uq
IHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVm
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlw
ZWRlZnMuY3BwCmluZGV4IGU2NzdlYmM5NTgxYzBiM2Q1YzMyZTk0ODBhY2Y1ODczZmY5NTYwNjMu
LjFhMmEyODY5NmU4ODdkN2QxMDZiZjc2MjY1NGQ3YTUyOTlmYjIzMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVk
ZWZzLmNwcApAQCAtNTUxLDI1ICs1NTEsMjUgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RUeXBlZGVmc1RlbXBsYXRlKHY4OjoKIAog
ICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ21ldGhvZFdpdGhTZXF1ZW5jZUFyZycKICAgICBjb25z
dCBpbnQgbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndlttZXRob2RXaXRoU2Vx
dWVuY2VBcmdBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVt
cGxhdGUoJlY4c2VxdWVuY2U8U2VyaWFsaXplZFNjcmlwdFZhbHVlPjo6aW5mbykgfTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2
W21ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhzZXF1ZW5jZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+Ojpp
bmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RX
aXRoU2VxdWVuY2VBcmdTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgbWV0aG9k
V2l0aFNlcXVlbmNlQXJnQXJnYywgbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndik7CiAgICAgcHJv
dG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpLCB2
ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6Om1ldGhvZFdp
dGhTZXF1ZW5jZUFyZ01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RXaXRoU2Vx
dWVuY2VBcmdTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ251bGxhYmxl
QXJyYXlBcmcnCiAgICAgY29uc3QgaW50IG51bGxhYmxlQXJyYXlBcmdBcmdjID0gMTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBudWxsYWJsZUFycmF5QXJnQXJndltudWxs
YWJsZUFycmF5QXJnQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJh
d1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjppbmZvKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IG51bGxhYmxlQXJyYXlBcmdBcmd2W251bGxhYmxlQXJyYXlBcmdBcmdj
XSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9N
U3RyaW5nW106OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1
cmU+IG51bGxhYmxlQXJyYXlBcmdTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywg
bnVsbGFibGVBcnJheUFyZ0FyZ2MsIG51bGxhYmxlQXJyYXlBcmdBcmd2KTsKICAgICBwcm90by0+
U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibnVsbGFibGVBcnJheUFyZyIpLCB2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6Om51bGxhYmxlQXJyYXlBcmdN
ZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgbnVsbGFibGVBcnJheUFyZ1NpZ25hdHVyZSkp
OwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnc3RyaW5nQXJyYXlGdW5jdGlvbicKICAgICBj
b25zdCBpbnQgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2W3N0cmluZ0FycmF5RnVu
Y3Rpb25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxh
dGUoJlY4RE9NU3RyaW5nW106OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2Nd
ID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01T
dHJpbmdbXTo6aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVy
ZT4gc3RyaW5nQXJyYXlGdW5jdGlvblNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNj
LCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJnYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3YpOwogICAg
IHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdHJpbmdBcnJheUZ1bmN0aW9uIiks
IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5n
QXJyYXlGdW5jdGlvbk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdHJpbmdBcnJheUZ1
bmN0aW9uU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdzdHJpbmdBcnJh
eUZ1bmN0aW9uMicKICAgICBjb25zdCBpbnQgc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmdjID0gMTsK
LSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9u
MkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8pIH07CisgICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmd2W3N0
cmluZ0FycmF5RnVuY3Rpb24yQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAg
djg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBzdHJpbmdBcnJheUZ1bmN0aW9uMlNpZ25hdHVyZSA9
IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ2MsIHN0cmlu
Z0FycmF5RnVuY3Rpb24yQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1i
b2woInN0cmluZ0FycmF5RnVuY3Rpb24yIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVz
dFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXJyYXlGdW5jdGlvbjJNZXRob2RDYWxsYmFjaywg
djhVbmRlZmluZWQoKSwgc3RyaW5nQXJyYXlGdW5jdGlvbjJTaWduYXR1cmUpKTsKIApAQCAtNTgx
LDIwICs1ODEsMjAgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBDb25maWd1cmVWOFRlc3RUeXBlZGVmc1RlbXBsYXRlKHY4OjoKIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RUeXBlZGVmczo6R2V0VGVtcGxhdGUodjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNv
bGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4
UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1w
bGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVN
YXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBp
ZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAg
IHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3Bl
OwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAg
ICAgIENvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmlu
Zm8pLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZp
bmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUoZGF0
YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Cisg
ICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICBy
ZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0VHlwZWRlZnM6Okhhc0luc3RhbmNlKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitib29sIFY4VGVz
dFR5cGVkZWZzOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKLSAgICByZXR1
cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZh
bHVlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5z
dGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmgKaW5k
ZXggMTRkYjFlNTVkOTgyODdhMGU3ZGNlMDc0MmMzYTE4YzU1YWI3Mzk3Yi4uYzUyZTIwMzNjZjBk
NTcxZDRlMWJmOTRhZjA1NjhhZDdkOGMyY2RmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmgKQEAgLTM0LDcg
KzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0VHlwZWRlZnMgewogcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7
Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6
SXNvbGF0ZSopOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlID0gR2V0RnJvbUNvbnRleHQpOwog
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxh
dGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdFR5cGVk
ZWZzKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHAKaW5kZXgg
NmJjODAzYTQxN2RlYTA4ZmNkZjg4MzVkNWJiZTI1OWZiMzMzZTE4MS4uYzk3YjU5M2I4NDYzM2Rk
M2YzNDExMGJmMTJiNjY3MDRmYTg1YTJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxh
dGUodjg6Oklzb2xhdGUqCiB7CiAgICAgQVNTRVJUKGlzb2xhdGUpOwogICAgIFY4UGVySXNvbGF0
ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVy
SXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1w
bGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+cmF3VGVtcGxh
dGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0
b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsK
KyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkp
CiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogICAgIC8vIFRoZSBsaWZldGltZSBpcyBv
ZiBuZXdUZW1wbGF0ZSBpcyBkZWxlZ2F0ZWQgdG8gdGhlIFRlbXBsYXRlTWFwIHRodXMgdGhpcyB3
b24ndCBiZSBsZWFrZWQuCiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IG5ld1RlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXco
aXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldygpKTsKLSAgICBkYXRhLT5yYXdUZW1w
bGF0ZU1hcCgpLmFkZCgmaW5mbywgY29uZmlndXJlVGVtcGxhdGUobmV3VGVtcGxhdGUpKTsKKyAg
ICBkYXRhLT5yYXdUZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgY29uZmlndXJlVGVt
cGxhdGUobmV3VGVtcGxhdGUpKTsKICAgICByZXR1cm4gbmV3VGVtcGxhdGU7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAppbmRleCBhNGRkYzgz
MDg2ODFmN2ZhNjM2MTJiMmZmODA1Y2NjNTRiMTE5Y2YzLi5kNWJhMjEwMGE0MjNiMTEyMmI5ZDdi
NTljNTY1NzU2YWVhODE1YmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEdDQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhH
Q0NvbnRyb2xsZXIuY3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQodmFsdWUtPklzT2JqZWN0KCkpOwogICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
PiB3cmFwcGVyID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpOwogICAg
ICAgICBBU1NFUlQoVjhET01XcmFwcGVyOjptYXliZURPTVdyYXBwZXIodmFsdWUpKTsKLSAgICAg
ICAgQVNTRVJUKFY4Tm9kZTo6SGFzSW5zdGFuY2Uod3JhcHBlciwgbV9pc29sYXRlKSk7CisgICAg
ICAgIEFTU0VSVChWOE5vZGU6Okhhc0luc3RhbmNlKHdyYXBwZXIsIG1faXNvbGF0ZSwgTWFpbldv
cmxkKSB8fCBWOE5vZGU6Okhhc0luc3RhbmNlKHdyYXBwZXIsIG1faXNvbGF0ZSwgSXNvbGF0ZWRX
b3JsZCkpOwogICAgICAgICBOb2RlKiBub2RlID0gVjhOb2RlOjp0b05hdGl2ZSh3cmFwcGVyKTsK
ICAgICAgICAgLy8gQSBtaW5vciBET00gR0MgY2FuIGhhbmRsZSBvbmx5IG5vZGUgd3JhcHBlcnMg
aW4gdGhlIG1haW4gd29ybGQuCiAgICAgICAgIC8vIE5vdGUgdGhhdCBub2RlLT53cmFwcGVyKCku
SXNFbXB0eSgpIHJldHVybnMgdHJ1ZSBmb3Igbm9kZXMgdGhhdApAQCAtMzc2LDcgKzM3Niw3IEBA
IHB1YmxpYzoKIAogICAgICAgICBpZiAoY2xhc3NJZCA9PSB2OERPTU5vZGVDbGFzc0lkKSB7CiAg
ICAgICAgICAgICBVTlVTRURfUEFSQU0obV9pc29sYXRlKTsKLSAgICAgICAgICAgIEFTU0VSVChW
OE5vZGU6Okhhc0luc3RhbmNlKHdyYXBwZXIsIG1faXNvbGF0ZSkpOworICAgICAgICAgICAgQVNT
RVJUKFY4Tm9kZTo6SGFzSW5zdGFuY2Uod3JhcHBlciwgbV9pc29sYXRlLCBNYWluV29ybGQpIHx8
IFY4Tm9kZTo6SGFzSW5zdGFuY2Uod3JhcHBlciwgbV9pc29sYXRlLCBJc29sYXRlZFdvcmxkKSk7
CiAgICAgICAgICAgICBBU1NFUlQoIXdyYXBwZXIuSXNJbmRlcGVuZGVudChtX2lzb2xhdGUpKTsK
IAogICAgICAgICAgICAgTm9kZSogbm9kZSA9IHN0YXRpY19jYXN0PE5vZGUqPihvYmplY3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcAppbmRl
eCAyZmZjMTk0MmJkNDZhZjM0OWI2ZjIyNjY4OTU5Y2IzOWZiNDcxMGUzLi4yOTc2YTc2YTNjNjE4
YjY4MTEyMjk1NGRjZDgwNzk2MTk0NzJhYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcApAQCAtMTA0LDggKzEwNCwxMCBAQCB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjp0b1N0cmluZ1RlbXBs
YXRlKCkKIHZvaWQgVjhQZXJJc29sYXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkJpbmRpbmcp
OwotICAgIGluZm8uYWRkTWVtYmVyKG1fcmF3VGVtcGxhdGVzLCAicmF3VGVtcGxhdGVzIik7Ci0g
ICAgaW5mby5hZGRNZW1iZXIobV90ZW1wbGF0ZXMsICJ0ZW1wbGF0ZXMiKTsKKyAgICBpbmZvLmFk
ZE1lbWJlcihtX3Jhd1RlbXBsYXRlc0Zvck1haW5Xb3JsZCwgInJhd1RlbXBsYXRlc0Zvck1haW5X
b3JsZCIpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcmF3VGVtcGxhdGVzRm9yTm9uTWFpbldvcmxk
LCAicmF3VGVtcGxhdGVzRm9yTm9uTWFpbldvcmxkIik7CisgICAgaW5mby5hZGRNZW1iZXIobV90
ZW1wbGF0ZXNGb3JNYWluV29ybGQsICJ0ZW1wbGF0ZXNGb3JNYWluV29ybGQiKTsKKyAgICBpbmZv
LmFkZE1lbWJlcihtX3RlbXBsYXRlc0Zvck5vbk1haW5Xb3JsZCwgInRlbXBsYXRlc0Zvck5vbk1h
aW5Xb3JsZCIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fc3RyaW5nQ2FjaGUsICJzdHJpbmdDYWNo
ZSIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1faW50ZWdlckNhY2hlLCAiaW50ZWdlckNhY2hlIik7
CiAgICAgaW5mby5hZGRNZW1iZXIobV9kb21EYXRhTGlzdCwgImRvbURhdGFMaXN0Iik7CkBAIC0x
MjIsMzIgKzEyNCw0MyBAQCB2b2lkIFY4UGVySXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbgogICAgIGluZm8uaWdub3Jl
TWVtYmVyKG1fYXV4aWxpYXJ5Q29udGV4dCk7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjpwcml2YXRlVGVtcGxhdGUoV3JhcHBlcldv
cmxkVHlwZSwgdm9pZCogcHJpdmF0ZVBvaW50ZXIsIHY4OjpJbnZvY2F0aW9uQ2FsbGJhY2sgY2Fs
bGJhY2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkYXRhLCB2ODo6SGFuZGxlPHY4OjpTaWduYXR1
cmU+IHNpZ25hdHVyZSwgaW50IGxlbmd0aCkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjpwcml2YXRlVGVtcGxhdGUoV3JhcHBlcldvcmxkVHlw
ZSBjdXJyZW50V29ybGRUeXBlLCB2b2lkKiBwcml2YXRlUG9pbnRlciwgdjg6Okludm9jYXRpb25D
YWxsYmFjayBjYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGEsIHY4OjpIYW5kbGU8
djg6OlNpZ25hdHVyZT4gc2lnbmF0dXJlLCBpbnQgbGVuZ3RoKQogewogICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGU7Ci0gICAgVjhQZXJJc29s
YXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IG1fdGVtcGxhdGVzLmZpbmQo
cHJpdmF0ZVBvaW50ZXIpOwotICAgIGlmIChyZXN1bHQgIT0gbV90ZW1wbGF0ZXMuZW5kKCkpCisg
ICAgVGVtcGxhdGVNYXAmIHRlbXBsYXRlcyA9IHRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUp
OworICAgIFRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSB0ZW1wbGF0ZXMuZmluZChwcml2
YXRlUG9pbnRlcik7CisgICAgaWYgKHJlc3VsdCAhPSB0ZW1wbGF0ZXMuZW5kKCkpCiAgICAgICAg
IHJldHVybiByZXN1bHQtPnZhbHVlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBuZXdQcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT46Ok5ldyhtX2lzb2xhdGUsIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoY2FsbGJh
Y2ssIGRhdGEsIHNpZ25hdHVyZSwgbGVuZ3RoKSk7Ci0gICAgbV90ZW1wbGF0ZXMuYWRkKHByaXZh
dGVQb2ludGVyLCBuZXdQcml2YXRlVGVtcGxhdGUpOworICAgIHRlbXBsYXRlcy5hZGQocHJpdmF0
ZVBvaW50ZXIsIG5ld1ByaXZhdGVUZW1wbGF0ZSk7CiAgICAgcmV0dXJuIG5ld1ByaXZhdGVUZW1w
bGF0ZTsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4UGVySXNv
bGF0ZURhdGE6OnJhd1RlbXBsYXRlKFdyYXBwZXJUeXBlSW5mbyogaW5mbykKK3Y4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjpyYXdUZW1wbGF0ZShX
cmFwcGVyVHlwZUluZm8qIGluZm8sIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkK
IHsKLSAgICBUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gbV9yYXdUZW1wbGF0ZXMuZmlu
ZChpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IG1fcmF3VGVtcGxhdGVzLmVuZCgpKQorICAgIFRl
bXBsYXRlTWFwJiB0ZW1wbGF0ZXMgPSByYXdUZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKTsK
KyAgICBUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gdGVtcGxhdGVzLmZpbmQoaW5mbyk7
CisgICAgaWYgKHJlc3VsdCAhPSB0ZW1wbGF0ZXMuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1
bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRl
KG1faXNvbGF0ZSk7Ci0gICAgbV9yYXdUZW1wbGF0ZXMuYWRkKGluZm8sIHRlbXBsKTsKKyAgICB0
ZW1wbGF0ZXMuYWRkKGluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wg
VjhQZXJJc29sYXRlRGF0YTo6aGFzSW5zdGFuY2UoV3JhcHBlclR5cGVJbmZvKiBpbmZvLCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCitib29sIFY4UGVySXNvbGF0ZURhdGE6Omhhc0luc3Rh
bmNlKFdyYXBwZXJUeXBlSW5mbyogaW5mbywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBX
cmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIHJhd1RlbXBs
YXRlKGluZm8pLT5IYXNJbnN0YW5jZSh2YWx1ZSk7CisgICAgLy8gRklYTUU6IEluc3RlYWQgb2Yg
Y2hlY2tpbmcgYWxsIHdvcmxkcywgd2Ugc2hvdWxkIHBhc3MgdGhlIGNvcnJlY3QKKyAgICAvLyBj
dXJyZW50V29ybGRUeXBlOyBob3dldmVyLCBqdXN0IGNoZWNraW5nIGFnYWluc3QgdGhlIHRlbXBs
YXRlcyBhY2NvcmRpbmcKKyAgICAvLyB0byBjdXJyZW50V29ybGRUeXBlIHVuY292ZXJzIGJ1Z3Mg
d2hpY2ggbmVlZCB0byBiZSBmaXhlZCBmaXJzdC4KKyAgICBUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gcmF3VGVtcGxhdGVNYXAoTWFpbldvcmxkKS5maW5kKGluZm8pOworICAgIGlmIChy
ZXN1bHQgIT0gcmF3VGVtcGxhdGVNYXAoTWFpbldvcmxkKS5lbmQoKSAmJiByZXN1bHQtPnZhbHVl
LT5IYXNJbnN0YW5jZSh2YWx1ZSkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJlc3VsdCA9
IHJhd1RlbXBsYXRlTWFwKElzb2xhdGVkV29ybGQpLmZpbmQoaW5mbyk7CisgICAgaWYgKHJlc3Vs
dCAhPSByYXdUZW1wbGF0ZU1hcChJc29sYXRlZFdvcmxkKS5lbmQoKSAmJiByZXN1bHQtPnZhbHVl
LT5IYXNJbnN0YW5jZSh2YWx1ZSkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBm
YWxzZTsKIH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmgKaW5kZXggYzNjMDJiMDEzZTlhNGY4NTkzOWM2Njc1
Yjk1YTUxODc2NGNmMTRhYy4uOGRkYjA4YzgwZWYzMDJjMDRlYzk3MDQ5YWM2N2E2NTFkODA1Nzhh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaApA
QCAtNjcsOCArNjcsMTkgQEAgcHVibGljOgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPHZvaWQqLCB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gPiBUZW1wbGF0ZU1hcDsKIAotICAg
IFRlbXBsYXRlTWFwJiByYXdUZW1wbGF0ZU1hcCgpIHsgcmV0dXJuIG1fcmF3VGVtcGxhdGVzOyB9
Ci0gICAgVGVtcGxhdGVNYXAmIHRlbXBsYXRlTWFwKCkgeyByZXR1cm4gbV90ZW1wbGF0ZXM7IH0K
KyAgICBUZW1wbGF0ZU1hcCYgcmF3VGVtcGxhdGVNYXAoV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5
cGUpCisgICAgeworICAgICAgICBpZiAod29ybGRUeXBlID09IE1haW5Xb3JsZCkKKyAgICAgICAg
ICAgIHJldHVybiBtX3Jhd1RlbXBsYXRlc0Zvck1haW5Xb3JsZDsKKyAgICAgICAgcmV0dXJuIG1f
cmF3VGVtcGxhdGVzRm9yTm9uTWFpbldvcmxkOworICAgIH0KKworICAgIFRlbXBsYXRlTWFwJiB0
ZW1wbGF0ZU1hcChXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKKyAgICB7CisgICAgICAgIGlm
ICh3b3JsZFR5cGUgPT0gTWFpbldvcmxkKQorICAgICAgICAgICAgcmV0dXJuIG1fdGVtcGxhdGVz
Rm9yTWFpbldvcmxkOworICAgICAgICByZXR1cm4gbV90ZW1wbGF0ZXNGb3JOb25NYWluV29ybGQ7
CisgICAgfQogCiAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdG9TdHJpbmdU
ZW1wbGF0ZSgpOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiYgbGF6
eUV2ZW50TGlzdGVuZXJUb1N0cmluZ1RlbXBsYXRlKCkKQEAgLTEzMCw5ICsxNDEsOSBAQCBwdWJs
aWM6CiAKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRl
bXBsYXRlKFdyYXBwZXJXb3JsZFR5cGUsIHZvaWQqIHByaXZhdGVQb2ludGVyLCB2ODo6SW52b2Nh
dGlvbkNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGF0YSwgdjg6OkhhbmRsZTx2ODo6
U2lnbmF0dXJlPiwgaW50IGxlbmd0aCA9IDApOwogCi0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IHJhd1RlbXBsYXRlKFdyYXBwZXJUeXBlSW5mbyopOworICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiByYXdUZW1wbGF0ZShXcmFwcGVyVHlwZUlu
Zm8qLCBXcmFwcGVyV29ybGRUeXBlKTsKIAotICAgIGJvb2wgaGFzSW5zdGFuY2UoV3JhcHBlclR5
cGVJbmZvKiwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKKyAgICBib29sIGhhc0luc3RhbmNlKFdy
YXBwZXJUeXBlSW5mbyosIHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgV3JhcHBlcldvcmxkVHlwZSk7
CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgVjhQZXJJc29sYXRlRGF0YSh2ODo6SXNvbGF0ZSop
OwpAQCAtMTQwLDggKzE1MSwxMCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gY29uc3RydWN0b3JPZlRvU3RyaW5nKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKIAog
ICAgIHY4OjpJc29sYXRlKiBtX2lzb2xhdGU7Ci0gICAgVGVtcGxhdGVNYXAgbV9yYXdUZW1wbGF0
ZXM7Ci0gICAgVGVtcGxhdGVNYXAgbV90ZW1wbGF0ZXM7CisgICAgVGVtcGxhdGVNYXAgbV9yYXdU
ZW1wbGF0ZXNGb3JNYWluV29ybGQ7CisgICAgVGVtcGxhdGVNYXAgbV9yYXdUZW1wbGF0ZXNGb3JO
b25NYWluV29ybGQ7CisgICAgVGVtcGxhdGVNYXAgbV90ZW1wbGF0ZXNGb3JNYWluV29ybGQ7Cisg
ICAgVGVtcGxhdGVNYXAgbV90ZW1wbGF0ZXNGb3JOb25NYWluV29ybGQ7CiAgICAgU2NvcGVkUGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbV90b1N0cmluZ1RlbXBsYXRlOwogICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtX2xhenlFdmVudExpc3RlbmVyVG9T
dHJpbmdUZW1wbGF0ZTsKICAgICBPd25QdHI8U3RyaW5nQ2FjaGU+IG1fc3RyaW5nQ2FjaGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oCmluZGV4IDQ1NmUw
MDIwMTlmZmFiNTQyZmRlYjVmY2FlNzY4OGY3OTUwYWEzNTYuLjY1ZmE2ZmM2ZWE1OTM4M2JmNTE4
Y2NiMTUxY2IxYWIzMGVhMTRkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1dyYXBwZXJUeXBlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dy
YXBwZXJUeXBlSW5mby5oCkBAIC01Miw3ICs1Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBlbnVtIFdyYXBwZXJXb3JsZFR5cGUgewogICAgICAgICBNYWluV29ybGQsCiAgICAgICAgIElz
b2xhdGVkV29ybGQsCi0gICAgICAgIFdvcmtlcldvcmxkCisgICAgICAgIFdvcmtlcldvcmxkLAor
ICAgICAgICAvLyBXaGF0ZXZlciB3b3JsZCB0eXBlIHRoZSBjdXJyZW50IGNvbnRleHQgaGFzLiBG
SVhNRTogcmVtb3ZlIHRoaXMuCisgICAgICAgIEdldEZyb21Db250ZXh0CiAgICAgfTsKIAogICAg
IHR5cGVkZWYgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICgqR2V0VGVtcGxh
dGVGdW5jdGlvbikodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcApp
bmRleCAxZWZkODVhYzhmNWFmZDVlYWMwNDlmMmYwYjgxYzY0YjU4ZWRlYjMxLi5jZmVkNzJjNmQy
MDM5MTg1MjYzMzYyN2E5ZGIwNWQ0OTc3YTk5MTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCkBAIC0xNDMsNyAr
MTQzLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZEF0dHJHZXR0
ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAgICBzdGF0aWMgY29uc3QgY2hhciog
cHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5ID0gInJlbG9hZFByaXZhdGVUZW1wbGF0ZSI7CiAgICAg
V3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlID0gd29ybGRUeXBlKGlzb2xhdGUpOwog
ICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8u
R2V0SXNvbGF0ZSgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
cHJpdmF0ZVRlbXBsYXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUs
ICZwcml2YXRlVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246OnJlbG9hZE1ldGhvZEN1c3Rv
bSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJhd1RlbXBsYXRlKCZW
OExvY2F0aW9uOjppbmZvKSkpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBwcml2YXRlVGVtcGxhdGUgPSBkYXRhLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxk
VHlwZSwgJnByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6cmVsb2FkTWV0aG9k
Q3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxh
dGUoJlY4TG9jYXRpb246OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpKSk7CiAKICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3Rv
dHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5
cGUpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewpAQCAtMTU0LDcgKzE1NCw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZWxvYWRBdHRyR2V0dGVyQ3VzdG9tKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuCiAgICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRv
TmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9GcmFtZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUoKSwgRG9Ob3RS
ZXBvcnRTZWN1cml0eUVycm9yKSkgewogICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhcmVk
VGVtcGxhdGVVbmlxdWVLZXkgPSAicmVsb2FkU2hhcmVkVGVtcGxhdGUiOwotICAgICAgICB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSBkYXRhLT5w
cml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnNoYXJlZFRlbXBsYXRlVW5pcXVlS2V5
LCBWOExvY2F0aW9uOjpyZWxvYWRNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWdu
YXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbykpKTsKKyAgICAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0g
ZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZzaGFyZWRUZW1wbGF0ZVVu
aXF1ZUtleSwgVjhMb2NhdGlvbjo6cmVsb2FkTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2
ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxhdGUoJlY4TG9jYXRpb246OmluZm8sIGN1
cnJlbnRXb3JsZFR5cGUpKSk7CiAgICAgICAgIHJldHVybiBzaGFyZWRUZW1wbGF0ZS0+R2V0RnVu
Y3Rpb24oKTsKICAgICB9CiAgICAgcmV0dXJuIHByaXZhdGVUZW1wbGF0ZS0+R2V0RnVuY3Rpb24o
KTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6
cmVwbGFjZUF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIHByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSA9ICJyZXBsYWNlUHJpdmF0ZVRl
bXBsYXRlIjsKICAgICBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUgPSB3b3JsZFR5
cGUoaW5mby5HZXRJc29sYXRlKCkpOwogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0SXNvbGF0ZSgpKTsKLSAgICB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZwcml2
YXRlVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246OnJlcGxhY2VNZXRob2RDdXN0b20sIHY4
VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2Nh
dGlvbjo6aW5mbykpKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
cHJpdmF0ZVRlbXBsYXRlID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cHJpdmF0
ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZwcml2YXRlVGVtcGxhdGVVbmlxdWVLZXksIFY4
TG9jYXRpb246OnJlcGxhY2VNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1
cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbywgY3VycmVudFdvcmxk
VHlwZSkpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlz
KCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUo
aXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7
CkBAIC0xNzgsNyArMTc4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJl
cGxhY2VBdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIExvY2F0aW9u
KiBpbXAgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmICghQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgp
LCBpbXAtPmZyYW1lKCksIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcikpIHsKICAgICAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIHNoYXJlZFRlbXBsYXRlVW5pcXVlS2V5ID0gInJlcGxhY2VTaGFyZWRU
ZW1wbGF0ZSI7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBz
aGFyZWRUZW1wbGF0ZSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRlKCkp
LT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnNoYXJlZFRlbXBsYXRlVW5pcXVl
S2V5LCBWOExvY2F0aW9uOjpyZXBsYWNlTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6
U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxhdGUoJlY4TG9jYXRpb246OmluZm8pKSk7Cisg
ICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0
ZSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRlKCkpLT5wcml2YXRlVGVt
cGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnNoYXJlZFRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0
aW9uOjpyZXBsYWNlTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpO
ZXcoZGF0YS0+cmF3VGVtcGxhdGUoJlY4TG9jYXRpb246OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUp
KSk7CiAgICAgICAgIHJldHVybiBzaGFyZWRUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKICAgICB9
CiAgICAgcmV0dXJuIHByaXZhdGVUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKQEAgLTE5MSw3ICsx
OTEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6YXNzaWduQXR0ckdldHRl
ckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBw
cml2YXRlVGVtcGxhdGVVbmlxdWVLZXkgPSAiYXNzaWduUHJpdmF0ZVRlbXBsYXRlIjsKICAgICBX
cmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUgPSB3b3JsZFR5cGUoaW5mby5HZXRJc29s
YXRlKCkpOwogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGluZm8uR2V0SXNvbGF0ZSgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRX
b3JsZFR5cGUsICZwcml2YXRlVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246OmFzc2lnbk1l
dGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJhd1Rl
bXBsYXRlKCZWOExvY2F0aW9uOjppbmZvKSkpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSBkYXRhLT5wcml2YXRlVGVtcGxhdGUoY3Vy
cmVudFdvcmxkVHlwZSwgJnByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6YXNz
aWduTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+
cmF3VGVtcGxhdGUoJlY4TG9jYXRpb246OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpKSk7CiAKICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFu
Y2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUsIGN1cnJl
bnRXb3JsZFR5cGUpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewpAQCAtMjAyLDcgKzIw
Miw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjphc3NpZ25BdHRyR2V0dGVy
Q3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuCiAgICAgTG9jYXRpb24qIGltcCA9IFY4TG9j
YXRpb246OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3Vs
ZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUo
KSwgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKSkgewogICAgICAgICBzdGF0aWMgY29uc3QgY2hh
ciogc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXkgPSAiYXNzaWduU2hhcmVkVGVtcGxhdGUiOwotICAg
ICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUg
PSBkYXRhLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnNoYXJlZFRlbXBsYXRl
VW5pcXVlS2V5LCBWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCks
IHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbykp
KTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRl
bXBsYXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZzaGFyZWRU
ZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6YXNzaWduTWV0aG9kQ3VzdG9tLCB2OFVuZGVm
aW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxhdGUoJlY4TG9jYXRpb246
OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpKSk7CiAgICAgICAgIHJldHVybiBzaGFyZWRUZW1wbGF0
ZS0+R2V0RnVuY3Rpb24oKTsKICAgICB9CiAgICAgcmV0dXJuIHByaXZhdGVUZW1wbGF0ZS0+R2V0
RnVuY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5vZGVMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5vZGVMaXN0Q3VzdG9tLmNwcAppbmRleCA5MDRhYjMxMTc2NmI1ZDE0MTdiOTVhODE1MzM5
YzRjYmQ1ODg1YjFjLi5mNTUyZjcwODA2YTYwMzk1ZTRlY2JkNmM1ZTg2ODRlMjc4OTNmMWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUxp
c3RDdXN0b20uY3BwCkBAIC02MSw3ICs2MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5v
ZGVMaXN0OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lCiAK
IHZvaWQqIFY4Tm9kZUxpc3Q6Om9wYXF1ZVJvb3RGb3JHQyh2b2lkKiBvYmplY3QsIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAg
IEFTU0VSVChWOE5vZGVMaXN0OjpIYXNJbnN0YW5jZSh3cmFwcGVyLCBpc29sYXRlKSk7CisgICAg
QVNTRVJUKFY4Tm9kZUxpc3Q6Okhhc0luc3RhbmNlKHdyYXBwZXIsIGlzb2xhdGUsIE1haW5Xb3Js
ZCkgfHwgVjhOb2RlTGlzdDo6SGFzSW5zdGFuY2Uod3JhcHBlciwgaXNvbGF0ZSwgSXNvbGF0ZWRX
b3JsZCkpOwogICAgIE5vZGVMaXN0KiBpbXBsID0gc3RhdGljX2Nhc3Q8Tm9kZUxpc3QqPihvYmpl
Y3QpOwogICAgIGlmICghaW1wbC0+aXNMaXZlTm9kZUxpc3QoKSkKICAgICAgICAgcmV0dXJuIG9i
amVjdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193101</attachid>
            <date>2013-03-14 03:24:30 -0700</date>
            <delta_ts>2013-03-15 08:03:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111724-20130314112026.patch</filename>
            <type>text/plain</type>
            <size>168385</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWY2OGY1ZmYxYjhiOGM3
MzI4M2Y0YjI4YTEyZTg3YTdjY2Y5NGQwYi4uZThmOWM4ZWQ5YzAyMTlmMzUxOTQ5YTZhOWQ1NTFl
MTBlMDAyMTAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyMCBAQAorMjAxMy0wMy0xNCAgTWFy
amEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBTdG9yZSBt
YWluIHdvcmxkIGFuZCBub24tbWFpbiB3b3JsZCB0ZW1wbGF0ZXMgc2VwYXJhdGVseS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTcyNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgbmVlZGVk
IGZvciBnZW5lcmF0aW5nIHNwZWNpYWxpemVkIGJpbmRpbmdzIGZvciB0aGUgbWFpbgorICAgICAg
ICB3b3JsZCAoYnVnIDExMDg3NCkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzICh1cGRhdGVkIGV4
aXN0aW5nIGJpbmRpbmdzIHRlc3RzKS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2Vu
ZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxB
dHRyU2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrRXhwcmVzc2lvbik6
CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAgICAgIChHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uKToKKyAgICAgICAgKEpTVmFsdWVUb05hdGl2ZSk6CisgICAgICAgIChDcmVh
dGVDdXN0b21TaWduYXR1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OEZsb2F0NjRBcnJheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdDY0QXJyYXlWOEludGVy
bmFsOjpmb29NZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhGbG9hdDY0QXJy
YXlUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEZsb2F0NjRBcnJheTo6R2V0VGVtcGxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0QXJyYXk6Okhhc0luc3RhbmNlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaDoKKyAgICAg
ICAgKFY4RmxvYXQ2NEFycmF5KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RBY3RpdmVE
T01PYmplY3RWOEludGVybmFsOjpleGNpdGluZ0Z1bmN0aW9uTWV0aG9kKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpwb3N0TWVzc2FnZUF0dHJHZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0QWN0aXZlRE9NT2JqZWN0VGVt
cGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRUZW1w
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RBY3RpdmVET01PYmplY3Q6Okhhc0luc3Rh
bmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9N
T2JqZWN0Lmg6CisgICAgICAgIChWOFRlc3RBY3RpdmVET01PYmplY3QpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6R2V0VGVtcGxhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6Okhhc0luc3RhbmNlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
aDoKKyAgICAgICAgKFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaDoKKyAgICAg
ICAgKFY4VGVzdEV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RXZl
bnRUYXJnZXRWOEludGVybmFsOjpkaXNwYXRjaEV2ZW50TWV0aG9kKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0RXZlbnRUYXJnZXQ6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdEV2ZW50VGFyZ2V0OjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0Lmg6CisgICAgICAgIChWOFRlc3RFdmVudFRhcmdl
dCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFeGNlcHRpb246OkdldFRlbXBsYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdEV4Y2VwdGlvbjo6SGFzSW5zdGFuY2UpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaDoKKyAgICAgICAgKFY4
VGVzdEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5h
bDo6c3VwcGxlbWVudGFsTm9kZUF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdElu
dGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE1ldGhvZDJNZXRob2QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhUZXN0SW50ZXJmYWNlOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RJbnRlcmZhY2U6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmg6CisgICAgICAgIChWOFRlc3RJbnRlcmZhY2UpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXI6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oOgorICAgICAgICAoVjhUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRD
b25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRD
b25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmg6CisgICAgICAgIChWOFRlc3ROYW1lZENvbnN0
cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpHZXRUZW1wbGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOFRlc3ROb2RlOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaDoKKyAgICAgICAgKFY4VGVzdE5vZGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnRlc3RPYmpBdHRyQXR0clNldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJTZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnR5cGVkQXJyYXlBdHRyQXR0clNl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVB
dHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2Ny
aXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0clNldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBvaW50QXR0clNldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRBdHRyU2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp2b2lkTWV0aG9kV2l0aEFy
Z3NNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmxvbmdNZXRo
b2RXaXRoQXJnc01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
b2JqTWV0aG9kV2l0aEFyZ3NNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6Om1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NNZXRob2QpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRob2QxTWV0aG9kKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kMk1l
dGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6b3ZlcmxvYWRlZE1l
dGhvZDhNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92ZXJs
b2FkZWRNZXRob2RNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OmNvbnZlcnQxTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpj
b252ZXJ0Mk1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29u
dmVydDRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbnZl
cnQ1TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRp
Y05vZGVNZXRob2RNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0T2Jq
VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2JqOjpHZXRUZW1wbGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmg6CisgICAgICAgIChWOFRlc3RPYmopOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
VjhJbnRlcm5hbDo6Y29uc3RydWN0b3IxKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzVjhJbnRlcm5hbDo6Y29uc3RydWN0b3IyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVjhJbnRlcm5hbDo6Y29uc3RydWN0b3IzKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVjhJbnRlcm5hbDo6
Y29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChWOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0VGVtcGxhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpI
YXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oOgorICAgICAgICAoVjhUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJ
bnRlcm5hbDo6ZnVuY01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RU
eXBlZGVmc1RlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdFR5cGVkZWZzOjpHZXRU
ZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RUeXBlZGVmczo6SGFzSW5zdGFuY2Up
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5oOgor
ICAgICAgICAoVjhUZXN0VHlwZWRlZnMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RpY3Rpb25h
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGljdGlvbmFyeTo6Z2V0KToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQ
cm9maWxlcjo6dmlzaXROb2RlV3JhcHBlcnMpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVu
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBs
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9ET01TdHJpbmdMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OnRvWFBhdGhOU1Jlc29s
dmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9SZWZQdHJOYXRpdmVBcnJheSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvT3B0aW9u
c0NvbGxlY3Rpb25TZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om5wT2JqZWN0SW52b2tlSW1wbCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQZXJJ
c29sYXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFBlcklzb2xhdGVEYXRhOjpyZXBv
cnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlcklzb2xhdGVEYXRhOjpoYXNQ
cml2YXRlVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJJc29sYXRlRGF0YTo6cHJp
dmF0ZVRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6OnJhd1Rl
bXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6Omhhc0luc3RhbmNl
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpWOFBlcklzb2xhdGVEYXRhOjpyYXdUZW1wbGF0ZU1hcCk6CisgICAgICAgIChWOFBl
cklzb2xhdGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6OnRlbXBs
YXRlTWFwKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpleHRyYWN0VHJhbnNmZXJhYmxlcyk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpjb25z
dHJ1Y3RXZWJHTEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OnNldFdlYkdMQXJyYXlIZWxwZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQnVmZmVyU291cmNlTm9kZUN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6YnVm
ZmVyQXR0clNldHRlckN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Qmxv
YkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEJsb2I6OmNvbnN0cnVjdG9yQ3VzdG9t
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9DYW52YXNTdHlsZSk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4Q2xpcGJvYXJkOjpzZXREcmFnSW1hZ2VNZXRob2RDdXN0b20pOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENyeXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOENyeXB0bzo6Z2V0UmFuZG9tVmFsdWVzTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOERPTUZvcm1EYXRhOjpjb25zdHJ1Y3RvckN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpW
OERPTUZvcm1EYXRhOjphcHBlbmRNZXRob2RDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YVZp
ZXc6OmNvbnN0cnVjdG9yQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhE
b2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERvY3VtZW50OjpldmFsdWF0
ZU1ldGhvZEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlh
RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxNZWRpYUVsZW1lbnQ6
OmNvbnRyb2xsZXJBdHRyU2V0dGVyQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZE1ldGhvZEN1c3RvbSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cmVtb3ZlRWxlbWVudCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0
ZWRTY3JpcHRIb3N0Ojppc0hUTUxBbGxDb2xsZWN0aW9uTWV0aG9kQ3VzdG9tKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojp0eXBlTWV0aG9kQ3VzdG9tKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRFdmVudExpc3RlbmVyc01ldGhv
ZEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6cmVsb2FkQXR0ckdldHRlckN1c3Rv
bSk6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZXBsYWNlQXR0ckdldHRlckN1c3Rv
bSk6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjphc3NpZ25BdHRyR2V0dGVyQ3VzdG9t
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4Tm9kZTo6aW5zZXJ0QmVmb3JlTWV0aG9kQ3VzdG9tKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4Tm9kZTo6cmVwbGFjZUNoaWxkTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4Tm9kZTo6cmVtb3ZlQ2hpbGRNZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29y
ZTo6VjhOb2RlOjphcHBlbmRDaGlsZE1ldGhvZEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhOb2Rl
TGlzdDo6b3BhcXVlUm9vdEZvckdDKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9XZWJH
TFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0QXR0YWNoZWRTaGFkZXJzTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtUGFyYW1ldGVyTWV0aG9kQ3VzdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJQ
YXJhbWV0ZXJNZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldFVuaWZvcm1NZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6dmVy
dGV4QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYpOgorICAgICAgICAoV2ViQ29yZTo6dW5pZm9ybUhl
bHBlcmkpOgorICAgICAgICAoV2ViQ29yZTo6dW5pZm9ybU1hdHJpeEhlbHBlcik6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aXNEb2N1bWVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhYTUxIdHRw
UmVxdWVzdDo6c2VuZE1ldGhvZEN1c3RvbSk6CisKIDIwMTMtMDMtMTQgIFNlcmdpbyBWaWxsYXIg
U2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgRW1wdHkgbGlzdCBpdGVtcyBh
ZnRlciBkcmFnJmRyb3AgaW4gY29udGVudEVkaXRhYmxlIGRpdnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggNGU2Mzc4NDczZmZmZjAwMDM4NzkwYWFhOWU5YWRhMjkxMTlhZTdjMi4uNDUy
MTI2NjNkNWZlZjkxMTExMTEyMTE0NmRiNGJmZmQ0MDgyZmY5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMy0wMy0xNCAgTWFyamEgSMO2bHR0w6QgIDxt
YXJqYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBTdG9yZSBtYWluIHdvcmxkIGFuZCBu
b24tbWFpbiB3b3JsZCB0ZW1wbGF0ZXMgc2VwYXJhdGVseS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTcyNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgbmVlZGVkIGZvciBnZW5lcmF0aW5n
IHNwZWNpYWxpemVkIGJpbmRpbmdzIGZvciB0aGUgbWFpbgorICAgICAgICB3b3JsZCAoYnVnIDEx
MDg3NCkuCisKKyAgICAgICAgKiBzcmMvV2ViQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbVY4VmFsdWUpOgorICAgICAgICAqIHNyYy9X
ZWJBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlclZp
ZXc6OmNyZWF0ZUZyb21WOFZhbHVlKToKKyAgICAgICAgKiBzcmMvV2ViQmluZGluZ3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpnZXRSYW5nZUltcGwpOgorICAgICAgICAoV2ViS2l0OjpnZXROb2Rl
SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OmdldEVsZW1lbnRJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6Z2V0QXJyYXlCdWZmZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6Z2V0QXJyYXlCdWZmZXJW
aWV3SW1wbCk6CisKIDIwMTMtMDMtMTMgIFJpayBDYWJhbmllciAgPGNhYmFuaWVyQGFkb2JlLmNv
bT4KIAogICAgICAgICBjcmVhdGUgcnVudGltZSBmbGFncyBmb3IgQ1NTIENvbXBvc2l0aW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
CmluZGV4IDc1OGQ3NTE4NTM4ZjgyMTFmZGI3NWFjMTU2ZTZhMzljZDE2ZDg4MGEuLmM1YWIzNjAw
NTQ3MzU1ZjczMDk3ODY0ZWIzYzgzYjkzZmIwY2IwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0zNjAsNyArMzYwLDcg
QEAgRU5ECiAgICAgfQogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwotICAgIHN0
YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUq
KTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4
OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJX
b3JsZFR5cGUpOwogICAgIHN0YXRpYyAke25hdGl2ZVR5cGV9KiB0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CkBAIC03ODAsNyArNzgwLDcgQEAgc3ViIEdlbmVy
YXRlRG9tYWluU2FmZUZ1bmN0aW9uR2V0dGVyCiAgICAgbXkgJHY4SW50ZXJmYWNlTmFtZSA9ICJW
OCIgLiAkaW50ZXJmYWNlTmFtZTsKICAgICBteSAkZnVuY05hbWUgPSAkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+bmFtZTsKIAotICAgIG15ICRzaWduYXR1cmUgPSAidjg6OlNpZ25hdHVyZTo6TmV3KFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRlKCkpLT5yYXdUZW1wbGF0ZSgmIiAu
ICR2OEludGVyZmFjZU5hbWUgLiAiOjppbmZvKSkiOworICAgIG15ICRzaWduYXR1cmUgPSAidjg6
OlNpZ25hdHVyZTo6TmV3KFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRlKCkp
LT5yYXdUZW1wbGF0ZSgmIiAuICR2OEludGVyZmFjZU5hbWUgLiAiOjppbmZvLCBjdXJyZW50V29y
bGRUeXBlKSkiOwogICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IlY4RG9Ob3RDaGVja1NpZ25hdHVyZSJ9KSB7CiAgICAgICAgICRzaWduYXR1cmUgPSAi
djg6OkxvY2FsPHY4OjpTaWduYXR1cmU+KCkiOwogICAgIH0KQEAgLTEyNDksNyArMTI0OSw3IEBA
IHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXIKICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU3RyaWN0VHlwZUNoZWNraW5nIn0pIHsKICAgICAg
ICAgbXkgJGFyZ1R5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CiAgICAgICAgIGlm
IChJc1dyYXBwZXJUeXBlKCRhcmdUeXBlKSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnRJbnRlcm5hbHMsICIgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbCh2YWx1ZSkgJiYgIVY4JHth
cmdUeXBlfTo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKSkge1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICBpZiAoIWlzVW5kZWZp
bmVkT3JOdWxsKHZhbHVlKSAmJiAhVjgke2FyZ1R5cGV9OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5m
by5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpKSB7XG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgICAgICB0aHJvd1R5cGVF
cnJvcigwLCBpbmZvLkdldElzb2xhdGUoKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50SW50ZXJuYWxzLCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIH1cbiIpOwpAQCAtMTQ1MCw5ICsxNDUwLDkgQEAg
c3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrRXhwcmVzc2lvbgogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2lmIChJc1dyYXBwZXJUeXBlKCR0eXBlKSkgewogICAgICAgICAgICAgaWYgKCRw
YXJhbWV0ZXItPmlzTnVsbGFibGUpIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBhbmRFeHByZXNz
aW9uLCAiKCR7dmFsdWV9LT5Jc051bGwoKSB8fCBWOCR7dHlwZX06Okhhc0luc3RhbmNlKCR2YWx1
ZSwgYXJncy5HZXRJc29sYXRlKCkpKSIpOworICAgICAgICAgICAgICAgIHB1c2goQGFuZEV4cHJl
c3Npb24sICIoJHt2YWx1ZX0tPklzTnVsbCgpIHx8IFY4JHt0eXBlfTo6SGFzSW5zdGFuY2UoJHZh
bHVlLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpIik7
CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHB1c2goQGFuZEV4cHJlc3Np
b24sICIoVjgke3R5cGV9OjpIYXNJbnN0YW5jZSgkdmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpKSki
KTsKKyAgICAgICAgICAgICAgICBwdXNoKEBhbmRFeHByZXNzaW9uLCAiKFY4JHt0eXBlfTo6SGFz
SW5zdGFuY2UoJHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNv
bGF0ZSgpKSkpIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMTg2OCw3ICsxODY4
LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICBpZiAoSXNXcmFw
cGVyVHlwZSgkYXJnVHlwZSkpIHsKICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJp
bmcgLj0gIiAgICBWZWN0b3I8JG5hdGl2ZUVsZW1lbnRUeXBlPiAkcGFyYW1ldGVyTmFtZTtcbiI7
CiAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgZm9yIChpbnQg
aSA9ICRwYXJhbUluZGV4OyBpIDwgYXJncy5MZW5ndGgoKTsgKytpKSB7XG4iOwotICAgICAgICAg
ICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBpZiAoIVY4JHthcmdUeXBl
fTo6SGFzSW5zdGFuY2UoYXJnc1tpXSwgYXJncy5HZXRJc29sYXRlKCkpKVxuIjsKKyAgICAgICAg
ICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgaWYgKCFWOCR7YXJnVHlw
ZX06Okhhc0luc3RhbmNlKGFyZ3NbaV0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJn
cy5HZXRJc29sYXRlKCkpKSlcbiI7CiAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3Ry
aW5nIC49ICIgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29s
YXRlKCkpO1xuIjsKICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAg
ICAgICAgJHBhcmFtZXRlck5hbWUuYXBwZW5kKFY4JHthcmdUeXBlfTo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzW2ldKSkpO1xuIjsKICAgICAgICAgICAgICAgICAk
cGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOwpAQCAtMTg4OSw3ICsxODg5LDcgQEAg
c3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgbXkgJGFyZ1ZhbHVl
ID0gImFyZ3NbJHBhcmFtSW5kZXhdIjsKICAgICAgICAgICAgICAgICBteSAkYXJnVHlwZSA9ICRw
YXJhbWV0ZXItPnR5cGU7CiAgICAgICAgICAgICAgICAgaWYgKElzV3JhcHBlclR5cGUoJGFyZ1R5
cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAg
IGlmIChhcmdzLkxlbmd0aCgpID4gJHBhcmFtSW5kZXggJiYgIWlzVW5kZWZpbmVkT3JOdWxsKCRh
cmdWYWx1ZSkgJiYgIVY4JHthcmdUeXBlfTo6SGFzSW5zdGFuY2UoJGFyZ1ZhbHVlLCBhcmdzLkdl
dElzb2xhdGUoKSkpXG4iOworICAgICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJp
bmcgLj0gIiAgICBpZiAoYXJncy5MZW5ndGgoKSA+ICRwYXJhbUluZGV4ICYmICFpc1VuZGVmaW5l
ZE9yTnVsbCgkYXJnVmFsdWUpICYmICFWOCR7YXJnVHlwZX06Okhhc0luc3RhbmNlKCRhcmdWYWx1
ZSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKVxuIjsK
ICAgICAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7XG4iOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTMxNTUsMjAgKzMxNTUsMjAgQEAgRU5ECiB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9OjpHZXRU
ZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUp
CiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJl
c3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAh
PSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBs
YXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZp
bmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBl
KS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxl
U2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlJHt2OEludGVyZmFjZU5hbWV9VGVtcGxhdGUo
ZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEt
PnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZSR7djhJ
bnRlcmZhY2VOYW1lfVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUp
LCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSku
YWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sICR7djhJbnRl
cmZhY2VOYW1lfTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK2Jvb2wgJHt2OEludGVyZmFjZU5hbWV9OjpIYXNJbnN0YW5jZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
V29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3Js
ZFR5cGUpOwogfQogCiBFTkQKQEAgLTQwNDcsNyArNDA0Nyw3IEBAIHN1YiBKU1ZhbHVlVG9OYXRp
dmUKICAgICBBZGRJbmNsdWRlc0ZvclR5cGUoJHR5cGUpOwogCiAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoIlY4JHt0eXBlfS5oIik7Ci0gICAgcmV0dXJuICJWOCR7dHlwZX06Okhhc0luc3RhbmNlKCR2
YWx1ZSwgJGdldElzb2xhdGUpID8gVjgke3R5cGV9Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KCR2YWx1ZSkpIDogMCI7CisgICAgcmV0dXJuICJWOCR7dHlwZX06Okhhc0lu
c3RhbmNlKCR2YWx1ZSwgJGdldElzb2xhdGUsIHdvcmxkVHlwZSgkZ2V0SXNvbGF0ZSkpID8gVjgk
e3R5cGV9Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KCR2YWx1ZSkpIDog
MCI7CiB9CiAKIHN1YiBHZXRWOEhlYWRlck5hbWUKQEAgLTQwOTgsNyArNDA5OCw3IEBAIHN1YiBD
cmVhdGVDdXN0b21TaWduYXR1cmUKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcyhHZXRWOEhlYWRlck5hbWUoJHR5cGUpKTsKICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4JHt0eXBlfTo6aW5mbykiOworICAg
ICAgICAgICAgICAgICRyZXN1bHQgLj0gIlY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSkt
PnJhd1RlbXBsYXRlKCZWOCR7dHlwZX06OmluZm8sIHdvcmxkVHlwZSkiOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgJHJlc3VsdCAuPSAidjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAppbmRleCBkZDc2ZWFm
NDMxMjI3YmY3MGYxYzM1MTQxYTc2MzllOWY2ZGFhMzdlLi4yMWFiZjRkZjkxNmEwMzEwZTE2N2Rk
MjJiZTcwNzE4NTlkNmUxZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKQEAgLTg1LDcgKzg1LDcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmb29NZXRob2QoY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0
aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBGbG9h
dDY0QXJyYXkqIGltcCA9IFY4RmxvYXQ2NEFycmF5Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsK
LSAgICBWOFRSWUNBVENIKEZsb2F0MzJBcnJheSosIGFycmF5LCBWOEZsb2F0MzJBcnJheTo6SGFz
SW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhGbG9hdDMyQXJyYXk6OnRv
TmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CisgICAg
VjhUUllDQVRDSChGbG9hdDMyQXJyYXkqLCBhcnJheSwgVjhGbG9hdDMyQXJyYXk6Okhhc0luc3Rh
bmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRl
KCkpKSA/IFY4RmxvYXQzMkFycmF5Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KGFyZ3NbMF0pKSA6IDApOwogICAgIHJldHVybiB0b1Y4KGltcC0+Zm9vKGFycmF5KSwgYXJn
cy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCkBAIC0xNTMsNyArMTUzLDcgQEAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOEZs
b2F0NjRBcnJheVRlbXBsYXRlKHY4OjoKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2ZvbycK
ICAgICBjb25zdCBpbnQgZm9vQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gZm9vQXJndltmb29BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+cmF3VGVtcGxhdGUoJlY4RmxvYXQzMkFycmF5OjppbmZvKSB9OworICAgIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZvb0FyZ3ZbZm9vQXJnY10gPSB7IFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOEZsb2F0MzJBcnJheTo6aW5mbywg
d29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gZm9vU2lnbmF0dXJl
ID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGZvb0FyZ2MsIGZvb0FyZ3YpOwogICAgIHByb3Rv
LT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJmb28iKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhGbG9hdDY0QXJyYXlWOEludGVybmFsOjpmb29NZXRob2RDYWxsYmFjaywgdjhVbmRlZmlu
ZWQoKSwgZm9vU2lnbmF0dXJlKSk7CiAKQEAgLTE2NSwyMCArMTY1LDIwIEBAIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhGbG9hdDY0QXJyYXlU
ZW1wbGF0ZSh2ODo6CiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhGbG9h
dDY0QXJyYXk6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRU
eXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1h
cDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAg
ICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29s
YXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFw
KHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0
ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAog
ICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOEZsb2F0NjRBcnJh
eVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsK
LSAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25m
aWd1cmVWOEZsb2F0NjRBcnJheVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3Js
ZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxk
VHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4
RmxvYXQ2NEFycmF5OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQorYm9vbCBWOEZsb2F0NjRBcnJheTo6SGFzSW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldv
cmxkVHlwZSB3b3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRU
eXBlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oCmluZGV4IGFmZTI4OTMzODgyMGVmMTA0Nzk5MzBh
ZDUwY2UzZjBlMjNkNTEyNmYuLjQzMzdkZDI2ZGIxYmViZWIyNDllM2RhMzAwMmNiNGUzMDJhZGQx
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OEZsb2F0NjRBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOEZsb2F0NjRBcnJheS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFY4RmxvYXQ2NEFycmF5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9v
bCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IFY4QXJyYXlCdWZmZXJWaWV3OjpoYXNEZXBlbmRlbnRM
aWZldGltZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4sIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklz
b2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgRmxvYXQ2NEFycmF5KiB0b05h
dGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RB
Y3RpdmVET01PYmplY3QuY3BwCmluZGV4IGFlM2E4NTFlNDQ5Y2QwMDJmOWQwMGNiNjg4NjlhNmNl
YTJjZDE2ODUuLjNhODYxN2FiZDk1NTg3NDk1N2JhZjgyNTJjMjBhZDZiYTBjNjIwMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3Rp
dmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBleGNpdGluZ0Z1bmN0aW9uTWV0aG9kKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiAgICAgVGVzdEFjdGl2ZURPTU9iamVjdCogaW1wID0gVjhUZXN0QWN0
aXZlRE9NT2JqZWN0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBpZiAoIUJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2Uo
KSwgaW1wLT5mcmFtZSgpKSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7Ci0gICAgVjhU
UllDQVRDSChOb2RlKiwgbmV4dENoaWxkLCBWOE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFy
Z3MuR2V0SXNvbGF0ZSgpKSA/IFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAgICBWOFRSWUNBVENIKE5vZGUqLCBuZXh0Q2hpbGQs
IFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlw
ZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOwogICAgIGltcC0+ZXhjaXRpbmdGdW5jdGlvbihu
ZXh0Q2hpbGQpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTMyLDcgKzEzMiw3
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9zdE1lc3NhZ2VBdHRyR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHByaXZh
dGVUZW1wbGF0ZVVuaXF1ZUtleSA9ICJwb3N0TWVzc2FnZVByaXZhdGVUZW1wbGF0ZSI7CiAgICAg
V3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlID0gd29ybGRUeXBlKGluZm8uR2V0SXNv
bGF0ZSgpKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpbmZvLkdldElzb2xhdGUoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50
V29ybGRUeXBlLCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBUZXN0QWN0aXZlRE9NT2JqZWN0
VjhJbnRlcm5hbDo6cG9zdE1lc3NhZ2VNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6
OlNpZ25hdHVyZTo6TmV3KFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRlKCkp
LT5yYXdUZW1wbGF0ZSgmVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjppbmZvKSkpOworICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSBkYXRhLT5w
cml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtl
eSwgVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBvc3RNZXNzYWdlTWV0aG9kQ2FsbGJh
Y2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGluZm8uR2V0SXNvbGF0ZSgpKS0+cmF3VGVtcGxhdGUoJlY4VGVzdEFjdGl2ZURPTU9iamVj
dDo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhU
ZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSwgY3VycmVu
dFdvcmxkVHlwZSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CkBAIC0xNDMsNyArMTQz
LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwb3N0TWVzc2FnZUF0dHJHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGMKICAgICBUZXN0QWN0aXZlRE9NT2JqZWN0KiBp
bXAgPSBWOFRlc3RBY3RpdmVET01PYmplY3Q6OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFC
aW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3RhdGU6Omlu
c3RhbmNlKCksIGltcC0+ZnJhbWUoKSwgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKSkgewogICAg
ICAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXkgPSAicG9zdE1l
c3NhZ2VTaGFyZWRUZW1wbGF0ZSI7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50
V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFRlc3RBY3RpdmVET01PYmplY3RW
OEludGVybmFsOjpwb3N0TWVzc2FnZU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6
U2lnbmF0dXJlOjpOZXcoVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSkt
PnJhd1RlbXBsYXRlKCZWOFRlc3RBY3RpdmVET01PYmplY3Q6OmluZm8pKSk7CisgICAgICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IGRhdGEt
PnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVL
ZXksIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpwb3N0TWVzc2FnZU1ldGhvZENhbGxi
YWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnJhd1RlbXBsYXRlKCZWOFRlc3RBY3RpdmVET01PYmpl
Y3Q6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpKSk7CiAgICAgICAgIHJldHVybiBzaGFyZWRUZW1w
bGF0ZS0+R2V0RnVuY3Rpb24oKTsKICAgICB9CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEFjdGl2
ZURPTU9iamVjdFRlbXBsYQogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnZXhjaXRpbmdGdW5j
dGlvbicKICAgICBjb25zdCBpbnQgZXhjaXRpbmdGdW5jdGlvbkFyZ2MgPSAxOwotICAgIHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGV4Y2l0aW5nRnVuY3Rpb25Bcmd2W2V4Y2l0aW5n
RnVuY3Rpb25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVt
cGxhdGUoJlY4Tm9kZTo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBleGNpdGluZ0Z1bmN0aW9uQXJndltleGNpdGluZ0Z1bmN0aW9uQXJnY10gPSB7IFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOE5vZGU6OmluZm8sIHdv
cmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGV4Y2l0aW5nRnVuY3Rp
b25TaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgZXhjaXRpbmdGdW5jdGlvbkFy
Z2MsIGV4Y2l0aW5nRnVuY3Rpb25Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbCgiZXhjaXRpbmdGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRl
c3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpleGNpdGluZ0Z1bmN0aW9uTWV0aG9kQ2FsbGJh
Y2ssIHY4VW5kZWZpbmVkKCksIGV4Y2l0aW5nRnVuY3Rpb25TaWduYXR1cmUpKTsKIApAQCAtMjEw
LDIwICsyMTAsMjAgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBDb25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGEKIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFRlbXBsYXRlKHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBW
OFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsK
LSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRl
bXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0
ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7
CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQog
ICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5k
bGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwg
PQotICAgICAgICBDb25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGF0ZShkYXRhLT5y
YXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxh
dGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0QWN0aXZl
RE9NT2JqZWN0VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlz
b2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQo
JmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0QWN0aXZl
RE9NT2JqZWN0OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQorYm9vbCBWOFRlc3RBY3RpdmVET01PYmplY3Q6Okhhc0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBw
ZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOworICAgIHJldHVybiBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdv
cmxkVHlwZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oCmluZGV4IGQyMzVi
YzU0NTQxYWQ2OTM0YjhhNjdmOTAwOWRmODAwYTM5YzhlN2QuLmM4MGVmYTY5ZjMyZDk0MjE1OWRm
M2UyZjczNzUyNjZiMzQ0NDdmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKQEAg
LTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0QWN0aXZlRE9N
T2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZl
dGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2
ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0QWN0aXZlRE9N
T2JqZWN0KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRleCA0NjAxNDhjMmI0YjA2ZmIz
ZWZiYTU1NWI5MzJlYjhmZDhkZTQxYzdlLi5lZTVlMzcyZWY0Yzc4Y2U0ODZmODNkMGQ5M2Y4MDkw
Y2YwZDhmZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAgLTEx
NSwyMCArMTE1LDIwIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gQ29uZmlndXJlVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wCiB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OkdldFRlbXBsYXRl
KHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAg
ICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0g
ZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEt
PnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5m
byk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgp
KQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBo
YW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVt
cGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRlclRlbXBsYXRlKGRh
dGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50
ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RD
dXN0b21OYW1lZEdldHRlclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5
cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlw
ZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVz
dEN1c3RvbU5hbWVkR2V0dGVyOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorYm9vbCBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CisgICAg
cmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZv
LCB2YWx1ZSwgd29ybGRUeXBlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRl
ci5oCmluZGV4IGUyZjFkNWE0ZWQ5NGJhOTBjZThlNWIxOGI4OWFlZTBkNzc5ZGQwNzEuLjJhNTFj
ZGVkOWFlNzk2Yzc1Yzk5MjFlMDhkYWE4NDAyYzRhMjNhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0
b21OYW1lZEdldHRlci5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIEhhc0lu
c3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMg
Ym9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3Jh
cHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAg
IHN0YXRpYyBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcApp
bmRleCBlNmM4OThlMTAwODQ2NDNiNTE5MjEwOTdjZDI0ZDI3NmVmNzIwNzFiLi4yYzY4ZWU5NGJm
M2FmMTQ4ZjU1NjBhYjVmYzljMDgwYjc0N2M5ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29u
c3RydWN0b3IuY3BwCkBAIC0xNTcsMjAgKzE1NywyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1w
bAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50Q29uc3Ry
dWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6
aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBp
ZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRl
RGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdv
cmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1h
cCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAg
IHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RFdmVudENvbnN0
cnVjdG9yVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3JsZFR5
cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAg
IENvbmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0
ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1w
bGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsK
IH0KIAotYm9vbCBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorYm9vbCBWOFRlc3RFdmVu
dENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKLSAgICBy
ZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8s
IHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFz
SW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVj
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5oCmluZGV4IDZmMTdmNjZkNDM4OWZlY2YyYjliNzhjYzliOWIwYjQ4YzNi
Yzc0ODcuLmVjZDE1OWJhY2Q4Y2U0Y2E5OTFiNWY1MDc1M2QyYjJlMzY0YmRhMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENv
bnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBEaWN0aW9u
YXJ5OwogY2xhc3MgVjhUZXN0RXZlbnRDb25zdHJ1Y3RvciB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9v
bCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CisgICAg
c3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0
ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBl
KTsKICAgICBzdGF0aWMgVGVzdEV2ZW50Q29uc3RydWN0b3IqIHRvTmF0aXZlKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4
IDg0ODVmMDk3MjgxNTc2MGUyMTM1YzdjZWQyY2I0YTEzYmQ2Nzk5OGMuLjgyNTM3MDAxY2M5NzVi
NzFmM2JiMDllZjFiYzdlYTM1MDA3MjJiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcApA
QCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGlzcGF0Y2hF
dmVudE1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIFRlc3RFdmVudFRhcmdl
dCogaW1wID0gVjhUZXN0RXZlbnRUYXJnZXQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHsKLSAgICBWOFRSWUNBVENIKEV2ZW50KiwgZXZ0
LCBWOEV2ZW50OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOEV2
ZW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDAp
OworICAgIFY4VFJZQ0FUQ0goRXZlbnQqLCBldnQsIFY4RXZlbnQ6Okhhc0luc3RhbmNlKGFyZ3Nb
MF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4
RXZlbnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDog
MCk7CiAgICAgYm9vbCByZXN1bHQgPSBpbXAtPmRpc3BhdGNoRXZlbnQoZXZ0LCBlYyk7CiAgICAg
aWYgKFVOTElLRUxZKGVjKSkKICAgICAgICAgZ290byBmYWlsOwpAQCAtMTc5LDcgKzE3OSw3IEBA
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhU
ZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZSh2CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdkaXNw
YXRjaEV2ZW50JwogICAgIGNvbnN0IGludCBkaXNwYXRjaEV2ZW50QXJnYyA9IDE7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGlzcGF0Y2hFdmVudEFyZ3ZbZGlzcGF0Y2hF
dmVudEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0
ZSgmVjhFdmVudDo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBkaXNwYXRjaEV2ZW50QXJndltkaXNwYXRjaEV2ZW50QXJnY10gPSB7IFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOEV2ZW50OjppbmZvLCB3b3JsZFR5cGUp
IH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBkaXNwYXRjaEV2ZW50U2lnbmF0dXJl
ID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGRpc3BhdGNoRXZlbnRBcmdjLCBkaXNwYXRjaEV2
ZW50QXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImRpc3BhdGNo
RXZlbnQiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0RXZlbnRUYXJnZXRWOEludGVy
bmFsOjpkaXNwYXRjaEV2ZW50TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGRpc3BhdGNo
RXZlbnRTaWduYXR1cmUpKTsKIApAQCAtMTkxLDIwICsxOTEsMjAgQEAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRl
bXBsYXRlKHYKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFdmVu
dFRhcmdldDo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5
cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFw
OjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAg
IGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xh
dGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAg
ICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFy
Z2V0VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3JsZFR5cGUp
OwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENv
bmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8s
IHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJv
b2wgVjhUZXN0RXZlbnRUYXJnZXQ6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitib29sIFY4VGVzdEV2ZW50VGFyZ2V0OjpIYXNJ
bnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKKyAgICByZXR1
cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZh
bHVlLCB3b3JsZFR5cGUpOwogfQogCiBFdmVudFRhcmdldCogVjhUZXN0RXZlbnRUYXJnZXQ6OnRv
RXZlbnRUYXJnZXQodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRh
cmdldC5oCmluZGV4IGFiYTJiM2E5NGIwOTM1Njk4Mjc3NWZlOTU4MGQxODBhODc3ZmJlYTcuLjNk
MzY2MmEwYjYzNDI0N2QxMGZhNzY4ZDRmZjUzYjdkZTc2MWM1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRh
cmdldC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVz
dEV2ZW50VGFyZ2V0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRl
bnRMaWZldGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7
CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0RXZl
bnRUYXJnZXQqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggN2MwMzMxNjczOWM0MGMyZDZjN2UxNGIyYzgwMTg4
M2FmZjVkODY1ZC4uNDdjZjFmZTgyYjZjZWY1NzJkNzkxNWRlZTMzNjlhM2Q1YzRjNWJmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4
Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTEwNiwyMCArMTA2LDIwIEBAIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXhjZXB0aW9uVGVt
cGxhdGUodjg6CiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXhj
ZXB0aW9uOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0
ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVN
YXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAg
ICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0RXhjZXB0aW9u
VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3JsZFR5cGUpOwot
ICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZp
Z3VyZVY4VGVzdEV4Y2VwdGlvblRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3Js
ZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxk
VHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4
VGVzdEV4Y2VwdGlvbjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2Jvb2wgVjhUZXN0RXhjZXB0aW9uOjpIYXNJbnN0YW5jZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
V29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3Js
ZFR5cGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaAppbmRleCA2NjYzYTI1OGMyNmRmMWEyMzMy
NTM0ZTc4NGJkY2VhYzk4YjczOTRjLi45Y2Y4MzE5NTAyMGY2MGUwMjRiNjYwYjQ0ZDJiMGFlMzdi
MWU0MDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFY4VGVzdEV4Y2VwdGlvbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBI
YXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CisgICAgc3Rh
dGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSos
IFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsK
ICAgICBzdGF0aWMgVGVzdEV4Y2VwdGlvbiogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAppbmRleCAzZTIzM2Y3OTE4ZWM0
YmQ1OWUxNzIxYTAyZmZiYmQ0MjYwMWE1ZmFlLi5lMGY4Y2NhYjZlOTEzN2JkZGU2NDdhZGY1NTY1
N2U4YmY1YmMwYmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcApAQCAtMjM0LDcgKzIzNCw3IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsTm9kZUF0dHJHZXR0ZXJD
YWxsYmFjayh2ODo6TG9jYWw8djg6OlN0CiBzdGF0aWMgdm9pZCBzdXBwbGVtZW50YWxOb2RlQXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdEludGVyZmFj
ZSogaW1wID0gVjhUZXN0SW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBO
b2RlKiB2ID0gVjhOb2RlOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCkpID8g
VjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAw
OworICAgIE5vZGUqIHYgPSBWOE5vZGU6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xh
dGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CiAgICAgVGVzdFN1cHBsZW1l
bnRhbDo6c2V0U3VwcGxlbWVudGFsTm9kZShpbXAsIFdURjo6Z2V0UHRyKHYpKTsKICAgICByZXR1
cm47CiB9CkBAIC0yODAsNyArMjgwLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBz
dXBwbGVtZW50YWxNZXRob2QyTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB7CiAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdS
RVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPD4sIHN0ckFyZywgYXJnc1swXSk7Ci0gICAgVjhUUllD
QVRDSChUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMV0sIGFy
Z3MuR2V0SXNvbGF0ZSgpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChhcmdzWzFdKSkgOiAwKTsKKyAgICBWOFRSWUNBVENIKFRlc3RPYmoqLCBvYmpB
cmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1sxXSwgYXJncy5HZXRJc29sYXRlKCksIHdv
cmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMV0pKSA6IDApOwogICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAg
ICAgUmVmUHRyPFRlc3RPYmo+IHJlc3VsdCA9IFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRh
bE1ldGhvZDIoc2NyaXB0Q29udGV4dCwgaW1wLCBzdHJBcmcsIG9iakFyZywgZWMpOwogICAgIGlm
IChVTkxJS0VMWShlYykpCkBAIC00MzgsNyArNDM4LDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2
ODoKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N1cHBsZW1lbnRhbE1ldGhvZDInCiAgICAg
Y29uc3QgaW50IHN1cHBsZW1lbnRhbE1ldGhvZDJBcmdjID0gMjsKLSAgICB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBzdXBwbGVtZW50YWxNZXRob2QyQXJndltzdXBwbGVtZW50YWxN
ZXRob2QyQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8p
IH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3VwcGxlbWVudGFsTWV0
aG9kMkFyZ3Zbc3VwcGxlbWVudGFsTWV0aG9kMkFyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1w
bGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6
U2lnbmF0dXJlPiBzdXBwbGVtZW50YWxNZXRob2QyU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6
TmV3KGRlc2MsIHN1cHBsZW1lbnRhbE1ldGhvZDJBcmdjLCBzdXBwbGVtZW50YWxNZXRob2QyQXJn
dik7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAg
cHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN1cHBsZW1lbnRhbE1ldGhvZDIiKSwg
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxl
bWVudGFsTWV0aG9kMk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdXBwbGVtZW50YWxN
ZXRob2QyU2lnbmF0dXJlKSk7CkBAIC00NTYsMjAgKzQ1NiwyMCBAQCBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBs
YXRlKHY4Ogogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEludGVy
ZmFjZTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUg
d29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjpp
dGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlm
IChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVE
YXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29y
bGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFw
KHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRl
bXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAg
ICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1
cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRU
eXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5
cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRl
c3RJbnRlcmZhY2U6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCitib29sIFY4VGVzdEludGVyZmFjZTo6SGFzSW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldv
cmxkVHlwZSB3b3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRU
eXBlKTsKIH0KIAogQWN0aXZlRE9NT2JqZWN0KiBWOFRlc3RJbnRlcmZhY2U6OnRvQWN0aXZlRE9N
T2JqZWN0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCmlu
ZGV4IDViNzhiOGFjMzk2Y2JlOGM0ZTc3ODNhMmUyMjZhY2Q2MmZjYjI5YzEuLjA2MTk2Mjg2YzYx
MzNmYzY0MzVjYzA5ZmI3MmQ5NzQ3NjlhYjRjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKQEAgLTM1
LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0SW50ZXJmYWNlIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IHRy
dWU7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2
ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRl
KiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RJbnRlcmZhY2UqIHRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCAyOTFkZmNlNTk3YTFhMGQ2ZmMzOWM5
ZWM1MmYxNDIxNzA2MDg1NTQ0Li5kMTQ3YzdiZmU0YTM2NDcxYjk4NDZkNjViZTUyYTBjNGFhNTZl
ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBA
IC0xMTUsMjAgKzExNSwyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZQogdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6Okdl
dFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlw
ZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0
ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVt
cGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSku
ZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5
cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5k
bGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3JsZFR5cGUp
OwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENv
bmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJUZW1wbGF0ZShkYXRhLT5yYXdUZW1w
bGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50
ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1w
bDsKIH0KIAotYm9vbCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpIYXNJbnN0YW5jZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorYm9vbCBW
OFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxk
VHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFz
SW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOwogfQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCmluZGV4IDRlMzY2Y2Rm
NTUxZjE2MTYwZjZkMWM3NjhlYjQxNDU5OWE3YzRjYWMuLjMwYjVkZTA0ZDY5ZmRjMjg0ZTI3ODJj
N2E3ODc3OTNjYjk1OTE3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9v
bCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIEhhc0luc3Rh
bmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgYm9v
bCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBl
cldvcmxkVHlwZSk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0
YXRpYyBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3Bw
CmluZGV4IDExYWM5Y2Y1YjVjN2E3ZmU2OTZiOTYzYjc3MTlkMjVhM2NhYTdiNzguLjFlY2M0NGI3
ZTE0ZjU2ZGZkYjYxZjk3YzE3MDc4M2Q0Y2ZjYWRhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5jcHAKQEAgLTE0NiwyMCArMTQ2LDIwIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRl
bXBsCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TmFtZWRDb25z
dHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5
cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFw
OjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAg
IGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xh
dGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAg
ICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdE5hbWVkQ29u
c3RydWN0b3JUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxk
VHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAg
ICAgQ29uZmlndXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBs
YXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRl
bXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBs
OwogfQogCi1ib29sIFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6Okhhc0luc3RhbmNlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitib29sIFY4VGVzdE5h
bWVkQ29uc3RydWN0b3I6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwg
djg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewotICAg
IHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5m
bywgdmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5o
YXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CiB9CiAKIEFjdGl2ZURPTU9iamVj
dCogVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6dG9BY3RpdmVET01PYmplY3Qodjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaAppbmRleCBh
MTlkYmM2NmNlY2U0YzRlOGM1M2RmYTI0ZGFmNzY0NTg3MDhiNTQwLi4zOTQzNjRhNTdkYmNkYmMx
MmViNjI1OGU4Njg0MzE0ODNlNDFlYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9y
LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogY2xhc3MgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rv
ciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUg
PSB0cnVlOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
Piwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNv
bGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0TmFtZWRDb25zdHJ1Y3Rv
ciogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUu
Y3BwCmluZGV4IDIyNmIzNDQzOWZlNjZmZTU4MzBhZTI3MzVmZjIzZjk0MWU1ZWM0ZTcuLmYzN2Y2
NjdhMjIwYmNhMGZkYzU2ZDFmMGFhNjNhZTg1ODllNThlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKQEAgLTEx
MywyMCArMTEzLDIwIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gQ29uZmlndXJlVjhUZXN0Tm9kZVRlbXBsYXRlKHY4OjpQZXJzCiB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0Tm9kZTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUq
IGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0
ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVy
SXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0
ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAo
KS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVz
dWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAo
cmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJl
dHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwog
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAg
IENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlz
b2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRl
bXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0Tm9kZVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBs
YXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRl
bXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBs
OwogfQogCi1ib29sIFY4VGVzdE5vZGU6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitib29sIFY4VGVzdE5vZGU6Okhhc0luc3Rh
bmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdy
YXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOworICAgIHJldHVybiBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUs
IHdvcmxkVHlwZSk7CiB9CiAKIEV2ZW50VGFyZ2V0KiBWOFRlc3ROb2RlOjp0b0V2ZW50VGFyZ2V0
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmgKaW5kZXggOTc4NjAzNzYzMDU5
OGYwNmI3ZjdmNjc0ZWQzMDAzMjhjNWFjYWMyNi4uNTg2MGU5MTE1YzBiMDM0YmM1MWNhNTA5MzU2
NTc3ODBjYzNjYmE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFY4VGVzdE5vZGUgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29s
IGhhc0RlcGVuZGVudExpZmV0aW1lID0gdHJ1ZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJX
b3JsZFR5cGUpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0
aWMgVGVzdE5vZGUqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHAKaW5kZXggZTcyZDE2ZTA0OWM4YzExMTMzZDA5OGJmMzViM2U2NTFiMmMyYjk2
NC4uMDc4OTIxMGY5ZmM5NjQwNjZkZmZmM2Q2ODc1MWRkMWQyOGRhOWI4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAK
QEAgLTM3MCw3ICszNzAsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRlc3RPYmpB
dHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogc3RhdGljIHZvaWQg
dGVzdE9iakF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAg
IFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xh
dGUoKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qo
dmFsdWUpKSA6IDA7CisgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFs
dWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4
VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDog
MDsKICAgICBpbXAtPnNldFRlc3RPYmpBdHRyKFdURjo6Z2V0UHRyKHYpKTsKICAgICByZXR1cm47
CiB9CkBAIC0zOTUsNyArMzk1LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBYTUxP
YmpBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogc3RhdGljIHZv
aWQgWE1MT2JqQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0g
ICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNv
bGF0ZSgpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dCh2YWx1ZSkpIDogMDsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2
YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8g
VjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkg
OiAwOwogICAgIGltcC0+c2V0WE1MT2JqQXR0cihXVEY6OmdldFB0cih2KSk7CiAgICAgcmV0dXJu
OwogfQpAQCAtNjU5LDcgKzY1OSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdHlw
ZWRBcnJheUF0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpCiBzdGF0aWMg
dm9pZCB0eXBlZEFycmF5QXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7Ci0gICAgRmxvYXQzMkFycmF5KiB2ID0gVjhGbG9hdDMyQXJyYXk6Okhhc0luc3RhbmNlKHZh
bHVlLCBpbmZvLkdldElzb2xhdGUoKSkgPyBWOEZsb2F0MzJBcnJheTo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBGbG9hdDMyQXJyYXkqIHYg
PSBWOEZsb2F0MzJBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3
b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4RmxvYXQzMkFycmF5Ojp0b05hdGl2ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOwogICAgIGltcC0+c2V0VHlw
ZWRBcnJheUF0dHIoV1RGOjpnZXRQdHIodikpOwogICAgIHJldHVybjsKIH0KQEAgLTgzOCw3ICs4
MzgsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYQogc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOwotICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBp
bmZvLkdldElzb2xhdGUoKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFz
SW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29s
YXRlKCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dCh2YWx1ZSkpIDogMDsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0
ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGltcC0+c2V0V2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoc2NyaXB0Q29udGV4dCwgV1RGOjpnZXRQdHIodikpOwog
ICAgIHJldHVybjsKQEAgLTg3Myw3ICs4NzMsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFjayh2OAog
c3RhdGljIHZvaWQgd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpI
YXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCkpID8gVjhUZXN0T2JqOjp0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIFRlc3RPYmoq
IHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29y
bGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CiAgICAgU2NyaXB0U3RhdGUqIGN1cnJl
bnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CiAgICAgaWYgKCFjdXJyZW50U3RhdGUp
CiAgICAgICAgIHJldHVybjsKQEAgLTkwOCw3ICs5MDgsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0ckdl
dHRlcgogc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlz
ZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIFRlc3RPYmoq
IHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSkgPyBW
OFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6
IDA7CisgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8u
R2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4VGVzdE9iajo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwogICAgIGltcC0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1
dGVSYWlzZXMoc2NyaXB0Q29udGV4dCwgV1RGOjpnZXRQdHIodikpOwogICAgIHJldHVybjsKQEAg
LTkzOCw3ICs5MzgsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdAogc3RhdGljIHZvaWQgd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgVGVzdE9iaiogdiA9IFY4VGVzdE9i
ajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKSA/IFY4VGVzdE9iajo6dG9O
YXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBUZXN0
T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOwogICAgIFNjcmlwdFN0YXRlKiBj
dXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOwogICAgIGlmICghY3VycmVudFN0
YXRlKQogICAgICAgICByZXR1cm47CkBAIC05ODAsNyArOTgwLDcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlUmEKIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwotICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZv
LkdldElzb2xhdGUoKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5z
dGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRl
KCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2
YWx1ZSkpIDogMDsKICAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6
OmN1cnJlbnQoKTsKICAgICBpZiAoIWN1cnJlbnRTdGF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTAxNiw3ICsxMDE2LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0EKIHN0YXRpYyB2b2lkIHdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRl
QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBUZXN0T2JqKiB2
ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCkpID8gVjhU
ZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAw
OworICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdl
dElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRv
TmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CiAgICAgU2Ny
aXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CiAgICAgaWYg
KCFjdXJyZW50U3RhdGUpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFj
a0F0dHJpYnV0ZUF0dHJHZXR0ZXJDCiBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0QXJndW1lbnRzQW5k
Q2FsbFN0YWNrQXR0cmlidXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKLSAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5H
ZXRJc29sYXRlKCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3Rh
bmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgp
KSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFs
dWUpKSA6IDA7CiAgICAgaW1wLT5zZXRXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0
cmlidXRlKFdURjo6Z2V0UHRyKHYpKTsKICAgICByZXR1cm47CiB9CkBAIC0xMzk1LDcgKzEzOTUs
NyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG11dGFibGVQb2ludEF0dHJHZXR0ZXJD
YWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZwogc3RhdGljIHZvaWQgbXV0YWJsZVBvaW50QXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBSZWZQdHI8U1ZHUHJv
cGVydHlUZWFyT2ZmPEZsb2F0UG9pbnQ+ID4gdiA9IFY4U1ZHUG9pbnQ6Okhhc0luc3RhbmNlKHZh
bHVlLCBpbmZvLkdldElzb2xhdGUoKSkgPyBWOFNWR1BvaW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIFJlZlB0cjxTVkdQcm9wZXJ0eVRl
YXJPZmY8RmxvYXRQb2ludD4gPiB2ID0gVjhTVkdQb2ludDo6SGFzSW5zdGFuY2UodmFsdWUsIGlu
Zm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4U1ZHUG9p
bnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CiAg
ICAgaW1wLT5zZXRNdXRhYmxlUG9pbnQoV1RGOjpnZXRQdHIodikpOwogICAgIHJldHVybjsKIH0K
QEAgLTE0MTksNyArMTQxOSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW1tdXRh
YmxlUG9pbnRBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpCiBzdGF0aWMgdm9p
ZCBpbW11dGFibGVQb2ludEF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
Ci0gICAgUmVmUHRyPFNWR1Byb3BlcnR5VGVhck9mZjxGbG9hdFBvaW50PiA+IHYgPSBWOFNWR1Bv
aW50OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCkpID8gVjhTVkdQb2ludDo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBS
ZWZQdHI8U1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0UG9pbnQ+ID4gdiA9IFY4U1ZHUG9pbnQ6Okhh
c0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNv
bGF0ZSgpKSkgPyBWOFNWR1BvaW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KHZhbHVlKSkgOiAwOwogICAgIGltcC0+c2V0SW1tdXRhYmxlUG9pbnQoV1RGOjpnZXRQdHIo
dikpOwogICAgIHJldHVybjsKIH0KQEAgLTE1NzIsNyArMTU3Miw3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdm9pZE1ldGhvZFdpdGhBcmdzTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKICAgICBWOFRSWUNBVENIKGludCwgbG9uZ0FyZywgdG9JbnQzMihhcmdzWzBdKSk7
CiAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPD4s
IHN0ckFyZywgYXJnc1sxXSk7Ci0gICAgVjhUUllDQVRDSChUZXN0T2JqKiwgb2JqQXJnLCBWOFRl
c3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMl0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4VGVzdE9i
ajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzJdKSkgOiAwKTsK
KyAgICBWOFRSWUNBVENIKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2Uo
YXJnc1syXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkp
ID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3Nb
Ml0pKSA6IDApOwogICAgIGltcC0+dm9pZE1ldGhvZFdpdGhBcmdzKGxvbmdBcmcsIHN0ckFyZywg
b2JqQXJnKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTE2MDAsNyArMTYwMCw3
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbG9uZ01ldGhvZFdpdGhBcmdzTWV0aG9k
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBWOFRSWUNBVENIKGludCwgbG9uZ0FyZywg
dG9JbnQzMihhcmdzWzBdKSk7CiAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShW
OFN0cmluZ1Jlc291cmNlPD4sIHN0ckFyZywgYXJnc1sxXSk7Ci0gICAgVjhUUllDQVRDSChUZXN0
T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMl0sIGFyZ3MuR2V0SXNv
bGF0ZSgpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dChhcmdzWzJdKSkgOiAwKTsKKyAgICBWOFRSWUNBVENIKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVz
dE9iajo6SGFzSW5zdGFuY2UoYXJnc1syXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShh
cmdzLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KGFyZ3NbMl0pKSA6IDApOwogICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5s
b25nTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgc3RyQXJnLCBvYmpBcmcpLCBhcmdzLkdldElzb2xh
dGUoKSk7CiB9CiAKQEAgLTE2MjgsNyArMTYyOCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gb2JqTWV0aG9kV2l0aEFyZ3NNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwog
ICAgIFY4VFJZQ0FUQ0goaW50LCBsb25nQXJnLCB0b0ludDMyKGFyZ3NbMF0pKTsKICAgICBWOFRS
WUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyQXJnLCBh
cmdzWzFdKTsKLSAgICBWOFRSWUNBVENIKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFz
SW5zdGFuY2UoYXJnc1syXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhUZXN0T2JqOjp0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMl0pKSA6IDApOworICAgIFY4VFJZ
Q0FUQ0goVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzJdLCBh
cmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOFRlc3RP
Ymo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1syXSkpIDogMCk7
CiAgICAgcmV0dXJuIHRvVjgoaW1wLT5vYmpNZXRob2RXaXRoQXJncyhsb25nQXJnLCBzdHJBcmcs
IG9iakFyZyksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIApAQCAtMTY3
NCw3ICsxNjc0LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RUaGF0UmVx
dWlyZXNBbGxBcmdzQW5kVGhyb3dzTWV0aG9kKGNvbnN0IHY4OjoKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICB7CiAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0
cmluZ1Jlc291cmNlPD4sIHN0ckFyZywgYXJnc1swXSk7Ci0gICAgVjhUUllDQVRDSChUZXN0T2Jq
Kiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMV0sIGFyZ3MuR2V0SXNvbGF0
ZSgpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChh
cmdzWzFdKSkgOiAwKTsKKyAgICBWOFRSWUNBVENIKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9i
ajo6SGFzSW5zdGFuY2UoYXJnc1sxXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdz
LkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KGFyZ3NbMV0pKSA6IDApOwogICAgIFJlZlB0cjxUZXN0T2JqPiByZXN1bHQgPSBp
bXAtPm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3Moc3RyQXJnLCBvYmpBcmcsIGVj
KTsKICAgICBpZiAoVU5MSUtFTFkoZWMpKQogICAgICAgICBnb3RvIGZhaWw7CkBAIC0yMjQxLDcg
KzIyNDEsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2Qx
TWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PCAyKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdl
dElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKLSAgICBWOFRSWUNBVENIKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6
SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhUZXN0T2JqOjp0b05h
dGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOworICAgIFY4
VFJZQ0FUQ0goVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzBd
LCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOFRl
c3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDog
MCk7CiAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNl
PD4sIHN0ckFyZywgYXJnc1sxXSk7CiAgICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKG9iakFyZywg
c3RyQXJnKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKQEAgLTIyNTIsNyArMjI1Miw3IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDJNZXRob2QoY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAg
ICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwotICAgIFY4VFJZQ0FUQ0goVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5j
ZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CisgICAgVjhUUllDQVRDSChU
ZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0
SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4VGVzdE9iajo6dG9O
YXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKICAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8PSAxKSB7CiAgICAgICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChv
YmpBcmcpOwogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKQEAgLTIzMTksNyArMjMxOSw3
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDhNZXRob2Qo
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAg
ICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVy
KCkpOwotICAgIFY4VFJZQ0FUQ0goVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0
YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CisgICAgVjhUUllDQVRD
SChUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3Mu
R2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4VGVzdE9iajo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKICAg
ICBpbXAtPm92ZXJsb2FkZWRNZXRob2Qob2JqQXJnKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQo
KTsKIH0KQEAgLTIzNTYsOSArMjM1Niw5IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
b3ZlcmxvYWRlZE1ldGhvZDExTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZE1ldGhvZChjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIGlmICgoYXJncy5MZW5ndGgoKSA9PSAyICYmIChh
cmdzWzBdLT5Jc051bGwoKSB8fCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3Mu
R2V0SXNvbGF0ZSgpKSkgJiYgKGFyZ3NbMV0tPklzTnVsbCgpIHx8IGFyZ3NbMV0tPklzVW5kZWZp
bmVkKCkgfHwgYXJnc1sxXS0+SXNTdHJpbmcoKSB8fCBhcmdzWzFdLT5Jc09iamVjdCgpKSkpCisg
ICAgaWYgKChhcmdzLkxlbmd0aCgpID09IDIgJiYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8IFY4VGVz
dE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShh
cmdzLkdldElzb2xhdGUoKSkpKSAmJiAoYXJnc1sxXS0+SXNOdWxsKCkgfHwgYXJnc1sxXS0+SXNV
bmRlZmluZWQoKSB8fCBhcmdzWzFdLT5Jc1N0cmluZygpIHx8IGFyZ3NbMV0tPklzT2JqZWN0KCkp
KSkKICAgICAgICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRob2QxTWV0aG9kKGFyZ3MpOwotICAgIGlm
ICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIChhcmdzWzBdLT5Jc051bGwoKSB8fCBWOFRlc3RPYmo6
Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkpIHx8IChhcmdzLkxlbmd0
aCgpID09IDIgJiYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8IFY4VGVzdE9iajo6SGFzSW5zdGFuY2Uo
YXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpKSkpCisgICAgaWYgKChhcmdzLkxlbmd0aCgpID09
IDEgJiYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1sw
XSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKSkgfHwg
KGFyZ3MuTGVuZ3RoKCkgPT0gMiAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgVjhUZXN0T2JqOjpI
YXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0
SXNvbGF0ZSgpKSkpKSkKICAgICAgICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRob2QyTWV0aG9kKGFy
Z3MpOwogICAgIGlmICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIChhcmdzWzBdLT5Jc051bGwoKSB8
fCBhcmdzWzBdLT5Jc1VuZGVmaW5lZCgpIHx8IGFyZ3NbMF0tPklzU3RyaW5nKCkgfHwgYXJnc1sw
XS0+SXNPYmplY3QoKSkpKQogICAgICAgICByZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDNNZXRob2Qo
YXJncyk7CkBAIC0yMzY2LDExICsyMzY2LDExIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gb3ZlcmxvYWRlZE1ldGhvZE1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAg
ICAgICByZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDRNZXRob2QoYXJncyk7CiAgICAgaWYgKChhcmdz
Lkxlbmd0aCgpID09IDEgJiYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8IGFyZ3NbMF0tPklzRnVuY3Rp
b24oKSkpKQogICAgICAgICByZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDVNZXRob2QoYXJncyk7Ci0g
ICAgaWYgKChhcmdzLkxlbmd0aCgpID09IDEgJiYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8IFY4RE9N
U3RyaW5nTGlzdDo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpKSkpCisg
ICAgaWYgKChhcmdzLkxlbmd0aCgpID09IDEgJiYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8IFY4RE9N
U3RyaW5nTGlzdDo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxk
VHlwZShhcmdzLkdldElzb2xhdGUoKSkpKSkpCiAgICAgICAgIHJldHVybiBvdmVybG9hZGVkTWV0
aG9kNk1ldGhvZChhcmdzKTsKICAgICBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiAoYXJnc1sw
XS0+SXNOdWxsKCkgfHwgYXJnc1swXS0+SXNBcnJheSgpKSkpCiAgICAgICAgIHJldHVybiBvdmVy
bG9hZGVkTWV0aG9kN01ldGhvZChhcmdzKTsKLSAgICBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMSAm
JiAoVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpKSkK
KyAgICBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiAoVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShh
cmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkp
KSkKICAgICAgICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRob2Q4TWV0aG9kKGFyZ3MpOwogICAgIGlm
ICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIChhcmdzWzBdLT5Jc0FycmF5KCkpKSkKICAgICAgICAg
cmV0dXJuIG92ZXJsb2FkZWRNZXRob2Q5TWV0aG9kKGFyZ3MpOwpAQCAtMjYyMCw3ICsyNjIwLDcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0MU1ldGhvZChjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0
dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAg
VjhUUllDQVRDSChhKiwgdmFsdWUsIFY4YTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJ
c29sYXRlKCkpID8gVjhhOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFy
Z3NbMF0pKSA6IDApOworICAgIFY4VFJZQ0FUQ0goYSosIHZhbHVlLCBWOGE6Okhhc0luc3RhbmNl
KGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkp
KSA/IFY4YTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkg
OiAwKTsKICAgICBpbXAtPmNvbnZlcnQxKHZhbHVlKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQo
KTsKIH0KQEAgLTI2MzUsNyArMjYzNSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
Y29udmVydDJNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBpZiAoYXJncy5M
ZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIFY4VFJZQ0FUQ0goYiosIHZhbHVlLCBWOGI6Okhhc0lu
c3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4Yjo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAgICBWOFRSWUNBVENIKGIq
LCB2YWx1ZSwgVjhiOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29y
bGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOGI6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CiAgICAgaW1wLT5jb252ZXJ0Mih2YWx1ZSk7
CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0yNjUwLDcgKzI2NTAsNyBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnQ0TWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhy
b3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBWOFRSWUNB
VENIKGQqLCB2YWx1ZSwgVjhkOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUo
KSkgPyBWOGQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkp
IDogMCk7CisgICAgVjhUUllDQVRDSChkKiwgdmFsdWUsIFY4ZDo6SGFzSW5zdGFuY2UoYXJnc1sw
XSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhk
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOwog
ICAgIGltcC0+Y29udmVydDQodmFsdWUpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpA
QCAtMjY2NSw3ICsyNjY1LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0
NU1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIGlmIChhcmdzLkxlbmd0aCgp
IDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5H
ZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7Ci0gICAgVjhUUllDQVRDSChlKiwgdmFsdWUsIFY4ZTo6SGFzSW5zdGFuY2Uo
YXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOworICAgIFY4VFJZQ0FUQ0goZSosIHZhbHVl
LCBWOGU6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUo
YXJncy5HZXRJc29sYXRlKCkpKSA/IFY4ZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKICAgICBpbXAtPmNvbnZlcnQ1KHZhbHVlKTsKICAgICBy
ZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTI3NzAsMTAgKzI3NzAsMTAgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2YXJpYWRpY05vZGVNZXRob2RNZXRob2QoY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVy
biB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIFY4
VFJZQ0FUQ0goTm9kZSosIGhlYWQsIFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5H
ZXRJc29sYXRlKCkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KGFyZ3NbMF0pKSA6IDApOworICAgIFY4VFJZQ0FUQ0goTm9kZSosIGhlYWQsIFY4Tm9kZTo6
SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdl
dElzb2xhdGUoKSkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KGFyZ3NbMF0pKSA6IDApOwogICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiB0YWlsOwogICAg
IGZvciAoaW50IGkgPSAxOyBpIDwgYXJncy5MZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlmICgh
VjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzW2ldLCBhcmdzLkdldElzb2xhdGUoKSkpCisgICAgICAg
IGlmICghVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzW2ldLCBhcmdzLkdldElzb2xhdGUoKSwgd29y
bGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoMCwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgICAgICB0YWlsLmFwcGVuZChWOE5vZGU6
OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1tpXSkpKTsKICAgICB9
CkBAIC0zMDYyLDMxICszMDYyLDMxIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNpCiAKICAgICAv
LyBDdXN0b20gU2lnbmF0dXJlICd2b2lkTWV0aG9kV2l0aEFyZ3MnCiAgICAgY29uc3QgaW50IHZv
aWRNZXRob2RXaXRoQXJnc0FyZ2MgPSAzOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHZvaWRNZXRob2RXaXRoQXJnc0FyZ3Zbdm9pZE1ldGhvZFdpdGhBcmdzQXJnY10gPSB7
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBs
YXRlKCZWOFRlc3RPYmo6OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gdm9pZE1ldGhvZFdpdGhBcmdzQXJndlt2b2lkTWV0aG9kV2l0aEFyZ3NBcmdjXSA9IHsg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxh
dGUoJlY4VGVzdE9iajo6aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNp
Z25hdHVyZT4gdm9pZE1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3
KGRlc2MsIHZvaWRNZXRob2RXaXRoQXJnc0FyZ2MsIHZvaWRNZXRob2RXaXRoQXJnc0FyZ3YpOwog
ICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ2b2lkTWV0aG9kV2l0aEFyZ3Mi
KSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6dm9pZE1ldGhv
ZFdpdGhBcmdzTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHZvaWRNZXRob2RXaXRoQXJn
c1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnbG9uZ01ldGhvZFdpdGhB
cmdzJwogICAgIGNvbnN0IGludCBsb25nTWV0aG9kV2l0aEFyZ3NBcmdjID0gMzsKLSAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBsb25nTWV0aG9kV2l0aEFyZ3NBcmd2W2xvbmdN
ZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigp
LCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvKSB9OworICAgIHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGxvbmdNZXRob2RXaXRoQXJnc0FyZ3ZbbG9uZ01l
dGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCks
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxkVHlwZSkgfTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGxvbmdNZXRob2RXaXRoQXJnc1NpZ25hdHVy
ZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBsb25nTWV0aG9kV2l0aEFyZ3NBcmdjLCBsb25n
TWV0aG9kV2l0aEFyZ3NBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJv
bCgibG9uZ01ldGhvZFdpdGhBcmdzIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9i
alY4SW50ZXJuYWw6OmxvbmdNZXRob2RXaXRoQXJnc01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5l
ZCgpLCBsb25nTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWdu
YXR1cmUgJ29iak1ldGhvZFdpdGhBcmdzJwogICAgIGNvbnN0IGludCBvYmpNZXRob2RXaXRoQXJn
c0FyZ2MgPSAzOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG9iak1ldGhv
ZFdpdGhBcmdzQXJndltvYmpNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjpp
bmZvKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG9iak1ldGhvZFdp
dGhBcmdzQXJndltvYmpNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZv
LCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBvYmpNZXRob2RX
aXRoQXJnc1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBvYmpNZXRob2RXaXRo
QXJnc0FyZ2MsIG9iak1ldGhvZFdpdGhBcmdzQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3Ry
aW5nOjpOZXdTeW1ib2woIm9iak1ldGhvZFdpdGhBcmdzIiksIHY4OjpGdW5jdGlvblRlbXBsYXRl
OjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6Om9iak1ldGhvZFdpdGhBcmdzTWV0aG9kQ2FsbGJhY2ss
IHY4VW5kZWZpbmVkKCksIG9iak1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlKSk7CiAKICAgICAvLyBD
dXN0b20gU2lnbmF0dXJlICdtZXRob2RXaXRoU2VxdWVuY2VBcmcnCiAgICAgY29uc3QgaW50IG1l
dGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3ZbbWV0aG9kV2l0aFNlcXVlbmNlQXJn
QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZW
OHNlcXVlbmNlPFNjcmlwdFByb2ZpbGU+OjppbmZvKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3ZbbWV0aG9kV2l0aFNlcXVl
bmNlQXJnQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBs
YXRlKCZWOHNlcXVlbmNlPFNjcmlwdFByb2ZpbGU+OjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAg
djg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdTaWduYXR1cmUg
PSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnYywgbWV0
aG9kV2l0aFNlcXVlbmNlQXJnQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdT
eW1ib2woIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KFRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoU2VxdWVuY2VBcmdNZXRob2RDYWxsYmFjaywg
djhVbmRlZmluZWQoKSwgbWV0aG9kV2l0aFNlcXVlbmNlQXJnU2lnbmF0dXJlKSk7CiAKICAgICAv
LyBDdXN0b20gU2lnbmF0dXJlICdtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzJwog
ICAgIGNvbnN0IGludCBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJnYyA9IDI7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kVGhhdFJlcXVpcmVz
QWxsQXJnc0FuZFRocm93c0FyZ3ZbbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0Fy
Z2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvKSB9OworICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFy
Z3NBbmRUaHJvd3NBcmd2W21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjXSA9
IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbywgd29ybGRUeXBlKSB9
OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJn
c0FuZFRocm93c1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBtZXRob2RUaGF0
UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJnYywgbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0Fu
ZFRocm93c0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJtZXRo
b2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpO
ZXcoVGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NN
ZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0Fu
ZFRocm93c1NpZ25hdHVyZSkpOwogICAgIGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2wo
InN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIiksIHY4OjpGdW5jdGlvblRl
bXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0Fu
ZE9wdGlvbmFsQXJnTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpMb2NhbDx2ODo6
U2lnbmF0dXJlPigpKSk7CkBAIC0zMTA0LDQzICszMTA0LDQzIEBAIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6
OlBlcnNpCiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdzdHJpbmdBcnJheUZ1bmN0aW9uJwog
ICAgIGNvbnN0IGludCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Zbc3RyaW5nQXJy
YXlGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdU
ZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndltzdHJpbmdBcnJheUZ1bmN0aW9u
QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZW
OERPTVN0cmluZ1tdOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2ln
bmF0dXJlPiBzdHJpbmdBcnJheUZ1bmN0aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3
KGRlc2MsIHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjLCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndik7
CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN0cmluZ0FycmF5RnVuY3Rp
b24iKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5n
QXJyYXlGdW5jdGlvbk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdHJpbmdBcnJheUZ1
bmN0aW9uU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdkb21TdHJpbmdM
aXN0RnVuY3Rpb24nCiAgICAgY29uc3QgaW50IGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ2MgPSAx
OwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRvbVN0cmluZ0xpc3RGdW5j
dGlvbkFyZ3ZbZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ0xpc3Q6OmluZm8pIH07Cisg
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZG9tU3RyaW5nTGlzdEZ1bmN0aW9u
QXJndltkb21TdHJpbmdMaXN0RnVuY3Rpb25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nTGlzdDo6aW5mbywgd29ybGRUeXBl
KSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gZG9tU3RyaW5nTGlzdEZ1bmN0aW9u
U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGRvbVN0cmluZ0xpc3RGdW5jdGlv
bkFyZ2MsIGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0
cmluZzo6TmV3U3ltYm9sKCJkb21TdHJpbmdMaXN0RnVuY3Rpb24iKSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6ZG9tU3RyaW5nTGlzdEZ1bmN0aW9uTWV0aG9k
Q2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGRvbVN0cmluZ0xpc3RGdW5jdGlvblNpZ25hdHVyZSkp
OwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnY29udmVydDEnCiAgICAgY29uc3QgaW50IGNv
bnZlcnQxQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29u
dmVydDFBcmd2W2NvbnZlcnQxQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPnJhd1RlbXBsYXRlKCZWOGE6OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gY29udmVydDFBcmd2W2NvbnZlcnQxQXJnY10gPSB7IFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGE6OmluZm8sIHdvcmxkVHlwZSkgfTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZlcnQxU2lnbmF0dXJlID0gdjg6OlNp
Z25hdHVyZTo6TmV3KGRlc2MsIGNvbnZlcnQxQXJnYywgY29udmVydDFBcmd2KTsKICAgICBwcm90
by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY29udmVydDEiKSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVydDFNZXRob2RDYWxsYmFjaywgdjhV
bmRlZmluZWQoKSwgY29udmVydDFTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1
cmUgJ2NvbnZlcnQyJwogICAgIGNvbnN0IGludCBjb252ZXJ0MkFyZ2MgPSAxOwotICAgIHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQyQXJndltjb252ZXJ0MkFyZ2NdID0g
eyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhiOjppbmZv
KSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQyQXJndltj
b252ZXJ0MkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1w
bGF0ZSgmVjhiOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0
dXJlPiBjb252ZXJ0MlNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBjb252ZXJ0
MkFyZ2MsIGNvbnZlcnQyQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1i
b2woImNvbnZlcnQyIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJu
YWw6OmNvbnZlcnQyTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGNvbnZlcnQyU2lnbmF0
dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdjb252ZXJ0NCcKICAgICBjb25zdCBp
bnQgY29udmVydDRBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBjb252ZXJ0NEFyZ3ZbY29udmVydDRBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4ZDo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0NEFyZ3ZbY29udmVydDRBcmdjXSA9IHsgVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4ZDo6aW5mbywgd29ybGRUeXBl
KSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDRTaWduYXR1cmUgPSB2
ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgY29udmVydDRBcmdjLCBjb252ZXJ0NEFyZ3YpOwogICAg
IHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0NCIpLCB2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0NE1ldGhvZENhbGxiYWNr
LCB2OFVuZGVmaW5lZCgpLCBjb252ZXJ0NFNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNp
Z25hdHVyZSAnY29udmVydDUnCiAgICAgY29uc3QgaW50IGNvbnZlcnQ1QXJnYyA9IDE7Ci0gICAg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDVBcmd2W2NvbnZlcnQ1QXJn
Y10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGU6
OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDVB
cmd2W2NvbnZlcnQ1QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJh
d1RlbXBsYXRlKCZWOGU6OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpT
aWduYXR1cmU+IGNvbnZlcnQ1U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGNv
bnZlcnQ1QXJnYywgY29udmVydDVBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbCgiY29udmVydDUiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJ
bnRlcm5hbDo6Y29udmVydDVNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29udmVydDVT
aWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3ZhcmlhZGljTm9kZU1ldGhv
ZCcKICAgICBjb25zdCBpbnQgdmFyaWFkaWNOb2RlTWV0aG9kQXJnYyA9IDI7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdmFyaWFkaWNOb2RlTWV0aG9kQXJndlt2YXJpYWRp
Y05vZGVNZXRob2RBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3
VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbyksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSkt
PnJhd1RlbXBsYXRlKCZWOE5vZGU6OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gdmFyaWFkaWNOb2RlTWV0aG9kQXJndlt2YXJpYWRpY05vZGVNZXRob2RBcmdj
XSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9k
ZTo6aW5mbywgd29ybGRUeXBlKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3
VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6
OlNpZ25hdHVyZT4gdmFyaWFkaWNOb2RlTWV0aG9kU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6
TmV3KGRlc2MsIHZhcmlhZGljTm9kZU1ldGhvZEFyZ2MsIHZhcmlhZGljTm9kZU1ldGhvZEFyZ3Yp
OwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ2YXJpYWRpY05vZGVNZXRo
b2QiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6dmFyaWFk
aWNOb2RlTWV0aG9kTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHZhcmlhZGljTm9kZU1l
dGhvZFNpZ25hdHVyZSkpOwogICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVD
b25zdGFudHMoZGVzYywgcHJvdG8sIFY4VGVzdE9iakNvbnN0cywgV1RGX0FSUkFZX0xFTkdUSChW
OFRlc3RPYmpDb25zdHMpLCBpc29sYXRlKTsKQEAgLTMxNTMsMjAgKzMxNTMsMjAgQEAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpU
ZW1wbGF0ZSh2ODo6UGVyc2kKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBW
OFRlc3RPYmo6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRU
eXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1h
cDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAg
ICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29s
YXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFw
KHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0
ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAog
ICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RPYmpUZW1w
bGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAg
ZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJl
VjhUZXN0T2JqVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlz
b2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQo
JmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0T2JqOjpI
YXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQorYm9vbCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQog
ewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5j
ZSgmaW5mbywgdmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CiB9CiAKIHZvaWQgVjhU
ZXN0T2JqOjppbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBpbnN0YW5jZSwgVGVzdE9iaiogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKaW5k
ZXggYWZkZjc2N2ZiZWJjZmUzNTdmZTNlNmQxZjkzYzQ4MDcxYjJkOTA1ZC4uODc3YWMyNTBjNzRk
NGUxNjhjZDIxMDMzYmRjNDI5N2JhNDAyZjJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaApAQCAtMzQsNyArMzQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOFRlc3RPYmogewogcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0gICAgc3RhdGljIGJv
b2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOworICAg
IHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xh
dGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlw
ZSk7CiAgICAgc3RhdGljIFRlc3RPYmoqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
b2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcAppbmRleCAwZDgwNTk5YmQ5ZDM5NGZkYTAwODNmODFmOTFlYzNkY2ZiNGQzMjU0Li5lM2Iz
ZTQxMGYwOTgzZjk1NzhjZDE5MjA4YmUwNDA1YTQ4YWNkMTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiB2b2lkIFY4X1VTRShUKSB7IH0KIAogc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjb25zdHJ1Y3RvcjEoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBW
OFRSWUNBVENIKEFycmF5QnVmZmVyKiwgYXJyYXlCdWZmZXIsIFY4QXJyYXlCdWZmZXI6Okhhc0lu
c3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4QXJyYXlCdWZmZXI6OnRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CisgICAgVjhU
UllDQVRDSChBcnJheUJ1ZmZlciosIGFycmF5QnVmZmVyLCBWOEFycmF5QnVmZmVyOjpIYXNJbnN0
YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0
ZSgpKSkgPyBWOEFycmF5QnVmZmVyOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KGFyZ3NbMF0pKSA6IDApOwogCiAgICAgUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzPiBpbXBsID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShhcnJheUJ1ZmZl
cik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsK
QEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3Rv
cjEoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBjb25zdHJ1Y3RvcjIoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBWOFRS
WUNBVENIKEFycmF5QnVmZmVyVmlldyosIGFycmF5QnVmZmVyVmlldywgVjhBcnJheUJ1ZmZlclZp
ZXc6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4QXJyYXlCdWZm
ZXJWaWV3Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6
IDApOworICAgIFY4VFJZQ0FUQ0goQXJyYXlCdWZmZXJWaWV3KiwgYXJyYXlCdWZmZXJWaWV3LCBW
OEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhBcnJheUJ1ZmZlclZpZXc6OnRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CiAKICAgICBS
ZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6Y3JlYXRlKGFycmF5QnVmZmVyVmlldyk7CiAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvcjIoY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvcjMoY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBWOFRSWUNBVENIKEJsb2IqLCBibG9iLCBWOEJs
b2I6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4QmxvYjo6dG9O
YXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAgICBW
OFRSWUNBVENIKEJsb2IqLCBibG9iLCBWOEJsb2I6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3Mu
R2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4QmxvYjo6dG9O
YXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKIAogICAg
IFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpjcmVhdGUoYmxvYik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKQEAgLTEyMSwxMSArMTIxLDExIEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3I0KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IoY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKLSAgICBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiAoVjhBcnJh
eUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpKSkpCisgICAg
aWYgKChhcmdzLkxlbmd0aCgpID09IDEgJiYgKFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKGFy
Z3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkp
KQogICAgICAgICByZXR1cm4gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNWOEludGVybmFsOjpj
b25zdHJ1Y3RvcjEoYXJncyk7Ci0gICAgaWYgKChhcmdzLkxlbmd0aCgpID09IDEgJiYgKFY4QXJy
YXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpKSkK
KyAgICBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiAoVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0lu
c3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29s
YXRlKCkpKSkpKQogICAgICAgICByZXR1cm4gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNWOElu
dGVybmFsOjpjb25zdHJ1Y3RvcjIoYXJncyk7Ci0gICAgaWYgKChhcmdzLkxlbmd0aCgpID09IDEg
JiYgKFY4QmxvYjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpKSkpCisg
ICAgaWYgKChhcmdzLkxlbmd0aCgpID09IDEgJiYgKFY4QmxvYjo6SGFzSW5zdGFuY2UoYXJnc1sw
XSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKSkpCiAg
ICAgICAgIHJldHVybiBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Y4SW50ZXJuYWw6OmNvbnN0
cnVjdG9yMyhhcmdzKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA9PSAxKQogICAgICAgICByZXR1
cm4gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNWOEludGVybmFsOjpjb25zdHJ1Y3RvcjQoYXJn
cyk7CkBAIC0xNjcsMjAgKzE2NywyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rvcgogdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdv
cmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAo
cmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0
YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxk
VHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4
OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3Js
ZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAg
ICAgIENvbmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUZW1wbGF0ZShkYXRhLT5y
YXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBk
YXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVy
biB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQor
Ym9vbCBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IHdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOwog
fQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCmluZGV4IGFl
NTIxMDEyZDg5Y2I3ZjllYzBkNWIwMjRjOWQ1YWVmMTBkZTc0NDAuLjMwODY4OWIzNDhmMzRhYTFj
YWQ1YzNhNTllOTg1MjQxYWIzYjljNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIEhh
c0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0
aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwg
V3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwog
ICAgIHN0YXRpYyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9OYXRpdmUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCA3MGRmY2E3YjI5YmJkNjNi
YzU1M2IyMzg2MzViZGYxMTE3MmE0NjU3Li44ZTVjN2M0NWZkOTVkY2Q1NTA3Yzk1NWFlYmM3YmI2
N2NhMDY3N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMzMyLDIwICszMzIsMjAgQEAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWUKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRh
KiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xh
dGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAo
KS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5k
KCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9
IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3Vs
dCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4g
cmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25m
aWd1cmVWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VUZW1wbGF0ZShkYXRhLT5y
YXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxh
dGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8s
IHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJv
b2wgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpIYXNJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorYm9vbCBWOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUg
d29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CiB9
CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5oCmluZGV4IDBhNWZhM2YyMjQzNWI2OWE0MDdiNzNjOTk3MWU3YjUzNmUxODEwMjYuLjUw
ZGNiZjE2MWY5YTAyZDVmODc3NWI5N2RjMjI4N2RiNDdjZDYzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKQEAgLTM1LDcgKzM1
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRl
bnRMaWZldGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7
CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNwcAppbmRleCBlNjc3ZWJjOTU4MWMw
YjNkNWMzMmU5NDgwYWNmNTg3M2ZmOTU2MDYzLi5jN2RiNDc5MDg3OGIwMTgzMDU0MWI5NWJiOWIw
YTM1ZjllNmIxNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGZ1bmNNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKICAgICAgICAgaW1wLT5mdW5jKCk7CiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOwogICAgIH0KLSAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDAgJiYgIWlzVW5kZWZpbmVkT3JO
dWxsKGFyZ3NbMF0pICYmICFWOGxvbmdbXTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJ
c29sYXRlKCkpKQorICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMCAmJiAhaXNVbmRlZmluZWRPck51
bGwoYXJnc1swXSkgJiYgIVY4bG9uZ1tdOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElz
b2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVjhUUllDQVRDSChWZWN0
b3I8aW50PiwgeCwgdG9OYXRpdmVBcnJheTxpbnQ+KGFyZ3NbMF0pKTsKICAgICBpbXAtPmZ1bmMo
eCk7CkBAIC01NTEsMjUgKzU1MSwyNSBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUodjg6OgogCiAgICAg
Ly8gQ3VzdG9tIFNpZ25hdHVyZSAnbWV0aG9kV2l0aFNlcXVlbmNlQXJnJwogICAgIGNvbnN0IGlu
dCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2W21ldGhvZFdpdGhTZXF1ZW5j
ZUFyZ0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0
ZSgmVjhzZXF1ZW5jZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+OjppbmZvKSB9OworICAgIHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3ZbbWV0
aG9kV2l0aFNlcXVlbmNlQXJnQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPnJhd1RlbXBsYXRlKCZWOHNlcXVlbmNlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT46OmluZm8s
IHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG1ldGhvZFdpdGhT
ZXF1ZW5jZUFyZ1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBtZXRob2RXaXRo
U2VxdWVuY2VBcmdBcmdjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2KTsKICAgICBwcm90by0+
U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibWV0aG9kV2l0aFNlcXVlbmNlQXJnIiksIHY4OjpG
dW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6bWV0aG9kV2l0aFNl
cXVlbmNlQXJnTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIG1ldGhvZFdpdGhTZXF1ZW5j
ZUFyZ1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnbnVsbGFibGVBcnJh
eUFyZycKICAgICBjb25zdCBpbnQgbnVsbGFibGVBcnJheUFyZ0FyZ2MgPSAxOwotICAgIHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG51bGxhYmxlQXJyYXlBcmdBcmd2W251bGxhYmxl
QXJyYXlBcmdBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVt
cGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gbnVsbGFibGVBcnJheUFyZ0FyZ3ZbbnVsbGFibGVBcnJheUFyZ0FyZ2NdID0g
eyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJp
bmdbXTo6aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4g
bnVsbGFibGVBcnJheUFyZ1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBudWxs
YWJsZUFycmF5QXJnQXJnYywgbnVsbGFibGVBcnJheUFyZ0FyZ3YpOwogICAgIHByb3RvLT5TZXQo
djg6OlN0cmluZzo6TmV3U3ltYm9sKCJudWxsYWJsZUFycmF5QXJnIiksIHY4OjpGdW5jdGlvblRl
bXBsYXRlOjpOZXcoVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6bnVsbGFibGVBcnJheUFyZ01ldGhv
ZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBudWxsYWJsZUFycmF5QXJnU2lnbmF0dXJlKSk7CiAK
ICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdzdHJpbmdBcnJheUZ1bmN0aW9uJwogICAgIGNvbnN0
IGludCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlv
bkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgm
VjhET01TdHJpbmdbXTo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndltzdHJpbmdBcnJheUZ1bmN0aW9uQXJnY10gPSB7
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmlu
Z1tdOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBz
dHJpbmdBcnJheUZ1bmN0aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIHN0
cmluZ0FycmF5RnVuY3Rpb25BcmdjLCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndik7CiAgICAgcHJv
dG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN0cmluZ0FycmF5RnVuY3Rpb24iKSwgdjg6
OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBcnJh
eUZ1bmN0aW9uTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHN0cmluZ0FycmF5RnVuY3Rp
b25TaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N0cmluZ0FycmF5RnVu
Y3Rpb24yJwogICAgIGNvbnN0IGludCBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ2MgPSAxOwotICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5RnVuY3Rpb24yQXJn
dltzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbykgfTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ3Zbc3RyaW5n
QXJyYXlGdW5jdGlvbjJBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6
SGFuZGxlPHY4OjpTaWduYXR1cmU+IHN0cmluZ0FycmF5RnVuY3Rpb24yU2lnbmF0dXJlID0gdjg6
OlNpZ25hdHVyZTo6TmV3KGRlc2MsIHN0cmluZ0FycmF5RnVuY3Rpb24yQXJnYywgc3RyaW5nQXJy
YXlGdW5jdGlvbjJBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgi
c3RyaW5nQXJyYXlGdW5jdGlvbjIiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0VHlw
ZWRlZnNWOEludGVybmFsOjpzdHJpbmdBcnJheUZ1bmN0aW9uMk1ldGhvZENhbGxiYWNrLCB2OFVu
ZGVmaW5lZCgpLCBzdHJpbmdBcnJheUZ1bmN0aW9uMlNpZ25hdHVyZSkpOwogCkBAIC01ODEsMjAg
KzU4MSwyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUodjg6Ogogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IFY4VGVzdFR5cGVkZWZzOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRl
RGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJ
c29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRl
TWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgp
LmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1
bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChy
ZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0
dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAg
Q29uZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyks
IGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8s
IHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0ZShkYXRhLT5y
YXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBk
YXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVy
biB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RUeXBlZGVmczo6SGFzSW5zdGFuY2Uodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2Jvb2wgVjhUZXN0VHlw
ZWRlZnM6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewotICAgIHJldHVybiBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUp
OworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5j
ZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuaAppbmRleCAx
NGRiMWU1NWQ5ODI4N2EwZTdkY2UwNzQyYzNhMThjNTVhYjczOTdiLi5lZTllYzJmNGU0MGYxNzFh
ODUxMWI1M2EyNmUwYzY2ZWZjN2RhMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuaApAQCAtMzQsNyArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOFRlc3RUeXBlZGVmcyB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAg
ICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29s
YXRlKik7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+
LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFw
cGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdFR5cGVkZWZzKiB0b05hdGl2ZSh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RpY3Rpb25hcnkuY3BwCmluZGV4IGIzYjcwMjJhMDkzNTc0MDg2YjhjYWZlM2I5YjQ5OTVlZjlm
NDQxZWQuLmJmM2MxZTMzYmUyZmJmNjQyZjcyY2FjOGE2OGE3OGE1YzIyNzc1ZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwCkBAIC0yNzksNyArMjc5LDcgQEAg
Ym9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxTdG9yYWdlPiYg
dmFsdWUpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHZhbHVlID0gMDsKLSAg
ICBpZiAoVjhTdG9yYWdlOjpIYXNJbnN0YW5jZSh2OFZhbHVlLCBtX2lzb2xhdGUpKQorICAgIGlm
IChWOFN0b3JhZ2U6Okhhc0luc3RhbmNlKHY4VmFsdWUsIG1faXNvbGF0ZSwgd29ybGRUeXBlKG1f
aXNvbGF0ZSkpKQogICAgICAgICB2YWx1ZSA9IFY4U3RvcmFnZTo6dG9OYXRpdmUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OFZhbHVlKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0z
MzcsNyArMzM3LDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJl
ZlB0cjxVaW50OEFycmF5PiYgdmFsdWUpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIHZhbHVlID0gMDsKLSAgICBpZiAoVjhVaW50OEFycmF5OjpIYXNJbnN0YW5jZSh2OFZhbHVl
LCBtX2lzb2xhdGUpKQorICAgIGlmIChWOFVpbnQ4QXJyYXk6Okhhc0luc3RhbmNlKHY4VmFsdWUs
IG1faXNvbGF0ZSwgd29ybGRUeXBlKG1faXNvbGF0ZSkpKQogICAgICAgICB2YWx1ZSA9IFY4VWlu
dDhBcnJheTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OFZhbHVlKSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zNTAsNyArMzUwLDcgQEAgYm9vbCBEaWN0aW9uYXJ5
OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxNZWRpYUtleUVycm9yPiYgdmFsdWUpIGNv
bnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHZhbHVlID0gMDsKLSAgICBpZiAoVjhN
ZWRpYUtleUVycm9yOjpIYXNJbnN0YW5jZSh2OFZhbHVlLCBtX2lzb2xhdGUpKQorICAgIGlmIChW
OE1lZGlhS2V5RXJyb3I6Okhhc0luc3RhbmNlKHY4VmFsdWUsIG1faXNvbGF0ZSwgd29ybGRUeXBl
KG1faXNvbGF0ZSkpKQogICAgICAgICB2YWx1ZSA9IFY4TWVkaWFLZXlFcnJvcjo6dG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OFZhbHVlKSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0zODYsNyArMzg2LDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5n
JiBrZXksIFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYgdmFsdWUpIGMKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgdmFsdWUgPSAwOwotICAgIGlmIChWOFNwZWVjaFJlY29nbml0
aW9uRXJyb3I6Okhhc0luc3RhbmNlKHY4VmFsdWUsIG1faXNvbGF0ZSkpCisgICAgaWYgKFY4U3Bl
ZWNoUmVjb2duaXRpb25FcnJvcjo6SGFzSW5zdGFuY2UodjhWYWx1ZSwgbV9pc29sYXRlLCB3b3Js
ZFR5cGUobV9pc29sYXRlKSkpCiAgICAgICAgIHZhbHVlID0gVjhTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4VmFsdWUpKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM5OCw3ICszOTgsNyBAQCBib29sIERpY3Rpb25hcnk6Omdl
dChjb25zdCBTdHJpbmcmIGtleSwgUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0PiYgdmFs
dWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHZhbHVlID0gMDsKLSAgICBpZiAoVjhT
cGVlY2hSZWNvZ25pdGlvblJlc3VsdDo6SGFzSW5zdGFuY2UodjhWYWx1ZSwgbV9pc29sYXRlKSkK
KyAgICBpZiAoVjhTcGVlY2hSZWNvZ25pdGlvblJlc3VsdDo6SGFzSW5zdGFuY2UodjhWYWx1ZSwg
bV9pc29sYXRlLCB3b3JsZFR5cGUobV9pc29sYXRlKSkpCiAgICAgICAgIHZhbHVlID0gVjhTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dCh2OFZhbHVlKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC00MTAsNyArNDEwLDcgQEAgYm9v
bCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0cjxTcGVlY2hSZWNvZ25p
dGlvblJlc3VsdExpc3Q+JiB2YWwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdmFsdWUg
PSAwOwotICAgIGlmIChWOFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdDo6SGFzSW5zdGFuY2Uo
djhWYWx1ZSwgbV9pc29sYXRlKSkKKyAgICBpZiAoVjhTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExp
c3Q6Okhhc0luc3RhbmNlKHY4VmFsdWUsIG1faXNvbGF0ZSwgd29ybGRUeXBlKG1faXNvbGF0ZSkp
KQogICAgICAgICB2YWx1ZSA9IFY4U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0Ojp0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4VmFsdWUpKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTQyNSw3ICs0MjUsNyBAQCBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJp
bmcmIGtleSwgUmVmUHRyPE1lZGlhU3RyZWFtPiYgdmFsdWUpIGNvbnN0CiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIHZhbHVlID0gMDsKLSAgICBpZiAoVjhNZWRpYVN0cmVhbTo6SGFzSW5z
dGFuY2UodjhWYWx1ZSwgbV9pc29sYXRlKSkKKyAgICBpZiAoVjhNZWRpYVN0cmVhbTo6SGFzSW5z
dGFuY2UodjhWYWx1ZSwgbV9pc29sYXRlLCB3b3JsZFR5cGUobV9pc29sYXRlKSkpCiAgICAgICAg
IHZhbHVlID0gVjhNZWRpYVN0cmVhbTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdCh2OFZhbHVlKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAKaW5kZXggNDk5MTBlYWNjZmE3NzExMjY4OTFj
MGE3YzAwNTA4ODAxNTUzMTA1YS4uNTQyMjdmNTQyNGY2YjYwY2NlODI1Y2QzMDA3ODViZmI4ZDgx
MTczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmls
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNw
cApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgU2NyaXB0UHJvZmlsZXI6OnZpc2l0Tm9kZVdyYXBw
ZXJzKFdyYXBwZWROb2RlVmlzaXRvciogdmlzaXRvcikKICAgICAgICAgICAgIGlmIChjbGFzc0lk
ICE9IHY4RE9NTm9kZUNsYXNzSWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgVU5VU0VEX1BBUkFNKG1faXNvbGF0ZSk7Ci0gICAgICAgICAgICBBU1NFUlQoVjhOb2RlOjpI
YXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlKSk7CisgICAgICAgICAgICBBU1NFUlQoVjhOb2Rl
OjpIYXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlLCB3b3JsZFR5cGUobV9pc29sYXRlKSkpOwog
ICAgICAgICAgICAgQVNTRVJUKHZhbHVlLT5Jc09iamVjdCgpKTsKICAgICAgICAgICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
Pjo6Q2FzdCh2YWx1ZSk7CiAgICAgICAgICAgICBtX3Zpc2l0b3ItPnZpc2l0Tm9kZShWOE5vZGU6
OnRvTmF0aXZlKHdyYXBwZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGE5ZjJmZmE5NzZkODg3NTAxNDg5ZTAw
MjdkMmQ0MDdiYzEwMmU4M2MuLmE4YTA0ZWI0Y2VjYjk5MDFmZGJmZmEyZTRkZmFkMGMzMWYxM2Ex
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcApAQCAtMTI1MSw2ICsxMjUxLDcgQEAgU2VyaWFsaXplcjo6U3RhdGVCYXNl
KiBTZXJpYWxpemVyOjpkb1NlcmlhbGl6ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIFN0
YXQKICAgICBtX3dyaXRlci53cml0ZVJlZmVyZW5jZUNvdW50KG1fbmV4dE9iamVjdFJlZmVyZW5j
ZSk7CiAgICAgdWludDMyX3Qgb2JqZWN0UmVmZXJlbmNlOwogICAgIHVpbnQzMl90IGFycmF5QnVm
ZmVySW5kZXg7CisgICAgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlID0gd29ybGRU
eXBlKG1faXNvbGF0ZSk7CiAgICAgaWYgKCh2YWx1ZS0+SXNPYmplY3QoKSB8fCB2YWx1ZS0+SXNE
YXRlKCkgfHwgdmFsdWUtPklzUmVnRXhwKCkpCiAgICAgICAgICYmIG1fb2JqZWN0UG9vbC50cnlH
ZXQodmFsdWUuQXM8djg6Ok9iamVjdD4oKSwgJm9iamVjdFJlZmVyZW5jZSkpIHsKICAgICAgICAg
Ly8gTm90ZSB0aGF0IElzT2JqZWN0KCkgYWxzbyBkZXRlY3RzIHdyYXBwZXJzIChlZywgaXQgd2ls
bCBjYXRjaCB0aGUgdGhpbmdzCkBAIC0xMjczLDE3ICsxMjc0LDE3IEBAIFNlcmlhbGl6ZXI6OlN0
YXRlQmFzZSogU2VyaWFsaXplcjo6ZG9TZXJpYWxpemUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlLCBTdGF0CiAgICAgICAgIG1fd3JpdGVyLndyaXRlVWludDMyKHZhbHVlLT5VaW50MzJWYWx1
ZSgpKTsKICAgICBlbHNlIGlmICh2YWx1ZS0+SXNOdW1iZXIoKSkKICAgICAgICAgbV93cml0ZXIu
d3JpdGVOdW1iZXIodmFsdWUuQXM8djg6Ok51bWJlcj4oKS0+VmFsdWUoKSk7Ci0gICAgZWxzZSBp
ZiAoVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKHZhbHVlLCBtX2lzb2xhdGUpKQorICAg
IGVsc2UgaWYgKFY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRl
LCBjdXJyZW50V29ybGRUeXBlKSkKICAgICAgICAgcmV0dXJuIHdyaXRlQW5kR3JleUFycmF5QnVm
ZmVyVmlldyh2YWx1ZS5Bczx2ODo6T2JqZWN0PigpLCBuZXh0KTsKICAgICBlbHNlIGlmICh2YWx1
ZS0+SXNTdHJpbmcoKSkKICAgICAgICAgd3JpdGVTdHJpbmcodmFsdWUpOwotICAgIGVsc2UgaWYg
KFY4TWVzc2FnZVBvcnQ6Okhhc0luc3RhbmNlKHZhbHVlLCBtX2lzb2xhdGUpKSB7CisgICAgZWxz
ZSBpZiAoVjhNZXNzYWdlUG9ydDo6SGFzSW5zdGFuY2UodmFsdWUsIG1faXNvbGF0ZSwgY3VycmVu
dFdvcmxkVHlwZSkpIHsKICAgICAgICAgdWludDMyX3QgbWVzc2FnZVBvcnRJbmRleDsKICAgICAg
ICAgaWYgKG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHMudHJ5R2V0KHZhbHVlLkFzPHY4OjpPYmpl
Y3Q+KCksICZtZXNzYWdlUG9ydEluZGV4KSkKICAgICAgICAgICAgICAgICBtX3dyaXRlci53cml0
ZVRyYW5zZmVycmVkTWVzc2FnZVBvcnQobWVzc2FnZVBvcnRJbmRleCk7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUVycm9yKERhdGFDbG9uZUVycm9yLCBu
ZXh0KTsKLSAgICB9IGVsc2UgaWYgKFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKHZhbHVlLCBt
X2lzb2xhdGUpICYmIG1fdHJhbnNmZXJyZWRBcnJheUJ1ZmZlcnMudHJ5R2V0KHZhbHVlLkFzPHY4
OjpPYmplY3Q+KCksICZhcnJheUJ1ZmZlckluZGV4KSkKKyAgICB9IGVsc2UgaWYgKFY4QXJyYXlC
dWZmZXI6Okhhc0luc3RhbmNlKHZhbHVlLCBtX2lzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpICYm
IG1fdHJhbnNmZXJyZWRBcnJheUJ1ZmZlcnMudHJ5R2V0KHZhbHVlLkFzPHY4OjpPYmplY3Q+KCks
ICZhcnJheUJ1ZmZlckluZGV4KSkKICAgICAgICAgcmV0dXJuIHdyaXRlVHJhbnNmZXJyZWRBcnJh
eUJ1ZmZlcih2YWx1ZSwgYXJyYXlCdWZmZXJJbmRleCwgbmV4dCk7CiAgICAgZWxzZSB7CiAgICAg
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4ganNPYmplY3QgPSB2YWx1ZS5Bczx2ODo6T2JqZWN0
PigpOwpAQCAtMTMwMCwyMSArMTMwMSwyMSBAQCBTZXJpYWxpemVyOjpTdGF0ZUJhc2UqIFNlcmlh
bGl6ZXI6OmRvU2VyaWFsaXplKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgU3RhdAogICAg
ICAgICAgICAgd3JpdGVCb29sZWFuT2JqZWN0KHZhbHVlKTsKICAgICAgICAgZWxzZSBpZiAodmFs
dWUtPklzQXJyYXkoKSkgewogICAgICAgICAgICAgcmV0dXJuIHN0YXJ0QXJyYXlTdGF0ZSh2YWx1
ZS5Bczx2ODo6QXJyYXk+KCksIG5leHQpOwotICAgICAgICB9IGVsc2UgaWYgKFY4RmlsZTo6SGFz
SW5zdGFuY2UodmFsdWUsIG1faXNvbGF0ZSkpCisgICAgICAgIH0gZWxzZSBpZiAoVjhGaWxlOjpI
YXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKSkKICAgICAgICAg
ICAgIHdyaXRlRmlsZSh2YWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKFY4QmxvYjo6SGFzSW5zdGFu
Y2UodmFsdWUsIG1faXNvbGF0ZSkpCisgICAgICAgIGVsc2UgaWYgKFY4QmxvYjo6SGFzSW5zdGFu
Y2UodmFsdWUsIG1faXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpCiAgICAgICAgICAgICB3cml0
ZUJsb2IodmFsdWUpOwogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICAgICAgZWxzZSBpZiAo
VjhET01GaWxlU3lzdGVtOjpIYXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlKSkKKyAgICAgICAg
ZWxzZSBpZiAoVjhET01GaWxlU3lzdGVtOjpIYXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlLCBj
dXJyZW50V29ybGRUeXBlKSkKICAgICAgICAgICAgIHJldHVybiB3cml0ZURPTUZpbGVTeXN0ZW0o
dmFsdWUsIG5leHQpOwogI2VuZGlmCi0gICAgICAgIGVsc2UgaWYgKFY4RmlsZUxpc3Q6Okhhc0lu
c3RhbmNlKHZhbHVlLCBtX2lzb2xhdGUpKQorICAgICAgICBlbHNlIGlmIChWOEZpbGVMaXN0OjpI
YXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKSkKICAgICAgICAg
ICAgIHdyaXRlRmlsZUxpc3QodmFsdWUpOwotICAgICAgICBlbHNlIGlmIChWOEltYWdlRGF0YTo6
SGFzSW5zdGFuY2UodmFsdWUsIG1faXNvbGF0ZSkpCisgICAgICAgIGVsc2UgaWYgKFY4SW1hZ2VE
YXRhOjpIYXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKSkKICAg
ICAgICAgICAgIHdyaXRlSW1hZ2VEYXRhKHZhbHVlKTsKICAgICAgICAgZWxzZSBpZiAodmFsdWUt
PklzUmVnRXhwKCkpCiAgICAgICAgICAgICB3cml0ZVJlZ0V4cCh2YWx1ZSk7Ci0gICAgICAgIGVs
c2UgaWYgKFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKHZhbHVlLCBtX2lzb2xhdGUpKQorICAg
ICAgICBlbHNlIGlmIChWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRl
LCBjdXJyZW50V29ybGRUeXBlKSkKICAgICAgICAgICAgIHJldHVybiB3cml0ZUFycmF5QnVmZmVy
KHZhbHVlLCBuZXh0KTsKICAgICAgICAgZWxzZSBpZiAodmFsdWUtPklzT2JqZWN0KCkpIHsKICAg
ICAgICAgICAgIGlmIChpc0hvc3RPYmplY3QoanNPYmplY3QpIHx8IGpzT2JqZWN0LT5Jc0NhbGxh
YmxlKCkgfHwgdmFsdWUtPklzTmF0aXZlRXJyb3IoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcAppbmRleCA2YmM4MDNhNDE3ZGVhMDhmY2Rm
ODgzNWQ1YmJlMjU5ZmIzMzNlMTgxLi5jOTdiNTkzYjg0NjMzZGQzZjM0MTEwYmYxMmI2NjcwNGZh
ODVhMmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFkYXB0b3JG
dW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVu
Y3Rpb24uY3BwCkBAIC00NCwxMiArNDQsMTIgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IFY4QWRhcHRvckZ1bmN0aW9uOjpnZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSoKIHsK
ICAgICBBU1NFUlQoaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxh
dGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5m
byk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAg
IFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5y
YXdUZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+cmF3VGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdC0+dmFsdWU7CiAgICAgLy8gVGhlIGxpZmV0aW1lIGlzIG9mIG5ld1RlbXBsYXRlIGlzIGRl
bGVnYXRlZCB0byB0aGUgVGVtcGxhdGVNYXAgdGh1cyB0aGlzIHdvbid0IGJlIGxlYWtlZC4KICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbmV3VGVtcGxhdGUgPSB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KCkpOwotICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuYWRkKCZpbmZv
LCBjb25maWd1cmVUZW1wbGF0ZShuZXdUZW1wbGF0ZSkpOworICAgIGRhdGEtPnJhd1RlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCBjb25maWd1cmVUZW1wbGF0ZShuZXdUZW1wbGF0ZSkp
OwogICAgIHJldHVybiBuZXdUZW1wbGF0ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QmluZGluZy5jcHAKaW5kZXggZWI4YWM0YTIxNmVlM2VlY2RkNzRmZDA1NjFjNTc2Yjc0NDA4
MTFhMS4uNzMyMmM0MmQzMTdlZGVkMWE1ZmFkNTMzY2I4ZjMyOWRmN2ExYjJhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0PiB0b0RPTVN0cmluZ0xpc3Qodjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHZhbHVlLCB2ODo6SXNvbGEKIHsKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVl
KHY4OjpMb2NhbDx2ODo6VmFsdWU+OjpOZXcodmFsdWUpKTsKIAotICAgIGlmIChWOERPTVN0cmlu
Z0xpc3Q6Okhhc0luc3RhbmNlKHY4VmFsdWUsIGlzb2xhdGUpKSB7CisgICAgaWYgKFY4RE9NU3Ry
aW5nTGlzdDo6SGFzSW5zdGFuY2UodjhWYWx1ZSwgaXNvbGF0ZSwgd29ybGRUeXBlKGlzb2xhdGUp
KSkgewogICAgICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gcmV0ID0gVjhET01TdHJpbmdMaXN0
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4VmFsdWUpKTsKICAgICAg
ICAgcmV0dXJuIHJldC5yZWxlYXNlKCk7CiAgICAgfQpAQCAtMjA1LDcgKzIwNSw3IEBAIFBhc3NS
ZWZQdHI8RE9NU3RyaW5nTGlzdD4gdG9ET01TdHJpbmdMaXN0KHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZSwgdjg6Oklzb2xhCiBQYXNzUmVmUHRyPFhQYXRoTlNSZXNvbHZlcj4gdG9YUGF0aE5T
UmVzb2x2ZXIodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKIHsKICAgICBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiByZXNvbHZlcjsKLSAgICBpZiAoVjhY
UGF0aE5TUmVzb2x2ZXI6Okhhc0luc3RhbmNlKHZhbHVlLCBpc29sYXRlKSkKKyAgICBpZiAoVjhY
UGF0aE5TUmVzb2x2ZXI6Okhhc0luc3RhbmNlKHZhbHVlLCBpc29sYXRlLCB3b3JsZFR5cGUoaXNv
bGF0ZSkpKQogICAgICAgICByZXNvbHZlciA9IFY4WFBhdGhOU1Jlc29sdmVyOjp0b05hdGl2ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSk7CiAgICAgZWxzZSBpZiAodmFsdWUt
PklzT2JqZWN0KCkpCiAgICAgICAgIHJlc29sdmVyID0gVjhDdXN0b21YUGF0aE5TUmVzb2x2ZXI6
OmNyZWF0ZSh2YWx1ZS0+VG9PYmplY3QoKSwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4QmluZGluZy5oCmluZGV4IGJjMTEyNWU3M2EwOWE2MDc2OTAwMDU2MTMxYTEzNWMyYjAx
YTM4YmEuLmM0MzVmZmNjM2E4YTczOWVlMDdjYTU0NzQzNjViNTg4NDgzY2RlMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC0yNzUsNiArMjc1LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPih2YWx1
ZS0+SW50ZWdlclZhbHVlKCkpOwogICAgIH0KIAorICAgIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRU
eXBlKHY4OjpJc29sYXRlKik7CisgICAgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGVJbk1haW5U
aHJlYWQodjg6Oklzb2xhdGUqKTsKKwogICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBOYXRp
dmVWYWx1ZVRyYWl0czsKIAogICAgIHRlbXBsYXRlPD4KQEAgLTMyMiw3ICszMjUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbGVtZW50ID0gYXJyYXkt
PkdldChpKTsKIAotICAgICAgICAgICAgaWYgKFY4VDo6SGFzSW5zdGFuY2UoZWxlbWVudCwgaXNv
bGF0ZSkpIHsKKyAgICAgICAgICAgIGlmIChWOFQ6Okhhc0luc3RhbmNlKGVsZW1lbnQsIGlzb2xh
dGUsIHdvcmxkVHlwZShpc29sYXRlKSkpIHsKICAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoZWxlbWVudCk7
CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChWOFQ6OnRvTmF0aXZlKG9iamVjdCkpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTQ2Nyw5ICs0NzAsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICB2b2lkIGNyYXNoSWZWOElzRGVhZCgpOwogCi0gICAgV3JhcHBlcldvcmxkVHlw
ZSB3b3JsZFR5cGUodjg6Oklzb2xhdGUqKTsKLSAgICBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlw
ZUluTWFpblRocmVhZCh2ODo6SXNvbGF0ZSopOwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBWOEJpbmRpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29s
bGVjdGlvbi5jcHAKaW5kZXggMDU4YTI3ZGY0NDFiZDVlZGEwMzZiMzZjZDY3YjI5ZTkzZGNiMzkx
Yi4uMjg0NWVlOTM2YTcyNmFkMDA1YWM2NjkyNjI1MzgyYzUxNmEwNmNhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b09wdGlvbnNDb2xsZWN0aW9uU2V0dGVyKHVpbnQzMl90IGlu
ZGV4LCB2ODo6SGFuZGxlPHY4OjpWCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAKICAgICAv
LyBDaGVjayB0aGF0IHRoZSB2YWx1ZSBpcyBhbiBIVE1MT3B0aW9uRWxlbWVudC4gIElmIG5vdCwg
dGhyb3cgYSBUWVBFX01JU01BVENIX0VSUiBET01FeGNlcHRpb24uCi0gICAgaWYgKCFWOEhUTUxP
cHRpb25FbGVtZW50OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaXNvbGF0ZSkpIHsKKyAgICBpZiAoIVY4
SFRNTE9wdGlvbkVsZW1lbnQ6Okhhc0luc3RhbmNlKHZhbHVlLCBpc29sYXRlLCB3b3JsZFR5cGUo
aXNvbGF0ZSkpKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihUWVBFX01JU01BVENIX0VSUiwg
aXNvbGF0ZSk7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKaW5kZXggYTRkZGM4MzA4NjgxZjdmYTYz
NjEyYjJmZjgwNWNjYzU0YjExOWNmMy4uZDViYTIxMDBhNDIzYjExMjJiOWQ3YjU5YzU2NTc1NmFl
YTgxNWJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVy
LmNwcApAQCAtMzAzLDcgKzMwMyw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKHZhbHVlLT5J
c09iamVjdCgpKTsKICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciA9
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKICAgICAgICAgQVNTRVJU
KFY4RE9NV3JhcHBlcjo6bWF5YmVET01XcmFwcGVyKHZhbHVlKSk7Ci0gICAgICAgIEFTU0VSVChW
OE5vZGU6Okhhc0luc3RhbmNlKHdyYXBwZXIsIG1faXNvbGF0ZSkpOworICAgICAgICBBU1NFUlQo
VjhOb2RlOjpIYXNJbnN0YW5jZSh3cmFwcGVyLCBtX2lzb2xhdGUsIE1haW5Xb3JsZCkgfHwgVjhO
b2RlOjpIYXNJbnN0YW5jZSh3cmFwcGVyLCBtX2lzb2xhdGUsIElzb2xhdGVkV29ybGQpKTsKICAg
ICAgICAgTm9kZSogbm9kZSA9IFY4Tm9kZTo6dG9OYXRpdmUod3JhcHBlcik7CiAgICAgICAgIC8v
IEEgbWlub3IgRE9NIEdDIGNhbiBoYW5kbGUgb25seSBub2RlIHdyYXBwZXJzIGluIHRoZSBtYWlu
IHdvcmxkLgogICAgICAgICAvLyBOb3RlIHRoYXQgbm9kZS0+d3JhcHBlcigpLklzRW1wdHkoKSBy
ZXR1cm5zIHRydWUgZm9yIG5vZGVzIHRoYXQKQEAgLTM3Niw3ICszNzYsNyBAQCBwdWJsaWM6CiAK
ICAgICAgICAgaWYgKGNsYXNzSWQgPT0gdjhET01Ob2RlQ2xhc3NJZCkgewogICAgICAgICAgICAg
VU5VU0VEX1BBUkFNKG1faXNvbGF0ZSk7Ci0gICAgICAgICAgICBBU1NFUlQoVjhOb2RlOjpIYXNJ
bnN0YW5jZSh3cmFwcGVyLCBtX2lzb2xhdGUpKTsKKyAgICAgICAgICAgIEFTU0VSVChWOE5vZGU6
Okhhc0luc3RhbmNlKHdyYXBwZXIsIG1faXNvbGF0ZSwgTWFpbldvcmxkKSB8fCBWOE5vZGU6Okhh
c0luc3RhbmNlKHdyYXBwZXIsIG1faXNvbGF0ZSwgSXNvbGF0ZWRXb3JsZCkpOwogICAgICAgICAg
ICAgQVNTRVJUKCF3cmFwcGVyLklzSW5kZXBlbmRlbnQobV9pc29sYXRlKSk7CiAKICAgICAgICAg
ICAgIE5vZGUqIG5vZGUgPSBzdGF0aWNfY2FzdDxOb2RlKj4ob2JqZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKaW5kZXggMmJmYmJkODFlZGE0ZmY5NTljYWM2
NTRiMGRlODZjZDQ1ZTMxMjZkNi4uMGFmNWViNDRkMjQ3ZjExN2M2YmU1NDQ4MTYxNDZlMzEyNjNl
ZGM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKQEAgLTY5
LDE0ICs2OSwxNSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0SW52b2tl
SW1wbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBJbnZvawogewogICAgIE5QT2JqZWN0KiBu
cE9iamVjdDsKIAorICAgIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSA9IHdvcmxk
VHlwZShhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgLy8gVGhlc2UgdGhyZWUgdHlwZXMgYXJlIHN1
YnR5cGVzIG9mIEhUTUxQbHVnSW5FbGVtZW50LgotICAgIGlmIChWOEhUTUxBcHBsZXRFbGVtZW50
OjpIYXNJbnN0YW5jZShhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSkgfHwgVjhIVE1M
RW1iZWRFbGVtZW50OjpIYXNJbnN0YW5jZShhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUo
KSkKLSAgICAgICAgfHwgVjhIVE1MT2JqZWN0RWxlbWVudDo6SGFzSW5zdGFuY2UoYXJncy5Ib2xk
ZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpKSB7CisgICAgaWYgKFY4SFRNTEFwcGxldEVsZW1lbnQ6
Okhhc0luc3RhbmNlKGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpLCBjdXJyZW50V29y
bGRUeXBlKSB8fCBWOEhUTUxFbWJlZEVsZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3MuSG9sZGVyKCks
IGFyZ3MuR2V0SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKQorICAgICAgICB8fCBWOEhUTUxP
YmplY3RFbGVtZW50OjpIYXNJbnN0YW5jZShhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUo
KSwgY3VycmVudFdvcmxkVHlwZSkpIHsKICAgICAgICAgLy8gVGhlIGhvbGRlciBvYmplY3QgaXMg
YSBzdWJ0eXBlIG9mIEhUTUxQbHVnSW5FbGVtZW50LgogICAgICAgICBIVE1MUGx1Z0luRWxlbWVu
dCogZWxlbWVudDsKLSAgICAgICAgaWYgKFY4SFRNTEFwcGxldEVsZW1lbnQ6Okhhc0luc3RhbmNl
KGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICAgICAgaWYgKFY4SFRNTEFw
cGxldEVsZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgp
LCBjdXJyZW50V29ybGRUeXBlKSkKICAgICAgICAgICAgIGVsZW1lbnQgPSBWOEhUTUxBcHBsZXRF
bGVtZW50Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICAgICAgZWxzZSBpZiAoVjhIVE1M
RW1iZWRFbGVtZW50OjpIYXNJbnN0YW5jZShhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUo
KSkpCisgICAgICAgIGVsc2UgaWYgKFY4SFRNTEVtYmVkRWxlbWVudDo6SGFzSW5zdGFuY2UoYXJn
cy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpKQogICAgICAg
ICAgICAgZWxlbWVudCA9IFY4SFRNTEVtYmVkRWxlbWVudDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVsZW1lbnQgPSBWOEhUTUxPYmplY3RFbGVt
ZW50Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAKaW5kZXggZTFkMTRmMzQ3NTk1NWY5MTI5YmQxNDE5
MjZjNjgxYjM3MzExM2Y1NC4uMmJmNTRjNDg3ZTFiMTZjNTJhY2UzZGJmNjc1MWIxYzlhZGRiZjhm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5j
cHAKQEAgLTEwNCw4ICsxMDQsMTAgQEAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
VjhQZXJJc29sYXRlRGF0YTo6dG9TdHJpbmdUZW1wbGF0ZSgpCiB2b2lkIFY4UGVySXNvbGF0ZURh
dGE6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhp
cywgV2ViQ29yZU1lbW9yeVR5cGVzOjpCaW5kaW5nKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX3Jh
d1RlbXBsYXRlcywgInJhd1RlbXBsYXRlcyIpOwotICAgIGluZm8uYWRkTWVtYmVyKG1fdGVtcGxh
dGVzLCAidGVtcGxhdGVzIik7CisgICAgaW5mby5hZGRNZW1iZXIobV9yYXdUZW1wbGF0ZXNGb3JN
YWluV29ybGQsICJyYXdUZW1wbGF0ZXNGb3JNYWluV29ybGQiKTsKKyAgICBpbmZvLmFkZE1lbWJl
cihtX3Jhd1RlbXBsYXRlc0Zvck5vbk1haW5Xb3JsZCwgInJhd1RlbXBsYXRlc0Zvck5vbk1haW5X
b3JsZCIpOworICAgIGluZm8uYWRkTWVtYmVyKG1fdGVtcGxhdGVzRm9yTWFpbldvcmxkLCAidGVt
cGxhdGVzRm9yTWFpbldvcmxkIik7CisgICAgaW5mby5hZGRNZW1iZXIobV90ZW1wbGF0ZXNGb3JO
b25NYWluV29ybGQsICJ0ZW1wbGF0ZXNGb3JOb25NYWluV29ybGQiKTsKICAgICBpbmZvLmFkZE1l
bWJlcihtX3N0cmluZ0NhY2hlLCAic3RyaW5nQ2FjaGUiKTsKICAgICBpbmZvLmFkZE1lbWJlciht
X2ludGVnZXJDYWNoZSwgImludGVnZXJDYWNoZSIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fZG9t
RGF0YUxpc3QsICJkb21EYXRhTGlzdCIpOwpAQCAtMTIyLDM3ICsxMjQsNDUgQEAgdm9pZCBWOFBl
cklzb2xhdGVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlP
YmplY3RJbmZvKSBjb24KICAgICBpbmZvLmlnbm9yZU1lbWJlcihtX2F1eGlsaWFyeUNvbnRleHQp
OwogfQogCi1ib29sIFY4UGVySXNvbGF0ZURhdGE6Omhhc1ByaXZhdGVUZW1wbGF0ZShXcmFwcGVy
V29ybGRUeXBlLCB2b2lkKiBwcml2YXRlUG9pbnRlcikKK2Jvb2wgVjhQZXJJc29sYXRlRGF0YTo6
aGFzUHJpdmF0ZVRlbXBsYXRlKFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSwgdm9p
ZCogcHJpdmF0ZVBvaW50ZXIpCiB7Ci0gICAgcmV0dXJuIG1fdGVtcGxhdGVzLmZpbmQocHJpdmF0
ZVBvaW50ZXIpICE9IG1fdGVtcGxhdGVzLmVuZCgpOworICAgIGlmIChjdXJyZW50V29ybGRUeXBl
ID09IE1haW5Xb3JsZCkKKyAgICAgICAgcmV0dXJuIG1fdGVtcGxhdGVzRm9yTWFpbldvcmxkLmZp
bmQocHJpdmF0ZVBvaW50ZXIpICE9IG1fdGVtcGxhdGVzRm9yTWFpbldvcmxkLmVuZCgpOworICAg
IHJldHVybiBtX3RlbXBsYXRlc0Zvck5vbk1haW5Xb3JsZC5maW5kKHByaXZhdGVQb2ludGVyKSAh
PSBtX3RlbXBsYXRlc0Zvck5vbk1haW5Xb3JsZC5lbmQoKTsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4UGVySXNvbGF0ZURhdGE6OnByaXZhdGVUZW1wbGF0ZShX
cmFwcGVyV29ybGRUeXBlLCB2b2lkKiBwcml2YXRlUG9pbnRlciwgdjg6Okludm9jYXRpb25DYWxs
YmFjayBjYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGEsIHY4OjpIYW5kbGU8djg6
OlNpZ25hdHVyZT4gc2lnbmF0dXJlLCBpbnQgbGVuZ3RoKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IFY4UGVySXNvbGF0ZURhdGE6OnByaXZhdGVUZW1wbGF0ZShXcmFwcGVy
V29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUsIHZvaWQqIHByaXZhdGVQb2ludGVyLCB2ODo6SW52
b2NhdGlvbkNhbGxiYWNrIGNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGF0YSwgdjg6
OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBzaWduYXR1cmUsIGludCBsZW5ndGgpCiB7CiAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZTsKLSAgICBW
OFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gbV90ZW1wbGF0
ZXMuZmluZChwcml2YXRlUG9pbnRlcik7Ci0gICAgaWYgKHJlc3VsdCAhPSBtX3RlbXBsYXRlcy5l
bmQoKSkKKyAgICBUZW1wbGF0ZU1hcCYgdGVtcGxhdGVzID0gdGVtcGxhdGVNYXAoY3VycmVudFdv
cmxkVHlwZSk7CisgICAgVGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IHRlbXBsYXRlcy5m
aW5kKHByaXZhdGVQb2ludGVyKTsKKyAgICBpZiAocmVzdWx0ICE9IHRlbXBsYXRlcy5lbmQoKSkK
ICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IG5ld1ByaXZhdGVUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPjo6TmV3KG1faXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5l
dyhjYWxsYmFjaywgZGF0YSwgc2lnbmF0dXJlLCBsZW5ndGgpKTsKLSAgICBtX3RlbXBsYXRlcy5h
ZGQocHJpdmF0ZVBvaW50ZXIsIG5ld1ByaXZhdGVUZW1wbGF0ZSk7CisgICAgdGVtcGxhdGVzLmFk
ZChwcml2YXRlUG9pbnRlciwgbmV3UHJpdmF0ZVRlbXBsYXRlKTsKICAgICByZXR1cm4gbmV3UHJp
dmF0ZVRlbXBsYXRlOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
VjhQZXJJc29sYXRlRGF0YTo6cmF3VGVtcGxhdGUoV3JhcHBlclR5cGVJbmZvKiBpbmZvKQordjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4UGVySXNvbGF0ZURhdGE6OnJhd1Rl
bXBsYXRlKFdyYXBwZXJUeXBlSW5mbyogaW5mbywgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29y
bGRUeXBlKQogewotICAgIFRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBtX3Jhd1RlbXBs
YXRlcy5maW5kKGluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gbV9yYXdUZW1wbGF0ZXMuZW5kKCkp
CisgICAgVGVtcGxhdGVNYXAmIHRlbXBsYXRlcyA9IHJhd1RlbXBsYXRlTWFwKGN1cnJlbnRXb3Js
ZFR5cGUpOworICAgIFRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSB0ZW1wbGF0ZXMuZmlu
ZChpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IHRlbXBsYXRlcy5lbmQoKSkKICAgICAgICAgcmV0
dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3
VGVtcGxhdGUobV9pc29sYXRlKTsKLSAgICBtX3Jhd1RlbXBsYXRlcy5hZGQoaW5mbywgdGVtcGwp
OworICAgIHRlbXBsYXRlcy5hZGQoaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0K
IAotYm9vbCBWOFBlcklzb2xhdGVEYXRhOjpoYXNJbnN0YW5jZShXcmFwcGVyVHlwZUluZm8qIGlu
Zm8sIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKK2Jvb2wgVjhQZXJJc29sYXRlRGF0YTo6
aGFzSW5zdGFuY2UoV3JhcHBlclR5cGVJbmZvKiBpbmZvLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dmFsdWUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4g
cmF3VGVtcGxhdGUoaW5mbyktPkhhc0luc3RhbmNlKHZhbHVlKTsKKyAgICBUZW1wbGF0ZU1hcCYg
dGVtcGxhdGVzID0gcmF3VGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSk7CisgICAgVGVtcGxh
dGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IHRlbXBsYXRlcy5maW5kKGluZm8pOworICAgIGlmIChy
ZXN1bHQgPT0gdGVtcGxhdGVzLmVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIHJlc3VsdC0+dmFsdWUtPkhhc0luc3RhbmNlKHZhbHVlKTsKIH0KIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklz
b2xhdGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRh
LmgKaW5kZXggZTc3ZDc1MjlmZGI2Y2Q0MGUyMzQ1ZTBmMjIxMmNmMTBmM2Y0ODk5ZC4uZGZiZmE5
NzNkMWRjMGZiYTllOTIxZjYyZDhiM2NjM2ZlYjQwOWJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaApAQCAtNjcsOCArNjcsMTkgQEAgcHVibGlj
OgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPHZvaWQqLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gPiBUZW1wbGF0ZU1hcDsKIAotICAgIFRlbXBsYXRlTWFwJiByYXdUZW1wbGF0
ZU1hcCgpIHsgcmV0dXJuIG1fcmF3VGVtcGxhdGVzOyB9Ci0gICAgVGVtcGxhdGVNYXAmIHRlbXBs
YXRlTWFwKCkgeyByZXR1cm4gbV90ZW1wbGF0ZXM7IH0KKyAgICBUZW1wbGF0ZU1hcCYgcmF3VGVt
cGxhdGVNYXAoV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCisgICAgeworICAgICAgICBpZiAo
d29ybGRUeXBlID09IE1haW5Xb3JsZCkKKyAgICAgICAgICAgIHJldHVybiBtX3Jhd1RlbXBsYXRl
c0Zvck1haW5Xb3JsZDsKKyAgICAgICAgcmV0dXJuIG1fcmF3VGVtcGxhdGVzRm9yTm9uTWFpbldv
cmxkOworICAgIH0KKworICAgIFRlbXBsYXRlTWFwJiB0ZW1wbGF0ZU1hcChXcmFwcGVyV29ybGRU
eXBlIHdvcmxkVHlwZSkKKyAgICB7CisgICAgICAgIGlmICh3b3JsZFR5cGUgPT0gTWFpbldvcmxk
KQorICAgICAgICAgICAgcmV0dXJuIG1fdGVtcGxhdGVzRm9yTWFpbldvcmxkOworICAgICAgICBy
ZXR1cm4gbV90ZW1wbGF0ZXNGb3JOb25NYWluV29ybGQ7CisgICAgfQogCiAgICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdG9TdHJpbmdUZW1wbGF0ZSgpOwogICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiYgbGF6eUV2ZW50TGlzdGVuZXJUb1N0cmluZ1Rl
bXBsYXRlKCkKQEAgLTEzMSw5ICsxNDIsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQcml2YXRl
VGVtcGxhdGUoV3JhcHBlcldvcmxkVHlwZSwgdm9pZCogcHJpdmF0ZVBvaW50ZXIpOwogICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUoV3JhcHBl
cldvcmxkVHlwZSwgdm9pZCogcHJpdmF0ZVBvaW50ZXIsIHY4OjpJbnZvY2F0aW9uQ2FsbGJhY2ss
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkYXRhLCB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+LCBp
bnQgbGVuZ3RoID0gMCk7CiAKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gcmF3VGVtcGxhdGUoV3JhcHBlclR5cGVJbmZvKik7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHJhd1RlbXBsYXRlKFdyYXBwZXJUeXBlSW5mbyosIFdyYXBwZXJX
b3JsZFR5cGUpOwogCi0gICAgYm9vbCBoYXNJbnN0YW5jZShXcmFwcGVyVHlwZUluZm8qLCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4pOworICAgIGJvb2wgaGFzSW5zdGFuY2UoV3JhcHBlclR5cGVJbmZv
Kiwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+LCBXcmFwcGVyV29ybGRUeXBlKTsKIAogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBWOFBlcklzb2xhdGVEYXRhKHY4OjpJc29sYXRlKik7CkBAIC0xNDEsOCAr
MTUyLDEwIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25z
dHJ1Y3Rvck9mVG9TdHJpbmcoY29uc3Qgdjg6OkFyZ3VtZW50cyYpOwogCiAgICAgdjg6Oklzb2xh
dGUqIG1faXNvbGF0ZTsKLSAgICBUZW1wbGF0ZU1hcCBtX3Jhd1RlbXBsYXRlczsKLSAgICBUZW1w
bGF0ZU1hcCBtX3RlbXBsYXRlczsKKyAgICBUZW1wbGF0ZU1hcCBtX3Jhd1RlbXBsYXRlc0Zvck1h
aW5Xb3JsZDsKKyAgICBUZW1wbGF0ZU1hcCBtX3Jhd1RlbXBsYXRlc0Zvck5vbk1haW5Xb3JsZDsK
KyAgICBUZW1wbGF0ZU1hcCBtX3RlbXBsYXRlc0Zvck1haW5Xb3JsZDsKKyAgICBUZW1wbGF0ZU1h
cCBtX3RlbXBsYXRlc0Zvck5vbk1haW5Xb3JsZDsKICAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBtX3RvU3RyaW5nVGVtcGxhdGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1fbGF6eUV2ZW50TGlzdGVuZXJUb1N0cmluZ1RlbXBsYXRl
OwogICAgIE93blB0cjxTdHJpbmdDYWNoZT4gbV9zdHJpbmdDYWNoZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcAppbmRleCAzZmI4ODA5MTc1MWUwOThlMzc2MThi
NDBiMGMzZjliNzZhOTJiYzViLi44ZDljOTAxNTUzYWQ2YzMzYWRlOTE1Nzg5ZTUxMTFlYzBjNTkx
YTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCkBAIC05
MCw3ICs5MCw3IEBAIGJvb2wgZXh0cmFjdFRyYW5zZmVyYWJsZXModjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRzLCBBCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgLy8gVmFsaWRhdGlvbiBvZiBPYmplY3RzIGltcGxl
bWVudGluZyBhbiBpbnRlcmZhY2UsIHBlciBXZWJJREwgc3BlYyA0LjEuMTUuCi0gICAgICAgIGlm
IChWOE1lc3NhZ2VQb3J0OjpIYXNJbnN0YW5jZSh0cmFuc2ZlcnJhYmxlLCBpc29sYXRlKSkgewor
ICAgICAgICBpZiAoVjhNZXNzYWdlUG9ydDo6SGFzSW5zdGFuY2UodHJhbnNmZXJyYWJsZSwgaXNv
bGF0ZSwgd29ybGRUeXBlKGlzb2xhdGUpKSkgewogICAgICAgICAgICAgUmVmUHRyPE1lc3NhZ2VQ
b3J0PiBwb3J0ID0gVjhNZXNzYWdlUG9ydDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdCh0cmFuc2ZlcnJhYmxlKSk7CiAgICAgICAgICAgICAvLyBDaGVjayBmb3IgZHVwbGlj
YXRlIE1lc3NhZ2VQb3J0cy4KICAgICAgICAgICAgIGlmIChwb3J0cy5jb250YWlucyhwb3J0KSkg
ewpAQCAtOTgsNyArOTgsNyBAQCBib29sIGV4dHJhY3RUcmFuc2ZlcmFibGVzKHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0cywgQQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHBvcnRzLmFwcGVu
ZChwb3J0LnJlbGVhc2UoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoVjhBcnJheUJ1ZmZlcjo6SGFz
SW5zdGFuY2UodHJhbnNmZXJyYWJsZSwgaXNvbGF0ZSkpCisgICAgICAgIH0gZWxzZSBpZiAoVjhB
cnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UodHJhbnNmZXJyYWJsZSwgaXNvbGF0ZSwgd29ybGRUeXBl
KGlzb2xhdGUpKSkKICAgICAgICAgICAgIGFycmF5QnVmZmVycy5hcHBlbmQoVjhBcnJheUJ1ZmZl
cjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh0cmFuc2ZlcnJhYmxlKSkp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKDAsIGlzb2xhdGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlC
dWZmZXJWaWV3Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhB
cnJheUJ1ZmZlclZpZXdDdXN0b20uaAppbmRleCBlYWI2ODRjMjVmOTk3NzAwYjliMDc0ZjJhZWJk
NDljYmU5ZTJmNDkyLi5hYzBhYjU3MDg4ZmFmODJmODk3NmQxZGQ5NGNjMTk2YzBjNmNhOWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZl
clZpZXdDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhB
cnJheUJ1ZmZlclZpZXdDdXN0b20uaApAQCAtMTM4LDEyICsxMzgsMTIgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGNvbnN0cnVjdFdlYkdMQXJyYXkoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywg
V3JhcHBlclR5cGUKICAgICB9CiAKICAgICAvLyBTZWUgd2hldGhlciB0aGUgZmlyc3QgYXJndW1l
bnQgaXMgYSBBcnJheUJ1ZmZlci4KLSAgICBpZiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2Uo
YXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpKQorICAgIGlmIChWOEFycmF5QnVmZmVyOjpIYXNJ
bnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNv
bGF0ZSgpKSkpCiAgICAgICByZXR1cm4gY29uc3RydWN0V2ViR0xBcnJheVdpdGhBcnJheUJ1ZmZl
ckFyZ3VtZW50PEFycmF5Q2xhc3MsIEVsZW1lbnRUeXBlPihhcmdzLCB0eXBlLCBhcnJheVR5cGUs
IHRydWUpOwogCiAgICAgLy8gU2VlIHdoZXRoZXIgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBz
YW1lIHR5cGUgYXMgaW1wbC4gSW4gdGhhdCBjYXNlLAogICAgIC8vIHdlIGNhbiBzaW1wbHkgbWVt
Y3B5IGRhdGEgZnJvbSBzb3VyY2UgdG8gaW1wbC4KLSAgICBpZiAoSmF2YVNjcmlwdFdyYXBwZXJB
cnJheVR5cGU6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkgeworICAg
IGlmIChKYXZhU2NyaXB0V3JhcHBlckFycmF5VHlwZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJn
cy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKSB7CiAgICAgICAg
IEFycmF5Q2xhc3MqIHNvdXJjZSA9IEphdmFTY3JpcHRXcmFwcGVyQXJyYXlUeXBlOjp0b05hdGl2
ZShhcmdzWzBdLT5Ub09iamVjdCgpKTsKICAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gc291cmNl
LT5sZW5ndGgoKTsKIApAQCAtMjM2LDcgKzIzNiw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBz
ZXRXZWJHTEFycmF5SGVscGVyKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKICAgICBDUGx1
c1BsdXNBcnJheVR5cGUqIGltcGwgPSBKYXZhU2NyaXB0V3JhcHBlckFycmF5VHlwZTo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7CiAKLSAgICBpZiAoSmF2YVNjcmlwdFdyYXBwZXJBcnJheVR5cGU6
Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkgeworICAgIGlmIChKYXZh
U2NyaXB0V3JhcHBlckFycmF5VHlwZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29s
YXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKSB7CiAgICAgICAgIC8vIHZvaWQg
c2V0KGluIFdlYkdMPFQ+QXJyYXkgYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBv
ZmZzZXQpOwogICAgICAgICBDUGx1c1BsdXNBcnJheVR5cGUqIHNyYyA9IEphdmFTY3JpcHRXcmFw
cGVyQXJyYXlUeXBlOjp0b05hdGl2ZShhcmdzWzBdLT5Ub09iamVjdCgpKTsKICAgICAgICAgdWlu
dDMyX3Qgb2Zmc2V0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEF1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0b20uY3BwCmlu
ZGV4IDU0NWNmMmIxZGRiNDMyMjQ4OGQ3NjQyMmFlNzllZjA1NTlkMjQwMWMuLmFhM2U1ODMxODAw
ZWY0ZWE2NDIwODBhMzcxMWExNWM3N2JhMDU1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9CdWZmZXJTb3VyY2VO
b2RlQ3VzdG9tLmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIFY4QXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpidWZmZXJBdHRyU2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAog
ICAgIEF1ZGlvQnVmZmVyU291cmNlTm9kZSogaW1wID0gVjhBdWRpb0J1ZmZlclNvdXJjZU5vZGU6
OnRvTmF0aXZlKGhvbGRlcik7CiAKICAgICBBdWRpb0J1ZmZlciogYnVmZmVyID0gMDsKLSAgICBp
ZiAoVjhBdWRpb0J1ZmZlcjo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKSkg
eworICAgIGlmIChWOEF1ZGlvQnVmZmVyOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29s
YXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpKSB7CiAgICAgICAgIGJ1ZmZlciA9
IFY4QXVkaW9CdWZmZXI6OnRvTmF0aXZlKHZhbHVlLT5Ub09iamVjdCgpKTsKICAgICAgICAgaWYg
KGJ1ZmZlciAmJiAhaW1wLT5zZXRCdWZmZXIoYnVmZmVyKSkgewogICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoIkF1ZGlvQnVmZmVyIHVuc3VwcG9ydGVkIG51bWJlciBvZiBjaGFubmVscyIsIGlu
Zm8uR2V0SXNvbGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4QmxvYkN1c3RvbS5jcHAKaW5kZXggMTdmOGIyMmVkYzc2OWE3YjJhYTRkZmY0OTg2YTYy
YjI1NGJkNzZhNi4uNzNjYjZjNjcyNjRiODcyZDA3MmNhNGU0YTE0MDIwM2NhNGI2YzIwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5j
cHAKQEAgLTk3LDE3ICs5NywxNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhCbG9iOjpjb25z
dHJ1Y3RvckN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgICAgICB2ODo6TG9j
YWw8djg6OlZhbHVlPiBpdGVtID0gYmxvYlBhcnRzLT5HZXQodjg6OlVpbnQzMjo6TmV3KGkpKTsK
ICAgICAgICAgQVNTRVJUKCFpdGVtLklzRW1wdHkoKSk7CiAjaWYgRU5BQkxFKEJMT0IpCi0gICAg
ICAgIGlmIChWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZShpdGVtLCBhcmdzLkdldElzb2xhdGUo
KSkpIHsKKyAgICAgICAgaWYgKFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKGl0ZW0sIGFyZ3Mu
R2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkgewogICAgICAgICAg
ICAgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyID0gVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChpdGVtKSk7CiAgICAgICAgICAgICBBU1NFUlQoYXJy
YXlCdWZmZXIpOwogICAgICAgICAgICAgYmxvYkJ1aWxkZXIuYXBwZW5kKGNvbnRleHQsIGFycmF5
QnVmZmVyKTsKLSAgICAgICAgfSBlbHNlIGlmIChWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFu
Y2UoaXRlbSwgYXJncy5HZXRJc29sYXRlKCkpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoVjhBcnJh
eUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKGl0ZW0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5
cGUoYXJncy5HZXRJc29sYXRlKCkpKSkgewogICAgICAgICAgICAgQXJyYXlCdWZmZXJWaWV3KiBh
cnJheUJ1ZmZlclZpZXcgPSBWOEFycmF5QnVmZmVyVmlldzo6dG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdChpdGVtKSk7CiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlCdWZmZXJW
aWV3KTsKICAgICAgICAgICAgIGJsb2JCdWlsZGVyLmFwcGVuZChhcnJheUJ1ZmZlclZpZXcpOwog
ICAgICAgICB9IGVsc2UKICNlbmRpZgotICAgICAgICBpZiAoVjhCbG9iOjpIYXNJbnN0YW5jZShp
dGVtLCBhcmdzLkdldElzb2xhdGUoKSkpIHsKKyAgICAgICAgaWYgKFY4QmxvYjo6SGFzSW5zdGFu
Y2UoaXRlbSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkp
KSB7CiAgICAgICAgICAgICBCbG9iKiBibG9iID0gVjhCbG9iOjp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KGl0ZW0pKTsKICAgICAgICAgICAgIEFTU0VSVChibG9iKTsKICAg
ICAgICAgICAgIGJsb2JCdWlsZGVyLmFwcGVuZChibG9iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRDdXN0b20uY3BwCmluZGV4IDVjZGExM2E2MDM4ZmNlMzNjYzc0ZTA2MDdjYzIx
ZjhhY2IyMDQyODUuLjU0NTM4MzY4MWMyMTE4ZmIyMzU3ZTZjM2Y2NTU4MjE2NTQ5ODBkNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcApAQCAtNjEsMTAgKzYx
LDEwIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOE9iamVjdChDYW52YXNTdHls
ZSogc3R5bGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjCiAKIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZh
c1N0eWxlPiB0b0NhbnZhc1N0eWxlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKFY4Q2FudmFzR3JhZGllbnQ6Okhhc0luc3RhbmNl
KHZhbHVlLCBpc29sYXRlKSkKKyAgICBpZiAoVjhDYW52YXNHcmFkaWVudDo6SGFzSW5zdGFuY2Uo
dmFsdWUsIGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSkpCiAgICAgICAgIHJldHVybiBDYW52
YXNTdHlsZTo6Y3JlYXRlRnJvbUdyYWRpZW50KFY4Q2FudmFzR3JhZGllbnQ6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSk7CiAKLSAgICBpZiAoVjhDYW52YXNQ
YXR0ZXJuOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaXNvbGF0ZSkpCisgICAgaWYgKFY4Q2FudmFzUGF0
dGVybjo6SGFzSW5zdGFuY2UodmFsdWUsIGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSkpCiAg
ICAgICAgIHJldHVybiBDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVBhdHRlcm4oVjhDYW52YXNQYXR0
ZXJuOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkpOwogCiAg
ICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcAppbmRleCA1ZGZhOWIxYzZkMzE0NjE4MGVjMGJkODJk
YTRlMGY2MjhmMWJiM2Y0Li5jNjVhYTE3NzcxMThkZTdiYzZmZWNlZmRhZTI3Njg4MzFiNGFlMzE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9h
cmRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENs
aXBib2FyZEN1c3RvbS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4Q2xpcGJvYXJkOjpzZXREcmFnSW1hZ2VNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50
cyYKICAgICBpbnQgeSA9IHRvSW50MzIoYXJnc1syXSk7CiAKICAgICBOb2RlKiBub2RlID0gMDsK
LSAgICBpZiAoVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkp
CisgICAgaWYgKFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKQogICAgICAgICBub2RlID0gVjhOb2RlOjp0
b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKTsKIAogICAgIGlm
ICghbm9kZSB8fCAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3J5cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENyeXB0b0N1c3RvbS5jcHAKaW5kZXggNmFjM2VmZTYx
Y2EzMjczYmQ4ODZjYjNmNWNjYTdmMGI4ZWM4MWQzNS4uNjJhMmU1MDlmMjkwODZlOGUzOGI0NGI4
ZTlhMzRjYTc0OWRjMDEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3J5cHRvQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhDcnlwdG9DdXN0b20uY3BwCkBAIC00MSw3ICs0MSw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOENyeXB0bzo6Z2V0UmFuZG9tVmFsdWVzTWV0aG9kQ3VzdG9tKGNvbnN0IHY4
OjpBcmd1bWVudHMmCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBidWZmZXIg
PSBhcmdzWzBdOwotICAgIGlmICghVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKGJ1ZmZl
ciwgYXJncy5HZXRJc29sYXRlKCkpKQorICAgIGlmICghVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0lu
c3RhbmNlKGJ1ZmZlciwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xh
dGUoKSkpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IGlz
IG5vdCBhbiBBcnJheUJ1ZmZlclZpZXciLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICBBcnJh
eUJ1ZmZlclZpZXcqIGFycmF5QnVmZmVyVmlldyA9IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3Bw
CmluZGV4IGI3ZDNjNWJmYmFiZmE2NGVmYTljMzE2Nzc5ZWQ3NzQxZWQzYmQwY2YuLjk5ZTkwMmQ4
OThiNGQ0OWFlZTAwNWZiYjI0M2NmZjdmMjFlZjExYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKQEAg
LTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4RE9NRm9ybURhdGE6OmNvbnN0cnVjdG9yQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgSFRNTEZvcm1FbGVtZW50KiBmb3JtID0gMDsKLSAgICBpZiAoYXJncy5MZW5n
dGgoKSA+IDAgJiYgVjhIVE1MRm9ybUVsZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3Mu
R2V0SXNvbGF0ZSgpKSkKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDAgJiYgVjhIVE1MRm9ybUVs
ZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUo
YXJncy5HZXRJc29sYXRlKCkpKSkKICAgICAgICAgZm9ybSA9IFY4SFRNTEZvcm1FbGVtZW50Ojp0
b05hdGl2ZShhcmdzWzBdLT5Ub09iamVjdCgpKTsKICAgICBSZWZQdHI8RE9NRm9ybURhdGE+IGRv
bUZvcm1EYXRhID0gRE9NRm9ybURhdGE6OmNyZWF0ZShmb3JtKTsKIApAQCAtNjEsNyArNjEsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01Gb3JtRGF0YTo6YXBwZW5kTWV0aG9kQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwogICAgIFN0cmluZyBuYW1lID0gdG9XZWJDb3JlU3Ry
aW5nV2l0aE51bGxDaGVjayhhcmdzWzBdKTsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBh
cmcgPSBhcmdzWzFdOwotICAgIGlmIChWOEJsb2I6Okhhc0luc3RhbmNlKGFyZywgYXJncy5HZXRJ
c29sYXRlKCkpKSB7CisgICAgaWYgKFY4QmxvYjo6SGFzSW5zdGFuY2UoYXJnLCBhcmdzLkdldElz
b2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpIHsKICAgICAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFy
Zyk7CiAgICAgICAgIEJsb2IqIGJsb2IgPSBWOEJsb2I6OnRvTmF0aXZlKG9iamVjdCk7CiAgICAg
ICAgIEFTU0VSVChibG9iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcAppbmRleCAzNTQzYWQ3NjI5OGY0MjdhZDI1YTYw
NDgwOTNjMTYxODI0N2NmYzJjLi40ZDA5MTkxZjAyY2I3MWJjNTg0MzM2Nzk0NTE0YmVkMDVlMDE0
YjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRh
Vmlld0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RGF0YVZpZXdDdXN0b20uY3BwCkBAIC00Miw3ICs0Miw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERhdGFWaWV3Ojpjb25zdHJ1Y3RvckN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogICAgICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGRhdGFW
aWV3LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVy
Q29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAg
fQotICAgIGlmIChhcmdzWzBdLT5Jc051bGwoKSB8fCAhVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFu
Y2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpKQorICAgIGlmIChhcmdzWzBdLT5Jc051bGwo
KSB8fCAhVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRl
KCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKQogICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIHJldHVybiBjb25zdHJ1Y3RXZWJH
TEFycmF5V2l0aEFycmF5QnVmZmVyQXJndW1lbnQ8RGF0YVZpZXcsIGNoYXI+KGFyZ3MsICZpbmZv
LCB2ODo6a0V4dGVybmFsQnl0ZUFycmF5LCBmYWxzZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggM2Q3
MWVhNjgxMzg3NDBiMzM5NDU5MTdkYmEwMGRmNzI3MzJkZDlhNS4uMDY5MDA2ZTI0YTAyMjYyYjY0
ZGM5NTJkZjk5Njc1NTZkM2E3YmJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEb2N1bWVudDo6ZXZhbHVhdGVNZXRob2RDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFN0
cmluZyBleHByZXNzaW9uID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwogICAgIFJlZlB0cjxO
b2RlPiBjb250ZXh0Tm9kZTsKLSAgICBpZiAoVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzFdLCBh
cmdzLkdldElzb2xhdGUoKSkpCisgICAgaWYgKFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1sxXSwg
YXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKQogICAgICAg
ICBjb250ZXh0Tm9kZSA9IFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdChhcmdzWzFdKSk7CiAKICAgICBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiByZXNvbHZlciA9
IHRvWFBhdGhOU1Jlc29sdmVyKGFyZ3NbMl0sIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTc5LDcg
Kzc5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RG9jdW1lbnQ6OmV2YWx1YXRlTWV0aG9k
Q3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIAogICAgIGludCB0eXBlID0gdG9JbnQz
MihhcmdzWzNdKTsKICAgICBSZWZQdHI8WFBhdGhSZXN1bHQ+IGluUmVzdWx0OwotICAgIGlmIChW
OFhQYXRoUmVzdWx0OjpIYXNJbnN0YW5jZShhcmdzWzRdLCBhcmdzLkdldElzb2xhdGUoKSkpCisg
ICAgaWYgKFY4WFBhdGhSZXN1bHQ6Okhhc0luc3RhbmNlKGFyZ3NbNF0sIGFyZ3MuR2V0SXNvbGF0
ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKICAgICAgICAgaW5SZXN1bHQgPSBW
OFhQYXRoUmVzdWx0Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3Nb
NF0pKTsKIAogICAgIFY4VFJZQ0FUQ0goUmVmUHRyPFhQYXRoUmVzdWx0PiwgcmVzdWx0LCBkb2N1
bWVudC0+ZXZhbHVhdGUoZXhwcmVzc2lvbiwgY29udGV4dE5vZGUuZ2V0KCksIHJlc29sdmVyLmdl
dCgpLCB0eXBlLCBpblJlc3VsdC5nZXQoKSwgZWMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5j
cHAKaW5kZXggZDkzYWUzOWEyZmU3N2RjZGM1MGY5NDBmZDkwZGNmODFlN2RkNDBmNC4uYWE5N2Uw
ZTcwZmYzNDVmM2I3NzRjNTBmYzY0MzQ0ZDRkNDk5ZmVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1
c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgdm9pZCBWOEhUTUxNZWRpYUVsZW1lbnQ6OmNvbnRy
b2xsZXJBdHRyU2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogewogICAg
IEhUTUxNZWRpYUVsZW1lbnQqIGltcCA9IFY4SFRNTE1lZGlhRWxlbWVudDo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CiAgICAgTWVkaWFDb250cm9sbGVyKiBjb250cm9sbGVyID0gMDsKLSAgICBp
ZiAoVjhNZWRpYUNvbnRyb2xsZXI6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUo
KSkpCisgICAgaWYgKFY4TWVkaWFDb250cm9sbGVyOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5H
ZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpKQogICAgICAgICBjb250
cm9sbGVyID0gVjhNZWRpYUNvbnRyb2xsZXI6OnRvTmF0aXZlKHZhbHVlLT5Ub09iamVjdCgpKTsK
ICAgICAKICAgICBpZiAoIWNvbnRyb2xsZXIpIHsKQEAgLTU1LDQgKzU1LDMgQEAgdm9pZCBWOEhU
TUxNZWRpYUVsZW1lbnQ6OmNvbnRyb2xsZXJBdHRyU2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLAogfQogCiAjZW5kaWYKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1
c3RvbS5jcHAKaW5kZXggNTZiNzA2NTdmNDQwM2FmZjk4NTA5MDBjMzE4MmZjNTVjZWRkN2E4Mi4u
MzZlZGU1NWMzZmNjMWI0ZjZiYzQ0MGE4YmIxMDZjNzc3MWQ5ODdlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0
aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC05MSw3ICs5MSw3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlTWV0aG9kQ3VzdG9tKGNvbnN0
IHY4OjpBcmd1CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlv
bjo6YWRkTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgaWYg
KCFWOEhUTUxPcHRpb25FbGVtZW50OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xh
dGUoKSkpCisgICAgaWYgKCFWOEhUTUxPcHRpb25FbGVtZW50OjpIYXNJbnN0YW5jZShhcmdzWzBd
LCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpCiAgICAg
ICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oVFlQRV9NSVNNQVRDSF9FUlIsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKICAgICBIVE1MT3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IFY4SFRNTE9wdGlvbnND
b2xsZWN0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBIVE1MT3B0aW9uRWxlbWVu
dCogb3B0aW9uID0gVjhIVE1MT3B0aW9uRWxlbWVudDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVu
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2Vs
ZWN0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMTBiMjNjNDZkZTA1NjZiZDQxOTM3YzNhZWVlODcz
ZWExMzkyZjkzYS4uMzY2Zjc4OGNmMjFlNTkyMzg2MDAxZjEzMmYyMjUwYjY3MGY4OGQyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVs
ZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhIVE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlTWV0aG9kQ3VzdG9tKGNvbnN0
IHY4OjpBcmd1bWVudAogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVtb3ZlRWxlbWVudChIVE1M
U2VsZWN0RWxlbWVudCogaW1wLCBjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKSAKIHsKLSAgICBp
ZiAoVjhIVE1MT3B0aW9uRWxlbWVudDo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29s
YXRlKCkpKSB7CisgICAgaWYgKFY4SFRNTE9wdGlvbkVsZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3Nb
MF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkgewog
ICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCogZWxlbWVudCA9IFY4SFRNTE9wdGlvbkVsZW1lbnQ6
OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpOwogICAgICAg
ICBpbXAtPnJlbW92ZShlbGVtZW50LT5pbmRleCgpKTsKICAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IGU2MzY5OGYyNTk3
OTE2YjM2MDdmMGIwNGExZmRmZTNkYjNkYmMyZTUuLjk1NmQ1NmFlMzdiOWZiMGM1MjVjZTgzZTdk
ZGM0YjE2ZmE4ZGY0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtMTEy
LDcgKzExMiw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6
aXNIVE1MQWxsQ29sbGVjdGlvbk1ldGhvZEN1c3RvbShjb25zCiAgICAgICAgIHJldHVybiB2OEJv
b2xlYW4oZmFsc2UsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBo
YW5kbGVTY29wZTsKLSAgICByZXR1cm4gdjg6OkJvb2xlYW46Ok5ldyhWOEhUTUxBbGxDb2xsZWN0
aW9uOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpOworICAgIHJldHVy
biB2ODo6Qm9vbGVhbjo6TmV3KFY4SFRNTEFsbENvbGxlY3Rpb246Okhhc0luc3RhbmNlKGFyZ3Nb
MF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSk7CiB9
CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6dHlwZU1ldGhv
ZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtMTMzLDE5ICsxMzMsMjAgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojp0eXBlTWV0aG9kQ3Vz
dG9tKGNvbnN0IHY4OjpBcmd1bWVudHMKICAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ld1N5
bWJvbCgiZGF0ZSIpOwogICAgIGlmICh2YWx1ZS0+SXNSZWdFeHAoKSkKICAgICAgICAgcmV0dXJu
IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgicmVnZXhwIik7Ci0gICAgaWYgKFY4Tm9kZTo6SGFzSW5z
dGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICBXcmFwcGVyV29ybGRUeXBlIGN1
cnJlbnRXb3JsZFR5cGUgPSB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpOworICAgIGlmIChW
OE5vZGU6Okhhc0luc3RhbmNlKHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxk
VHlwZSkpCiAgICAgICAgIHJldHVybiB2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm5vZGUiKTsKLSAg
ICBpZiAoVjhOb2RlTGlzdDo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpKSkK
KyAgICBpZiAoVjhOb2RlTGlzdDo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgp
LCBjdXJyZW50V29ybGRUeXBlKSkKICAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ld1N5bWJv
bCgiYXJyYXkiKTsKLSAgICBpZiAoVjhIVE1MQ29sbGVjdGlvbjo6SGFzSW5zdGFuY2UodmFsdWUs
IGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICBpZiAoVjhIVE1MQ29sbGVjdGlvbjo6SGFzSW5zdGFu
Y2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSkKICAgICAgICAg
cmV0dXJuIHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiYXJyYXkiKTsKLSAgICBpZiAoVjhJbnQ4QXJy
YXk6Okhhc0luc3RhbmNlKHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSkgfHwgVjhJbnQxNkFycmF5
OjpIYXNJbnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCkpIHx8IFY4SW50MzJBcnJheTo6
SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICBpZiAoVjhJbnQ4QXJy
YXk6Okhhc0luc3RhbmNlKHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlw
ZSkgfHwgVjhJbnQxNkFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCks
IGN1cnJlbnRXb3JsZFR5cGUpIHx8IFY4SW50MzJBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUsIGFy
Z3MuR2V0SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSkKICAgICAgICAgcmV0dXJuIHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbCgiYXJyYXkiKTsKLSAgICBpZiAoVjhVaW50OEFycmF5OjpIYXNJbnN0
YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCkpIHx8IFY4VWludDE2QXJyYXk6Okhhc0luc3Rh
bmNlKHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSkgfHwgVjhVaW50MzJBcnJheTo6SGFzSW5zdGFu
Y2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICBpZiAoVjhVaW50OEFycmF5OjpIYXNJ
bnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpIHx8IFY4
VWludDE2QXJyYXk6Okhhc0luc3RhbmNlKHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVu
dFdvcmxkVHlwZSkgfHwgVjhVaW50MzJBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0
SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSkKICAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgiYXJyYXkiKTsKLSAgICBpZiAoVjhGbG9hdDMyQXJyYXk6Okhhc0luc3RhbmNl
KHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSkgfHwgVjhGbG9hdDY0QXJyYXk6Okhhc0luc3RhbmNl
KHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSkpCisgICAgaWYgKFY4RmxvYXQzMkFycmF5OjpIYXNJ
bnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpIHx8IFY4
RmxvYXQ2NEFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCksIGN1cnJl
bnRXb3JsZFR5cGUpKQogICAgICAgICByZXR1cm4gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJhcnJh
eSIpOwotICAgIGlmIChWOFVpbnQ4Q2xhbXBlZEFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwgYXJn
cy5HZXRJc29sYXRlKCkpKQorICAgIGlmIChWOFVpbnQ4Q2xhbXBlZEFycmF5OjpIYXNJbnN0YW5j
ZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpKQogICAgICAgICBy
ZXR1cm4gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJhcnJheSIpOwogICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CiB9CkBAIC0yNDMsNyArMjQ0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
SW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRFdmVudExpc3RlbmVyc01ldGhvZEN1c3RvbShjb25zdAog
ICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKIAogICAgIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlID0gYXJnc1swXTsKLSAgICBpZiAoIVY4Tm9kZTo6SGFzSW5zdGFuY2UodmFsdWUs
IGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICBpZiAoIVY4Tm9kZTo6SGFzSW5zdGFuY2UodmFsdWUs
IGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKICAgICAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICBOb2RlKiBub2RlID0gVjhOb2RlOjp0b05h
dGl2ZSh2YWx1ZS0+VG9PYmplY3QoKSk7CiAgICAgaWYgKCFub2RlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCmluZGV4
IDFlZmQ4NWFjOGY1YWZkNWVhYzA0OWYyZjBiODFjNjRiNThlZGViMzEuLmNmZWQ3MmM2ZDIwMzkx
ODUyNjMzNjI3YTlkYjA1ZDQ5NzdhOTkxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTE0Myw3ICsxNDMs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQXR0ckdldHRlckN1
c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwcml2
YXRlVGVtcGxhdGVVbmlxdWVLZXkgPSAicmVsb2FkUHJpdmF0ZVRlbXBsYXRlIjsKICAgICBXcmFw
cGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUgPSB3b3JsZFR5cGUoaXNvbGF0ZSk7CiAgICAg
VjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJ
c29sYXRlKCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2
YXRlVGVtcGxhdGUgPSBkYXRhLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnBy
aXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6cmVsb2FkTWV0aG9kQ3VzdG9tLCB2
OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxhdGUoJlY4TG9j
YXRpb246OmluZm8pKSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHByaXZhdGVUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBl
LCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjpyZWxvYWRNZXRob2RDdXN0
b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgm
VjhMb2NhdGlvbjo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkpKTsKIAogICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBl
Q2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkp
OwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZEF0dHJHZXR0ZXJDdXN0b20odjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG4KICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRp
dmUoaG9sZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9y
dFNlY3VyaXR5RXJyb3IpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFyZWRUZW1w
bGF0ZVVuaXF1ZUtleSA9ICJyZWxvYWRTaGFyZWRUZW1wbGF0ZSI7Ci0gICAgICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IGRhdGEtPnByaXZh
dGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4
TG9jYXRpb246OnJlbG9hZE1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVy
ZTo6TmV3KGRhdGEtPnJhd1RlbXBsYXRlKCZWOExvY2F0aW9uOjppbmZvKSkpOworICAgICAgICB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSBkYXRh
LT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnNoYXJlZFRlbXBsYXRlVW5pcXVl
S2V5LCBWOExvY2F0aW9uOjpyZWxvYWRNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpT
aWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbywgY3VycmVu
dFdvcmxkVHlwZSkpKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlv
bigpOwogICAgIH0KICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpA
QCAtMTY3LDcgKzE2Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZXBs
YWNlQXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICBzdGF0aWMgY29u
c3QgY2hhciogcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5ID0gInJlcGxhY2VQcml2YXRlVGVtcGxh
dGUiOwogICAgIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSA9IHdvcmxkVHlwZShp
bmZvLkdldElzb2xhdGUoKSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRlKCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZhdGVU
ZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6cmVwbGFjZU1ldGhvZEN1c3RvbSwgdjhVbmRl
ZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJhd1RlbXBsYXRlKCZWOExvY2F0aW9u
OjppbmZvKSkpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2
YXRlVGVtcGxhdGUgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5wcml2YXRlVGVt
cGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2Nh
dGlvbjo6cmVwbGFjZU1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6
TmV3KGRhdGEtPnJhd1RlbXBsYXRlKCZWOExvY2F0aW9uOjppbmZvLCBjdXJyZW50V29ybGRUeXBl
KSkpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+
RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9uOjpHZXRUZW1wbGF0ZShpc29s
YXRlLCBjdXJyZW50V29ybGRUeXBlKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKQEAg
LTE3OCw3ICsxNzgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFj
ZUF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgTG9jYXRpb24qIGlt
cCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJp
dHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGlt
cC0+ZnJhbWUoKSwgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKSkgewogICAgICAgICBzdGF0aWMg
Y29uc3QgY2hhciogc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXkgPSAicmVwbGFjZVNoYXJlZFRlbXBs
YXRlIjsKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJl
ZFRlbXBsYXRlID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnBy
aXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXks
IFY4TG9jYXRpb246OnJlcGxhY2VNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWdu
YXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbykpKTsKKyAgICAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnByaXZhdGVUZW1wbGF0
ZShjdXJyZW50V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246
OnJlcGxhY2VNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhk
YXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkpKTsK
ICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KICAg
ICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpAQCAtMTkxLDcgKzE5MSw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjphc3NpZ25BdHRyR2V0dGVyQ3Vz
dG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHByaXZh
dGVUZW1wbGF0ZVVuaXF1ZUtleSA9ICJhc3NpZ25Qcml2YXRlVGVtcGxhdGUiOwogICAgIFdyYXBw
ZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSA9IHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUo
KSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aW5mby5HZXRJc29sYXRlKCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBwcml2YXRlVGVtcGxhdGUgPSBkYXRhLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxk
VHlwZSwgJnByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6YXNzaWduTWV0aG9k
Q3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxh
dGUoJlY4TG9jYXRpb246OmluZm8pKSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50
V29ybGRUeXBlLCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjphc3NpZ25N
ZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdU
ZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkpKTsKIAogICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUlu
UHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdv
cmxkVHlwZSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CkBAIC0yMDIsNyArMjAyLDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OmFzc2lnbkF0dHJHZXR0ZXJDdXN0
b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlv
bjo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBE
b05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBz
aGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSA9ICJhc3NpZ25TaGFyZWRUZW1wbGF0ZSI7Ci0gICAgICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IGRh
dGEtPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlx
dWVLZXksIFY4TG9jYXRpb246OmFzc2lnbk1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6
OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJhd1RlbXBsYXRlKCZWOExvY2F0aW9uOjppbmZvKSkpOwor
ICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxh
dGUgPSBkYXRhLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnNoYXJlZFRlbXBs
YXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20sIHY4VW5kZWZpbmVk
KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5m
bywgY3VycmVudFdvcmxkVHlwZSkpKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5H
ZXRGdW5jdGlvbigpOwogICAgIH0KICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5j
dGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Tm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2Rl
Q3VzdG9tLmNwcAppbmRleCBjMTdmNmUzMDQyNGFiNDAxODQxNTdkNTc0ZDlhMTAzOTk2ZDZiNjQ0
Li5lMGRmMmIyOTQxNGUwMjEyOWZlYzU0M2U0MzMwNWQ3Yzc2NmU4MGRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcApAQCAtNjYs
OCArNjYsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjppbnNlcnRCZWZvcmVNZXRo
b2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKICAgICBOb2RlKiBpbXAgPSBWOE5vZGU6OnRv
TmF0aXZlKGhvbGRlcik7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTm9kZSogbmV3
Q2hpbGQgPSBWOE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/
IFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkg
OiAwOwotICAgIE5vZGUqIHJlZkNoaWxkID0gVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzFdLCBh
cmdzLkdldElzb2xhdGUoKSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QoYXJnc1sxXSkpIDogMDsKKyAgICBOb2RlKiBuZXdDaGlsZCA9IFY4Tm9kZTo6SGFz
SW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElz
b2xhdGUoKSkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KGFyZ3NbMF0pKSA6IDA7CisgICAgTm9kZSogcmVmQ2hpbGQgPSBWOE5vZGU6Okhhc0luc3RhbmNl
KGFyZ3NbMV0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkp
KSA/IFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFd
KSkgOiAwOwogICAgIGJvb2wgc3VjY2VzcyA9IGltcC0+aW5zZXJ0QmVmb3JlKG5ld0NoaWxkLCBy
ZWZDaGlsZCwgZWMsIEF0dGFjaExhemlseSk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4g
c2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CkBAIC04Miw4ICs4Miw4IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OnJlcGxhY2VDaGlsZE1ldGhvZEN1c3RvbShj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xk
ZXIgPSBhcmdzLkhvbGRlcigpOwogICAgIE5vZGUqIGltcCA9IFY4Tm9kZTo6dG9OYXRpdmUoaG9s
ZGVyKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBOb2RlKiBuZXdDaGlsZCA9IFY4
Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhOb2RlOjp0
b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDA7Ci0gICAg
Tm9kZSogb2xkQ2hpbGQgPSBWOE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbMV0sIGFyZ3MuR2V0SXNv
bGF0ZSgpKSA/IFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChh
cmdzWzFdKSkgOiAwOworICAgIE5vZGUqIG5ld0NoaWxkID0gVjhOb2RlOjpIYXNJbnN0YW5jZShh
cmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkg
PyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkp
IDogMDsKKyAgICBOb2RlKiBvbGRDaGlsZCA9IFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1sxXSwg
YXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhOb2Rl
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMV0pKSA6IDA7CiAg
ICAgYm9vbCBzdWNjZXNzID0gaW1wLT5yZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkLCBl
YywgQXR0YWNoTGF6aWx5KTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiBzZXRET01FeGNl
cHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTk3LDcgKzk3LDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4Tm9kZTo6cmVtb3ZlQ2hpbGRNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3Mu
SG9sZGVyKCk7CiAgICAgTm9kZSogaW1wID0gVjhOb2RlOjp0b05hdGl2ZShob2xkZXIpOwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIE5vZGUqIG9sZENoaWxkID0gVjhOb2RlOjpIYXNJ
bnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKKyAgICBOb2RlKiBvbGRD
aGlsZCA9IFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdv
cmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDA7CiAgICAgYm9vbCBzdWNjZXNzID0gaW1w
LT5yZW1vdmVDaGlsZChvbGRDaGlsZCwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJu
IHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMTEyLDcgKzExMiw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OmFwcGVuZENoaWxkTWV0aG9kQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBo
b2xkZXIgPSBhcmdzLkhvbGRlcigpOwogICAgIE5vZGUqIGltcCA9IFY4Tm9kZTo6dG9OYXRpdmUo
aG9sZGVyKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBOb2RlKiBuZXdDaGlsZCA9
IFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhOb2Rl
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDA7Cisg
ICAgTm9kZSogbmV3Q2hpbGQgPSBWOE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0
SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4Tm9kZTo6dG9OYXRp
dmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwOwogICAgIGJvb2wg
c3VjY2VzcyA9IGltcC0+YXBwZW5kQ2hpbGQobmV3Q2hpbGQsIGVjLCBBdHRhY2hMYXppbHkpOwog
ICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJ
c29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Tm9kZUxpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Tm9kZUxpc3RDdXN0b20uY3BwCmluZGV4IDkwNGFiMzExNzY2YjVkMTQxN2I5NWE4MTUzMzlj
NGNiZDU4ODViMWMuLmY1NTJmNzA4MDZhNjAzOTVlNGVjYmQ2YzVlODY4NGUyNzg5M2YxYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlz
dEN1c3RvbS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9k
ZUxpc3Q6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUKIAog
dm9pZCogVjhOb2RlTGlzdDo6b3BhcXVlUm9vdEZvckdDKHZvaWQqIG9iamVjdCwgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAg
QVNTRVJUKFY4Tm9kZUxpc3Q6Okhhc0luc3RhbmNlKHdyYXBwZXIsIGlzb2xhdGUpKTsKKyAgICBB
U1NFUlQoVjhOb2RlTGlzdDo6SGFzSW5zdGFuY2Uod3JhcHBlciwgaXNvbGF0ZSwgTWFpbldvcmxk
KSB8fCBWOE5vZGVMaXN0OjpIYXNJbnN0YW5jZSh3cmFwcGVyLCBpc29sYXRlLCBJc29sYXRlZFdv
cmxkKSk7CiAgICAgTm9kZUxpc3QqIGltcGwgPSBzdGF0aWNfY2FzdDxOb2RlTGlzdCo+KG9iamVj
dCk7CiAgICAgaWYgKCFpbXBsLT5pc0xpdmVOb2RlTGlzdCgpKQogICAgICAgICByZXR1cm4gb2Jq
ZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggZGI0OTkzOTA0
MDNkNWU1Nzc3YWU1NWNhNWJiMWY0NjQ2OTMyYWY4Zi4uMTI0NzljMGRiNDgyMGU0YThmNTFiZTYw
YjJmNTA0YWNjNmI2ZDkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
CkBAIC0yNzQsNyArMjc0LDcgQEAgc3RhdGljIFdlYkdMVW5pZm9ybUxvY2F0aW9uKiB0b1dlYkdM
VW5pZm9ybUxvY2F0aW9uKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwKIHsKICAgICBvayA9
IGZhbHNlOwogICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiA9IDA7Ci0gICAgaWYg
KFY4V2ViR0xVbmlmb3JtTG9jYXRpb246Okhhc0luc3RhbmNlKHZhbHVlLCBpc29sYXRlKSkgewor
ICAgIGlmIChWOFdlYkdMVW5pZm9ybUxvY2F0aW9uOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaXNvbGF0
ZSwgd29ybGRUeXBlKGlzb2xhdGUpKSkgewogICAgICAgICBsb2NhdGlvbiA9IFY4V2ViR0xVbmlm
b3JtTG9jYXRpb246OnRvTmF0aXZlKHZhbHVlLT5Ub09iamVjdCgpKTsKICAgICAgICAgb2sgPSB0
cnVlOwogICAgIH0KQEAgLTI5Miw5ICsyOTIsOSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEF0dGFjaGVkU2hhZGVyc01ldGhvZEN1c3RvbShjbwog
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0ID0gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwotICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMCAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1sw
XSkgJiYgIVY4V2ViR0xQcm9ncmFtOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xh
dGUoKSkpCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAwICYmICFpc1VuZGVmaW5lZE9yTnVsbChh
cmdzWzBdKSAmJiAhVjhXZWJHTFByb2dyYW06Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0
SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKICAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKDAsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICBXZWJHTFByb2dyYW0q
IHByb2dyYW0gPSBWOFdlYkdMUHJvZ3JhbTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJ
c29sYXRlKCkpID8gVjhXZWJHTFByb2dyYW06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QoYXJnc1swXSkpIDogMDsKKyAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBWOFdl
YkdMUHJvZ3JhbTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxk
VHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhXZWJHTFByb2dyYW06OnRvTmF0aXZlKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKICAgICBWZWN0b3I8UmVmUHRy
PFdlYkdMU2hhZGVyPiA+IHNoYWRlcnM7CiAgICAgYm9vbCBzdWNjZWVkID0gY29udGV4dC0+Z2V0
QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIHNoYWRlcnMsIGVjKTsKICAgICBpZiAoZWMpIHsKQEAg
LTM2MSw5ICszNjEsOSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldFByb2dyYW1QYXJhbWV0ZXJNZXRob2RDdXN0b20oYwogCiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0gVjhXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIGlmIChhcmdz
Lkxlbmd0aCgpID4gMCAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1swXSkgJiYgIVY4V2ViR0xQ
cm9ncmFtOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpCisgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPiAwICYmICFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzBdKSAmJiAhVjhX
ZWJHTFByb2dyYW06Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3Js
ZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KDAsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBWOFdl
YkdMUHJvZ3JhbTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhX
ZWJHTFByb2dyYW06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1sw
XSkpIDogMDsKKyAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBWOFdlYkdMUHJvZ3JhbTo6SGFz
SW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElz
b2xhdGUoKSkpID8gVjhXZWJHTFByb2dyYW06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QoYXJnc1swXSkpIDogMDsKICAgICB1bnNpZ25lZCBwbmFtZSA9IHRvSW50MzIoYXJn
c1sxXSk7CiAgICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LT5nZXRQcm9ncmFtUGFyYW1l
dGVyKHByb2dyYW0sIHBuYW1lLCBlYyk7CiAgICAgaWYgKGVjKQpAQCAtMzgzLDkgKzM4Myw5IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVy
UGFyYW1ldGVyTWV0aG9kQ3VzdG9tKGNvCiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBWOFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAwICYm
ICFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzBdKSAmJiAhVjhXZWJHTFNoYWRlcjo6SGFzSW5zdGFu
Y2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpKQorICAgIGlmIChhcmdzLkxlbmd0aCgpID4g
MCAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1swXSkgJiYgIVY4V2ViR0xTaGFkZXI6Okhhc0lu
c3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29s
YXRlKCkpKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKDAsIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKLSAgICBXZWJHTFNoYWRlciogc2hhZGVyID0gVjhXZWJHTFNoYWRlcjo6SGFzSW5zdGFu
Y2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhXZWJHTFNoYWRlcjo6dG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwOworICAgIFdlYkdMU2hh
ZGVyKiBzaGFkZXIgPSBWOFdlYkdMU2hhZGVyOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdl
dElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOFdlYkdMU2hhZGVy
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDA7CiAg
ICAgdW5zaWduZWQgcG5hbWUgPSB0b0ludDMyKGFyZ3NbMV0pOwogICAgIFdlYkdMR2V0SW5mbyBp
bmZvID0gY29udGV4dC0+Z2V0U2hhZGVyUGFyYW1ldGVyKHNoYWRlciwgcG5hbWUsIGVjKTsKICAg
ICBpZiAoZWMpCkBAIC00MTgsMTEgKzQxOCwxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1NZXRob2RDdXN0b20oY29uc3Qgdjg6Ogog
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0ID0gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwotICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMCAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1sw
XSkgJiYgIVY4V2ViR0xQcm9ncmFtOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xh
dGUoKSkpCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAwICYmICFpc1VuZGVmaW5lZE9yTnVsbChh
cmdzWzBdKSAmJiAhVjhXZWJHTFByb2dyYW06Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0
SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKICAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKDAsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICBXZWJHTFByb2dyYW0q
IHByb2dyYW0gPSBWOFdlYkdMUHJvZ3JhbTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJ
c29sYXRlKCkpID8gVjhXZWJHTFByb2dyYW06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QoYXJnc1swXSkpIDogMDsKKyAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBWOFdl
YkdMUHJvZ3JhbTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxk
VHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhXZWJHTFByb2dyYW06OnRvTmF0aXZlKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKIAotICAgIGlmIChhcmdzLkxl
bmd0aCgpID4gMSAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkgJiYgIVY4V2ViR0xVbmlm
b3JtTG9jYXRpb246Okhhc0luc3RhbmNlKGFyZ3NbMV0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAg
ICBpZiAoYXJncy5MZW5ndGgoKSA+IDEgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pICYm
ICFWOFdlYkdMVW5pZm9ybUxvY2F0aW9uOjpIYXNJbnN0YW5jZShhcmdzWzFdLCBhcmdzLkdldElz
b2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgYm9vbCBvayA9IGZhbHNl
OwogICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiA9IHRvV2ViR0xVbmlmb3JtTG9j
YXRpb24oYXJnc1sxXSwgb2ssIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTQ4NywxNCArNDg3LDE0
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmVydGV4QXR0cmliQW5kVW5pZm9ybUhl
bHBlcmYoY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICBpZiAoaXNGdW5jdGlvblRvQ2FsbEZvckF0
dHJpYnV0ZShmdW5jdGlvblRvQ2FsbCkpCiAgICAgICAgIGluZGV4ID0gdG9JbnQzMihhcmdzWzBd
KTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAwICYmICFpc1VuZGVm
aW5lZE9yTnVsbChhcmdzWzBdKSAmJiAhVjhXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6SGFzSW5zdGFu
Y2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpKQorICAgICAgICBpZiAoYXJncy5MZW5ndGgo
KSA+IDAgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMF0pICYmICFWOFdlYkdMVW5pZm9ybUxv
Y2F0aW9uOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBl
KGFyZ3MuR2V0SXNvbGF0ZSgpKSkpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
MCwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgICAgICBsb2NhdGlvbiA9IHRvV2ViR0xVbmlmb3Jt
TG9jYXRpb24oYXJnc1swXSwgb2ssIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICB9CiAKICAgICBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAKLSAgICBpZiAoVjhGbG9hdDMyQXJyYXk6Okhhc0lu
c3RhbmNlKGFyZ3NbMV0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkgeworICAgIGlmIChWOEZsb2F0MzJB
cnJheTo6SGFzSW5zdGFuY2UoYXJnc1sxXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShh
cmdzLkdldElzb2xhdGUoKSkpKSB7CiAgICAgICAgIEZsb2F0MzJBcnJheSogYXJyYXkgPSBWOEZs
b2F0MzJBcnJheTo6dG9OYXRpdmUoYXJnc1sxXS0+VG9PYmplY3QoKSk7CiAgICAgICAgIEFTU0VS
VChhcnJheSAhPSBOVUxMKTsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC01NTgs
MTIgKzU1OCwxMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHVuaWZvcm1IZWxwZXJp
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dCogY29udGV4dCA9IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKLSAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDAgJiYgIWlzVW5kZWZpbmVkT3JO
dWxsKGFyZ3NbMF0pICYmICFWOFdlYkdMVW5pZm9ybUxvY2F0aW9uOjpIYXNJbnN0YW5jZShhcmdz
WzBdLCBhcmdzLkdldElzb2xhdGUoKSkpCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAwICYmICFp
c1VuZGVmaW5lZE9yTnVsbChhcmdzWzBdKSAmJiAhVjhXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6SGFz
SW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElz
b2xhdGUoKSkpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29s
YXRlKCkpOwogICAgIGJvb2wgb2sgPSBmYWxzZTsKICAgICBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
bG9jYXRpb24gPSB0b1dlYkdMVW5pZm9ybUxvY2F0aW9uKGFyZ3NbMF0sIG9rLCBhcmdzLkdldElz
b2xhdGUoKSk7CiAKLSAgICBpZiAoVjhJbnQzMkFycmF5OjpIYXNJbnN0YW5jZShhcmdzWzFdLCBh
cmdzLkdldElzb2xhdGUoKSkpIHsKKyAgICBpZiAoVjhJbnQzMkFycmF5OjpIYXNJbnN0YW5jZShh
cmdzWzFdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkp
IHsKICAgICAgICAgSW50MzJBcnJheSogYXJyYXkgPSBWOEludDMyQXJyYXk6OnRvTmF0aXZlKGFy
Z3NbMV0tPlRvT2JqZWN0KCkpOwogICAgICAgICBBU1NFUlQoYXJyYXkgIT0gTlVMTCk7CiAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNjYwLDEzICs2NjAsMTMgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB1bmlmb3JtTWF0cml4SGVscGVyKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MsCiAKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBWOFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAKLSAgICBpZiAoYXJn
cy5MZW5ndGgoKSA+IDAgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMF0pICYmICFWOFdlYkdM
VW5pZm9ybUxvY2F0aW9uOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkp
CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAwICYmICFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzBd
KSAmJiAhVjhXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5H
ZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKQogICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIGJvb2wgb2sgPSBm
YWxzZTsKICAgICBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24gPSB0b1dlYkdMVW5pZm9y
bUxvY2F0aW9uKGFyZ3NbMF0sIG9rLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgCiAgICAgYm9v
bCB0cmFuc3Bvc2UgPSBhcmdzWzFdLT5Cb29sZWFuVmFsdWUoKTsKLSAgICBpZiAoVjhGbG9hdDMy
QXJyYXk6Okhhc0luc3RhbmNlKGFyZ3NbMl0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkgeworICAgIGlm
IChWOEZsb2F0MzJBcnJheTo6SGFzSW5zdGFuY2UoYXJnc1syXSwgYXJncy5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKSB7CiAgICAgICAgIEZsb2F0MzJBcnJheSog
YXJyYXkgPSBWOEZsb2F0MzJBcnJheTo6dG9OYXRpdmUoYXJnc1syXS0+VG9PYmplY3QoKSk7CiAg
ICAgICAgIEFTU0VSVChhcnJheSAhPSBOVUxMKTsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggMWFhZmE3NDJiMWJkNWQwNWUxMzc0MTlh
YWUxYzM4MTY3MzVlMTkyNy4uN2VjODkxMGFlOTc1NjUxMmU5OTk0MWE1OGFhZjE5YWY1NWU5Y2M3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0
cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtMTU4LDEwICsxNTgsMTAgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6Om9wZW5NZXRob2RDdXN0b20oY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXIKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi1zdGF0
aWMgYm9vbCBpc0RvY3VtZW50VHlwZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQorc3RhdGljIGJvb2wgaXNEb2N1bWVudFR5cGUodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBj
dXJyZW50V29ybGRUeXBlKQogewogICAgIC8vIEZJWE1FOiBhZGQgb3RoZXIgZG9jdW1lbnQgdHlw
ZXMuCi0gICAgcmV0dXJuIFY4RG9jdW1lbnQ6Okhhc0luc3RhbmNlKHZhbHVlLCBpc29sYXRlKSB8
fCBWOEhUTUxEb2N1bWVudDo6SGFzSW5zdGFuY2UodmFsdWUsIGlzb2xhdGUpOworICAgIHJldHVy
biBWOERvY3VtZW50OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlw
ZSkgfHwgVjhIVE1MRG9jdW1lbnQ6Okhhc0luc3RhbmNlKHZhbHVlLCBpc29sYXRlLCBjdXJyZW50
V29ybGRUeXBlKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6
OnNlbmRNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKQEAgLTE3NSwzMCAr
MTc1LDMxIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpzZW5kTWV0
aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyCiAgICAgICAgIHhtbEh0dHBSZXF1ZXN0
LT5zZW5kKGVjKTsKICAgICBlbHNlIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFy
ZyA9IGFyZ3NbMF07CisgICAgICAgIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSA9
IHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgICAgIGlmIChpc1VuZGVmaW5lZE9y
TnVsbChhcmcpKQogICAgICAgICAgICAgeG1sSHR0cFJlcXVlc3QtPnNlbmQoZWMpOwotICAgICAg
ICBlbHNlIGlmIChpc0RvY3VtZW50VHlwZShhcmcsIGFyZ3MuR2V0SXNvbGF0ZSgpKSkgeworICAg
ICAgICBlbHNlIGlmIChpc0RvY3VtZW50VHlwZShhcmcsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBjdXJy
ZW50V29ybGRUeXBlKSkgewogICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmpl
Y3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZyk7CiAgICAgICAgICAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBWOERvY3VtZW50Ojp0b05hdGl2ZShvYmplY3QpOwogICAgICAgICAg
ICAgQVNTRVJUKGRvY3VtZW50KTsKICAgICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5zZW5kKGRv
Y3VtZW50LCBlYyk7Ci0gICAgICAgIH0gZWxzZSBpZiAoVjhCbG9iOjpIYXNJbnN0YW5jZShhcmcs
IGFyZ3MuR2V0SXNvbGF0ZSgpKSkgeworICAgICAgICB9IGVsc2UgaWYgKFY4QmxvYjo6SGFzSW5z
dGFuY2UoYXJnLCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlwZSkpIHsKICAgICAg
ICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChhcmcpOwogICAgICAgICAgICAgQmxvYiogYmxvYiA9IFY4QmxvYjo6dG9OYXRp
dmUob2JqZWN0KTsKICAgICAgICAgICAgIEFTU0VSVChibG9iKTsKICAgICAgICAgICAgIHhtbEh0
dHBSZXF1ZXN0LT5zZW5kKGJsb2IsIGVjKTsKLSAgICAgICAgfSBlbHNlIGlmIChWOERPTUZvcm1E
YXRhOjpIYXNJbnN0YW5jZShhcmcsIGFyZ3MuR2V0SXNvbGF0ZSgpKSkgeworICAgICAgICB9IGVs
c2UgaWYgKFY4RE9NRm9ybURhdGE6Okhhc0luc3RhbmNlKGFyZywgYXJncy5HZXRJc29sYXRlKCks
IGN1cnJlbnRXb3JsZFR5cGUpKSB7CiAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IG9iamVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnKTsKICAgICAgICAgICAg
IERPTUZvcm1EYXRhKiBkb21Gb3JtRGF0YSA9IFY4RE9NRm9ybURhdGE6OnRvTmF0aXZlKG9iamVj
dCk7CiAgICAgICAgICAgICBBU1NFUlQoZG9tRm9ybURhdGEpOwogICAgICAgICAgICAgeG1sSHR0
cFJlcXVlc3QtPnNlbmQoZG9tRm9ybURhdGEsIGVjKTsKICNpZiBFTkFCTEUoV0VCR0wpIHx8IEVO
QUJMRShCTE9CKQotICAgICAgICB9IGVsc2UgaWYgKFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNl
KGFyZywgYXJncy5HZXRJc29sYXRlKCkpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoVjhBcnJheUJ1
ZmZlcjo6SGFzSW5zdGFuY2UoYXJnLCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlw
ZSkpIHsKICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmcpOwogICAgICAgICAgICAgQXJyYXlCdWZmZXIqIGFy
cmF5QnVmZmVyID0gVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUob2JqZWN0KTsKICAgICAgICAgICAg
IEFTU0VSVChhcnJheUJ1ZmZlcik7CiAgICAgICAgICAgICB4bWxIdHRwUmVxdWVzdC0+c2VuZChh
cnJheUJ1ZmZlciwgZWMpOwotICAgICAgICB9IGVsc2UgaWYgKFY4QXJyYXlCdWZmZXJWaWV3OjpI
YXNJbnN0YW5jZShhcmcsIGFyZ3MuR2V0SXNvbGF0ZSgpKSkgeworICAgICAgICB9IGVsc2UgaWYg
KFY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZShhcmcsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBj
dXJyZW50V29ybGRUeXBlKSkgewogICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBv
YmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZyk7CiAgICAgICAgICAgICBB
cnJheUJ1ZmZlclZpZXcqIGFycmF5QnVmZmVyVmlldyA9IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05h
dGl2ZShvYmplY3QpOwogICAgICAgICAgICAgQVNTRVJUKGFycmF5QnVmZmVyVmlldyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1ZmZlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1ZmZlci5jcHAKaW5kZXggMGVjNWRm
M2Y0ZWVhMmIxM2VmMmRkMzZhNTg0OTg2MGVhNDYyZjEzOC4uNThhZDM1ZDE5ZGMxMzUxNjA2MzBh
NTI1MTc5NWU5YTYxYzg4ZTY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkFycmF5QnVmZmVyLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
V2ViQXJyYXlCdWZmZXI6OnRvVjhWYWx1ZSgpCiAKIFdlYkFycmF5QnVmZmVyKiBXZWJBcnJheUJ1
ZmZlcjo6Y3JlYXRlRnJvbVY4VmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQogewot
ICAgIGlmICghVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UodmFsdWUsIHY4OjpJc29sYXRlOjpH
ZXRDdXJyZW50KCkpKQorICAgIGlmICghVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UodmFsdWUs
IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCksIFdlYkNvcmU6Ok1haW5Xb3JsZCkgJiYgIVY4QXJy
YXlCdWZmZXI6Okhhc0luc3RhbmNlKHZhbHVlLCB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpLCBX
ZWJDb3JlOjpJc29sYXRlZFdvcmxkKSAmJiAhVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UodmFs
dWUsIHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCksIFdlYkNvcmU6OldvcmtlcldvcmxkKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgV1RGOjpBcnJheUJ1ZmZlciogYnVmZmVyID0gVjhBcnJheUJ1
ZmZlcjo6dG9OYXRpdmUodmFsdWUtPlRvT2JqZWN0KCkpOwogICAgIHJldHVybiBuZXcgV2ViQXJy
YXlCdWZmZXIoYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkFycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJB
cnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IDNhZWNjZmVkYWQxMjhlNzZmMWRkNjZhYWUzZWM2ZDdj
YjRlZjc1ODkuLjQyNGY0MjdkODE5MDc4OWE5NGNjZWFkYTk4ZmM3YWI0MGM0ZWY4MWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFycmF5QnVmZmVyVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXJyYXlCdWZmZXJWaWV3LmNwcApA
QCAtNjMsNyArNjMsNyBAQCB1bnNpZ25lZCBXZWJBcnJheUJ1ZmZlclZpZXc6OmJ5dGVMZW5ndGgo
KSBjb25zdAogCiBXZWJBcnJheUJ1ZmZlclZpZXcqIFdlYkFycmF5QnVmZmVyVmlldzo6Y3JlYXRl
RnJvbVY4VmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQogewotICAgIGlmICghV2Vi
Q29yZTo6VjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKHZhbHVlLCB2ODo6SXNvbGF0ZTo6
R2V0Q3VycmVudCgpKSkKKyAgICBpZiAoIVdlYkNvcmU6OlY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJ
bnN0YW5jZSh2YWx1ZSwgdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKSwgV2ViQ29yZTo6TWFpbldv
cmxkKSAmJiAhV2ViQ29yZTo6VjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKHZhbHVlLCB2
ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpLCBXZWJDb3JlOjpJc29sYXRlZFdvcmxkKSAmJiAhV2Vi
Q29yZTo6VjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKHZhbHVlLCB2ODo6SXNvbGF0ZTo6
R2V0Q3VycmVudCgpLCBXZWJDb3JlOjpXb3JrZXJXb3JsZCkpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIEFycmF5QnVmZmVyVmlldyogdmlldyA9IFdlYkNvcmU6OlY4QXJyYXlCdWZmZXJWaWV3Ojp0
b05hdGl2ZSh2YWx1ZS0+VG9PYmplY3QoKSk7CiAgICAgcmV0dXJuIG5ldyBXZWJBcnJheUJ1ZmZl
clZpZXcodmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJC
aW5kaW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCaW5kaW5ncy5jcHAK
aW5kZXggZTdlN2RkYjZhMTU0ZDEwZDQ3NTI5ZmNlNzQyZDQ2ZTUxZDg4YjZjOS4uNTllNWQ3N2Uz
Njc4Yzc5ODFiODVlMWRjNmQxNjE3OWE1YTFmNDc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkJpbmRpbmdzLmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIHN0YXRpYyBib29sIGdl
dFJhbmdlSW1wbChOUE9iamVjdCogb2JqZWN0LCBXZWJSYW5nZSogd2ViUmFuZ2UsIHY4OjpJc29s
YXRlKiBpc29sCiAgICAgaWYgKCFWOFJhbmdlOjppbmZvLmVxdWFscyh0b1dyYXBwZXJUeXBlSW5m
byh2OE9iamVjdCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSYW5nZSogbmF0aXZl
ID0gVjhSYW5nZTo6SGFzSW5zdGFuY2UodjhPYmplY3QsIGlzb2xhdGUpID8gVjhSYW5nZTo6dG9O
YXRpdmUodjhPYmplY3QpIDogMDsKKyAgICBSYW5nZSogbmF0aXZlID0gVjhSYW5nZTo6SGFzSW5z
dGFuY2UodjhPYmplY3QsIGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSkgPyBWOFJhbmdlOjp0
b05hdGl2ZSh2OE9iamVjdCkgOiAwOwogICAgIGlmICghbmF0aXZlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKQEAgLTIyOSw3ICsyMjksNyBAQCBzdGF0aWMgYm9vbCBnZXROb2RlSW1wbChOUE9i
amVjdCogb2JqZWN0LCBXZWJOb2RlKiB3ZWJOb2RlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZQogCiAg
ICAgVjhOUE9iamVjdCogdjhOUE9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VjhOUE9iamVjdCo+
KG9iamVjdCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2OE9iamVjdCh2OE5QT2JqZWN0
LT52OE9iamVjdCk7Ci0gICAgTm9kZSogbmF0aXZlID0gVjhOb2RlOjpIYXNJbnN0YW5jZSh2OE9i
amVjdCwgaXNvbGF0ZSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4T2JqZWN0KSA6IDA7CisgICAgTm9k
ZSogbmF0aXZlID0gVjhOb2RlOjpIYXNJbnN0YW5jZSh2OE9iamVjdCwgaXNvbGF0ZSwgd29ybGRU
eXBlKGlzb2xhdGUpKSA/IFY4Tm9kZTo6dG9OYXRpdmUodjhPYmplY3QpIDogMDsKICAgICBpZiAo
IW5hdGl2ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yNDQsNyArMjQ0LDcgQEAgc3Rh
dGljIGJvb2wgZ2V0RWxlbWVudEltcGwoTlBPYmplY3QqIG9iamVjdCwgV2ViRWxlbWVudCogd2Vi
RWxlbWVudCwgdjg6Oklzb2xhdGUKIAogICAgIFY4TlBPYmplY3QqIHY4TlBPYmplY3QgPSByZWlu
dGVycHJldF9jYXN0PFY4TlBPYmplY3QqPihvYmplY3QpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gdjhPYmplY3QodjhOUE9iamVjdC0+djhPYmplY3QpOwotICAgIEVsZW1lbnQqIG5hdGl2
ZSA9IFY4RWxlbWVudDo6SGFzSW5zdGFuY2UodjhPYmplY3QsIGlzb2xhdGUpID8gVjhFbGVtZW50
Ojp0b05hdGl2ZSh2OE9iamVjdCkgOiAwOworICAgIEVsZW1lbnQqIG5hdGl2ZSA9IFY4RWxlbWVu
dDo6SGFzSW5zdGFuY2UodjhPYmplY3QsIGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSkgPyBW
OEVsZW1lbnQ6OnRvTmF0aXZlKHY4T2JqZWN0KSA6IDA7CiAgICAgaWYgKCFuYXRpdmUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjU5LDcgKzI1OSw3IEBAIHN0YXRpYyBib29sIGdldEFy
cmF5QnVmZmVySW1wbChOUE9iamVjdCogb2JqZWN0LCBXZWJBcnJheUJ1ZmZlciogYXJyYXlCdWZm
ZXIsIHY4CiAKICAgICBWOE5QT2JqZWN0KiB2OE5QT2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxW
OE5QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4T2JqZWN0
KHY4TlBPYmplY3QtPnY4T2JqZWN0KTsKLSAgICBBcnJheUJ1ZmZlciogbmF0aXZlID0gVjhBcnJh
eUJ1ZmZlcjo6SGFzSW5zdGFuY2UodjhPYmplY3QsIGlzb2xhdGUpID8gVjhBcnJheUJ1ZmZlcjo6
dG9OYXRpdmUodjhPYmplY3QpIDogMDsKKyAgICBBcnJheUJ1ZmZlciogbmF0aXZlID0gVjhBcnJh
eUJ1ZmZlcjo6SGFzSW5zdGFuY2UodjhPYmplY3QsIGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRl
KSkgPyBWOEFycmF5QnVmZmVyOjp0b05hdGl2ZSh2OE9iamVjdCkgOiAwOwogICAgIGlmICghbmF0
aXZlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGF0aWMg
Ym9vbCBnZXRBcnJheUJ1ZmZlclZpZXdJbXBsKE5QT2JqZWN0KiBvYmplY3QsIFdlYkFycmF5QnVm
ZmVyVmlldyogYXJyYXlCdQogCiAgICAgVjhOUE9iamVjdCogdjhOUE9iamVjdCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8VjhOUE9iamVjdCo+KG9iamVjdCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiB2OE9iamVjdCh2OE5QT2JqZWN0LT52OE9iamVjdCk7Ci0gICAgQXJyYXlCdWZmZXJWaWV3KiBu
YXRpdmUgPSBWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UodjhPYmplY3QsIGlzb2xhdGUp
ID8gVjhBcnJheUJ1ZmZlclZpZXc6OnRvTmF0aXZlKHY4T2JqZWN0KSA6IDA7CisgICAgQXJyYXlC
dWZmZXJWaWV3KiBuYXRpdmUgPSBWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UodjhPYmpl
Y3QsIGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSkgPyBWOEFycmF5QnVmZmVyVmlldzo6dG9O
YXRpdmUodjhPYmplY3QpIDogMDsKICAgICBpZiAoIW5hdGl2ZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193310</attachid>
            <date>2013-03-15 08:04:03 -0700</date>
            <delta_ts>2013-03-15 08:39:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111724-20130315155957.patch</filename>
            <type>text/plain</type>
            <size>175496</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZkNGM4ZDM3N2Q0MGU1
MzVmNzQ2MWYwYmQwZWM5YjZjYjFjMGM5MS4uNTQyZDI0OTVjNGU5MzAxYTk1ZmQxZGFiZjYxNjhh
Njg2NjAxNzQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0OCBAQAorMjAxMy0wMy0xNSAgTWFy
amEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBTdG9yZSBt
YWluIHdvcmxkIGFuZCBub24tbWFpbiB3b3JsZCB0ZW1wbGF0ZXMgc2VwYXJhdGVseS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTcyNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgbmVlZGVk
IGZvciBnZW5lcmF0aW5nIHNwZWNpYWxpemVkIGJpbmRpbmdzIGZvciB0aGUgbWFpbgorICAgICAg
ICB3b3JsZCAoYnVnIDExMDg3NCkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzICh1cGRhdGVkIGV4
aXN0aW5nIGJpbmRpbmdzIHRlc3RzKS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2Vu
ZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxB
dHRyU2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrRXhwcmVzc2lvbik6
CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAgICAgIChHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uKToKKyAgICAgICAgKEpTVmFsdWVUb05hdGl2ZSk6CisgICAgICAgIChDcmVh
dGVDdXN0b21TaWduYXR1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OEZsb2F0NjRBcnJheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdDY0QXJyYXlWOEludGVy
bmFsOjpmb29NZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhGbG9hdDY0QXJy
YXlUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEZsb2F0NjRBcnJheTo6R2V0VGVtcGxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0QXJyYXk6Okhhc0luc3RhbmNlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0QXJyYXk6Okhhc0lu
c3RhbmNlSW5BbnlXb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
RmxvYXQ2NEFycmF5Lmg6CisgICAgICAgIChWOEZsb2F0NjRBcnJheSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6ZXhjaXRpbmdGdW5jdGlv
bk1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5h
bDo6cG9zdE1lc3NhZ2VBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4
VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFj
dGl2ZURPTU9iamVjdDo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0
aXZlRE9NT2JqZWN0OjpIYXNJbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0
Lmg6CisgICAgICAgIChWOFRlc3RBY3RpdmVET01PYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6Okhhc0luc3RhbmNlKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6Okhh
c0luc3RhbmNlSW5BbnlXb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6CisgICAgICAgIChWOFRlc3RDdXN0b21OYW1lZEdl
dHRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
SGFzSW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRl
c3RFdmVudENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZUluQW55V29ybGQpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmg6CisgICAgICAg
IChWOFRlc3RFdmVudENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEV2ZW50
VGFyZ2V0VjhJbnRlcm5hbDo6ZGlzcGF0Y2hFdmVudE1ldGhvZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4VGVzdEV2ZW50VGFyZ2V0OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRl
c3RFdmVudFRhcmdldDo6SGFzSW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOFRlc3RFdmVudFRhcmdldDo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaDoKKyAg
ICAgICAgKFY4VGVzdEV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV4Y2Vw
dGlvbjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXhjZXB0aW9uOjpI
YXNJbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEV4Y2VwdGlvbjo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgIChWOFRlc3RFeGNlcHRp
b24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1l
bnRhbE5vZGVBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOElu
dGVybmFsOjpzdXBwbGVtZW50YWxNZXRob2QyTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEludGVyZmFjZTo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0SW50ZXJm
YWNlOjpIYXNJbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4VGVzdEludGVyZmFjZTo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmg6CisgICAgICAgIChWOFRlc3RJ
bnRlcmZhY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXI6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXI6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6SGFzSW5zdGFu
Y2VJbkFueVdvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oOgorICAgICAgICAoVjhUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVk
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rv
cjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rv
cjo6SGFzSW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3ROYW1lZENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZUluQW55V29ybGQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmg6CisgICAg
ICAgIChWOFRlc3ROYW1lZENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpH
ZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpIYXNJbnN0YW5jZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6Okhhc0lu
c3RhbmNlSW5BbnlXb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5vZGUuaDoKKyAgICAgICAgKFY4VGVzdE5vZGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6OnRlc3RPYmpBdHRyQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OnR5cGVkQXJyYXlBdHRyQXR0clNldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGVBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZVJhaXNlc0F0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyU2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2Fs
bFN0YWNrQXR0cmlidXRlQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6bXV0YWJsZVBvaW50QXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjp2b2lkTWV0aG9kV2l0aEFyZ3NNZXRob2QpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmxvbmdNZXRob2RXaXRoQXJnc01ldGhvZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6b2JqTWV0aG9kV2l0aEFyZ3NN
ZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFRoYXRS
ZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRob2QxTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kMk1ldGhvZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZDhNZXRob2QpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRob2RNZXRob2Qp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQxTWV0aG9kKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0Mk1ldGhvZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVydDRNZXRob2QpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQ1TWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY05vZGVNZXRob2RNZXRob2Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0T2JqOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RPYmo6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhUZXN0T2JqOjpIYXNJbnN0YW5jZUluQW55V29ybGQpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaDoKKyAgICAgICAgKFY4VGVzdE9iaik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNW
OEludGVybmFsOjpjb25zdHJ1Y3RvcjEpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNWOEludGVybmFsOjpjb25zdHJ1Y3RvcjIpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNWOEludGVybmFsOjpjb25zdHJ1Y3RvcjMpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNWOEludGVybmFsOjpj
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzOjpIYXNJbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Okhhc0luc3RhbmNlSW5BbnlXb3Js
ZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Okhhc0luc3RhbmNlKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlOjpIYXNJbnN0YW5jZUluQW55V29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDoKKyAg
ICAgICAgKFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmZ1bmNNZXRob2QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29uZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3RUeXBlZGVmczo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0
VHlwZWRlZnM6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhUZXN0VHlwZWRlZnM6Okhhc0luc3RhbmNlSW5BbnlXb3JsZCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmg6CisgICAgICAgIChWOFRl
c3RUeXBlZGVmcyk6CisgICAgICAgICogYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaWN0aW9uYXJ5OjpnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nj
cmlwdFByb2ZpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2ZpbGVyOjp2aXNp
dE5vZGVXcmFwcGVycyk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOEFkYXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0RPTVN0
cmluZ0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6dG9YUGF0aE5TUmVzb2x2ZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjp0b1JlZlB0ck5hdGl2ZUFycmF5KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OENvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9PcHRpb25zQ29sbGVjdGlvblNl
dHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bnBPYmpl
Y3RJbnZva2VJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6Omhhc1ByaXZhdGVUZW1wbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlcklzb2xhdGVEYXRhOjpwcml2YXRlVGVtcGxhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJJc29sYXRlRGF0YTo6cmF3VGVtcGxhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhQZXJJc29sYXRlRGF0YTo6aGFzSW5zdGFuY2UpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVy
SXNvbGF0ZURhdGE6OnJhd1RlbXBsYXRlTWFwKToKKyAgICAgICAgKFY4UGVySXNvbGF0ZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJJc29sYXRlRGF0YTo6dGVtcGxhdGVNYXApOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RUcmFuc2ZlcmFibGVzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJh
eUJ1ZmZlclZpZXdDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFdlYkdMQXJy
YXkpOgorICAgICAgICAoV2ViQ29yZTo6c2V0V2ViR0xBcnJheUhlbHBlcik6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpidWZmZXJBdHRyU2V0dGVy
Q3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4QmxvYjo6Y29uc3RydWN0b3JDdXN0b20pOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0b0NhbnZhc1N0eWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhDbGlw
Ym9hcmQ6OnNldERyYWdJbWFnZU1ldGhvZEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Q3J5cHRvOjpn
ZXRSYW5kb21WYWx1ZXNNZXRob2RDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NRm9ybURh
dGE6OmNvbnN0cnVjdG9yQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NRm9ybURhdGE6
OmFwcGVuZE1ldGhvZEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0
YVZpZXdDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhEYXRhVmlldzo6Y29uc3RydWN0
b3JDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RG9jdW1lbnQ6OmV2YWx1YXRlTWV0aG9kQ3VzdG9t
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTWVkaWFFbGVtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTE1lZGlhRWxlbWVudDo6Y29udHJvbGxlckF0
dHJTZXR0ZXJDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRp
b25zQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxPcHRpb25z
Q29sbGVjdGlvbjo6YWRkTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1v
dmVFbGVtZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhJbmplY3RlZFNjcmlwdEhvc3Q6
OmlzSFRNTEFsbENvbGxlY3Rpb25NZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhJ
bmplY3RlZFNjcmlwdEhvc3Q6OnR5cGVNZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6
VjhJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzTWV0aG9kQ3VzdG9tKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZWxvYWRBdHRyR2V0dGVyQ3VzdG9tKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4TG9jYXRpb246OnJlcGxhY2VBdHRyR2V0dGVyQ3VzdG9tKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4TG9jYXRpb246OmFzc2lnbkF0dHJHZXR0ZXJDdXN0b20pOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhOb2RlOjppbnNlcnRCZWZvcmVNZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhO
b2RlOjpyZXBsYWNlQ2hpbGRNZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhOb2Rl
OjpyZW1vdmVDaGlsZE1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOE5vZGU6OmFw
cGVuZENoaWxkTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhO
b2RlTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE5vZGVMaXN0OjpvcGFxdWVS
b290Rm9yR0MpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1dlYkdMVW5pZm9ybUxvY2F0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBdHRh
Y2hlZFNoYWRlcnNNZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldFByb2dyYW1QYXJhbWV0ZXJNZXRob2RDdXN0b20pOgorICAgICAgICAo
V2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclBhcmFtZXRlck1ldGhv
ZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
VW5pZm9ybU1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjp2ZXJ0ZXhBdHRyaWJBbmRV
bmlmb3JtSGVscGVyZik6CisgICAgICAgIChXZWJDb3JlOjp1bmlmb3JtSGVscGVyaSk6CisgICAg
ICAgIChXZWJDb3JlOjp1bmlmb3JtTWF0cml4SGVscGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c0RvY3VtZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0OjpzZW5k
TWV0aG9kQ3VzdG9tKToKKwogMjAxMy0wMy0xNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0NTgw
Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYzljMTI4NjBhNTM5NDkxYWQ0ZmQzYTg1
YjU4NWU2NzdhMTEzYzcwMy4uNmM5OGYzMWJkMmI2OThkNTc1ZmIxYThmZDkwMzc5Mzk3ODQxZWUy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMy0wMy0x
NSAgTWFyamEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBT
dG9yZSBtYWluIHdvcmxkIGFuZCBub24tbWFpbiB3b3JsZCB0ZW1wbGF0ZXMgc2VwYXJhdGVseS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTcyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMg
bmVlZGVkIGZvciBnZW5lcmF0aW5nIHNwZWNpYWxpemVkIGJpbmRpbmdzIGZvciB0aGUgbWFpbgor
ICAgICAgICB3b3JsZCAoYnVnIDExMDg3NCkuCisKKyAgICAgICAgKiBzcmMvV2ViQXJyYXlCdWZm
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbVY4VmFs
dWUpOgorICAgICAgICAqIHNyYy9XZWJBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBcnJheUJ1ZmZlclZpZXc6OmNyZWF0ZUZyb21WOFZhbHVlKToKKyAgICAgICAgKiBz
cmMvV2ViQmluZGluZ3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRSYW5nZUltcGwpOgorICAg
ICAgICAoV2ViS2l0OjpnZXROb2RlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OmdldEVsZW1lbnRJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6Z2V0QXJyYXlCdWZmZXJJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6Z2V0QXJyYXlCdWZmZXJWaWV3SW1wbCk6CisKIDIwMTMtMDMtMTUgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxNDU4MDIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDc1OGQ3NTE4NTM4ZjgyMTFmZGI3NWFjMTU2ZTZh
MzljZDE2ZDg4MGEuLmI3OWZhMzQ5ODRmZTIzNjBjM2EyNmIzMmI0NmJmMjk3NTYwZmViNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtCkBAIC0zNjAsNyArMzYwLDggQEAgRU5ECiAgICAgfQogCiAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgPDxFTkQpOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CisgICAg
c3RhdGljIGJvb2wgSGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwg
djg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAg
c3RhdGljICR7bmF0aXZlVHlwZX0qIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2Jq
ZWN0KQogICAgIHsKQEAgLTc4MCw3ICs3ODEsNyBAQCBzdWIgR2VuZXJhdGVEb21haW5TYWZlRnVu
Y3Rpb25HZXR0ZXIKICAgICBteSAkdjhJbnRlcmZhY2VOYW1lID0gIlY4IiAuICRpbnRlcmZhY2VO
YW1lOwogICAgIG15ICRmdW5jTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogCi0g
ICAgbXkgJHNpZ25hdHVyZSA9ICJ2ODo6U2lnbmF0dXJlOjpOZXcoVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnJhd1RlbXBsYXRlKCYiIC4gJHY4SW50ZXJmYWNlTmFt
ZSAuICI6OmluZm8pKSI7CisgICAgbXkgJHNpZ25hdHVyZSA9ICJ2ODo6U2lnbmF0dXJlOjpOZXco
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnJhd1RlbXBsYXRlKCYi
IC4gJHY4SW50ZXJmYWNlTmFtZSAuICI6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpKSI7CiAgICAg
aWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhEb05vdENo
ZWNrU2lnbmF0dXJlIn0pIHsKICAgICAgICAgJHNpZ25hdHVyZSA9ICJ2ODo6TG9jYWw8djg6OlNp
Z25hdHVyZT4oKSI7CiAgICAgfQpAQCAtMTI0OSw3ICsxMjUwLDcgQEAgc3ViIEdlbmVyYXRlTm9y
bWFsQXR0clNldHRlcgogICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJTdHJpY3RUeXBlQ2hlY2tpbmcifSkgewogICAgICAgICBteSAkYXJnVHlwZSA9
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICAgICAgaWYgKElzV3JhcHBlclR5cGUo
JGFyZ1R5cGUpKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAg
ICBpZiAoIWlzVW5kZWZpbmVkT3JOdWxsKHZhbHVlKSAmJiAhVjgke2FyZ1R5cGV9OjpIYXNJbnN0
YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCkpKSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIGlmICghaXNVbmRlZmluZWRPck51bGwodmFsdWUp
ICYmICFWOCR7YXJnVHlwZX06Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSwg
d29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkpIHtcbiIpOwogICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgICAgIHRocm93VHlwZUVycm9yKDAsIGluZm8uR2V0
SXNvbGF0ZSgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMs
ICIgICAgICAgIHJldHVybjtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRl
cm5hbHMsICIgICAgfVxuIik7CkBAIC0xNDUwLDkgKzE0NTEsOSBAQCBzdWIgR2VuZXJhdGVQYXJh
bWV0ZXJzQ2hlY2tFeHByZXNzaW9uCiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzaWYgKElz
V3JhcHBlclR5cGUoJHR5cGUpKSB7CiAgICAgICAgICAgICBpZiAoJHBhcmFtZXRlci0+aXNOdWxs
YWJsZSkgewotICAgICAgICAgICAgICAgIHB1c2goQGFuZEV4cHJlc3Npb24sICIoJHt2YWx1ZX0t
PklzTnVsbCgpIHx8IFY4JHt0eXBlfTo6SGFzSW5zdGFuY2UoJHZhbHVlLCBhcmdzLkdldElzb2xh
dGUoKSkpIik7CisgICAgICAgICAgICAgICAgcHVzaChAYW5kRXhwcmVzc2lvbiwgIigke3ZhbHVl
fS0+SXNOdWxsKCkgfHwgVjgke3R5cGV9OjpIYXNJbnN0YW5jZSgkdmFsdWUsIGFyZ3MuR2V0SXNv
bGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkiKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAYW5kRXhwcmVzc2lvbiwgIihWOCR7dHlwZX06
Okhhc0luc3RhbmNlKCR2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCkpKSIpOworICAgICAgICAgICAg
ICAgIHB1c2goQGFuZEV4cHJlc3Npb24sICIoVjgke3R5cGV9OjpIYXNJbnN0YW5jZSgkdmFsdWUs
IGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkiKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xODY4LDcgKzE4NjksNyBAQCBzdWIgR2VuZXJh
dGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgIGlmIChJc1dyYXBwZXJUeXBlKCRhcmdUeXBl
KSkgewogICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIFZlY3Rv
cjwkbmF0aXZlRWxlbWVudFR5cGU+ICRwYXJhbWV0ZXJOYW1lO1xuIjsKICAgICAgICAgICAgICAg
ICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBmb3IgKGludCBpID0gJHBhcmFtSW5kZXg7
IGkgPCBhcmdzLkxlbmd0aCgpOyArK2kpIHtcbiI7Ci0gICAgICAgICAgICAgICAgJHBhcmFtZXRl
ckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGlmICghVjgke2FyZ1R5cGV9OjpIYXNJbnN0YW5jZShh
cmdzW2ldLCBhcmdzLkdldElzb2xhdGUoKSkpXG4iOworICAgICAgICAgICAgICAgICRwYXJhbWV0
ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBpZiAoIVY4JHthcmdUeXBlfTo6SGFzSW5zdGFuY2Uo
YXJnc1tpXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkp
KVxuIjsKICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7XG4iOwogICAg
ICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICAkcGFyYW1ldGVy
TmFtZS5hcHBlbmQoVjgke2FyZ1R5cGV9Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KGFyZ3NbaV0pKSk7XG4iOwogICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0
cmluZyAuPSAiICAgIH1cbiI7CkBAIC0xODg5LDcgKzE4OTAsNyBAQCBzdWIgR2VuZXJhdGVQYXJh
bWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICBteSAkYXJnVmFsdWUgPSAiYXJnc1skcGFyYW1J
bmRleF0iOwogICAgICAgICAgICAgICAgIG15ICRhcmdUeXBlID0gJHBhcmFtZXRlci0+dHlwZTsK
ICAgICAgICAgICAgICAgICBpZiAoSXNXcmFwcGVyVHlwZSgkYXJnVHlwZSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPiAkcGFyYW1JbmRleCAmJiAhaXNVbmRlZmluZWRPck51bGwoJGFyZ1ZhbHVlKSAmJiAhVjgk
e2FyZ1R5cGV9OjpIYXNJbnN0YW5jZSgkYXJnVmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpKSlcbiI7
CisgICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlmIChh
cmdzLkxlbmd0aCgpID4gJHBhcmFtSW5kZXggJiYgIWlzVW5kZWZpbmVkT3JOdWxsKCRhcmdWYWx1
ZSkgJiYgIVY4JHthcmdUeXBlfTo6SGFzSW5zdGFuY2UoJGFyZ1ZhbHVlLCBhcmdzLkdldElzb2xh
dGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpXG4iOwogICAgICAgICAgICAgICAg
ICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKDAsIGFyZ3MuR2V0SXNvbGF0ZSgpKTtcbiI7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQpAQCAtMzE1NSwyMCArMzE1NiwyNyBAQCBFTkQKIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKHY4OjpJc29s
YXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklz
b2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBW
OFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVt
cGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRl
TWFwKCkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9y
IHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAg
ICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29w
ZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAg
ICAgICBDb25maWd1cmUke3Y4SW50ZXJmYWNlTmFtZX1UZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0
ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5h
ZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlJHt2OEludGVyZmFjZU5hbWV9VGVt
cGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxk
VHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBs
KTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgJHt2OEludGVyZmFjZU5hbWV9OjpIYXNJ
bnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRl
KQorYm9vbCAke3Y4SW50ZXJmYWNlTmFtZX06Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRU
eXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJ
bnN0YW5jZSgmaW5mbywgdmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7Cit9CisKK2Jv
b2wgJHt2OEludGVyZmFjZU5hbWV9OjpIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICByZXR1cm4gVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBN
YWluV29ybGQpCisgICAgICAgIHx8IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhh
c0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgSXNvbGF0ZWRXb3JsZCkKKyAgICAgICAgfHwgVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBXb3Jr
ZXJXb3JsZCk7CiB9CiAKIEVORApAQCAtNDA0Nyw3ICs0MDU1LDcgQEAgc3ViIEpTVmFsdWVUb05h
dGl2ZQogICAgIEFkZEluY2x1ZGVzRm9yVHlwZSgkdHlwZSk7CiAKICAgICBBZGRUb0ltcGxJbmNs
dWRlcygiVjgke3R5cGV9LmgiKTsKLSAgICByZXR1cm4gIlY4JHt0eXBlfTo6SGFzSW5zdGFuY2Uo
JHZhbHVlLCAkZ2V0SXNvbGF0ZSkgPyBWOCR7dHlwZX06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoJHZhbHVlKSkgOiAwIjsKKyAgICByZXR1cm4gIlY4JHt0eXBlfTo6SGFz
SW5zdGFuY2UoJHZhbHVlLCAkZ2V0SXNvbGF0ZSwgd29ybGRUeXBlKCRnZXRJc29sYXRlKSkgPyBW
OCR7dHlwZX06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoJHZhbHVlKSkg
OiAwIjsKIH0KIAogc3ViIEdldFY4SGVhZGVyTmFtZQpAQCAtNDA5OCw3ICs0MTA2LDcgQEAgc3Vi
IENyZWF0ZUN1c3RvbVNpZ25hdHVyZQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKEdldFY4SGVhZGVyTmFtZSgkdHlwZSkpOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICJWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjgke3R5cGV9OjppbmZvKSI7Cisg
ICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+cmF3VGVtcGxhdGUoJlY4JHt0eXBlfTo6aW5mbywgd29ybGRUeXBlKSI7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAkcmVzdWx0IC49ICJ2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCmluZGV4IGRkNzZl
YWY0MzEyMjdiZjcwZjFjMzUxNDFhNzYzOWU5ZjZkYWEzN2UuLmJlMGZhNTQwNTVhZDI3Zjg3NmRl
ZDEzZjk3MmQzODczMzM5MmFmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcApAQCAtODUsNyArODUs
NyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGZvb01ldGhvZChjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJu
IHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIEZs
b2F0NjRBcnJheSogaW1wID0gVjhGbG9hdDY0QXJyYXk6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwotICAgIFY4VFJZQ0FUQ0goRmxvYXQzMkFycmF5KiwgYXJyYXksIFY4RmxvYXQzMkFycmF5OjpI
YXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOEZsb2F0MzJBcnJheTo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAg
ICBWOFRSWUNBVENIKEZsb2F0MzJBcnJheSosIGFycmF5LCBWOEZsb2F0MzJBcnJheTo6SGFzSW5z
dGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xh
dGUoKSkpID8gVjhGbG9hdDMyQXJyYXk6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QoYXJnc1swXSkpIDogMCk7CiAgICAgcmV0dXJuIHRvVjgoaW1wLT5mb28oYXJyYXkpLCBh
cmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKQEAgLTE1Myw3ICsxNTMsNyBA
QCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4
RmxvYXQ2NEFycmF5VGVtcGxhdGUodjg6OgogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnZm9v
JwogICAgIGNvbnN0IGludCBmb29BcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBmb29Bcmd2W2Zvb0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhGbG9hdDMyQXJyYXk6OmluZm8pIH07CisgICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZm9vQXJndltmb29BcmdjXSA9IHsgVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RmxvYXQzMkFycmF5OjppbmZv
LCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBmb29TaWduYXR1
cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgZm9vQXJnYywgZm9vQXJndik7CiAgICAgcHJv
dG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImZvbyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0
ZTo6TmV3KEZsb2F0NjRBcnJheVY4SW50ZXJuYWw6OmZvb01ldGhvZENhbGxiYWNrLCB2OFVuZGVm
aW5lZCgpLCBmb29TaWduYXR1cmUpKTsKIApAQCAtMTY1LDIwICsxNjUsMjcgQEAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOEZsb2F0NjRBcnJh
eVRlbXBsYXRlKHY4OjoKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEZs
b2F0NjRBcnJheTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3Js
ZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRl
TWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwot
ICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklz
b2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVN
YXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBs
YXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwog
CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4RmxvYXQ2NEFy
cmF5VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3JsZFR5cGUp
OwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENv
bmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdv
cmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29y
bGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wg
VjhGbG9hdDY0QXJyYXk6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCitib29sIFY4RmxvYXQ2NEFycmF5OjpIYXNJbnN0YW5jZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
V29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3Js
ZFR5cGUpOworfQorCitib29sIFY4RmxvYXQ2NEFycmF5OjpIYXNJbnN0YW5jZUluQW55V29ybGQo
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAg
ICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmlu
Zm8sIHZhbHVlLCBNYWluV29ybGQpCisgICAgICAgIHx8IFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgSXNvbGF0ZWRXb3JsZCkKKyAgICAg
ICAgfHwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8s
IHZhbHVlLCBXb3JrZXJXb3JsZCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaAppbmRleCBhZmUyODkz
Mzg4MjBlZjEwNDc5OTMwYWQ1MGNlM2YwZTIzZDUxMjZmLi5jMmM5OWEzMTUxOWNhMDM5YmY0NjJl
MjBmMTdjODU1NWM2ODc0ZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaApAQCAtMzUsNyArMzUsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOEZsb2F0NjRBcnJheSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBWOEFycmF5QnVmZmVyVmll
dzo6aGFzRGVwZW5kZW50TGlmZXRpbWU7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBib29sIEhhc0lu
c3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRU
eXBlKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2
ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRU
eXBlKTsKICAgICBzdGF0aWMgRmxvYXQ2NEFycmF5KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCmlu
ZGV4IGFlM2E4NTFlNDQ5Y2QwMDJmOWQwMGNiNjg4NjlhNmNlYTJjZDE2ODUuLjI0MmJiN2VmYzJi
ZWI0ZDE0YTgxNjE5MzRlZTAyZjRjZDk5Yjg3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01P
YmplY3QuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBleGNpdGluZ0Z1bmN0aW9uTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAg
VGVzdEFjdGl2ZURPTU9iamVjdCogaW1wID0gVjhUZXN0QWN0aXZlRE9NT2JqZWN0Ojp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dB
Y2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpKSkKICAg
ICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7Ci0gICAgVjhUUllDQVRDSChOb2RlKiwgbmV4dENo
aWxkLCBWOE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4
Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAw
KTsKKyAgICBWOFRSWUNBVENIKE5vZGUqLCBuZXh0Q2hpbGQsIFY4Tm9kZTo6SGFzSW5zdGFuY2Uo
YXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkp
ID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0p
KSA6IDApOwogICAgIGltcC0+ZXhjaXRpbmdGdW5jdGlvbihuZXh0Q2hpbGQpOwogICAgIHJldHVy
biB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gcG9zdE1lc3NhZ2VBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSA9
ICJwb3N0TWVzc2FnZVByaXZhdGVUZW1wbGF0ZSI7CiAgICAgV3JhcHBlcldvcmxkVHlwZSBjdXJy
ZW50V29ybGRUeXBlID0gd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICBWOFBlcklz
b2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUo
KSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1w
bGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmcHJpdmF0ZVRl
bXBsYXRlVW5pcXVlS2V5LCBUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6cG9zdE1lc3Nh
Z2VNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRlKCkpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0
QWN0aXZlRE9NT2JqZWN0OjppbmZvKSkpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSBkYXRhLT5wcml2YXRlVGVtcGxhdGUoY3VycmVu
dFdvcmxkVHlwZSwgJnByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSwgVGVzdEFjdGl2ZURPTU9iamVj
dFY4SW50ZXJuYWw6OnBvc3RNZXNzYWdlTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4
OjpTaWduYXR1cmU6Ok5ldyhWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0SXNvbGF0ZSgp
KS0+cmF3VGVtcGxhdGUoJlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6aW5mbywgY3VycmVudFdvcmxk
VHlwZSkpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlz
KCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpH
ZXRUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlwZSkpOwogICAgIGlm
IChob2xkZXIuSXNFbXB0eSgpKSB7CkBAIC0xNDMsNyArMTQzLDcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBwb3N0TWVzc2FnZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGMKICAgICBUZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXAgPSBWOFRlc3RBY3RpdmVET01P
YmplY3Q6OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3Vs
ZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUo
KSwgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKSkgewogICAgICAgICBzdGF0aWMgY29uc3QgY2hh
ciogc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXkgPSAicG9zdE1lc3NhZ2VTaGFyZWRUZW1wbGF0ZSI7
Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1w
bGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmc2hhcmVkVGVt
cGxhdGVVbmlxdWVLZXksIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpwb3N0TWVzc2Fn
ZU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnJhd1RlbXBsYXRlKCZWOFRlc3RB
Y3RpdmVET01PYmplY3Q6OmluZm8pKSk7CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJy
ZW50V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFRlc3RBY3RpdmVET01PYmpl
Y3RWOEludGVybmFsOjpwb3N0TWVzc2FnZU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2
ODo6U2lnbmF0dXJlOjpOZXcoVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUo
KSktPnJhd1RlbXBsYXRlKCZWOFRlc3RBY3RpdmVET01PYmplY3Q6OmluZm8sIGN1cnJlbnRXb3Js
ZFR5cGUpKSk7CiAgICAgICAgIHJldHVybiBzaGFyZWRUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsK
ICAgICB9CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYQogCiAg
ICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnZXhjaXRpbmdGdW5jdGlvbicKICAgICBjb25zdCBpbnQg
ZXhjaXRpbmdGdW5jdGlvbkFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGV4Y2l0aW5nRnVuY3Rpb25Bcmd2W2V4Y2l0aW5nRnVuY3Rpb25BcmdjXSA9IHsgVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbykg
fTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBleGNpdGluZ0Z1bmN0aW9u
QXJndltleGNpdGluZ0Z1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPnJhd1RlbXBsYXRlKCZWOE5vZGU6OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6
SGFuZGxlPHY4OjpTaWduYXR1cmU+IGV4Y2l0aW5nRnVuY3Rpb25TaWduYXR1cmUgPSB2ODo6U2ln
bmF0dXJlOjpOZXcoZGVzYywgZXhjaXRpbmdGdW5jdGlvbkFyZ2MsIGV4Y2l0aW5nRnVuY3Rpb25B
cmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZXhjaXRpbmdGdW5j
dGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RBY3RpdmVET01PYmplY3RWOElu
dGVybmFsOjpleGNpdGluZ0Z1bmN0aW9uTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGV4
Y2l0aW5nRnVuY3Rpb25TaWduYXR1cmUpKTsKIApAQCAtMjEwLDIwICsyMTAsMjcgQEAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RBY3Rp
dmVET01PYmplY3RUZW1wbGEKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBW
OFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRh
ID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRh
OjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5k
KCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisg
ICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEt
PnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBk
YXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0
LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVW
OFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlz
b2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRl
bXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0QWN0aXZlRE9NT2JqZWN0VGVtcGxhdGUoZGF0
YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Cisg
ICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICBy
ZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpIYXNJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorYm9v
bCBWOFRlc3RBY3RpdmVET01PYmplY3Q6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBl
KQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0
YW5jZSgmaW5mbywgdmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7Cit9CisKK2Jvb2wg
VjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICByZXR1cm4gVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBN
YWluV29ybGQpCisgICAgICAgIHx8IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhh
c0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgSXNvbGF0ZWRXb3JsZCkKKyAgICAgICAgfHwgVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBXb3Jr
ZXJXb3JsZCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oCmluZGV4IGQyMzVi
YzU0NTQxYWQ2OTM0YjhhNjdmOTAwOWRmODAwYTM5YzhlN2QuLmE2Njk4MDU0OGZmZDhiZjg1MDli
MjYzNmNiMTQ2ZGU1MmFkNTEzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKQEAg
LTM0LDcgKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0QWN0aXZlRE9N
T2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZl
dGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CisgICAg
c3RhdGljIGJvb2wgSGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwg
djg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAg
c3RhdGljIFRlc3RBY3RpdmVET01PYmplY3QqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmlu
ZGV4IDQ2MDE0OGMyYjRiMDZmYjNlZmJhNTU1YjkzMmViOGZkOGRlNDFjN2UuLmJhZDg1MmRmOGRm
NjE5ZjU1NjY1MzQ0ZDQ2MTk4OGNjNjhiNjgwM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5h
bWVkR2V0dGVyLmNwcApAQCAtMTE1LDIwICsxMTUsMjcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRlclRl
bXAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RDdXN0b21OYW1l
ZEdldHRlcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5
cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFw
OjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAg
IGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xh
dGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAg
ICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEN1c3RvbU5h
bWVkR2V0dGVyVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3Js
ZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAg
ICAgIENvbmZpZ3VyZVY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyVGVtcGxhdGUoZGF0YS0+cmF3VGVt
cGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+
dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVt
cGw7CiB9CiAKLWJvb2wgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6Okhhc0luc3RhbmNlKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitib29sIFY4VGVz
dEN1c3RvbU5hbWVkR2V0dGVyOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsK
LSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2Uo
JmluZm8sIHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworfQorCitib29sIFY4VGVz
dEN1c3RvbU5hbWVkR2V0dGVyOjpIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICByZXR1cm4gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBNYWlu
V29ybGQpCisgICAgICAgIHx8IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0lu
c3RhbmNlKCZpbmZvLCB2YWx1ZSwgSXNvbGF0ZWRXb3JsZCkKKyAgICAgICAgfHwgVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBXb3JrZXJX
b3JsZCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAppbmRleCBlMmYx
ZDVhNGVkOTRiYTkwY2U4ZTViMThiODlhZWUwZDc3OWRkMDcxLi5hZjJiOTFkZjRiYWRhYjJjYzVi
ZjU3OGRkNDA5MmNkODllNGU2NGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
aApAQCAtMzQsNyArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOFRlc3RDdXN0
b21OYW1lZEdldHRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5k
ZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFu
Y2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUp
OworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4sIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUp
OwogICAgIHN0YXRpYyBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIHRvTmF0aXZlKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9y
LmNwcAppbmRleCBlNmM4OThlMTAwODQ2NDNiNTE5MjEwOTdjZDI0ZDI3NmVmNzIwNzFiLi5iNGFl
NDRjNTllNDQ3MTYzNDViMTNhOWE5MmVjZGUyMDAzMzg5ZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0xNTcsMjAgKzE1NywyNyBAQCBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0
b3JUZW1wbAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50
Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29y
bGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsK
LSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgVjhQZXJJ
c29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1w
bGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsK
IAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RFdmVu
dENvbnN0cnVjdG9yVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3
b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7Cisg
ICAgICAgIENvbmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbGF0ZShkYXRhLT5yYXdU
ZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRh
LT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0
ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorYm9vbCBWOFRl
c3RFdmVudENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsK
LSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2Uo
JmluZm8sIHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworfQorCitib29sIFY4VGVz
dEV2ZW50Q29uc3RydWN0b3I6Okhhc0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIHJldHVybiBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIE1haW5X
b3JsZCkKKyAgICAgICAgfHwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5z
dGFuY2UoJmluZm8sIHZhbHVlLCBJc29sYXRlZFdvcmxkKQorICAgICAgICB8fCBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIFdvcmtlcldv
cmxkKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaAppbmRleCA2ZjE3ZjY2
ZDQzODlmZWNmMmI5Yjc4Y2M5YjliMGI0OGMzYmM3NDg3Li5kY2FkNWVjZjlkMDBmYjI0ODRkMWI0
MTlmMTcyYTRiZDcwYTIwZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKQEAg
LTM1LDcgKzM1LDggQEAgY2xhc3MgRGljdGlvbmFyeTsKIGNsYXNzIFY4VGVzdEV2ZW50Q29uc3Ry
dWN0b3IgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0
aW1lID0gZmFsc2U7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKKyAgICBz
dGF0aWMgYm9vbCBIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2
ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBz
dGF0aWMgVGVzdEV2ZW50Q29uc3RydWN0b3IqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IDg0ODVmMDk3
MjgxNTc2MGUyMTM1YzdjZWQyY2I0YTEzYmQ2Nzk5OGMuLmU1MjU4MWEzMGY2ZWZhOTNhMWE3MWMw
YjIyZTkyNGRjZThiZWExZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMTM2LDcg
KzEzNiw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGlzcGF0Y2hFdmVudE1ldGhv
ZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIFRlc3RFdmVudFRhcmdldCogaW1wID0g
VjhUZXN0RXZlbnRUYXJnZXQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIHsKLSAgICBWOFRSWUNBVENIKEV2ZW50KiwgZXZ0LCBWOEV2ZW50
OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOEV2ZW50Ojp0b05h
dGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOworICAgIFY4
VFJZQ0FUQ0goRXZlbnQqLCBldnQsIFY4RXZlbnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3Mu
R2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4RXZlbnQ6OnRv
TmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CiAgICAg
Ym9vbCByZXN1bHQgPSBpbXAtPmRpc3BhdGNoRXZlbnQoZXZ0LCBlYyk7CiAgICAgaWYgKFVOTElL
RUxZKGVjKSkKICAgICAgICAgZ290byBmYWlsOwpAQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZlbnRU
YXJnZXRUZW1wbGF0ZSh2CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdkaXNwYXRjaEV2ZW50
JwogICAgIGNvbnN0IGludCBkaXNwYXRjaEV2ZW50QXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGlzcGF0Y2hFdmVudEFyZ3ZbZGlzcGF0Y2hFdmVudEFyZ2Nd
ID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhFdmVu
dDo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkaXNwYXRj
aEV2ZW50QXJndltkaXNwYXRjaEV2ZW50QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOEV2ZW50OjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAg
djg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBkaXNwYXRjaEV2ZW50U2lnbmF0dXJlID0gdjg6OlNp
Z25hdHVyZTo6TmV3KGRlc2MsIGRpc3BhdGNoRXZlbnRBcmdjLCBkaXNwYXRjaEV2ZW50QXJndik7
CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImRpc3BhdGNoRXZlbnQiKSwg
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0RXZlbnRUYXJnZXRWOEludGVybmFsOjpkaXNw
YXRjaEV2ZW50TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGRpc3BhdGNoRXZlbnRTaWdu
YXR1cmUpKTsKIApAQCAtMTkxLDIwICsxOTEsMjcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKHYK
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFdmVudFRhcmdldDo6
R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRU
eXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRv
ciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1
bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpU
ZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBl
KS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxk
VHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6Okhh
bmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxh
dGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRh
dGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4
VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlw
ZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBl
KS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0
RXZlbnRUYXJnZXQ6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCitib29sIFY4VGVzdEV2ZW50VGFyZ2V0OjpIYXNJbnN0YW5jZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
V29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3Js
ZFR5cGUpOworfQorCitib29sIFY4VGVzdEV2ZW50VGFyZ2V0OjpIYXNJbnN0YW5jZUluQW55V29y
bGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sK
KyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2Uo
JmluZm8sIHZhbHVlLCBNYWluV29ybGQpCisgICAgICAgIHx8IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgSXNvbGF0ZWRXb3JsZCkKKyAg
ICAgICAgfHwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmlu
Zm8sIHZhbHVlLCBXb3JrZXJXb3JsZCk7CiB9CiAKIEV2ZW50VGFyZ2V0KiBWOFRlc3RFdmVudFRh
cmdldDo6dG9FdmVudFRhcmdldCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50VGFyZ2V0LmgKaW5kZXggYWJhMmIzYTk0YjA5MzU2OTgyNzc1ZmU5NTgwZDE4MGE4Nzdm
YmVhNy4uZjZkNDAxZWM2NTkxMTg0Y2QxZGY1NzVjMjFjY2I3OWVjOTM3ZGNjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFy
Z2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50VGFyZ2V0LmgKQEAgLTM0LDcgKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgVjhUZXN0RXZlbnRUYXJnZXQgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhh
c0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uo
djg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBib29sIEhh
c0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29y
bGRUeXBlKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29y
bGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdEV2ZW50VGFyZ2V0KiB0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCmluZGV4IDdj
MDMzMTY3MzljNDBjMmQ2YzdlMTRiMmM4MDE4ODNhZmY1ZDg2NWQuLmU2YzUxYjI5MzJkOGNkZjFi
ZDM3YTdkNjJiN2EyZmU5OTI2YmU0N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCkBAIC0xMDYs
MjAgKzEwNiwyNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IENvbmZpZ3VyZVY4VGVzdEV4Y2VwdGlvblRlbXBsYXRlKHY4Ogogdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUodjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNv
bGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4
UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1w
bGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVN
YXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBp
ZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAg
IHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3Bl
OwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAg
ICAgIENvbmZpZ3VyZVY4VGVzdEV4Y2VwdGlvblRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZp
bmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgm
aW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0ZShk
YXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsK
KyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAg
IHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RFeGNlcHRpb246Okhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitib29sIFY4
VGVzdEV4Y2VwdGlvbjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7Ci0gICAg
cmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZv
LCB2YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhh
c0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKK30KKworYm9vbCBWOFRlc3RFeGNl
cHRpb246Okhhc0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIE1haW5Xb3JsZCkKKyAgICAg
ICAgfHwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8s
IHZhbHVlLCBJc29sYXRlZFdvcmxkKQorICAgICAgICB8fCBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIFdvcmtlcldvcmxkKTsKIH0KIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0RXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXhjZXB0aW9uLmgKaW5kZXggNjY2M2EyNThjMjZkZjFhMjMzMjUzNGU3ODRiZGNlYWM5
OGI3Mzk0Yy4uZWYyNjAzMzcxMmI2YzI2YTE0OTQzMzBjYWUxYWNiNDU0NWIyYzYzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2Vw
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFeGNlcHRpb24uaApAQCAtMzQsNyArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBWOFRlc3RFeGNlcHRpb24gewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0Rl
cGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBib29sIEhhc0lu
c3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRU
eXBlKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2
ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRU
eXBlKTsKICAgICBzdGF0aWMgVGVzdEV4Y2VwdGlvbiogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAppbmRleCAzZTIzM2Y3
OTE4ZWM0YmQ1OWUxNzIxYTAyZmZiYmQ0MjYwMWE1ZmFlLi45Y2MwY2Q4MmQ1ZWM0ZGQzNTg0Zjcz
MmViNmY0MjFjOWE3MGUyNGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcApAQCAtMjM0LDcgKzIz
NCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsTm9kZUF0dHJH
ZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0CiBzdGF0aWMgdm9pZCBzdXBwbGVtZW50YWxO
b2RlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdElu
dGVyZmFjZSogaW1wID0gVjhUZXN0SW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
LSAgICBOb2RlKiB2ID0gVjhOb2RlOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRl
KCkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVl
KSkgOiAwOworICAgIE5vZGUqIHYgPSBWOE5vZGU6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdl
dElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBWOE5vZGU6OnRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CiAgICAgVGVzdFN1
cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsTm9kZShpbXAsIFdURjo6Z2V0UHRyKHYpKTsKICAg
ICByZXR1cm47CiB9CkBAIC0yODAsNyArMjgwLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBzdXBwbGVtZW50YWxNZXRob2QyTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB7CiAgICAgVjhUUllDQVRDSF9GT1JfVjhT
VFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPD4sIHN0ckFyZywgYXJnc1swXSk7Ci0gICAg
VjhUUllDQVRDSChUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3Nb
MV0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKSkgOiAwKTsKKyAgICBWOFRSWUNBVENIKFRlc3RPYmoq
LCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1sxXSwgYXJncy5HZXRJc29sYXRl
KCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMV0pKSA6IDApOwogICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CiAgICAgUmVmUHRyPFRlc3RPYmo+IHJlc3VsdCA9IFRlc3RTdXBwbGVtZW50YWw6OnN1cHBs
ZW1lbnRhbE1ldGhvZDIoc2NyaXB0Q29udGV4dCwgaW1wLCBzdHJBcmcsIG9iakFyZywgZWMpOwog
ICAgIGlmIChVTkxJS0VMWShlYykpCkBAIC00MzgsNyArNDM4LDcgQEAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1w
bGF0ZSh2ODoKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N1cHBsZW1lbnRhbE1ldGhvZDIn
CiAgICAgY29uc3QgaW50IHN1cHBsZW1lbnRhbE1ldGhvZDJBcmdjID0gMjsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdXBwbGVtZW50YWxNZXRob2QyQXJndltzdXBwbGVt
ZW50YWxNZXRob2QyQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCks
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6
OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3VwcGxlbWVu
dGFsTWV0aG9kMkFyZ3Zbc3VwcGxlbWVudGFsTWV0aG9kMkFyZ2NdID0geyB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5y
YXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRs
ZTx2ODo6U2lnbmF0dXJlPiBzdXBwbGVtZW50YWxNZXRob2QyU2lnbmF0dXJlID0gdjg6OlNpZ25h
dHVyZTo6TmV3KGRlc2MsIHN1cHBsZW1lbnRhbE1ldGhvZDJBcmdjLCBzdXBwbGVtZW50YWxNZXRo
b2QyQXJndik7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIp
CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN1cHBsZW1lbnRhbE1ldGhv
ZDIiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6
c3VwcGxlbWVudGFsTWV0aG9kMk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdXBwbGVt
ZW50YWxNZXRob2QyU2lnbmF0dXJlKSk7CkBAIC00NTYsMjAgKzQ1NiwyNyBAQCBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEludGVyZmFj
ZVRlbXBsYXRlKHY4Ogogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dEludGVyZmFjZTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3Js
ZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRl
TWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwot
ICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklz
b2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVN
YXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBs
YXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwog
CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEludGVy
ZmFjZVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBl
KTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBD
b25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywg
d29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9v
bCBWOFRlc3RJbnRlcmZhY2U6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1
ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitib29sIFY4VGVzdEludGVyZmFjZTo6SGFzSW5zdGFu
Y2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3Jh
cHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CisgICAgcmV0dXJuIFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwg
d29ybGRUeXBlKTsKK30KKworYm9vbCBWOFRlc3RJbnRlcmZhY2U6Okhhc0luc3RhbmNlSW5BbnlX
b3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQor
eworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5j
ZSgmaW5mbywgdmFsdWUsIE1haW5Xb3JsZCkKKyAgICAgICAgfHwgVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBJc29sYXRlZFdvcmxkKQor
ICAgICAgICB8fCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgm
aW5mbywgdmFsdWUsIFdvcmtlcldvcmxkKTsKIH0KIAogQWN0aXZlRE9NT2JqZWN0KiBWOFRlc3RJ
bnRlcmZhY2U6OnRvQWN0aXZlRE9NT2JqZWN0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEludGVyZmFjZS5oCmluZGV4IDViNzhiOGFjMzk2Y2JlOGM0ZTc3ODNhMmUyMjZhY2Q2
MmZjYjI5YzEuLjhjZDE3N2I5N2RhYzczYThkOGQ5MmY1YjViMGJhMmZlNjcxODNkZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRl
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0SW50ZXJmYWNlLmgKQEAgLTM1LDcgKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgVjhUZXN0SW50ZXJmYWNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNE
ZXBlbmRlbnRMaWZldGltZSA9IHRydWU7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBib29sIEhhc0lu
c3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRU
eXBlKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2
ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRU
eXBlKTsKICAgICBzdGF0aWMgVGVzdEludGVyZmFjZSogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwCmluZGV4IDI5MWRmY2U1OTdhMWEwZDZmYzM5YzllYzUyZjE0MjE3MDYwODU1
NDQuLjg1ZmNjNWNjMTE1NGQ3ZjVlYmI3NWQwZWY2Y2FkZTMxZDJhYWU1YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTExNSwyMCArMTE1LDI3
IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJl
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVy
SXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAg
IFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50
ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxh
dGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0
b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAg
ICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAg
ICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0g
ICAgICAgIENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJUZW1wbGF0ZShkYXRh
LT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVt
cGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3Js
ZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxk
VHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitib29sIFY4VGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXI6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewotICAgIHJl
dHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywg
dmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJ
bnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7Cit9CisKK2Jvb2wgVjhUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcjo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgcmV0dXJuIFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgTWFpbldv
cmxkKQorICAgICAgICB8fCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0
YW5jZSgmaW5mbywgdmFsdWUsIElzb2xhdGVkV29ybGQpCisgICAgICAgIHx8IFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgV29ya2VyV29y
bGQpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCmlu
ZGV4IDRlMzY2Y2RmNTUxZjE2MTYwZjZkMWM3NjhlYjQxNDU5OWE3YzRjYWMuLmYxODZhNjE0ODIx
ZGQ2YjI5NjNlM2EwMjdmOGFkOGUzZjc2MGMwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuaApAQCAtMzQsNyArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBi
b29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKKyAg
ICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29s
YXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2VJbkFu
eVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29s
YXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMTFhYzljZjViNWM3YTdmZTY5
NmI5NjNiNzcxOWQyNWEzY2FhN2I3OC4uOGQwNTRkY2NmMjBiNmRjOTI1MjM1YjkxYzZmNmU1ZTU1
MzVjYjQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtMTQ2LDIw
ICsxNDYsMjcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBD
b25maWd1cmVWOFRlc3ROYW1lZENvbnN0cnVjdG9yVGVtcGwKIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQ
ZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0g
ICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEt
PnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1w
bGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVy
YXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwor
ICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxl
U2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0K
LSAgICAgICAgQ29uZmlndXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKGRhdGEtPnJh
d1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0
ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3ROYW1lZENv
bnN0cnVjdG9yVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlz
b2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQo
JmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0TmFtZWRD
b25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK2Jvb2wgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFu
Y2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3Jh
cHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CisgICAgcmV0dXJuIFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwg
d29ybGRUeXBlKTsKK30KKworYm9vbCBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpIYXNJbnN0YW5j
ZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKK3sKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFz
SW5zdGFuY2UoJmluZm8sIHZhbHVlLCBNYWluV29ybGQpCisgICAgICAgIHx8IFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgSXNvbGF0ZWRX
b3JsZCkKKyAgICAgICAgfHwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5z
dGFuY2UoJmluZm8sIHZhbHVlLCBXb3JrZXJXb3JsZCk7CiB9CiAKIEFjdGl2ZURPTU9iamVjdCog
VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6dG9BY3RpdmVET01PYmplY3Qodjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaAppbmRleCBhMTlk
YmM2NmNlY2U0YzRlOGM1M2RmYTI0ZGFmNzY0NTg3MDhiNTQwLi5hMjU5ODE3NGM4YjYyOGRmMWNi
NDk2NzU2ZmY0NTQzYzkyMjgyMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgK
QEAgLTQwLDcgKzQwLDggQEAgcHVibGljOgogY2xhc3MgVjhUZXN0TmFtZWRDb25zdHJ1Y3RvciB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSB0
cnVlOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwg
djg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CisgICAgc3RhdGljIGJv
b2wgSGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xh
dGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdl
dFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFRl
c3ROYW1lZENvbnN0cnVjdG9yKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVj
dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Tm9kZS5jcHAKaW5kZXggMjI2YjM0NDM5ZmU2NmZlNTgzMGFlMjczNWZmMjNm
OTQxZTVlYzRlNy4uMjU5ODg1MzBmMGI4N2IyMmY4ZjAyY2U2OThkMDE5ODQwZjE5ZTAwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3ROb2RlLmNwcApAQCAtMTEzLDIwICsxMTMsMjcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3ROb2RlVGVtcGxhdGUodjg6OlBlcnMK
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROb2RlOjpHZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7
CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3Vs
dCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBk
YXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRl
TWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQo
JmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5l
bmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2Nv
cGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0Tm9kZVRlbXBsYXRlKGRhdGEtPnJhd1Rl
bXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1h
cCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3ROb2RlVGVtcGxh
dGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlw
ZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsK
ICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0Tm9kZTo6SGFzSW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2Jvb2wgVjhU
ZXN0Tm9kZTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJu
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1
ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3Rh
bmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKK30KKworYm9vbCBWOFRlc3ROb2RlOjpIYXNJ
bnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKK3sKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBNYWluV29ybGQpCisgICAgICAgIHx8IFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgSXNv
bGF0ZWRXb3JsZCkKKyAgICAgICAgfHwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBXb3JrZXJXb3JsZCk7CiB9CiAKIEV2ZW50VGFyZ2V0
KiBWOFRlc3ROb2RlOjp0b0V2ZW50VGFyZ2V0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3ROb2RlLmgKaW5kZXggOTc4NjAzNzYzMDU5OGYwNmI3ZjdmNjc0ZWQzMDAzMjhjNWFjYWMyNi4u
ZDM4OWIyOTJkZDc2NGQ5MTJhYzQyNTEyYzYwNzQ1MDU0ZjNlOWEwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oCkBAIC0z
NCw3ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVzdE5vZGUgewogcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gdHJ1ZTsK
LSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJ
c29sYXRlKik7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFs
dWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOworICAgIHN0YXRpYyBib29sIEhh
c0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7
CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0Tm9k
ZSogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNw
cAppbmRleCBlNzJkMTZlMDQ5YzhjMTExMzNkMDk4YmYzNWIzZTY1MWIyYzJiOTY0Li5iZWQ2MDQz
NmMyNjhiM2FiZThhN2I5OTU2NzVkYTNlZmUzZjBlZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMzcwLDcg
KzM3MCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdGVzdE9iakF0dHJBdHRyR2V0
dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiBzdGF0aWMgdm9pZCB0ZXN0T2JqQXR0
ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgVGVzdE9iaiog
diA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKSA/IFY4
VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDog
MDsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5H
ZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2JqOjp0
b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOwogICAgIGlt
cC0+c2V0VGVzdE9iakF0dHIoV1RGOjpnZXRQdHIodikpOwogICAgIHJldHVybjsKIH0KQEAgLTM5
NSw3ICszOTUsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFhNTE9iakF0dHJBdHRy
R2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiBzdGF0aWMgdm9pZCBYTUxPYmpB
dHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBUZXN0T2Jq
KiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCkpID8g
VjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkg
OiAwOworICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZv
LkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6
OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CiAgICAg
aW1wLT5zZXRYTUxPYmpBdHRyKFdURjo6Z2V0UHRyKHYpKTsKICAgICByZXR1cm47CiB9CkBAIC02
NTksNyArNjU5LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0eXBlZEFycmF5QXR0
ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmkKIHN0YXRpYyB2b2lkIHR5cGVk
QXJyYXlBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBG
bG9hdDMyQXJyYXkqIHYgPSBWOEZsb2F0MzJBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8u
R2V0SXNvbGF0ZSgpKSA/IFY4RmxvYXQzMkFycmF5Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIEZsb2F0MzJBcnJheSogdiA9IFY4RmxvYXQz
MkFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShp
bmZvLkdldElzb2xhdGUoKSkpID8gVjhGbG9hdDMyQXJyYXk6OnRvTmF0aXZlKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CiAgICAgaW1wLT5zZXRUeXBlZEFycmF5QXR0
cihXVEY6OmdldFB0cih2KSk7CiAgICAgcmV0dXJuOwogfQpAQCAtODM4LDcgKzgzOCw3IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGVBdHRyR2V0dGVyQ2FsbGJhCiBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEF0dHJpYnV0ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0g
ICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNv
bGF0ZSgpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dCh2YWx1ZSkpIDogMDsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2
YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8g
VjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkg
OiAwOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaW1wLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEF0dHJpYnV0ZShzY3JpcHRDb250ZXh0LCBXVEY6OmdldFB0cih2KSk7CiAgICAgcmV0dXJu
OwpAQCAtODczLDcgKzg3Myw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNrKHY4CiBzdGF0aWMgdm9p
ZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwotICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNl
KHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgVGVzdE9iaiogdiA9IFY4VGVz
dE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5m
by5HZXRJc29sYXRlKCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKICAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0g
U2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKICAgICBpZiAoIWN1cnJlbnRTdGF0ZSkKICAgICAgICAg
cmV0dXJuOwpAQCAtOTA4LDcgKzkwOCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyCiBzdGF0
aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgVGVzdE9iaiogdiA9IFY4VGVz
dE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKSA/IFY4VGVzdE9iajo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBU
ZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRl
KCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOwogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CiAgICAgaW1wLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhz
Y3JpcHRDb250ZXh0LCBXVEY6OmdldFB0cih2KSk7CiAgICAgcmV0dXJuOwpAQCAtOTM4LDcgKzkz
OCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0CiBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0
YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIFRlc3RPYmoqIHYgPSBW
OFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBl
KGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CiAgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0
ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CiAgICAgaWYgKCFjdXJyZW50U3RhdGUpCiAgICAg
ICAgIHJldHVybjsKQEAgLTk4MCw3ICs5ODAsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYQog
c3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlc0F0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAg
VGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0
ZSgpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2
YWx1ZSkpIDogMDsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1
ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhU
ZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAw
OwogICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgp
OwogICAgIGlmICghY3VycmVudFN0YXRlKQogICAgICAgICByZXR1cm47CkBAIC0xMDE2LDcgKzEw
MTYsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQQogc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RP
Ymo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSkgPyBWOFRlc3RPYmo6OnRv
TmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgVGVz
dE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgp
LCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKICAgICBTY3JpcHRTdGF0ZSog
Y3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKICAgICBpZiAoIWN1cnJlbnRT
dGF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRl
QXR0ckdldHRlckMKIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tB
dHRyaWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIFRl
c3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUo
KSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFs
dWUpKSA6IDA7CisgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUs
IGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4VGVz
dE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsK
ICAgICBpbXAtPnNldFdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoV1RG
OjpnZXRQdHIodikpOwogICAgIHJldHVybjsKIH0KQEAgLTEzOTUsNyArMTM5NSw3IEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbXV0YWJsZVBvaW50QXR0ckdldHRlckNhbGxiYWNrKHY4
OjpMb2NhbDx2ODo6U3RyaW5nCiBzdGF0aWMgdm9pZCBtdXRhYmxlUG9pbnRBdHRyU2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIFJlZlB0cjxTVkdQcm9wZXJ0eVRlYXJP
ZmY8RmxvYXRQb2ludD4gPiB2ID0gVjhTVkdQb2ludDo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8u
R2V0SXNvbGF0ZSgpKSA/IFY4U1ZHUG9pbnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgUmVmUHRyPFNWR1Byb3BlcnR5VGVhck9mZjxGbG9h
dFBvaW50PiA+IHYgPSBWOFNWR1BvaW50OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29s
YXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhTVkdQb2ludDo6dG9OYXRp
dmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKICAgICBpbXAtPnNl
dE11dGFibGVQb2ludChXVEY6OmdldFB0cih2KSk7CiAgICAgcmV0dXJuOwogfQpAQCAtMTQxOSw3
ICsxNDE5LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbW11dGFibGVQb2ludEF0
dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmkKIHN0YXRpYyB2b2lkIGltbXV0YWJs
ZVBvaW50QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBSZWZQ
dHI8U1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0UG9pbnQ+ID4gdiA9IFY4U1ZHUG9pbnQ6Okhhc0lu
c3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSkgPyBWOFNWR1BvaW50Ojp0b05hdGl2ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIFJlZlB0cjxTVkdQ
cm9wZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD4gPiB2ID0gVjhTVkdQb2ludDo6SGFzSW5zdGFuY2Uo
dmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/
IFY4U1ZHUG9pbnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUp
KSA6IDA7CiAgICAgaW1wLT5zZXRJbW11dGFibGVQb2ludChXVEY6OmdldFB0cih2KSk7CiAgICAg
cmV0dXJuOwogfQpAQCAtMTU3Miw3ICsxNTcyLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2b2lkTWV0aG9kV2l0aEFyZ3NNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwog
ICAgIFY4VFJZQ0FUQ0goaW50LCBsb25nQXJnLCB0b0ludDMyKGFyZ3NbMF0pKTsKICAgICBWOFRS
WUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyQXJnLCBh
cmdzWzFdKTsKLSAgICBWOFRSWUNBVENIKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFz
SW5zdGFuY2UoYXJnc1syXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhUZXN0T2JqOjp0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMl0pKSA6IDApOworICAgIFY4VFJZ
Q0FUQ0goVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzJdLCBh
cmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOFRlc3RP
Ymo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1syXSkpIDogMCk7
CiAgICAgaW1wLT52b2lkTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgc3RyQXJnLCBvYmpBcmcpOwog
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMTYwMCw3ICsxNjAwLDcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBsb25nTWV0aG9kV2l0aEFyZ3NNZXRob2QoY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOwogICAgIFY4VFJZQ0FUQ0goaW50LCBsb25nQXJnLCB0b0ludDMyKGFy
Z3NbMF0pKTsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVz
b3VyY2U8Piwgc3RyQXJnLCBhcmdzWzFdKTsKLSAgICBWOFRSWUNBVENIKFRlc3RPYmoqLCBvYmpB
cmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1syXSwgYXJncy5HZXRJc29sYXRlKCkpID8g
VjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMl0p
KSA6IDApOworICAgIFY4VFJZQ0FUQ0goVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJ
bnN0YW5jZShhcmdzWzJdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNv
bGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNh
c3QoYXJnc1syXSkpIDogMCk7CiAgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPmxvbmdNZXRob2RX
aXRoQXJncyhsb25nQXJnLCBzdHJBcmcsIG9iakFyZyksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0K
IApAQCAtMTYyOCw3ICsxNjI4LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvYmpN
ZXRob2RXaXRoQXJnc01ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgVjhUUllD
QVRDSChpbnQsIGxvbmdBcmcsIHRvSW50MzIoYXJnc1swXSkpOwogICAgIFY4VFJZQ0FUQ0hfRk9S
X1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBzdHJBcmcsIGFyZ3NbMV0pOwot
ICAgIFY4VFJZQ0FUQ0goVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShh
cmdzWzJdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1syXSkpIDogMCk7CisgICAgVjhUUllDQVRDSChUZXN0
T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMl0sIGFyZ3MuR2V0SXNv
bGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4VGVzdE9iajo6dG9OYXRp
dmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzJdKSkgOiAwKTsKICAgICByZXR1
cm4gdG9WOChpbXAtPm9iak1ldGhvZFdpdGhBcmdzKGxvbmdBcmcsIHN0ckFyZywgb2JqQXJnKSwg
YXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCkBAIC0xNjc0LDcgKzE2NzQs
NyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFy
Z3NBbmRUaHJvd3NNZXRob2QoY29uc3Qgdjg6OgogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgIHsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3Vy
Y2U8Piwgc3RyQXJnLCBhcmdzWzBdKTsKLSAgICBWOFRSWUNBVENIKFRlc3RPYmoqLCBvYmpBcmcs
IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1sxXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhU
ZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMV0pKSA6
IDApOworICAgIFY4VFJZQ0FUQ0goVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0
YW5jZShhcmdzWzFdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0
ZSgpKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qo
YXJnc1sxXSkpIDogMCk7CiAgICAgUmVmUHRyPFRlc3RPYmo+IHJlc3VsdCA9IGltcC0+bWV0aG9k
VGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhzdHJBcmcsIG9iakFyZywgZWMpOwogICAgIGlm
IChVTkxJS0VMWShlYykpCiAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTIyNDEsNyArMjI0MSw3IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDFNZXRob2QoY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCiAgICAg
ICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwotICAgIFY4VFJZQ0FUQ0goVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5j
ZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CisgICAgVjhUUllDQVRDSChU
ZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0
SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4VGVzdE9iajo6dG9O
YXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKICAgICBW
OFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyQXJn
LCBhcmdzWzFdKTsKICAgICBpbXAtPm92ZXJsb2FkZWRNZXRob2Qob2JqQXJnLCBzdHJBcmcpOwog
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwpAQCAtMjI1Miw3ICsyMjUyLDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMk1ldGhvZChjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJu
IHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgVjhU
UllDQVRDSChUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0s
IGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAgICBWOFRSWUNBVENIKFRlc3RPYmoqLCBv
YmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOwogICAgIGlmIChhcmdzLkxl
bmd0aCgpIDw9IDEpIHsKICAgICAgICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKG9iakFyZyk7CiAg
ICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwpAQCAtMjMxOSw3ICsyMzE5LDcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kOE1ldGhvZChjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0
dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAg
VjhUUllDQVRDSChUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3Nb
MF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAgICBWOFRSWUNBVENIKFRlc3RPYmoq
LCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRl
KCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOwogICAgIGltcC0+b3Zl
cmxvYWRlZE1ldGhvZChvYmpBcmcpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAt
MjM1Niw5ICsyMzU2LDkgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVk
TWV0aG9kMTFNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7Ci0gICAgaWYgKChhcmdzLkxlbmd0aCgpID09IDIgJiYgKGFyZ3NbMF0tPklz
TnVsbCgpIHx8IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRl
KCkpKSAmJiAoYXJnc1sxXS0+SXNOdWxsKCkgfHwgYXJnc1sxXS0+SXNVbmRlZmluZWQoKSB8fCBh
cmdzWzFdLT5Jc1N0cmluZygpIHx8IGFyZ3NbMV0tPklzT2JqZWN0KCkpKSkKKyAgICBpZiAoKGFy
Z3MuTGVuZ3RoKCkgPT0gMiAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgVjhUZXN0T2JqOjpIYXNJ
bnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNv
bGF0ZSgpKSkpICYmIChhcmdzWzFdLT5Jc051bGwoKSB8fCBhcmdzWzFdLT5Jc1VuZGVmaW5lZCgp
IHx8IGFyZ3NbMV0tPklzU3RyaW5nKCkgfHwgYXJnc1sxXS0+SXNPYmplY3QoKSkpKQogICAgICAg
ICByZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDFNZXRob2QoYXJncyk7Ci0gICAgaWYgKChhcmdzLkxl
bmd0aCgpID09IDEgJiYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8IFY4VGVzdE9iajo6SGFzSW5zdGFu
Y2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpKSkgfHwgKGFyZ3MuTGVuZ3RoKCkgPT0gMiAm
JiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBh
cmdzLkdldElzb2xhdGUoKSkpKSkKKyAgICBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiAoYXJn
c1swXS0+SXNOdWxsKCkgfHwgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdl
dElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpKSB8fCAoYXJncy5MZW5n
dGgoKSA9PSAyICYmIChhcmdzWzBdLT5Jc051bGwoKSB8fCBWOFRlc3RPYmo6Okhhc0luc3RhbmNl
KGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkp
KSkpKQogICAgICAgICByZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDJNZXRob2QoYXJncyk7CiAgICAg
aWYgKChhcmdzLkxlbmd0aCgpID09IDEgJiYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8IGFyZ3NbMF0t
PklzVW5kZWZpbmVkKCkgfHwgYXJnc1swXS0+SXNTdHJpbmcoKSB8fCBhcmdzWzBdLT5Jc09iamVj
dCgpKSkpCiAgICAgICAgIHJldHVybiBvdmVybG9hZGVkTWV0aG9kM01ldGhvZChhcmdzKTsKQEAg
LTIzNjYsMTEgKzIzNjYsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9h
ZGVkTWV0aG9kTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgICAgIHJldHVy
biBvdmVybG9hZGVkTWV0aG9kNE1ldGhvZChhcmdzKTsKICAgICBpZiAoKGFyZ3MuTGVuZ3RoKCkg
PT0gMSAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgYXJnc1swXS0+SXNGdW5jdGlvbigpKSkpCiAg
ICAgICAgIHJldHVybiBvdmVybG9hZGVkTWV0aG9kNU1ldGhvZChhcmdzKTsKLSAgICBpZiAoKGFy
Z3MuTGVuZ3RoKCkgPT0gMSAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgVjhET01TdHJpbmdMaXN0
OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpKSkKKyAgICBpZiAoKGFy
Z3MuTGVuZ3RoKCkgPT0gMSAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgVjhET01TdHJpbmdMaXN0
OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3Mu
R2V0SXNvbGF0ZSgpKSkpKSkKICAgICAgICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRob2Q2TWV0aG9k
KGFyZ3MpOwogICAgIGlmICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIChhcmdzWzBdLT5Jc051bGwo
KSB8fCBhcmdzWzBdLT5Jc0FycmF5KCkpKSkKICAgICAgICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRo
b2Q3TWV0aG9kKGFyZ3MpOwotICAgIGlmICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIChWOFRlc3RP
Ymo6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkpKQorICAgIGlmICgo
YXJncy5MZW5ndGgoKSA9PSAxICYmIChWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFy
Z3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkpKQogICAgICAg
ICByZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDhNZXRob2QoYXJncyk7CiAgICAgaWYgKChhcmdzLkxl
bmd0aCgpID09IDEgJiYgKGFyZ3NbMF0tPklzQXJyYXkoKSkpKQogICAgICAgICByZXR1cm4gb3Zl
cmxvYWRlZE1ldGhvZDlNZXRob2QoYXJncyk7CkBAIC0yNjIwLDcgKzI2MjAsNyBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnQxTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBWOFRSWUNBVENI
KGEqLCB2YWx1ZSwgVjhhOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkg
PyBWOGE6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDog
MCk7CisgICAgVjhUUllDQVRDSChhKiwgdmFsdWUsIFY4YTo6SGFzSW5zdGFuY2UoYXJnc1swXSwg
YXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhhOjp0
b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOwogICAg
IGltcC0+Y29udmVydDEodmFsdWUpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAt
MjYzNSw3ICsyNjM1LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0Mk1l
dGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwg
MSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJ
c29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7Ci0gICAgVjhUUllDQVRDSChiKiwgdmFsdWUsIFY4Yjo6SGFzSW5zdGFuY2UoYXJn
c1swXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhiOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOworICAgIFY4VFJZQ0FUQ0goYiosIHZhbHVlLCBW
OGI6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJn
cy5HZXRJc29sYXRlKCkpKSA/IFY4Yjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdChhcmdzWzBdKSkgOiAwKTsKICAgICBpbXAtPmNvbnZlcnQyKHZhbHVlKTsKICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTI2NTAsNyArMjY1MCw3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY29udmVydDRNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
ICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIFY4VFJZQ0FUQ0goZCosIHZh
bHVlLCBWOGQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4ZDo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAg
ICBWOFRSWUNBVENIKGQqLCB2YWx1ZSwgVjhkOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdl
dElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOGQ6OnRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CiAgICAgaW1wLT5j
b252ZXJ0NCh2YWx1ZSk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0yNjY1LDcg
KzI2NjUsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnQ1TWV0aG9kKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAg
ICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUo
KSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKLSAgICBWOFRSWUNBVENIKGUqLCB2YWx1ZSwgVjhlOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBh
cmdzLkdldElzb2xhdGUoKSkgPyBWOGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QoYXJnc1swXSkpIDogMCk7CisgICAgVjhUUllDQVRDSChlKiwgdmFsdWUsIFY4ZTo6SGFz
SW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElz
b2xhdGUoKSkpID8gVjhlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFy
Z3NbMF0pKSA6IDApOwogICAgIGltcC0+Y29udmVydDUodmFsdWUpOwogICAgIHJldHVybiB2OFVu
ZGVmaW5lZCgpOwogfQpAQCAtMjc3MCwxMCArMjc3MCwxMCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhcmlhZGljTm9kZU1ldGhvZE1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgVjhUUllDQVRDSChO
b2RlKiwgaGVhZCwgVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUo
KSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1sw
XSkpIDogMCk7CisgICAgVjhUUllDQVRDSChOb2RlKiwgaGVhZCwgVjhOb2RlOjpIYXNJbnN0YW5j
ZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgp
KSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1sw
XSkpIDogMCk7CiAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHRhaWw7CiAgICAgZm9yIChpbnQg
aSA9IDE7IGkgPCBhcmdzLkxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKCFWOE5vZGU6Okhh
c0luc3RhbmNlKGFyZ3NbaV0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICAgICAgaWYgKCFWOE5v
ZGU6Okhhc0luc3RhbmNlKGFyZ3NbaV0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJn
cy5HZXRJc29sYXRlKCkpKSkKICAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBh
cmdzLkdldElzb2xhdGUoKSk7CiAgICAgICAgIHRhaWwuYXBwZW5kKFY4Tm9kZTo6dG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzW2ldKSkpOwogICAgIH0KQEAgLTMwNjIs
MzEgKzMwNjIsMzEgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kKIAogICAgIC8vIEN1c3RvbSBT
aWduYXR1cmUgJ3ZvaWRNZXRob2RXaXRoQXJncycKICAgICBjb25zdCBpbnQgdm9pZE1ldGhvZFdp
dGhBcmdzQXJnYyA9IDM7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdm9p
ZE1ldGhvZFdpdGhBcmdzQXJndlt2b2lkTWV0aG9kV2l0aEFyZ3NBcmdjXSA9IHsgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4VGVz
dE9iajo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB2b2lk
TWV0aG9kV2l0aEFyZ3NBcmd2W3ZvaWRNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0
T2JqOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiB2
b2lkTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgdm9p
ZE1ldGhvZFdpdGhBcmdzQXJnYywgdm9pZE1ldGhvZFdpdGhBcmdzQXJndik7CiAgICAgcHJvdG8t
PlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInZvaWRNZXRob2RXaXRoQXJncyIpLCB2ODo6RnVu
Y3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjp2b2lkTWV0aG9kV2l0aEFyZ3NN
ZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdm9pZE1ldGhvZFdpdGhBcmdzU2lnbmF0dXJl
KSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdsb25nTWV0aG9kV2l0aEFyZ3MnCiAgICAg
Y29uc3QgaW50IGxvbmdNZXRob2RXaXRoQXJnc0FyZ2MgPSAzOwotICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IGxvbmdNZXRob2RXaXRoQXJnc0FyZ3ZbbG9uZ01ldGhvZFdpdGhB
cmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gbG9uZ01ldGhvZFdpdGhBcmdzQXJndltsb25nTWV0aG9kV2l0aEFy
Z3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpI
YW5kbGU8djg6OlNpZ25hdHVyZT4gbG9uZ01ldGhvZFdpdGhBcmdzU2lnbmF0dXJlID0gdjg6OlNp
Z25hdHVyZTo6TmV3KGRlc2MsIGxvbmdNZXRob2RXaXRoQXJnc0FyZ2MsIGxvbmdNZXRob2RXaXRo
QXJnc0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJsb25nTWV0
aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5h
bDo6bG9uZ01ldGhvZFdpdGhBcmdzTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGxvbmdN
ZXRob2RXaXRoQXJnc1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnb2Jq
TWV0aG9kV2l0aEFyZ3MnCiAgICAgY29uc3QgaW50IG9iak1ldGhvZFdpdGhBcmdzQXJnYyA9IDM7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gb2JqTWV0aG9kV2l0aEFyZ3NB
cmd2W29iak1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8pIH07Cisg
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gb2JqTWV0aG9kV2l0aEFyZ3NBcmd2
W29iak1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxkVHlw
ZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG9iak1ldGhvZFdpdGhBcmdzU2ln
bmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG9iak1ldGhvZFdpdGhBcmdzQXJnYywg
b2JqTWV0aG9kV2l0aEFyZ3NBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5
bWJvbCgib2JqTWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0
T2JqVjhJbnRlcm5hbDo6b2JqTWV0aG9kV2l0aEFyZ3NNZXRob2RDYWxsYmFjaywgdjhVbmRlZmlu
ZWQoKSwgb2JqTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWdu
YXR1cmUgJ21ldGhvZFdpdGhTZXF1ZW5jZUFyZycKICAgICBjb25zdCBpbnQgbWV0aG9kV2l0aFNl
cXVlbmNlQXJnQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
bWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndlttZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjXSA9IHsg
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4c2VxdWVuY2U8
U2NyaXB0UHJvZmlsZT46OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndlttZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdj
XSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4c2Vx
dWVuY2U8U2NyaXB0UHJvZmlsZT46OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxl
PHY4OjpTaWduYXR1cmU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSA9IHY4OjpTaWdu
YXR1cmU6Ok5ldyhkZXNjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjLCBtZXRob2RXaXRoU2Vx
dWVuY2VBcmdBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibWV0
aG9kV2l0aFNlcXVlbmNlQXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4
SW50ZXJuYWw6Om1ldGhvZFdpdGhTZXF1ZW5jZUFyZ01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5l
ZCgpLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBT
aWduYXR1cmUgJ21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MnCiAgICAgY29uc3Qg
aW50IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjID0gMjsKLSAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5k
VGhyb3dzQXJndlttZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJnY10gPSB7IHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8pIH07CisgICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93
c0FyZ3ZbbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ2NdID0geyB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6
OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dz
U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG1ldGhvZFRoYXRSZXF1aXJlc0Fs
bEFyZ3NBbmRUaHJvd3NBcmdjLCBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJn
dik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm1ldGhvZFRoYXRSZXF1
aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2Jq
VjhJbnRlcm5hbDo6bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c01ldGhvZENhbGxi
YWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzU2ln
bmF0dXJlKSk7CiAgICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3RhdGljTWV0
aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5l
dyhUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxB
cmdNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+
KCkpKTsKQEAgLTMxMDQsNDMgKzMxMDQsNDMgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kKIAog
ICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N0cmluZ0FycmF5RnVuY3Rpb24nCiAgICAgY29uc3Qg
aW50IHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndltzdHJpbmdBcnJheUZ1bmN0aW9u
QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZW
OERPTVN0cmluZ1tdOjppbmZvKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2W3N0cmluZ0FycmF5RnVuY3Rpb25BcmdjXSA9IHsg
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5n
W106OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHN0
cmluZ0FycmF5RnVuY3Rpb25TaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgc3Ry
aW5nQXJyYXlGdW5jdGlvbkFyZ2MsIHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2KTsKICAgICBwcm90
by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3RyaW5nQXJyYXlGdW5jdGlvbiIpLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBcnJheUZ1bmN0
aW9uTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHN0cmluZ0FycmF5RnVuY3Rpb25TaWdu
YXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2RvbVN0cmluZ0xpc3RGdW5jdGlv
bicKICAgICBjb25zdCBpbnQgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJnYyA9IDE7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJndltk
b21TdHJpbmdMaXN0RnVuY3Rpb25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nTGlzdDo6aW5mbykgfTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkb21TdHJpbmdMaXN0RnVuY3Rpb25Bcmd2W2RvbVN0
cmluZ0xpc3RGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdMaXN0OjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAg
djg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBkb21TdHJpbmdMaXN0RnVuY3Rpb25TaWduYXR1cmUg
PSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJnYywgZG9t
U3RyaW5nTGlzdEZ1bmN0aW9uQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdT
eW1ib2woImRvbVN0cmluZ0xpc3RGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KFRlc3RPYmpWOEludGVybmFsOjpkb21TdHJpbmdMaXN0RnVuY3Rpb25NZXRob2RDYWxsYmFjaywg
djhVbmRlZmluZWQoKSwgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uU2lnbmF0dXJlKSk7CiAKICAgICAv
LyBDdXN0b20gU2lnbmF0dXJlICdjb252ZXJ0MScKICAgICBjb25zdCBpbnQgY29udmVydDFBcmdj
ID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0MUFyZ3Zb
Y29udmVydDFBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVt
cGxhdGUoJlY4YTo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBjb252ZXJ0MUFyZ3ZbY29udmVydDFBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4YTo6aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpI
YW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDFTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpO
ZXcoZGVzYywgY29udmVydDFBcmdjLCBjb252ZXJ0MUFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0MSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0MU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgp
LCBjb252ZXJ0MVNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnY29udmVy
dDInCiAgICAgY29uc3QgaW50IGNvbnZlcnQyQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDJBcmd2W2NvbnZlcnQyQXJnY10gPSB7IFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGI6OmluZm8pIH07CisgICAg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDJBcmd2W2NvbnZlcnQyQXJn
Y10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGI6
OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZl
cnQyU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGNvbnZlcnQyQXJnYywgY29u
dmVydDJBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY29udmVy
dDIiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVy
dDJNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29udmVydDJTaWduYXR1cmUpKTsKIAog
ICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2NvbnZlcnQ0JwogICAgIGNvbnN0IGludCBjb252ZXJ0
NEFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQ0
QXJndltjb252ZXJ0NEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5y
YXdUZW1wbGF0ZSgmVjhkOjppbmZvKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGNvbnZlcnQ0QXJndltjb252ZXJ0NEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhkOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAg
djg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBjb252ZXJ0NFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1
cmU6Ok5ldyhkZXNjLCBjb252ZXJ0NEFyZ2MsIGNvbnZlcnQ0QXJndik7CiAgICAgcHJvdG8tPlNl
dCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNvbnZlcnQ0IiksIHY4OjpGdW5jdGlvblRlbXBsYXRl
OjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQ0TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZp
bmVkKCksIGNvbnZlcnQ0U2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdj
b252ZXJ0NScKICAgICBjb25zdCBpbnQgY29udmVydDVBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0NUFyZ3ZbY29udmVydDVBcmdjXSA9IHsgVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4ZTo6aW5mbykgfTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0NUFyZ3ZbY29udmVy
dDVBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUo
JlY4ZTo6aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4g
Y29udmVydDVTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgY29udmVydDVBcmdj
LCBjb252ZXJ0NUFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJj
b252ZXJ0NSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpj
b252ZXJ0NU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBjb252ZXJ0NVNpZ25hdHVyZSkp
OwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAndmFyaWFkaWNOb2RlTWV0aG9kJwogICAgIGNv
bnN0IGludCB2YXJpYWRpY05vZGVNZXRob2RBcmdjID0gMjsKLSAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiB2YXJpYWRpY05vZGVNZXRob2RBcmd2W3ZhcmlhZGljTm9kZU1ldGhv
ZEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgm
VjhOb2RlOjppbmZvKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxh
dGUoJlY4Tm9kZTo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PiB2YXJpYWRpY05vZGVNZXRob2RBcmd2W3ZhcmlhZGljTm9kZU1ldGhvZEFyZ2NdID0geyBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvLCB3
b3JsZFR5cGUpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgm
VjhOb2RlOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJl
PiB2YXJpYWRpY05vZGVNZXRob2RTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywg
dmFyaWFkaWNOb2RlTWV0aG9kQXJnYywgdmFyaWFkaWNOb2RlTWV0aG9kQXJndik7CiAgICAgcHJv
dG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInZhcmlhZGljTm9kZU1ldGhvZCIpLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY05vZGVNZXRo
b2RNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdmFyaWFkaWNOb2RlTWV0aG9kU2lnbmF0
dXJlKSk7CiAgICAgVjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyhk
ZXNjLCBwcm90bywgVjhUZXN0T2JqQ29uc3RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdE9iakNv
bnN0cyksIGlzb2xhdGUpOwpAQCAtMzE1MywyMCArMzE1MywyNyBAQCBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4
OjpQZXJzaQogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE9iajo6
R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRU
eXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRv
ciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1
bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpU
ZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBl
KS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxk
VHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6Okhh
bmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKGRhdGEt
PnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1w
bGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RPYmpU
ZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29y
bGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVt
cGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RPYmo6Okhhc0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitib29s
IFY4VGVzdE9iajo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7Ci0gICAgcmV0
dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2
YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0lu
c3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKK30KKworYm9vbCBWOFRlc3RPYmo6Okhh
c0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQoreworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIE1haW5Xb3JsZCkKKyAgICAgICAgfHwgVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBJ
c29sYXRlZFdvcmxkKQorICAgICAgICB8fCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIFdvcmtlcldvcmxkKTsKIH0KIAogdm9pZCBWOFRl
c3RPYmo6Omluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGluc3RhbmNlLCBUZXN0T2JqKiBpbXBsLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaAppbmRl
eCBhZmRmNzY3ZmJlYmNmZTM1N2ZlM2U2ZDFmOTNjNDgwNzFiMmQ5MDVkLi4yYjJkZTg4YmJjZGYw
MzVlYWJiMDQ3M2E1ODEyMDliMmVkZTQ3ODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCkBAIC0zNCw3ICszNCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVzdE9iaiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9v
bCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CisgICAg
c3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0
ZSosIFdyYXBwZXJXb3JsZFR5cGUpOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlSW5BbnlX
b3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0
ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0T2JqKiB0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggMGQ4MDU5OWJkOWQzOTRmZGEwMDgzZjgxZjkx
ZWMzZGNmYjRkMzI1NC4uNmVhYTM3YzExMzdmYjJhODYyNWNkOTE2ODllNDg0ZjM1Zjk4ZWIzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtNzcs
NyArNzcsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CiAKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IxKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7Ci0gICAgVjhUUllDQVRDSChBcnJheUJ1ZmZlciosIGFycmF5QnVmZmVyLCBW
OEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBW
OEFycmF5QnVmZmVyOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3Nb
MF0pKSA6IDApOworICAgIFY4VFJZQ0FUQ0goQXJyYXlCdWZmZXIqLCBhcnJheUJ1ZmZlciwgVjhB
cnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxk
VHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKIAogICAgIFJlZlB0cjxUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OjpjcmVhdGUoYXJyYXlCdWZmZXIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IGFyZ3MuSG9sZGVyKCk7CkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gY29uc3RydWN0b3IxKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IyKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7Ci0gICAgVjhUUllDQVRDSChBcnJheUJ1ZmZlclZpZXcqLCBhcnJheUJ1ZmZlclZp
ZXcsIFY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xh
dGUoKSkgPyBWOEFycmF5QnVmZmVyVmlldzo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAgICBWOFRSWUNBVENIKEFycmF5QnVmZmVyVmlldyos
IGFycmF5QnVmZmVyVmlldywgVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKGFyZ3NbMF0s
IGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4QXJy
YXlCdWZmZXJWaWV3Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3Nb
MF0pKSA6IDApOwogCiAgICAgUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBs
ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShhcnJheUJ1ZmZlclZpZXcpOwog
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CkBAIC05
OSw3ICs5OSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IyKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
Y29uc3RydWN0b3IzKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgVjhUUllDQVRD
SChCbG9iKiwgYmxvYiwgVjhCbG9iOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xh
dGUoKSkgPyBWOEJsb2I6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJn
c1swXSkpIDogMCk7CisgICAgVjhUUllDQVRDSChCbG9iKiwgYmxvYiwgVjhCbG9iOjpIYXNJbnN0
YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0
ZSgpKSkgPyBWOEJsb2I6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJn
c1swXSkpIDogMCk7CiAKICAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGlt
cGwgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKGJsb2IpOwogICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CkBAIC0xMjEsMTEgKzEy
MSwxMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yNChjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0
cnVjdG9yKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgaWYgKChhcmdzLkxlbmd0
aCgpID09IDEgJiYgKFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0
SXNvbGF0ZSgpKSkpKQorICAgIGlmICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIChWOEFycmF5QnVm
ZmVyOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFy
Z3MuR2V0SXNvbGF0ZSgpKSkpKSkKICAgICAgICAgcmV0dXJuIFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzVjhJbnRlcm5hbDo6Y29uc3RydWN0b3IxKGFyZ3MpOwotICAgIGlmICgoYXJncy5MZW5n
dGgoKSA9PSAxICYmIChWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJn
cy5HZXRJc29sYXRlKCkpKSkpCisgICAgaWYgKChhcmdzLkxlbmd0aCgpID09IDEgJiYgKFY4QXJy
YXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29y
bGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpKSkKICAgICAgICAgcmV0dXJuIFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzVjhJbnRlcm5hbDo6Y29uc3RydWN0b3IyKGFyZ3MpOwotICAgIGlmICgo
YXJncy5MZW5ndGgoKSA9PSAxICYmIChWOEJsb2I6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3Mu
R2V0SXNvbGF0ZSgpKSkpKQorICAgIGlmICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIChWOEJsb2I6
Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5H
ZXRJc29sYXRlKCkpKSkpKQogICAgICAgICByZXR1cm4gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNWOEludGVybmFsOjpjb25zdHJ1Y3RvcjMoYXJncyk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PT0gMSkKICAgICAgICAgcmV0dXJuIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVjhJbnRlcm5h
bDo6Y29uc3RydWN0b3I0KGFyZ3MpOwpAQCAtMTY3LDIwICsxNjcsMjcgQEAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3IKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0
YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0
YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmlu
ZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQor
ICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRh
LT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3Vs
dC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJl
VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZp
bmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgm
aW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUs
IHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8s
IHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK2Jvb2wgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6SGFz
SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CisgICAgcmV0
dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2
YWx1ZSwgd29ybGRUeXBlKTsKK30KKworYm9vbCBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OjpIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBNYWluV29ybGQpCisgICAgICAgIHx8
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1
ZSwgSXNvbGF0ZWRXb3JsZCkKKyAgICAgICAgfHwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBXb3JrZXJXb3JsZCk7CiB9CiAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKaW5kZXggYWU1MjEwMTJkODlj
YjdmOWVjMGQ1YjAyNGM5ZDVhZWYxMGRlNzQ0MC4uMDgxYzAxN2MzOTA3ZTVkMjFhOTE4OWUyMjJj
YzgzODViNzUzMjNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5oCkBAIC0zNCw3ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhh
c0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uo
djg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBib29sIEhh
c0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29y
bGRUeXBlKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29y
bGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggNzBkZmNh
N2IyOWJiZDYzYmM1NTNiMjM4NjM1YmRmMTExNzJhNDY1Ny4uZDU4YWEzZTBmNGMyMGU0M2EzN2Iz
ODhhNzVhNzgwMTUyMTY3MWZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTMzMiwyMCArMzMyLDI3IEBAIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpHZXRUZW1wbGF0ZSh2ODo6SXNv
bGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJ
c29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAg
VjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRl
bXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0
ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRv
ciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAg
IGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAgICAg
ICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2Nv
cGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAg
ICAgICAgQ29uZmlndXJlVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVGVtcGxh
dGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRh
dGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBs
YXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRl
bXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBs
OwogfQogCi1ib29sIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6SGFzSW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
K2Jvb2wgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpIYXNJbnN0YW5jZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
V29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKKyAgICByZXR1cm4gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3Js
ZFR5cGUpOworfQorCitib29sIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6
SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCit7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgTWFpbldvcmxkKQorICAgICAgICB8fCBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUs
IElzb2xhdGVkV29ybGQpCisgICAgICAgIHx8IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgV29ya2VyV29ybGQpOwogfQogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAppbmRl
eCAwYTVmYTNmMjI0MzViNjlhNDA3YjczYzk5NzFlN2I1MzZlMTgxMDI2Li4yYzdiYjg2ZTAxMzk4
MWFkODZjNmIyMTE4MjIzOWZiM2VlMDI5NWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCkBAIC0zNSw3ICszNSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUg
PSBmYWxzZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4sIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOworICAgIHN0YXRp
YyBib29sIEhhc0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJ
c29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRp
YyBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiB0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNwcAppbmRleCBlNjc3
ZWJjOTU4MWMwYjNkNWMzMmU5NDgwYWNmNTg3M2ZmOTU2MDYzLi5kOGZjN2Q4YjBjNThlZjI2NDNl
N2NiYjI5YTU1ODFjODU2MzgxYjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHAKQEAgLTI2NCw3ICsy
NjQsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGZ1bmNNZXRob2QoY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKICAgICAgICAgaW1wLT5mdW5jKCk7CiAgICAgICAgIHJldHVybiB2
OFVuZGVmaW5lZCgpOwogICAgIH0KLSAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDAgJiYgIWlzVW5k
ZWZpbmVkT3JOdWxsKGFyZ3NbMF0pICYmICFWOGxvbmdbXTo6SGFzSW5zdGFuY2UoYXJnc1swXSwg
YXJncy5HZXRJc29sYXRlKCkpKQorICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMCAmJiAhaXNVbmRl
ZmluZWRPck51bGwoYXJnc1swXSkgJiYgIVY4bG9uZ1tdOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBh
cmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpCiAgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVjhUUllD
QVRDSChWZWN0b3I8aW50PiwgeCwgdG9OYXRpdmVBcnJheTxpbnQ+KGFyZ3NbMF0pKTsKICAgICBp
bXAtPmZ1bmMoeCk7CkBAIC01NTEsMjUgKzU1MSwyNSBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUodjg6
OgogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnbWV0aG9kV2l0aFNlcXVlbmNlQXJnJwogICAg
IGNvbnN0IGludCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2W21ldGhvZFdp
dGhTZXF1ZW5jZUFyZ0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5y
YXdUZW1wbGF0ZSgmVjhzZXF1ZW5jZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+OjppbmZvKSB9Owor
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFy
Z0FyZ3ZbbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOHNlcXVlbmNlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT46OmluZm8sIHdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG1l
dGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBt
ZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2KTsKICAg
ICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibWV0aG9kV2l0aFNlcXVlbmNlQXJn
IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6bWV0
aG9kV2l0aFNlcXVlbmNlQXJnTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIG1ldGhvZFdp
dGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnbnVs
bGFibGVBcnJheUFyZycKICAgICBjb25zdCBpbnQgbnVsbGFibGVBcnJheUFyZ0FyZ2MgPSAxOwot
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG51bGxhYmxlQXJyYXlBcmdBcmd2
W251bGxhYmxlQXJyYXlBcmdBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbnVsbGFibGVBcnJheUFyZ0FyZ3ZbbnVsbGFibGVBcnJheUFy
Z0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgm
VjhET01TdHJpbmdbXTo6aW5mbywgd29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNp
Z25hdHVyZT4gbnVsbGFibGVBcnJheUFyZ1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhk
ZXNjLCBudWxsYWJsZUFycmF5QXJnQXJnYywgbnVsbGFibGVBcnJheUFyZ0FyZ3YpOwogICAgIHBy
b3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJudWxsYWJsZUFycmF5QXJnIiksIHY4OjpG
dW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6bnVsbGFibGVBcnJh
eUFyZ01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBudWxsYWJsZUFycmF5QXJnU2lnbmF0
dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdzdHJpbmdBcnJheUZ1bmN0aW9uJwog
ICAgIGNvbnN0IGludCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Zbc3RyaW5nQXJy
YXlGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdU
ZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndltzdHJpbmdBcnJheUZ1bmN0aW9u
QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZW
OERPTVN0cmluZ1tdOjppbmZvLCB3b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2ln
bmF0dXJlPiBzdHJpbmdBcnJheUZ1bmN0aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3
KGRlc2MsIHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjLCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndik7
CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN0cmluZ0FycmF5RnVuY3Rp
b24iKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjpz
dHJpbmdBcnJheUZ1bmN0aW9uTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHN0cmluZ0Fy
cmF5RnVuY3Rpb25TaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N0cmlu
Z0FycmF5RnVuY3Rpb24yJwogICAgIGNvbnN0IGludCBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ2Mg
PSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5RnVu
Y3Rpb24yQXJndltzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbykgfTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uMkFy
Z3Zbc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8sIHdvcmxkVHlwZSkgfTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHN0cmluZ0FycmF5RnVuY3Rpb24yU2lnbmF0
dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIHN0cmluZ0FycmF5RnVuY3Rpb24yQXJnYywg
c3RyaW5nQXJyYXlGdW5jdGlvbjJBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbCgic3RyaW5nQXJyYXlGdW5jdGlvbjIiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5l
dyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBcnJheUZ1bmN0aW9uMk1ldGhvZENhbGxi
YWNrLCB2OFVuZGVmaW5lZCgpLCBzdHJpbmdBcnJheUZ1bmN0aW9uMlNpZ25hdHVyZSkpOwogCkBA
IC01ODEsMjAgKzU4MSwyNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IENvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUodjg6Ogogdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdFR5cGVkZWZzOjpHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQ
ZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0g
ICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEt
PnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1w
bGF0ZU1hcCgpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVy
YXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwor
ICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxl
U2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0K
LSAgICAgICAgQ29uZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0
ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5h
ZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0
ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBl
KTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwog
ICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RUeXBlZGVmczo6SGFzSW5zdGFuY2Uo
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK2Jvb2wg
VjhUZXN0VHlwZWRlZnM6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwg
djg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewotICAg
IHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5m
bywgdmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5o
YXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7Cit9CisKK2Jvb2wgVjhUZXN0VHlw
ZWRlZnM6Okhhc0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIE1haW5Xb3JsZCkKKyAgICAg
ICAgfHwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8s
IHZhbHVlLCBJc29sYXRlZFdvcmxkKQorICAgICAgICB8fCBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIFdvcmtlcldvcmxkKTsKIH0KIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0VHlwZWRlZnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RUeXBlZGVmcy5oCmluZGV4IDE0ZGIxZTU1ZDk4Mjg3YTBlN2RjZTA3NDJjM2ExOGM1NWFi
NzM5N2IuLmM2NzQzNzJjY2FiOTQ0ZGY1MmZmMTg0ZDEwZjY4MWQyOWE0YTg3NDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVm
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RU
eXBlZGVmcy5oCkBAIC0zNCw3ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4
VGVzdFR5cGVkZWZzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRl
bnRMaWZldGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7
CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7
CiAgICAgc3RhdGljIFRlc3RUeXBlZGVmcyogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNw
cAppbmRleCBiM2I3MDIyYTA5MzU3NDA4NmI4Y2FmZTNiOWI0OTk1ZWY5ZjQ0MWVkLi5iZjNjMWUz
M2JlMmZiZjY0MmY3MmNhYzhhNjhhNzhhNWMyMjc3NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9EaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9EaWN0aW9uYXJ5LmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIGJvb2wgRGljdGlvbmFy
eTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8U3RvcmFnZT4mIHZhbHVlKSBjb25zdAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB2YWx1ZSA9IDA7Ci0gICAgaWYgKFY4U3RvcmFn
ZTo6SGFzSW5zdGFuY2UodjhWYWx1ZSwgbV9pc29sYXRlKSkKKyAgICBpZiAoVjhTdG9yYWdlOjpI
YXNJbnN0YW5jZSh2OFZhbHVlLCBtX2lzb2xhdGUsIHdvcmxkVHlwZShtX2lzb2xhdGUpKSkKICAg
ICAgICAgdmFsdWUgPSBWOFN0b3JhZ2U6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QodjhWYWx1ZSkpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzM3LDcgKzMzNyw3IEBA
IGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8VWludDhBcnJh
eT4mIHZhbHVlKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB2YWx1ZSA9IDA7
Ci0gICAgaWYgKFY4VWludDhBcnJheTo6SGFzSW5zdGFuY2UodjhWYWx1ZSwgbV9pc29sYXRlKSkK
KyAgICBpZiAoVjhVaW50OEFycmF5OjpIYXNJbnN0YW5jZSh2OFZhbHVlLCBtX2lzb2xhdGUsIHdv
cmxkVHlwZShtX2lzb2xhdGUpKSkKICAgICAgICAgdmFsdWUgPSBWOFVpbnQ4QXJyYXk6OnRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhWYWx1ZSkpOwogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0
cmluZyYga2V5LCBSZWZQdHI8TWVkaWFLZXlFcnJvcj4mIHZhbHVlKSBjb25zdAogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICB2YWx1ZSA9IDA7Ci0gICAgaWYgKFY4TWVkaWFLZXlFcnJvcjo6
SGFzSW5zdGFuY2UodjhWYWx1ZSwgbV9pc29sYXRlKSkKKyAgICBpZiAoVjhNZWRpYUtleUVycm9y
OjpIYXNJbnN0YW5jZSh2OFZhbHVlLCBtX2lzb2xhdGUsIHdvcmxkVHlwZShtX2lzb2xhdGUpKSkK
ICAgICAgICAgdmFsdWUgPSBWOE1lZGlhS2V5RXJyb3I6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QodjhWYWx1ZSkpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzg2LDcg
KzM4Niw3IEBAIGJvb2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8
U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mIHZhbHVlKSBjCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHZhbHVlID0gMDsKLSAgICBpZiAoVjhTcGVlY2hSZWNvZ25pdGlvbkVycm9yOjpIYXNJ
bnN0YW5jZSh2OFZhbHVlLCBtX2lzb2xhdGUpKQorICAgIGlmIChWOFNwZWVjaFJlY29nbml0aW9u
RXJyb3I6Okhhc0luc3RhbmNlKHY4VmFsdWUsIG1faXNvbGF0ZSwgd29ybGRUeXBlKG1faXNvbGF0
ZSkpKQogICAgICAgICB2YWx1ZSA9IFY4U3BlZWNoUmVjb2duaXRpb25FcnJvcjo6dG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OFZhbHVlKSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0zOTgsNyArMzk4LDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5n
JiBrZXksIFJlZlB0cjxTcGVlY2hSZWNvZ25pdGlvblJlc3VsdD4mIHZhbHVlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICB2YWx1ZSA9IDA7Ci0gICAgaWYgKFY4U3BlZWNoUmVjb2duaXRp
b25SZXN1bHQ6Okhhc0luc3RhbmNlKHY4VmFsdWUsIG1faXNvbGF0ZSkpCisgICAgaWYgKFY4U3Bl
ZWNoUmVjb2duaXRpb25SZXN1bHQ6Okhhc0luc3RhbmNlKHY4VmFsdWUsIG1faXNvbGF0ZSwgd29y
bGRUeXBlKG1faXNvbGF0ZSkpKQogICAgICAgICB2YWx1ZSA9IFY4U3BlZWNoUmVjb2duaXRpb25S
ZXN1bHQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhWYWx1ZSkpOwog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDEwLDcgKzQxMCw3IEBAIGJvb2wgRGljdGlvbmFyeTo6
Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0
PiYgdmFsCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHZhbHVlID0gMDsKLSAgICBpZiAo
VjhTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q6Okhhc0luc3RhbmNlKHY4VmFsdWUsIG1faXNv
bGF0ZSkpCisgICAgaWYgKFY4U3BlZWNoUmVjb2duaXRpb25SZXN1bHRMaXN0OjpIYXNJbnN0YW5j
ZSh2OFZhbHVlLCBtX2lzb2xhdGUsIHdvcmxkVHlwZShtX2lzb2xhdGUpKSkKICAgICAgICAgdmFs
dWUgPSBWOFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdCh2OFZhbHVlKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC00MjUs
NyArNDI1LDcgQEAgYm9vbCBEaWN0aW9uYXJ5OjpnZXQoY29uc3QgU3RyaW5nJiBrZXksIFJlZlB0
cjxNZWRpYVN0cmVhbT4mIHZhbHVlKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICB2YWx1ZSA9IDA7Ci0gICAgaWYgKFY4TWVkaWFTdHJlYW06Okhhc0luc3RhbmNlKHY4VmFsdWUs
IG1faXNvbGF0ZSkpCisgICAgaWYgKFY4TWVkaWFTdHJlYW06Okhhc0luc3RhbmNlKHY4VmFsdWUs
IG1faXNvbGF0ZSwgd29ybGRUeXBlKG1faXNvbGF0ZSkpKQogICAgICAgICB2YWx1ZSA9IFY4TWVk
aWFTdHJlYW06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhWYWx1ZSkp
OwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0UHJvZmlsZXIuY3BwCmluZGV4IDQ5OTEwZWFjY2ZhNzcxMTI2ODkxYzBhN2MwMDUwODgwMTU1
MzEwNWEuLjU0MjI3ZjU0MjRmNmI2MGNjZTgyNWNkMzAwNzg1YmZiOGQ4MTE3M2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAKQEAgLTIzNSw3ICsy
MzUsNyBAQCB2b2lkIFNjcmlwdFByb2ZpbGVyOjp2aXNpdE5vZGVXcmFwcGVycyhXcmFwcGVkTm9k
ZVZpc2l0b3IqIHZpc2l0b3IpCiAgICAgICAgICAgICBpZiAoY2xhc3NJZCAhPSB2OERPTU5vZGVD
bGFzc0lkKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIFVOVVNFRF9QQVJB
TShtX2lzb2xhdGUpOwotICAgICAgICAgICAgQVNTRVJUKFY4Tm9kZTo6SGFzSW5zdGFuY2UodmFs
dWUsIG1faXNvbGF0ZSkpOworICAgICAgICAgICAgQVNTRVJUKFY4Tm9kZTo6SGFzSW5zdGFuY2Uo
dmFsdWUsIG1faXNvbGF0ZSwgd29ybGRUeXBlKG1faXNvbGF0ZSkpKTsKICAgICAgICAgICAgIEFT
U0VSVCh2YWx1ZS0+SXNPYmplY3QoKSk7CiAgICAgICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46OkNhc3QodmFsdWUp
OwogICAgICAgICAgICAgbV92aXNpdG9yLT52aXNpdE5vZGUoVjhOb2RlOjp0b05hdGl2ZSh3cmFw
cGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcAppbmRleCBhOWYyZmZhOTc2ZDg4NzUwMTQ4OWUwMDI3ZDJkNDA3YmMxMDJl
ODNjLi5hOGEwNGViNGNlY2I5OTAxZmRiZmZhMmU0ZGZhZDBjMzFmMTNhMTAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
QEAgLTEyNTEsNiArMTI1MSw3IEBAIFNlcmlhbGl6ZXI6OlN0YXRlQmFzZSogU2VyaWFsaXplcjo6
ZG9TZXJpYWxpemUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBTdGF0CiAgICAgbV93cml0
ZXIud3JpdGVSZWZlcmVuY2VDb3VudChtX25leHRPYmplY3RSZWZlcmVuY2UpOwogICAgIHVpbnQz
Ml90IG9iamVjdFJlZmVyZW5jZTsKICAgICB1aW50MzJfdCBhcnJheUJ1ZmZlckluZGV4OworICAg
IFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSA9IHdvcmxkVHlwZShtX2lzb2xhdGUp
OwogICAgIGlmICgodmFsdWUtPklzT2JqZWN0KCkgfHwgdmFsdWUtPklzRGF0ZSgpIHx8IHZhbHVl
LT5Jc1JlZ0V4cCgpKQogICAgICAgICAmJiBtX29iamVjdFBvb2wudHJ5R2V0KHZhbHVlLkFzPHY4
OjpPYmplY3Q+KCksICZvYmplY3RSZWZlcmVuY2UpKSB7CiAgICAgICAgIC8vIE5vdGUgdGhhdCBJ
c09iamVjdCgpIGFsc28gZGV0ZWN0cyB3cmFwcGVycyAoZWcsIGl0IHdpbGwgY2F0Y2ggdGhlIHRo
aW5ncwpAQCAtMTI3MywxNyArMTI3NCwxNyBAQCBTZXJpYWxpemVyOjpTdGF0ZUJhc2UqIFNlcmlh
bGl6ZXI6OmRvU2VyaWFsaXplKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgU3RhdAogICAg
ICAgICBtX3dyaXRlci53cml0ZVVpbnQzMih2YWx1ZS0+VWludDMyVmFsdWUoKSk7CiAgICAgZWxz
ZSBpZiAodmFsdWUtPklzTnVtYmVyKCkpCiAgICAgICAgIG1fd3JpdGVyLndyaXRlTnVtYmVyKHZh
bHVlLkFzPHY4OjpOdW1iZXI+KCktPlZhbHVlKCkpOwotICAgIGVsc2UgaWYgKFY4QXJyYXlCdWZm
ZXJWaWV3OjpIYXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlKSkKKyAgICBlbHNlIGlmIChWOEFy
cmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UodmFsdWUsIG1faXNvbGF0ZSwgY3VycmVudFdvcmxk
VHlwZSkpCiAgICAgICAgIHJldHVybiB3cml0ZUFuZEdyZXlBcnJheUJ1ZmZlclZpZXcodmFsdWUu
QXM8djg6Ok9iamVjdD4oKSwgbmV4dCk7CiAgICAgZWxzZSBpZiAodmFsdWUtPklzU3RyaW5nKCkp
CiAgICAgICAgIHdyaXRlU3RyaW5nKHZhbHVlKTsKLSAgICBlbHNlIGlmIChWOE1lc3NhZ2VQb3J0
OjpIYXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlKSkgeworICAgIGVsc2UgaWYgKFY4TWVzc2Fn
ZVBvcnQ6Okhhc0luc3RhbmNlKHZhbHVlLCBtX2lzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpKSB7
CiAgICAgICAgIHVpbnQzMl90IG1lc3NhZ2VQb3J0SW5kZXg7CiAgICAgICAgIGlmIChtX3RyYW5z
ZmVycmVkTWVzc2FnZVBvcnRzLnRyeUdldCh2YWx1ZS5Bczx2ODo6T2JqZWN0PigpLCAmbWVzc2Fn
ZVBvcnRJbmRleCkpCiAgICAgICAgICAgICAgICAgbV93cml0ZXIud3JpdGVUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0KG1lc3NhZ2VQb3J0SW5kZXgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIHJldHVybiBoYW5kbGVFcnJvcihEYXRhQ2xvbmVFcnJvciwgbmV4dCk7Ci0gICAgfSBl
bHNlIGlmIChWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlKSAmJiBt
X3RyYW5zZmVycmVkQXJyYXlCdWZmZXJzLnRyeUdldCh2YWx1ZS5Bczx2ODo6T2JqZWN0PigpLCAm
YXJyYXlCdWZmZXJJbmRleCkpCisgICAgfSBlbHNlIGlmIChWOEFycmF5QnVmZmVyOjpIYXNJbnN0
YW5jZSh2YWx1ZSwgbV9pc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKSAmJiBtX3RyYW5zZmVycmVk
QXJyYXlCdWZmZXJzLnRyeUdldCh2YWx1ZS5Bczx2ODo6T2JqZWN0PigpLCAmYXJyYXlCdWZmZXJJ
bmRleCkpCiAgICAgICAgIHJldHVybiB3cml0ZVRyYW5zZmVycmVkQXJyYXlCdWZmZXIodmFsdWUs
IGFycmF5QnVmZmVySW5kZXgsIG5leHQpOwogICAgIGVsc2UgewogICAgICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGpzT2JqZWN0ID0gdmFsdWUuQXM8djg6Ok9iamVjdD4oKTsKQEAgLTEzMDAs
MjEgKzEzMDEsMjEgQEAgU2VyaWFsaXplcjo6U3RhdGVCYXNlKiBTZXJpYWxpemVyOjpkb1Nlcmlh
bGl6ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIFN0YXQKICAgICAgICAgICAgIHdyaXRl
Qm9vbGVhbk9iamVjdCh2YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT5Jc0FycmF5KCkp
IHsKICAgICAgICAgICAgIHJldHVybiBzdGFydEFycmF5U3RhdGUodmFsdWUuQXM8djg6OkFycmF5
PigpLCBuZXh0KTsKLSAgICAgICAgfSBlbHNlIGlmIChWOEZpbGU6Okhhc0luc3RhbmNlKHZhbHVl
LCBtX2lzb2xhdGUpKQorICAgICAgICB9IGVsc2UgaWYgKFY4RmlsZTo6SGFzSW5zdGFuY2UodmFs
dWUsIG1faXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpCiAgICAgICAgICAgICB3cml0ZUZpbGUo
dmFsdWUpOwotICAgICAgICBlbHNlIGlmIChWOEJsb2I6Okhhc0luc3RhbmNlKHZhbHVlLCBtX2lz
b2xhdGUpKQorICAgICAgICBlbHNlIGlmIChWOEJsb2I6Okhhc0luc3RhbmNlKHZhbHVlLCBtX2lz
b2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpKQogICAgICAgICAgICAgd3JpdGVCbG9iKHZhbHVlKTsK
ICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgICAgIGVsc2UgaWYgKFY4RE9NRmlsZVN5c3Rl
bTo6SGFzSW5zdGFuY2UodmFsdWUsIG1faXNvbGF0ZSkpCisgICAgICAgIGVsc2UgaWYgKFY4RE9N
RmlsZVN5c3RlbTo6SGFzSW5zdGFuY2UodmFsdWUsIG1faXNvbGF0ZSwgY3VycmVudFdvcmxkVHlw
ZSkpCiAgICAgICAgICAgICByZXR1cm4gd3JpdGVET01GaWxlU3lzdGVtKHZhbHVlLCBuZXh0KTsK
ICNlbmRpZgotICAgICAgICBlbHNlIGlmIChWOEZpbGVMaXN0OjpIYXNJbnN0YW5jZSh2YWx1ZSwg
bV9pc29sYXRlKSkKKyAgICAgICAgZWxzZSBpZiAoVjhGaWxlTGlzdDo6SGFzSW5zdGFuY2UodmFs
dWUsIG1faXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpCiAgICAgICAgICAgICB3cml0ZUZpbGVM
aXN0KHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoVjhJbWFnZURhdGE6Okhhc0luc3RhbmNlKHZh
bHVlLCBtX2lzb2xhdGUpKQorICAgICAgICBlbHNlIGlmIChWOEltYWdlRGF0YTo6SGFzSW5zdGFu
Y2UodmFsdWUsIG1faXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpCiAgICAgICAgICAgICB3cml0
ZUltYWdlRGF0YSh2YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT5Jc1JlZ0V4cCgpKQog
ICAgICAgICAgICAgd3JpdGVSZWdFeHAodmFsdWUpOwotICAgICAgICBlbHNlIGlmIChWOEFycmF5
QnVmZmVyOjpIYXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlKSkKKyAgICAgICAgZWxzZSBpZiAo
VjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UodmFsdWUsIG1faXNvbGF0ZSwgY3VycmVudFdvcmxk
VHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gd3JpdGVBcnJheUJ1ZmZlcih2YWx1ZSwgbmV4dCk7
CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT5Jc09iamVjdCgpKSB7CiAgICAgICAgICAgICBpZiAo
aXNIb3N0T2JqZWN0KGpzT2JqZWN0KSB8fCBqc09iamVjdC0+SXNDYWxsYWJsZSgpIHx8IHZhbHVl
LT5Jc05hdGl2ZUVycm9yKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFk
YXB0b3JGdW5jdGlvbi5jcHAKaW5kZXggNmJjODAzYTQxN2RlYTA4ZmNkZjg4MzVkNWJiZTI1OWZi
MzMzZTE4MS4uYzk3YjU5M2I4NDYzM2RkM2YzNDExMGJmMTJiNjY3MDRmYTg1YTJhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcApAQCAt
NDQsMTIgKzQ0LDEyIEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEFk
YXB0b3JGdW5jdGlvbjo6Z2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqCiB7CiAgICAgQVNTRVJUKGlz
b2xhdGUpOwogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRv
ciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChy
ZXN1bHQgIT0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVE
YXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBs
YXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwog
ICAgIC8vIFRoZSBsaWZldGltZSBpcyBvZiBuZXdUZW1wbGF0ZSBpcyBkZWxlZ2F0ZWQgdG8gdGhl
IFRlbXBsYXRlTWFwIHRodXMgdGhpcyB3b24ndCBiZSBsZWFrZWQuCiAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG5ld1RlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5l
dygpKTsKLSAgICBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgY29uZmlndXJlVGVt
cGxhdGUobmV3VGVtcGxhdGUpKTsKKyAgICBkYXRhLT5yYXdUZW1wbGF0ZU1hcCh3b3JsZFR5cGUp
LmFkZCgmaW5mbywgY29uZmlndXJlVGVtcGxhdGUobmV3VGVtcGxhdGUpKTsKICAgICByZXR1cm4g
bmV3VGVtcGxhdGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3Bw
CmluZGV4IGViOGFjNGEyMTZlZTNlZWNkZDc0ZmQwNTYxYzU3NmI3NDQwODExYTEuLjczMjJjNDJk
MzE3ZWRlZDFhNWZhZDUzM2NiOGYzMjlkZjdhMWIyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIFBhc3NSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gdG9ET01TdHJpbmdMaXN0KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6
Oklzb2xhCiB7CiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZSh2ODo6TG9jYWw8djg6
OlZhbHVlPjo6TmV3KHZhbHVlKSk7CiAKLSAgICBpZiAoVjhET01TdHJpbmdMaXN0OjpIYXNJbnN0
YW5jZSh2OFZhbHVlLCBpc29sYXRlKSkgeworICAgIGlmIChWOERPTVN0cmluZ0xpc3Q6Okhhc0lu
c3RhbmNlKHY4VmFsdWUsIGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSkpIHsKICAgICAgICAg
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IHJldCA9IFY4RE9NU3RyaW5nTGlzdDo6dG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OFZhbHVlKSk7CiAgICAgICAgIHJldHVybiByZXQu
cmVsZWFzZSgpOwogICAgIH0KQEAgLTIwNSw3ICsyMDUsNyBAQCBQYXNzUmVmUHRyPERPTVN0cmlu
Z0xpc3Q+IHRvRE9NU3RyaW5nTGlzdCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJ
c29sYQogUGFzc1JlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+IHRvWFBhdGhOU1Jlc29sdmVyKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgUmVm
UHRyPFhQYXRoTlNSZXNvbHZlcj4gcmVzb2x2ZXI7Ci0gICAgaWYgKFY4WFBhdGhOU1Jlc29sdmVy
OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaXNvbGF0ZSkpCisgICAgaWYgKFY4WFBhdGhOU1Jlc29sdmVy
OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaXNvbGF0ZSwgd29ybGRUeXBlKGlzb2xhdGUpKSkKICAgICAg
ICAgcmVzb2x2ZXIgPSBWOFhQYXRoTlNSZXNvbHZlcjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpOwogICAgIGVsc2UgaWYgKHZhbHVlLT5Jc09iamVjdCgpKQog
ICAgICAgICByZXNvbHZlciA9IFY4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpjcmVhdGUodmFsdWUt
PlRvT2JqZWN0KCksIGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcu
aAppbmRleCBiYzExMjVlNzNhMDlhNjA3NjkwMDA1NjEzMWExMzVjMmIwMWEzOGJhLi5jNDM1ZmZj
YzNhOGE3MzllZTA3Y2E1NDc0MzY1YjU4ODQ4M2NkZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEJpbmRpbmcuaApAQCAtMjc1LDYgKzI3NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4odmFsdWUtPkludGVnZXJWYWx1
ZSgpKTsKICAgICB9CiAKKyAgICBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSh2ODo6SXNvbGF0
ZSopOworICAgIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlSW5NYWluVGhyZWFkKHY4OjpJc29s
YXRlKik7CisKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM7
CiAKICAgICB0ZW1wbGF0ZTw+CkBAIC0zMjIsNyArMzI1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZWxlbWVudCA9IGFycmF5LT5HZXQoaSk7CiAKLSAg
ICAgICAgICAgIGlmIChWOFQ6Okhhc0luc3RhbmNlKGVsZW1lbnQsIGlzb2xhdGUpKSB7CisgICAg
ICAgICAgICBpZiAoVjhUOjpIYXNJbnN0YW5jZShlbGVtZW50LCBpc29sYXRlLCB3b3JsZFR5cGUo
aXNvbGF0ZSkpKSB7CiAgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmpl
Y3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGVsZW1lbnQpOwogICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoVjhUOjp0b05hdGl2ZShvYmplY3QpKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7CkBAIC00NjcsOSArNDcwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgdm9p
ZCBjcmFzaElmVjhJc0RlYWQoKTsKIAotICAgIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKHY4
OjpJc29sYXRlKik7Ci0gICAgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGVJbk1haW5UaHJlYWQo
djg6Oklzb2xhdGUqKTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVjhC
aW5kaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29sbGVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uY3BwCmlu
ZGV4IDA1OGEyN2RmNDQxYmQ1ZWRhMDM2YjM2Y2Q2N2IyOWU5M2RjYjM5MWIuLjI4NDVlZTkzNmE3
MjZhZDAwNWFjNjY5MjYyNTM4MmM1MTZhMDZjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhDb2xsZWN0aW9uLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9PcHRpb25zQ29sbGVjdGlvblNldHRlcih1aW50MzJfdCBpbmRleCwgdjg6OkhhbmRs
ZTx2ODo6VgogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCiAgICAgLy8gQ2hlY2sgdGhhdCB0
aGUgdmFsdWUgaXMgYW4gSFRNTE9wdGlvbkVsZW1lbnQuICBJZiBub3QsIHRocm93IGEgVFlQRV9N
SVNNQVRDSF9FUlIgRE9NRXhjZXB0aW9uLgotICAgIGlmICghVjhIVE1MT3B0aW9uRWxlbWVudDo6
SGFzSW5zdGFuY2UodmFsdWUsIGlzb2xhdGUpKSB7CisgICAgaWYgKCFWOEhUTUxPcHRpb25FbGVt
ZW50OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaXNvbGF0ZSwgd29ybGRUeXBlKGlzb2xhdGUpKSkgewog
ICAgICAgICBzZXRET01FeGNlcHRpb24oVFlQRV9NSVNNQVRDSF9FUlIsIGlzb2xhdGUpOwogICAg
ICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhHQ0NvbnRyb2xsZXIuY3BwCmluZGV4IGE0ZGRjODMwODY4MWY3ZmE2MzYxMmIyZmY4MDVjY2M1
NGIxMTljZjMuLmY1Y2I2MjNjMTE1NTEyYjcxZDk0MjdkMjZmNWViMmFmNjBlMDhmNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKQEAgLTMwMyw3
ICszMDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCh2YWx1ZS0+SXNPYmplY3QoKSk7CiAg
ICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7CiAgICAgICAgIEFTU0VSVChWOERPTVdyYXBwZXI6
Om1heWJlRE9NV3JhcHBlcih2YWx1ZSkpOwotICAgICAgICBBU1NFUlQoVjhOb2RlOjpIYXNJbnN0
YW5jZSh3cmFwcGVyLCBtX2lzb2xhdGUpKTsKKyAgICAgICAgQVNTRVJUKFY4Tm9kZTo6SGFzSW5z
dGFuY2VJbkFueVdvcmxkKHdyYXBwZXIsIG1faXNvbGF0ZSkpOwogICAgICAgICBOb2RlKiBub2Rl
ID0gVjhOb2RlOjp0b05hdGl2ZSh3cmFwcGVyKTsKICAgICAgICAgLy8gQSBtaW5vciBET00gR0Mg
Y2FuIGhhbmRsZSBvbmx5IG5vZGUgd3JhcHBlcnMgaW4gdGhlIG1haW4gd29ybGQuCiAgICAgICAg
IC8vIE5vdGUgdGhhdCBub2RlLT53cmFwcGVyKCkuSXNFbXB0eSgpIHJldHVybnMgdHJ1ZSBmb3Ig
bm9kZXMgdGhhdApAQCAtMzc2LDcgKzM3Niw3IEBAIHB1YmxpYzoKIAogICAgICAgICBpZiAoY2xh
c3NJZCA9PSB2OERPTU5vZGVDbGFzc0lkKSB7CiAgICAgICAgICAgICBVTlVTRURfUEFSQU0obV9p
c29sYXRlKTsKLSAgICAgICAgICAgIEFTU0VSVChWOE5vZGU6Okhhc0luc3RhbmNlKHdyYXBwZXIs
IG1faXNvbGF0ZSkpOworICAgICAgICAgICAgQVNTRVJUKFY4Tm9kZTo6SGFzSW5zdGFuY2VJbkFu
eVdvcmxkKHdyYXBwZXIsIG1faXNvbGF0ZSkpOwogICAgICAgICAgICAgQVNTRVJUKCF3cmFwcGVy
LklzSW5kZXBlbmRlbnQobV9pc29sYXRlKSk7CiAKICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBz
dGF0aWNfY2FzdDxOb2RlKj4ob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhO
UE9iamVjdC5jcHAKaW5kZXggMmJmYmJkODFlZGE0ZmY5NTljYWM2NTRiMGRlODZjZDQ1ZTMxMjZk
Ni4uMGFmNWViNDRkMjQ3ZjExN2M2YmU1NDQ4MTYxNDZlMzEyNjNlZGM2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKQEAgLTY5LDE0ICs2OSwxNSBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0SW52b2tlSW1wbChjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzLCBJbnZvawogewogICAgIE5QT2JqZWN0KiBucE9iamVjdDsKIAorICAgIFdy
YXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSA9IHdvcmxkVHlwZShhcmdzLkdldElzb2xh
dGUoKSk7CiAgICAgLy8gVGhlc2UgdGhyZWUgdHlwZXMgYXJlIHN1YnR5cGVzIG9mIEhUTUxQbHVn
SW5FbGVtZW50LgotICAgIGlmIChWOEhUTUxBcHBsZXRFbGVtZW50OjpIYXNJbnN0YW5jZShhcmdz
LkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSkgfHwgVjhIVE1MRW1iZWRFbGVtZW50OjpIYXNJ
bnN0YW5jZShhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSkKLSAgICAgICAgfHwgVjhI
VE1MT2JqZWN0RWxlbWVudDo6SGFzSW5zdGFuY2UoYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29s
YXRlKCkpKSB7CisgICAgaWYgKFY4SFRNTEFwcGxldEVsZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3Mu
SG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSB8fCBWOEhUTUxF
bWJlZEVsZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgp
LCBjdXJyZW50V29ybGRUeXBlKQorICAgICAgICB8fCBWOEhUTUxPYmplY3RFbGVtZW50OjpIYXNJ
bnN0YW5jZShhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlw
ZSkpIHsKICAgICAgICAgLy8gVGhlIGhvbGRlciBvYmplY3QgaXMgYSBzdWJ0eXBlIG9mIEhUTUxQ
bHVnSW5FbGVtZW50LgogICAgICAgICBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudDsKLSAgICAg
ICAgaWYgKFY4SFRNTEFwcGxldEVsZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3MuSG9sZGVyKCksIGFy
Z3MuR2V0SXNvbGF0ZSgpKSkKKyAgICAgICAgaWYgKFY4SFRNTEFwcGxldEVsZW1lbnQ6Okhhc0lu
c3RhbmNlKGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBl
KSkKICAgICAgICAgICAgIGVsZW1lbnQgPSBWOEhUTUxBcHBsZXRFbGVtZW50Ojp0b05hdGl2ZShh
cmdzLkhvbGRlcigpKTsKLSAgICAgICAgZWxzZSBpZiAoVjhIVE1MRW1iZWRFbGVtZW50OjpIYXNJ
bnN0YW5jZShhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSkpCisgICAgICAgIGVsc2Ug
aWYgKFY4SFRNTEVtYmVkRWxlbWVudDo6SGFzSW5zdGFuY2UoYXJncy5Ib2xkZXIoKSwgYXJncy5H
ZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpKQogICAgICAgICAgICAgZWxlbWVudCA9IFY4
SFRNTEVtYmVkRWxlbWVudDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGVsZW1lbnQgPSBWOEhUTUxPYmplY3RFbGVtZW50Ojp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVy
SXNvbGF0ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRl
RGF0YS5jcHAKaW5kZXggZTFkMTRmMzQ3NTk1NWY5MTI5YmQxNDE5MjZjNjgxYjM3MzExM2Y1NC4u
MmJmNTRjNDg3ZTFiMTZjNTJhY2UzZGJmNjc1MWIxYzlhZGRiZjhmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAKQEAgLTEwNCw4ICsxMDQs
MTAgQEAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhQZXJJc29sYXRlRGF0YTo6
dG9TdHJpbmdUZW1wbGF0ZSgpCiB2b2lkIFY4UGVySXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVt
b3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5
cGVzOjpCaW5kaW5nKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX3Jhd1RlbXBsYXRlcywgInJhd1Rl
bXBsYXRlcyIpOwotICAgIGluZm8uYWRkTWVtYmVyKG1fdGVtcGxhdGVzLCAidGVtcGxhdGVzIik7
CisgICAgaW5mby5hZGRNZW1iZXIobV9yYXdUZW1wbGF0ZXNGb3JNYWluV29ybGQsICJyYXdUZW1w
bGF0ZXNGb3JNYWluV29ybGQiKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3Jhd1RlbXBsYXRlc0Zv
ck5vbk1haW5Xb3JsZCwgInJhd1RlbXBsYXRlc0Zvck5vbk1haW5Xb3JsZCIpOworICAgIGluZm8u
YWRkTWVtYmVyKG1fdGVtcGxhdGVzRm9yTWFpbldvcmxkLCAidGVtcGxhdGVzRm9yTWFpbldvcmxk
Iik7CisgICAgaW5mby5hZGRNZW1iZXIobV90ZW1wbGF0ZXNGb3JOb25NYWluV29ybGQsICJ0ZW1w
bGF0ZXNGb3JOb25NYWluV29ybGQiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3N0cmluZ0NhY2hl
LCAic3RyaW5nQ2FjaGUiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2ludGVnZXJDYWNoZSwgImlu
dGVnZXJDYWNoZSIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fZG9tRGF0YUxpc3QsICJkb21EYXRh
TGlzdCIpOwpAQCAtMTIyLDM3ICsxMjQsNDUgQEAgdm9pZCBWOFBlcklzb2xhdGVEYXRhOjpyZXBv
cnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb24KICAg
ICBpbmZvLmlnbm9yZU1lbWJlcihtX2F1eGlsaWFyeUNvbnRleHQpOwogfQogCi1ib29sIFY4UGVy
SXNvbGF0ZURhdGE6Omhhc1ByaXZhdGVUZW1wbGF0ZShXcmFwcGVyV29ybGRUeXBlLCB2b2lkKiBw
cml2YXRlUG9pbnRlcikKK2Jvb2wgVjhQZXJJc29sYXRlRGF0YTo6aGFzUHJpdmF0ZVRlbXBsYXRl
KFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSwgdm9pZCogcHJpdmF0ZVBvaW50ZXIp
CiB7Ci0gICAgcmV0dXJuIG1fdGVtcGxhdGVzLmZpbmQocHJpdmF0ZVBvaW50ZXIpICE9IG1fdGVt
cGxhdGVzLmVuZCgpOworICAgIGlmIChjdXJyZW50V29ybGRUeXBlID09IE1haW5Xb3JsZCkKKyAg
ICAgICAgcmV0dXJuIG1fdGVtcGxhdGVzRm9yTWFpbldvcmxkLmZpbmQocHJpdmF0ZVBvaW50ZXIp
ICE9IG1fdGVtcGxhdGVzRm9yTWFpbldvcmxkLmVuZCgpOworICAgIHJldHVybiBtX3RlbXBsYXRl
c0Zvck5vbk1haW5Xb3JsZC5maW5kKHByaXZhdGVQb2ludGVyKSAhPSBtX3RlbXBsYXRlc0Zvck5v
bk1haW5Xb3JsZC5lbmQoKTsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IFY4UGVySXNvbGF0ZURhdGE6OnByaXZhdGVUZW1wbGF0ZShXcmFwcGVyV29ybGRUeXBlLCB2
b2lkKiBwcml2YXRlUG9pbnRlciwgdjg6Okludm9jYXRpb25DYWxsYmFjayBjYWxsYmFjaywgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGEsIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gc2lnbmF0
dXJlLCBpbnQgbGVuZ3RoKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
UGVySXNvbGF0ZURhdGE6OnByaXZhdGVUZW1wbGF0ZShXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRX
b3JsZFR5cGUsIHZvaWQqIHByaXZhdGVQb2ludGVyLCB2ODo6SW52b2NhdGlvbkNhbGxiYWNrIGNh
bGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGF0YSwgdjg6OkhhbmRsZTx2ODo6U2lnbmF0
dXJlPiBzaWduYXR1cmUsIGludCBsZW5ndGgpCiB7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpU
ZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gbV90ZW1wbGF0ZXMuZmluZChwcml2YXRlUG9p
bnRlcik7Ci0gICAgaWYgKHJlc3VsdCAhPSBtX3RlbXBsYXRlcy5lbmQoKSkKKyAgICBUZW1wbGF0
ZU1hcCYgdGVtcGxhdGVzID0gdGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSk7CisgICAgVGVt
cGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IHRlbXBsYXRlcy5maW5kKHByaXZhdGVQb2ludGVy
KTsKKyAgICBpZiAocmVzdWx0ICE9IHRlbXBsYXRlcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdC0+dmFsdWU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG5l
d1ByaXZhdGVUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6
TmV3KG1faXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhjYWxsYmFjaywgZGF0YSwg
c2lnbmF0dXJlLCBsZW5ndGgpKTsKLSAgICBtX3RlbXBsYXRlcy5hZGQocHJpdmF0ZVBvaW50ZXIs
IG5ld1ByaXZhdGVUZW1wbGF0ZSk7CisgICAgdGVtcGxhdGVzLmFkZChwcml2YXRlUG9pbnRlciwg
bmV3UHJpdmF0ZVRlbXBsYXRlKTsKICAgICByZXR1cm4gbmV3UHJpdmF0ZVRlbXBsYXRlOwogfQog
Ci12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhQZXJJc29sYXRlRGF0YTo6
cmF3VGVtcGxhdGUoV3JhcHBlclR5cGVJbmZvKiBpbmZvKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IFY4UGVySXNvbGF0ZURhdGE6OnJhd1RlbXBsYXRlKFdyYXBwZXJUeXBl
SW5mbyogaW5mbywgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAgIFRl
bXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBtX3Jhd1RlbXBsYXRlcy5maW5kKGluZm8pOwot
ICAgIGlmIChyZXN1bHQgIT0gbV9yYXdUZW1wbGF0ZXMuZW5kKCkpCisgICAgVGVtcGxhdGVNYXAm
IHRlbXBsYXRlcyA9IHJhd1RlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpOworICAgIFRlbXBs
YXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSB0ZW1wbGF0ZXMuZmluZChpbmZvKTsKKyAgICBpZiAo
cmVzdWx0ICE9IHRlbXBsYXRlcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7
CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUobV9pc29sYXRl
KTsKLSAgICBtX3Jhd1RlbXBsYXRlcy5hZGQoaW5mbywgdGVtcGwpOworICAgIHRlbXBsYXRlcy5h
ZGQoaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFBlcklzb2xh
dGVEYXRhOjpoYXNJbnN0YW5jZShXcmFwcGVyVHlwZUluZm8qIGluZm8sIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSkKK2Jvb2wgVjhQZXJJc29sYXRlRGF0YTo6aGFzSW5zdGFuY2UoV3JhcHBl
clR5cGVJbmZvKiBpbmZvLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIFdyYXBwZXJXb3Js
ZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gcmF3VGVtcGxhdGUoaW5mbykt
Pkhhc0luc3RhbmNlKHZhbHVlKTsKKyAgICBUZW1wbGF0ZU1hcCYgdGVtcGxhdGVzID0gcmF3VGVt
cGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSk7CisgICAgVGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJl
c3VsdCA9IHRlbXBsYXRlcy5maW5kKGluZm8pOworICAgIGlmIChyZXN1bHQgPT0gdGVtcGxhdGVz
LmVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWUt
Pkhhc0luc3RhbmNlKHZhbHVlKTsKIH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmgKaW5kZXggZTc3ZDc1Mjlm
ZGI2Y2Q0MGUyMzQ1ZTBmMjIxMmNmMTBmM2Y0ODk5ZC4uZGZiZmE5NzNkMWRjMGZiYTllOTIxZjYy
ZDhiM2NjM2ZlYjQwOWJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQZXJJc29sYXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVy
SXNvbGF0ZURhdGEuaApAQCAtNjcsOCArNjcsMTkgQEAgcHVibGljOgogCiAgICAgdHlwZWRlZiBI
YXNoTWFwPHZvaWQqLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gPiBUZW1w
bGF0ZU1hcDsKIAotICAgIFRlbXBsYXRlTWFwJiByYXdUZW1wbGF0ZU1hcCgpIHsgcmV0dXJuIG1f
cmF3VGVtcGxhdGVzOyB9Ci0gICAgVGVtcGxhdGVNYXAmIHRlbXBsYXRlTWFwKCkgeyByZXR1cm4g
bV90ZW1wbGF0ZXM7IH0KKyAgICBUZW1wbGF0ZU1hcCYgcmF3VGVtcGxhdGVNYXAoV3JhcHBlcldv
cmxkVHlwZSB3b3JsZFR5cGUpCisgICAgeworICAgICAgICBpZiAod29ybGRUeXBlID09IE1haW5X
b3JsZCkKKyAgICAgICAgICAgIHJldHVybiBtX3Jhd1RlbXBsYXRlc0Zvck1haW5Xb3JsZDsKKyAg
ICAgICAgcmV0dXJuIG1fcmF3VGVtcGxhdGVzRm9yTm9uTWFpbldvcmxkOworICAgIH0KKworICAg
IFRlbXBsYXRlTWFwJiB0ZW1wbGF0ZU1hcChXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKKyAg
ICB7CisgICAgICAgIGlmICh3b3JsZFR5cGUgPT0gTWFpbldvcmxkKQorICAgICAgICAgICAgcmV0
dXJuIG1fdGVtcGxhdGVzRm9yTWFpbldvcmxkOworICAgICAgICByZXR1cm4gbV90ZW1wbGF0ZXNG
b3JOb25NYWluV29ybGQ7CisgICAgfQogCiAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gdG9TdHJpbmdUZW1wbGF0ZSgpOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiYgbGF6eUV2ZW50TGlzdGVuZXJUb1N0cmluZ1RlbXBsYXRlKCkKQEAgLTEzMSw5
ICsxNDIsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQcml2YXRlVGVtcGxhdGUoV3JhcHBlcldv
cmxkVHlwZSwgdm9pZCogcHJpdmF0ZVBvaW50ZXIpOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUoV3JhcHBlcldvcmxkVHlwZSwgdm9pZCog
cHJpdmF0ZVBvaW50ZXIsIHY4OjpJbnZvY2F0aW9uQ2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBkYXRhLCB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+LCBpbnQgbGVuZ3RoID0gMCk7CiAK
LSAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcmF3VGVtcGxhdGUoV3Jh
cHBlclR5cGVJbmZvKik7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHJhd1RlbXBsYXRlKFdyYXBwZXJUeXBlSW5mbyosIFdyYXBwZXJXb3JsZFR5cGUpOwogCi0gICAg
Ym9vbCBoYXNJbnN0YW5jZShXcmFwcGVyVHlwZUluZm8qLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4p
OworICAgIGJvb2wgaGFzSW5zdGFuY2UoV3JhcHBlclR5cGVJbmZvKiwgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+LCBXcmFwcGVyV29ybGRUeXBlKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBWOFBl
cklzb2xhdGVEYXRhKHY4OjpJc29sYXRlKik7CkBAIC0xNDEsOCArMTUyLDEwIEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3Rvck9mVG9TdHJpbmco
Y29uc3Qgdjg6OkFyZ3VtZW50cyYpOwogCiAgICAgdjg6Oklzb2xhdGUqIG1faXNvbGF0ZTsKLSAg
ICBUZW1wbGF0ZU1hcCBtX3Jhd1RlbXBsYXRlczsKLSAgICBUZW1wbGF0ZU1hcCBtX3RlbXBsYXRl
czsKKyAgICBUZW1wbGF0ZU1hcCBtX3Jhd1RlbXBsYXRlc0Zvck1haW5Xb3JsZDsKKyAgICBUZW1w
bGF0ZU1hcCBtX3Jhd1RlbXBsYXRlc0Zvck5vbk1haW5Xb3JsZDsKKyAgICBUZW1wbGF0ZU1hcCBt
X3RlbXBsYXRlc0Zvck1haW5Xb3JsZDsKKyAgICBUZW1wbGF0ZU1hcCBtX3RlbXBsYXRlc0Zvck5v
bk1haW5Xb3JsZDsKICAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBt
X3RvU3RyaW5nVGVtcGxhdGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IG1fbGF6eUV2ZW50TGlzdGVuZXJUb1N0cmluZ1RlbXBsYXRlOwogICAgIE93blB0cjxTdHJp
bmdDYWNoZT4gbV9zdHJpbmdDYWNoZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRp
bGl0aWVzLmNwcAppbmRleCAzZmI4ODA5MTc1MWUwOThlMzc2MThiNDBiMGMzZjliNzZhOTJiYzVi
Li44ZDljOTAxNTUzYWQ2YzMzYWRlOTE1Nzg5ZTUxMTFlYzBjNTkxYTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCkBAIC05MCw3ICs5MCw3IEBAIGJvb2wg
ZXh0cmFjdFRyYW5zZmVyYWJsZXModjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIE1lc3NhZ2VQ
b3J0QXJyYXkmIHBvcnRzLCBBCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICAgICAgLy8gVmFsaWRhdGlvbiBvZiBPYmplY3RzIGltcGxlbWVudGluZyBhbiBpbnRlcmZh
Y2UsIHBlciBXZWJJREwgc3BlYyA0LjEuMTUuCi0gICAgICAgIGlmIChWOE1lc3NhZ2VQb3J0OjpI
YXNJbnN0YW5jZSh0cmFuc2ZlcnJhYmxlLCBpc29sYXRlKSkgeworICAgICAgICBpZiAoVjhNZXNz
YWdlUG9ydDo6SGFzSW5zdGFuY2UodHJhbnNmZXJyYWJsZSwgaXNvbGF0ZSwgd29ybGRUeXBlKGlz
b2xhdGUpKSkgewogICAgICAgICAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0gVjhNZXNz
YWdlUG9ydDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh0cmFuc2ZlcnJh
YmxlKSk7CiAgICAgICAgICAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIE1lc3NhZ2VQb3J0cy4K
ICAgICAgICAgICAgIGlmIChwb3J0cy5jb250YWlucyhwb3J0KSkgewpAQCAtOTgsNyArOTgsNyBA
QCBib29sIGV4dHJhY3RUcmFuc2ZlcmFibGVzKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBN
ZXNzYWdlUG9ydEFycmF5JiBwb3J0cywgQQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHBvcnRzLmFwcGVuZChwb3J0LnJlbGVhc2UoKSk7
Ci0gICAgICAgIH0gZWxzZSBpZiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UodHJhbnNmZXJy
YWJsZSwgaXNvbGF0ZSkpCisgICAgICAgIH0gZWxzZSBpZiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5z
dGFuY2UodHJhbnNmZXJyYWJsZSwgaXNvbGF0ZSwgd29ybGRUeXBlKGlzb2xhdGUpKSkKICAgICAg
ICAgICAgIGFycmF5QnVmZmVycy5hcHBlbmQoVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh0cmFuc2ZlcnJhYmxlKSkpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKDAsIGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0
b20uaAppbmRleCBlYWI2ODRjMjVmOTk3NzAwYjliMDc0ZjJhZWJkNDljYmU5ZTJmNDkyLi5hYzBh
YjU3MDg4ZmFmODJmODk3NmQxZGQ5NGNjMTk2YzBjNmNhOWI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0
b20uaApAQCAtMTM4LDEyICsxMzgsMTIgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVj
dFdlYkdMQXJyYXkoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgV3JhcHBlclR5cGUKICAgICB9
CiAKICAgICAvLyBTZWUgd2hldGhlciB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBBcnJheUJ1ZmZl
ci4KLSAgICBpZiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJ
c29sYXRlKCkpKQorICAgIGlmIChWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBh
cmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpCiAgICAgICBy
ZXR1cm4gY29uc3RydWN0V2ViR0xBcnJheVdpdGhBcnJheUJ1ZmZlckFyZ3VtZW50PEFycmF5Q2xh
c3MsIEVsZW1lbnRUeXBlPihhcmdzLCB0eXBlLCBhcnJheVR5cGUsIHRydWUpOwogCiAgICAgLy8g
U2VlIHdoZXRoZXIgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBzYW1lIHR5cGUgYXMgaW1wbC4g
SW4gdGhhdCBjYXNlLAogICAgIC8vIHdlIGNhbiBzaW1wbHkgbWVtY3B5IGRhdGEgZnJvbSBzb3Vy
Y2UgdG8gaW1wbC4KLSAgICBpZiAoSmF2YVNjcmlwdFdyYXBwZXJBcnJheVR5cGU6Okhhc0luc3Rh
bmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkgeworICAgIGlmIChKYXZhU2NyaXB0V3Jh
cHBlckFycmF5VHlwZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdv
cmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKSB7CiAgICAgICAgIEFycmF5Q2xhc3MqIHNvdXJj
ZSA9IEphdmFTY3JpcHRXcmFwcGVyQXJyYXlUeXBlOjp0b05hdGl2ZShhcmdzWzBdLT5Ub09iamVj
dCgpKTsKICAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gc291cmNlLT5sZW5ndGgoKTsKIApAQCAt
MjM2LDcgKzIzNiw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzZXRXZWJHTEFycmF5SGVscGVy
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKICAgICBDUGx1c1BsdXNBcnJheVR5cGUqIGlt
cGwgPSBKYXZhU2NyaXB0V3JhcHBlckFycmF5VHlwZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
CiAKLSAgICBpZiAoSmF2YVNjcmlwdFdyYXBwZXJBcnJheVR5cGU6Okhhc0luc3RhbmNlKGFyZ3Nb
MF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkgeworICAgIGlmIChKYXZhU2NyaXB0V3JhcHBlckFycmF5
VHlwZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShh
cmdzLkdldElzb2xhdGUoKSkpKSB7CiAgICAgICAgIC8vIHZvaWQgc2V0KGluIFdlYkdMPFQ+QXJy
YXkgYXJyYXksIFtPcHRpb25hbF0gaW4gdW5zaWduZWQgbG9uZyBvZmZzZXQpOwogICAgICAgICBD
UGx1c1BsdXNBcnJheVR5cGUqIHNyYyA9IEphdmFTY3JpcHRXcmFwcGVyQXJyYXlUeXBlOjp0b05h
dGl2ZShhcmdzWzBdLT5Ub09iamVjdCgpKTsKICAgICAgICAgdWludDMyX3Qgb2Zmc2V0ID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQnVm
ZmVyU291cmNlTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0b20uY3BwCmluZGV4IDU0NWNmMmIxZGRiNDMy
MjQ4OGQ3NjQyMmFlNzllZjA1NTlkMjQwMWMuLmFhM2U1ODMxODAwZWY0ZWE2NDIwODBhMzcxMWEx
NWM3N2JhMDU1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEF1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcApAQCAt
NDIsNyArNDIsNyBAQCB2b2lkIFY4QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpidWZmZXJBdHRyU2V0
dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogICAgIEF1ZGlvQnVmZmVyU291
cmNlTm9kZSogaW1wID0gVjhBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnRvTmF0aXZlKGhvbGRlcik7
CiAKICAgICBBdWRpb0J1ZmZlciogYnVmZmVyID0gMDsKLSAgICBpZiAoVjhBdWRpb0J1ZmZlcjo6
SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKSkgeworICAgIGlmIChWOEF1ZGlv
QnVmZmVyOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShp
bmZvLkdldElzb2xhdGUoKSkpKSB7CiAgICAgICAgIGJ1ZmZlciA9IFY4QXVkaW9CdWZmZXI6OnRv
TmF0aXZlKHZhbHVlLT5Ub09iamVjdCgpKTsKICAgICAgICAgaWYgKGJ1ZmZlciAmJiAhaW1wLT5z
ZXRCdWZmZXIoYnVmZmVyKSkgewogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoIkF1ZGlvQnVm
ZmVyIHVuc3VwcG9ydGVkIG51bWJlciBvZiBjaGFubmVscyIsIGluZm8uR2V0SXNvbGF0ZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJsb2JDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5j
cHAKaW5kZXggMTdmOGIyMmVkYzc2OWE3YjJhYTRkZmY0OTg2YTYyYjI1NGJkNzZhNi4uNzNjYjZj
NjcyNjRiODcyZDA3MmNhNGU0YTE0MDIwM2NhNGI2YzIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAKQEAgLTk3LDE3ICs5Nywx
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhCbG9iOjpjb25zdHJ1Y3RvckN1c3RvbShjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBpdGVt
ID0gYmxvYlBhcnRzLT5HZXQodjg6OlVpbnQzMjo6TmV3KGkpKTsKICAgICAgICAgQVNTRVJUKCFp
dGVtLklzRW1wdHkoKSk7CiAjaWYgRU5BQkxFKEJMT0IpCi0gICAgICAgIGlmIChWOEFycmF5QnVm
ZmVyOjpIYXNJbnN0YW5jZShpdGVtLCBhcmdzLkdldElzb2xhdGUoKSkpIHsKKyAgICAgICAgaWYg
KFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKGl0ZW0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3Js
ZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkgewogICAgICAgICAgICAgQXJyYXlCdWZmZXIqIGFy
cmF5QnVmZmVyID0gVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChpdGVtKSk7CiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlCdWZmZXIpOwogICAgICAg
ICAgICAgYmxvYkJ1aWxkZXIuYXBwZW5kKGNvbnRleHQsIGFycmF5QnVmZmVyKTsKLSAgICAgICAg
fSBlbHNlIGlmIChWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UoaXRlbSwgYXJncy5HZXRJ
c29sYXRlKCkpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0lu
c3RhbmNlKGl0ZW0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRl
KCkpKSkgewogICAgICAgICAgICAgQXJyYXlCdWZmZXJWaWV3KiBhcnJheUJ1ZmZlclZpZXcgPSBW
OEFycmF5QnVmZmVyVmlldzo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChp
dGVtKSk7CiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlCdWZmZXJWaWV3KTsKICAgICAgICAgICAg
IGJsb2JCdWlsZGVyLmFwcGVuZChhcnJheUJ1ZmZlclZpZXcpOwogICAgICAgICB9IGVsc2UKICNl
bmRpZgotICAgICAgICBpZiAoVjhCbG9iOjpIYXNJbnN0YW5jZShpdGVtLCBhcmdzLkdldElzb2xh
dGUoKSkpIHsKKyAgICAgICAgaWYgKFY4QmxvYjo6SGFzSW5zdGFuY2UoaXRlbSwgYXJncy5HZXRJ
c29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKSB7CiAgICAgICAgICAgICBC
bG9iKiBibG9iID0gVjhCbG9iOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KGl0ZW0pKTsKICAgICAgICAgICAgIEFTU0VSVChibG9iKTsKICAgICAgICAgICAgIGJsb2JCdWls
ZGVyLmFwcGVuZChibG9iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20u
Y3BwCmluZGV4IDVjZGExM2E2MDM4ZmNlMzNjYzc0ZTA2MDdjYzIxZjhhY2IyMDQyODUuLjU0NTM4
MzY4MWMyMTE4ZmIyMzU3ZTZjM2Y2NTU4MjE2NTQ5ODBkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcApAQCAtNjEsMTAgKzYxLDEwIEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOE9iamVjdChDYW52YXNTdHlsZSogc3R5bGUsIHY4OjpIYW5k
bGU8djg6Ok9iamVjCiAKIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiB0b0NhbnZhc1N0
eWxlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7
Ci0gICAgaWYgKFY4Q2FudmFzR3JhZGllbnQ6Okhhc0luc3RhbmNlKHZhbHVlLCBpc29sYXRlKSkK
KyAgICBpZiAoVjhDYW52YXNHcmFkaWVudDo6SGFzSW5zdGFuY2UodmFsdWUsIGlzb2xhdGUsIHdv
cmxkVHlwZShpc29sYXRlKSkpCiAgICAgICAgIHJldHVybiBDYW52YXNTdHlsZTo6Y3JlYXRlRnJv
bUdyYWRpZW50KFY4Q2FudmFzR3JhZGllbnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QodmFsdWUpKSk7CiAKLSAgICBpZiAoVjhDYW52YXNQYXR0ZXJuOjpIYXNJbnN0YW5j
ZSh2YWx1ZSwgaXNvbGF0ZSkpCisgICAgaWYgKFY4Q2FudmFzUGF0dGVybjo6SGFzSW5zdGFuY2Uo
dmFsdWUsIGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSkpCiAgICAgICAgIHJldHVybiBDYW52
YXNTdHlsZTo6Y3JlYXRlRnJvbVBhdHRlcm4oVjhDYW52YXNQYXR0ZXJuOjp0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkpOwogCiAgICAgcmV0dXJuIDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3Vz
dG9tLmNwcAppbmRleCA4MTUwYWMxMjRkOTM0MjEzNTg1YTI4ZGY3YTUyODZjZWRkNGQwNzk3Li42
MjcxZDk1ODg2NmZjMTg5YmUyNDQzMDIxYmJmZTlhMmNkZGE2OTFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAK
QEAgLTkxLDcgKzkxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJkOjpzZXRE
cmFnSW1hZ2VNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICBpbnQgeSA9IHRv
SW50MzIoYXJnc1syXSk7CiAKICAgICBOb2RlKiBub2RlID0gMDsKLSAgICBpZiAoVjhOb2RlOjpI
YXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpCisgICAgaWYgKFY4Tm9kZTo6
SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdl
dElzb2xhdGUoKSkpKQogICAgICAgICBub2RlID0gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKTsKIAogICAgIGlmICghbm9kZSB8fCAhbm9kZS0+
aXNFbGVtZW50Tm9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3J5cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOENyeXB0b0N1c3RvbS5jcHAKaW5kZXggNmFjM2VmZTYxY2EzMjczYmQ4ODZjYjNmNWNj
YTdmMGI4ZWM4MWQzNS4uNjJhMmU1MDlmMjkwODZlOGUzOGI0NGI4ZTlhMzRjYTc0OWRjMDEwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3J5cHRvQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDcnlwdG9D
dXN0b20uY3BwCkBAIC00MSw3ICs0MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENyeXB0
bzo6Z2V0UmFuZG9tVmFsdWVzTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAg
ICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBidWZmZXIgPSBhcmdzWzBdOwotICAgIGlm
ICghVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKGJ1ZmZlciwgYXJncy5HZXRJc29sYXRl
KCkpKQorICAgIGlmICghVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKGJ1ZmZlciwgYXJn
cy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhbiBBcnJheUJ1ZmZl
clZpZXciLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICBBcnJheUJ1ZmZlclZpZXcqIGFycmF5
QnVmZmVyVmlldyA9IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KGJ1ZmZlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCmluZGV4IGI3ZDNjNWJmYmFi
ZmE2NGVmYTljMzE2Nzc5ZWQ3NzQxZWQzYmQwY2YuLjk5ZTkwMmQ4OThiNGQ0OWFlZTAwNWZiYjI0
M2NmZjdmMjFlZjExYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NRm9ybURhdGE6OmNv
bnN0cnVjdG9yQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSFRNTEZv
cm1FbGVtZW50KiBmb3JtID0gMDsKLSAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDAgJiYgVjhIVE1M
Rm9ybUVsZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAg
ICBpZiAoYXJncy5MZW5ndGgoKSA+IDAgJiYgVjhIVE1MRm9ybUVsZW1lbnQ6Okhhc0luc3RhbmNl
KGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkp
KSkKICAgICAgICAgZm9ybSA9IFY4SFRNTEZvcm1FbGVtZW50Ojp0b05hdGl2ZShhcmdzWzBdLT5U
b09iamVjdCgpKTsKICAgICBSZWZQdHI8RE9NRm9ybURhdGE+IGRvbUZvcm1EYXRhID0gRE9NRm9y
bURhdGE6OmNyZWF0ZShmb3JtKTsKIApAQCAtNjEsNyArNjEsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhET01Gb3JtRGF0YTo6YXBwZW5kTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZwogICAgIFN0cmluZyBuYW1lID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayhh
cmdzWzBdKTsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmcgPSBhcmdzWzFdOwotICAg
IGlmIChWOEJsb2I6Okhhc0luc3RhbmNlKGFyZywgYXJncy5HZXRJc29sYXRlKCkpKSB7CisgICAg
aWYgKFY4QmxvYjo6SGFzSW5zdGFuY2UoYXJnLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBl
KGFyZ3MuR2V0SXNvbGF0ZSgpKSkpIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBv
YmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZyk7CiAgICAgICAgIEJsb2Iq
IGJsb2IgPSBWOEJsb2I6OnRvTmF0aXZlKG9iamVjdCk7CiAgICAgICAgIEFTU0VSVChibG9iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3
Q3VzdG9tLmNwcAppbmRleCAzNTQzYWQ3NjI5OGY0MjdhZDI1YTYwNDgwOTNjMTYxODI0N2NmYzJj
Li40ZDA5MTkxZjAyY2I3MWJjNTg0MzM2Nzk0NTE0YmVkMDVlMDE0YjBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3Bw
CkBAIC00Miw3ICs0Miw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3Ojpjb25z
dHJ1Y3RvckN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgICAgICBWOERPTVdy
YXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGRhdGFWaWV3LnJlbGVhc2UoKSwgJmlu
Zm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVw
ZW5kZW50KTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQotICAgIGlmIChhcmdzWzBd
LT5Jc051bGwoKSB8fCAhVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5H
ZXRJc29sYXRlKCkpKQorICAgIGlmIChhcmdzWzBdLT5Jc051bGwoKSB8fCAhVjhBcnJheUJ1ZmZl
cjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdz
LkdldElzb2xhdGUoKSkpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5H
ZXRJc29sYXRlKCkpOwogICAgIHJldHVybiBjb25zdHJ1Y3RXZWJHTEFycmF5V2l0aEFycmF5QnVm
ZmVyQXJndW1lbnQ8RGF0YVZpZXcsIGNoYXI+KGFyZ3MsICZpbmZvLCB2ODo6a0V4dGVybmFsQnl0
ZUFycmF5LCBmYWxzZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggM2Q3MWVhNjgxMzg3NDBiMzM5NDU5
MTdkYmEwMGRmNzI3MzJkZDlhNS4uMDY5MDA2ZTI0YTAyMjYyYjY0ZGM5NTJkZjk5Njc1NTZkM2E3
YmJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9j
dW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERvY3VtZW50Q3VzdG9tLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhEb2N1bWVudDo6ZXZhbHVhdGVNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFN0cmluZyBleHByZXNzaW9uID0g
dG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwogICAgIFJlZlB0cjxOb2RlPiBjb250ZXh0Tm9kZTsK
LSAgICBpZiAoVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzFdLCBhcmdzLkdldElzb2xhdGUoKSkp
CisgICAgaWYgKFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1sxXSwgYXJncy5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKQogICAgICAgICBjb250ZXh0Tm9kZSA9IFY4
Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKSk7CiAK
ICAgICBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiByZXNvbHZlciA9IHRvWFBhdGhOU1Jlc29sdmVy
KGFyZ3NbMl0sIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTc5LDcgKzc5LDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4RG9jdW1lbnQ6OmV2YWx1YXRlTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MKIAogICAgIGludCB0eXBlID0gdG9JbnQzMihhcmdzWzNdKTsKICAgICBS
ZWZQdHI8WFBhdGhSZXN1bHQ+IGluUmVzdWx0OwotICAgIGlmIChWOFhQYXRoUmVzdWx0OjpIYXNJ
bnN0YW5jZShhcmdzWzRdLCBhcmdzLkdldElzb2xhdGUoKSkpCisgICAgaWYgKFY4WFBhdGhSZXN1
bHQ6Okhhc0luc3RhbmNlKGFyZ3NbNF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJn
cy5HZXRJc29sYXRlKCkpKSkKICAgICAgICAgaW5SZXN1bHQgPSBWOFhQYXRoUmVzdWx0Ojp0b05h
dGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbNF0pKTsKIAogICAgIFY4VFJZ
Q0FUQ0goUmVmUHRyPFhQYXRoUmVzdWx0PiwgcmVzdWx0LCBkb2N1bWVudC0+ZXZhbHVhdGUoZXhw
cmVzc2lvbiwgY29udGV4dE5vZGUuZ2V0KCksIHJlc29sdmVyLmdldCgpLCB0eXBlLCBpblJlc3Vs
dC5nZXQoKSwgZWMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggZDkzYWUzOWEy
ZmU3N2RjZGM1MGY5NDBmZDkwZGNmODFlN2RkNDBmNC4uYWE5N2UwZTcwZmYzNDVmM2I3NzRjNTBm
YzY0MzQ0ZDRkNDk5ZmVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAgdm9pZCBWOEhUTUxNZWRpYUVsZW1lbnQ6OmNvbnRyb2xsZXJBdHRyU2V0dGVyQ3Vz
dG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogewogICAgIEhUTUxNZWRpYUVsZW1lbnQq
IGltcCA9IFY4SFRNTE1lZGlhRWxlbWVudDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAg
TWVkaWFDb250cm9sbGVyKiBjb250cm9sbGVyID0gMDsKLSAgICBpZiAoVjhNZWRpYUNvbnRyb2xs
ZXI6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSkpCisgICAgaWYgKFY4TWVk
aWFDb250cm9sbGVyOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxk
VHlwZShpbmZvLkdldElzb2xhdGUoKSkpKQogICAgICAgICBjb250cm9sbGVyID0gVjhNZWRpYUNv
bnRyb2xsZXI6OnRvTmF0aXZlKHZhbHVlLT5Ub09iamVjdCgpKTsKICAgICAKICAgICBpZiAoIWNv
bnRyb2xsZXIpIHsKQEAgLTU1LDQgKzU1LDMgQEAgdm9pZCBWOEhUTUxNZWRpYUVsZW1lbnQ6OmNv
bnRyb2xsZXJBdHRyU2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogfQog
CiAjZW5kaWYKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggNTZi
NzA2NTdmNDQwM2FmZjk4NTA5MDBjMzE4MmZjNTVjZWRkN2E4Mi4uMzZlZGU1NWMzZmNjMWI0ZjZi
YzQ0MGE4YmIxMDZjNzc3MWQ5ODdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0
b20uY3BwCkBAIC05MSw3ICs5MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRp
b25zQ29sbGVjdGlvbjo6cmVtb3ZlTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1CiAKIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6YWRkTWV0aG9kQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgaWYgKCFWOEhUTUxPcHRpb25FbGVt
ZW50OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpCisgICAgaWYgKCFW
OEhUTUxPcHRpb25FbGVtZW50OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUo
KSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpCiAgICAgICAgIHJldHVybiBzZXRET01F
eGNlcHRpb24oVFlQRV9NSVNNQVRDSF9FUlIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBIVE1M
T3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKICAgICBIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9uID0gVjhIVE1M
T3B0aW9uRWxlbWVudDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pih2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5j
cHAKaW5kZXggMTBiMjNjNDZkZTA1NjZiZDQxOTM3YzNhZWVlODczZWExMzkyZjkzYS4uMzY2Zjc4
OGNmMjFlNTkyMzg2MDAxZjEzMmYyMjUwYjY3MGY4OGQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50
Q3VzdG9tLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1M
U2VsZWN0RWxlbWVudDo6cmVtb3ZlTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudAogCiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVtb3ZlRWxlbWVudChIVE1MU2VsZWN0RWxlbWVudCogaW1w
LCBjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKSAKIHsKLSAgICBpZiAoVjhIVE1MT3B0aW9uRWxl
bWVudDo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpKSB7CisgICAgaWYg
KFY4SFRNTE9wdGlvbkVsZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0
ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkgewogICAgICAgICBIVE1MT3B0aW9u
RWxlbWVudCogZWxlbWVudCA9IFY4SFRNTE9wdGlvbkVsZW1lbnQ6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpOwogICAgICAgICBpbXAtPnJlbW92ZShlbGVt
ZW50LT5pbmRleCgpKTsKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9z
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3Rl
ZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IGU2MzY5OGYyNTk3OTE2YjM2MDdmMGIwNGExZmRm
ZTNkYjNkYmMyZTUuLjk1NmQ1NmFlMzdiOWZiMGM1MjVjZTgzZTdkZGM0YjE2ZmE4ZGY0NzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2Ny
aXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aXNIVE1MQWxsQ29sbGVjdGlv
bk1ldGhvZEN1c3RvbShjb25zCiAgICAgICAgIHJldHVybiB2OEJvb2xlYW4oZmFsc2UsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICBy
ZXR1cm4gdjg6OkJvb2xlYW46Ok5ldyhWOEhUTUxBbGxDb2xsZWN0aW9uOjpIYXNJbnN0YW5jZShh
cmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpOworICAgIHJldHVybiB2ODo6Qm9vbGVhbjo6TmV3
KFY4SFRNTEFsbENvbGxlY3Rpb246Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0
ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSk7CiB9CiAKIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6dHlwZU1ldGhvZEN1c3RvbShjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQpAQCAtMTMzLDE5ICsxMzMsMjAgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojp0eXBlTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1
bWVudHMKICAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZGF0ZSIpOwogICAg
IGlmICh2YWx1ZS0+SXNSZWdFeHAoKSkKICAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ld1N5
bWJvbCgicmVnZXhwIik7Ci0gICAgaWYgKFY4Tm9kZTo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKSkKKyAgICBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUgPSB3
b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpOworICAgIGlmIChWOE5vZGU6Okhhc0luc3RhbmNl
KHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlwZSkpCiAgICAgICAgIHJl
dHVybiB2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm5vZGUiKTsKLSAgICBpZiAoVjhOb2RlTGlzdDo6
SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICBpZiAoVjhOb2RlTGlz
dDo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBl
KSkKICAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiYXJyYXkiKTsKLSAgICBp
ZiAoVjhIVE1MQ29sbGVjdGlvbjo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgp
KSkKKyAgICBpZiAoVjhIVE1MQ29sbGVjdGlvbjo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0
SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSkKICAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgiYXJyYXkiKTsKLSAgICBpZiAoVjhJbnQ4QXJyYXk6Okhhc0luc3RhbmNlKHZh
bHVlLCBhcmdzLkdldElzb2xhdGUoKSkgfHwgVjhJbnQxNkFycmF5OjpIYXNJbnN0YW5jZSh2YWx1
ZSwgYXJncy5HZXRJc29sYXRlKCkpIHx8IFY4SW50MzJBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUs
IGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICBpZiAoVjhJbnQ4QXJyYXk6Okhhc0luc3RhbmNlKHZh
bHVlLCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlwZSkgfHwgVjhJbnQxNkFycmF5
OjpIYXNJbnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUp
IHx8IFY4SW50MzJBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBj
dXJyZW50V29ybGRUeXBlKSkKICAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgi
YXJyYXkiKTsKLSAgICBpZiAoVjhVaW50OEFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwgYXJncy5H
ZXRJc29sYXRlKCkpIHx8IFY4VWludDE2QXJyYXk6Okhhc0luc3RhbmNlKHZhbHVlLCBhcmdzLkdl
dElzb2xhdGUoKSkgfHwgVjhVaW50MzJBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0
SXNvbGF0ZSgpKSkKKyAgICBpZiAoVjhVaW50OEFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwgYXJn
cy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpIHx8IFY4VWludDE2QXJyYXk6Okhhc0lu
c3RhbmNlKHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlwZSkgfHwgVjhV
aW50MzJBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBjdXJyZW50
V29ybGRUeXBlKSkKICAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiYXJyYXki
KTsKLSAgICBpZiAoVjhGbG9hdDMyQXJyYXk6Okhhc0luc3RhbmNlKHZhbHVlLCBhcmdzLkdldElz
b2xhdGUoKSkgfHwgVjhGbG9hdDY0QXJyYXk6Okhhc0luc3RhbmNlKHZhbHVlLCBhcmdzLkdldElz
b2xhdGUoKSkpCisgICAgaWYgKFY4RmxvYXQzMkFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwgYXJn
cy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpIHx8IFY4RmxvYXQ2NEFycmF5OjpIYXNJ
bnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpKQogICAg
ICAgICByZXR1cm4gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJhcnJheSIpOwotICAgIGlmIChWOFVp
bnQ4Q2xhbXBlZEFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCkpKQor
ICAgIGlmIChWOFVpbnQ4Q2xhbXBlZEFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJ
c29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpKQogICAgICAgICByZXR1cm4gdjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJhcnJheSIpOwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CkBAIC0y
NDMsNyArMjQ0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0
OjpnZXRFdmVudExpc3RlbmVyc01ldGhvZEN1c3RvbShjb25zdAogICAgIHY4OjpIYW5kbGVTY29w
ZSBoYW5kbGVTY29wZTsKIAogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlID0gYXJnc1sw
XTsKLSAgICBpZiAoIVY4Tm9kZTo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgp
KSkKKyAgICBpZiAoIVY4Tm9kZTo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgp
LCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKICAgICBOb2RlKiBub2RlID0gVjhOb2RlOjp0b05hdGl2ZSh2YWx1ZS0+VG9PYmpl
Y3QoKSk7CiAgICAgaWYgKCFub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDFlZmQ4NWFjOGY1YWZkNWVh
YzA0OWYyZjBiODFjNjRiNThlZGViMzEuLmNmZWQ3MmM2ZDIwMzkxODUyNjMzNjI3YTlkYjA1ZDQ5
NzdhOTkxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OExvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwcml2YXRlVGVtcGxhdGVVbmlxdWVL
ZXkgPSAicmVsb2FkUHJpdmF0ZVRlbXBsYXRlIjsKICAgICBXcmFwcGVyV29ybGRUeXBlIGN1cnJl
bnRXb3JsZFR5cGUgPSB3b3JsZFR5cGUoaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSog
ZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRlKCkpOwotICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSBkYXRh
LT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZhdGVUZW1wbGF0ZVVuaXF1
ZUtleSwgVjhMb2NhdGlvbjo6cmVsb2FkTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6
U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxhdGUoJlY4TG9jYXRpb246OmluZm8pKSk7Cisg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9
IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmcHJpdmF0ZVRlbXBsYXRl
VW5pcXVlS2V5LCBWOExvY2F0aW9uOjpyZWxvYWRNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCks
IHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbywg
Y3VycmVudFdvcmxkVHlwZSkpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVy
ID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6
R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpOwogICAgIGlmIChob2xkZXIu
SXNFbXB0eSgpKSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
TG9jYXRpb246OnJlbG9hZEF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4K
ICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBp
ZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0
ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpKSB7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSA9ICJy
ZWxvYWRTaGFyZWRUZW1wbGF0ZSI7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50
V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246OnJlbG9hZE1l
dGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJhd1Rl
bXBsYXRlKCZWOExvY2F0aW9uOjppbmZvKSkpOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSBkYXRhLT5wcml2YXRlVGVtcGxhdGUo
Y3VycmVudFdvcmxkVHlwZSwgJnNoYXJlZFRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjpy
ZWxvYWRNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRh
LT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkpKTsKICAg
ICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KICAgICBy
ZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpAQCAtMTY3LDcgKzE2Nyw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZXBsYWNlQXR0ckdldHRlckN1c3Rv
bSh2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICBzdGF0aWMgY29uc3QgY2hhciogcHJpdmF0ZVRl
bXBsYXRlVW5pcXVlS2V5ID0gInJlcGxhY2VQcml2YXRlVGVtcGxhdGUiOwogICAgIFdyYXBwZXJX
b3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSA9IHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSk7
CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5m
by5HZXRJc29sYXRlKCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBwcml2YXRlVGVtcGxhdGUgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5wcml2
YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSwg
VjhMb2NhdGlvbjo6cmVwbGFjZU1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25h
dHVyZTo6TmV3KGRhdGEtPnJhd1RlbXBsYXRlKCZWOExvY2F0aW9uOjppbmZvKSkpOworICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxk
VHlwZSwgJnByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6cmVwbGFjZU1ldGhv
ZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJhd1RlbXBs
YXRlKCZWOExvY2F0aW9uOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSkpOwogCiAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90
b3R5cGVDaGFpbihWOExvY2F0aW9uOjpHZXRUZW1wbGF0ZShpc29sYXRlLCBjdXJyZW50V29ybGRU
eXBlKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKQEAgLTE3OCw3ICsxNzgsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUF0dHJHZXR0ZXJDdXN0b20o
djg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRv
TmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9GcmFtZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUoKSwgRG9Ob3RS
ZXBvcnRTZWN1cml0eUVycm9yKSkgewogICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhcmVk
VGVtcGxhdGVVbmlxdWVLZXkgPSAicmVwbGFjZVNoYXJlZFRlbXBsYXRlIjsKLSAgICAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnByaXZhdGVUZW1wbGF0ZShjdXJy
ZW50V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246OnJlcGxh
Y2VNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5y
YXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbykpKTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBl
LCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246OnJlcGxhY2VNZXRob2RDdXN0
b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgm
VjhMb2NhdGlvbjo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkpKTsKICAgICAgICAgcmV0dXJuIHNo
YXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KICAgICByZXR1cm4gcHJpdmF0ZVRl
bXBsYXRlLT5HZXRGdW5jdGlvbigpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOExvY2F0aW9uOjphc3NpZ25BdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtl
eSA9ICJhc3NpZ25Qcml2YXRlVGVtcGxhdGUiOwogICAgIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVu
dFdvcmxkVHlwZSA9IHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSk7CiAgICAgVjhQZXJJc29s
YXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRlKCkp
OwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxh
dGUgPSBkYXRhLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZhdGVUZW1w
bGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6YXNzaWduTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5l
ZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxhdGUoJlY4TG9jYXRpb246Omlu
Zm8pKSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVU
ZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmcHJpdmF0
ZVRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20sIHY4VW5k
ZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlv
bjo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhM
b2NhdGlvbjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpOwogICAgIGlm
IChob2xkZXIuSXNFbXB0eSgpKSB7CkBAIC0yMDIsNyArMjAyLDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4TG9jYXRpb246OmFzc2lnbkF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG4KICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVy
KTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJp
bmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5
RXJyb3IpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFyZWRUZW1wbGF0ZVVuaXF1
ZUtleSA9ICJhc3NpZ25TaGFyZWRUZW1wbGF0ZSI7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0
ZShjdXJyZW50V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246
OmFzc2lnbk1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRh
dGEtPnJhd1RlbXBsYXRlKCZWOExvY2F0aW9uOjppbmZvKSkpOworICAgICAgICB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSBkYXRhLT5wcml2YXRl
VGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnNoYXJlZFRlbXBsYXRlVW5pcXVlS2V5LCBWOExv
Y2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6
Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbywgY3VycmVudFdvcmxkVHlw
ZSkpKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAg
IH0KICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAppbmRleCBh
ZWM2YWRiMjM2MmRlMDVkMGFiYWU3MmRmOGExNjlkNzUxOGZiMTlkLi5kMzE4MGZhYTNlM2Q3MWU5
NDI4MjZiMjFkN2NjMzliZGQ3YWQ4ZmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcApAQCAtNjYsOCArNjYsOCBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjppbnNlcnRCZWZvcmVNZXRob2RDdXN0b20oY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJn
cy5Ib2xkZXIoKTsKICAgICBOb2RlKiBpbXAgPSBWOE5vZGU6OnRvTmF0aXZlKGhvbGRlcik7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTm9kZSogbmV3Q2hpbGQgPSBWOE5vZGU6Okhh
c0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4Tm9kZTo6dG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwOwotICAgIE5vZGUqIHJl
ZkNoaWxkID0gVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzFdLCBhcmdzLkdldElzb2xhdGUoKSkg
PyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1sxXSkp
IDogMDsKKyAgICBOb2RlKiBuZXdDaGlsZCA9IFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwg
YXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhOb2Rl
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDA7Cisg
ICAgTm9kZSogcmVmQ2hpbGQgPSBWOE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbMV0sIGFyZ3MuR2V0
SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4Tm9kZTo6dG9OYXRp
dmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKSkgOiAwOwogICAgIGJvb2wg
c3VjY2VzcyA9IGltcC0+aW5zZXJ0QmVmb3JlKG5ld0NoaWxkLCByZWZDaGlsZCwgZWMsIEF0dGFj
aExhemlseSk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVj
LCBhcmdzLkdldElzb2xhdGUoKSk7CkBAIC04Miw4ICs4Miw4IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOE5vZGU6OnJlcGxhY2VDaGlsZE1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigp
OwogICAgIE5vZGUqIGltcCA9IFY4Tm9kZTo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBOb2RlKiBuZXdDaGlsZCA9IFY4Tm9kZTo6SGFzSW5zdGFuY2Uo
YXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDA7Ci0gICAgTm9kZSogb2xkQ2hpbGQgPSBW
OE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbMV0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4Tm9kZTo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKSkgOiAwOworICAg
IE5vZGUqIG5ld0NoaWxkID0gVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElz
b2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOE5vZGU6OnRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKKyAgICBOb2RlKiBv
bGRDaGlsZCA9IFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1sxXSwgYXJncy5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMV0pKSA6IDA7CiAgICAgYm9vbCBzdWNjZXNzID0g
aW1wLT5yZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkLCBlYywgQXR0YWNoTGF6aWx5KTsK
ICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKQEAgLTk3LDcgKzk3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9k
ZTo6cmVtb3ZlQ2hpbGRNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9sZGVyKCk7CiAgICAgTm9k
ZSogaW1wID0gVjhOb2RlOjp0b05hdGl2ZShob2xkZXIpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIE5vZGUqIG9sZENoaWxkID0gVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBh
cmdzLkdldElzb2xhdGUoKSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QoYXJnc1swXSkpIDogMDsKKyAgICBOb2RlKiBvbGRDaGlsZCA9IFY4Tm9kZTo6SGFz
SW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElz
b2xhdGUoKSkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KGFyZ3NbMF0pKSA6IDA7CiAgICAgYm9vbCBzdWNjZXNzID0gaW1wLT5yZW1vdmVDaGlsZChvbGRD
aGlsZCwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihl
YywgYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMTEyLDcgKzExMiw3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOE5vZGU6OmFwcGVuZENoaWxkTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRl
cigpOwogICAgIE5vZGUqIGltcCA9IFY4Tm9kZTo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBOb2RlKiBuZXdDaGlsZCA9IFY4Tm9kZTo6SGFzSW5zdGFu
Y2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDA7CisgICAgTm9kZSogbmV3Q2hpbGQg
PSBWOE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5
cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwOwogICAgIGJvb2wgc3VjY2VzcyA9IGltcC0+YXBw
ZW5kQ2hpbGQobmV3Q2hpbGQsIGVjLCBBdHRhY2hMYXppbHkpOwogICAgIGlmIChlYykKICAgICAg
ICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20u
Y3BwCmluZGV4IDkwNGFiMzExNzY2YjVkMTQxN2I5NWE4MTUzMzljNGNiZDU4ODViMWMuLmJlNjU4
NTZmNDEzZmNmZjhmZDhhZjU0NGZiMjFiZWU2MWViZTkyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAKQEAgLTYx
LDcgKzYxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZUxpc3Q6Om5hbWVkUHJvcGVy
dHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUKIAogdm9pZCogVjhOb2RlTGlzdDo6
b3BhcXVlUm9vdEZvckdDKHZvaWQqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
d3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgQVNTRVJUKFY4Tm9kZUxpc3Q6
Okhhc0luc3RhbmNlKHdyYXBwZXIsIGlzb2xhdGUpKTsKKyAgICBBU1NFUlQoVjhOb2RlTGlzdDo6
SGFzSW5zdGFuY2VJbkFueVdvcmxkKHdyYXBwZXIsIGlzb2xhdGUpKTsKICAgICBOb2RlTGlzdCog
aW1wbCA9IHN0YXRpY19jYXN0PE5vZGVMaXN0Kj4ob2JqZWN0KTsKICAgICBpZiAoIWltcGwtPmlz
TGl2ZU5vZGVMaXN0KCkpCiAgICAgICAgIHJldHVybiBvYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCBkYjQ5OTM5MDQwM2Q1ZTU3NzdhZTU1Y2E1YmIxZjQ2
NDY5MzJhZjhmLi4xMjQ3OWMwZGI0ODIwZTRhOGY1MWJlNjBiMmY1MDRhY2M2YjZkOTA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmlu
Z0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTI3NCw3ICsyNzQsNyBAQCBz
dGF0aWMgV2ViR0xVbmlmb3JtTG9jYXRpb24qIHRvV2ViR0xVbmlmb3JtTG9jYXRpb24odjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlLAogewogICAgIG9rID0gZmFsc2U7CiAgICAgV2ViR0xVbmlm
b3JtTG9jYXRpb24qIGxvY2F0aW9uID0gMDsKLSAgICBpZiAoVjhXZWJHTFVuaWZvcm1Mb2NhdGlv
bjo6SGFzSW5zdGFuY2UodmFsdWUsIGlzb2xhdGUpKSB7CisgICAgaWYgKFY4V2ViR0xVbmlmb3Jt
TG9jYXRpb246Okhhc0luc3RhbmNlKHZhbHVlLCBpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkp
KSB7CiAgICAgICAgIGxvY2F0aW9uID0gVjhXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6dG9OYXRpdmUo
dmFsdWUtPlRvT2JqZWN0KCkpOwogICAgICAgICBvayA9IHRydWU7CiAgICAgfQpAQCAtMjkyLDkg
KzI5Miw5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0QXR0YWNoZWRTaGFkZXJzTWV0aG9kQ3VzdG9tKGNvCiAKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBWOFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPiAwICYmICFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzBdKSAmJiAhVjhXZWJHTFByb2dyYW06
Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICBpZiAoYXJncy5M
ZW5ndGgoKSA+IDAgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMF0pICYmICFWOFdlYkdMUHJv
Z3JhbTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShh
cmdzLkdldElzb2xhdGUoKSkpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJn
cy5HZXRJc29sYXRlKCkpOwotICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IFY4V2ViR0xQcm9n
cmFtOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOFdlYkdMUHJv
Z3JhbTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAw
OworICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IFY4V2ViR0xQcm9ncmFtOjpIYXNJbnN0YW5j
ZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgp
KSkgPyBWOFdlYkdMUHJvZ3JhbTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dChhcmdzWzBdKSkgOiAwOwogICAgIFZlY3RvcjxSZWZQdHI8V2ViR0xTaGFkZXI+ID4gc2hhZGVy
czsKICAgICBib29sIHN1Y2NlZWQgPSBjb250ZXh0LT5nZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3Jh
bSwgc2hhZGVycywgZWMpOwogICAgIGlmIChlYykgewpAQCAtMzYxLDkgKzM2MSw5IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFt
ZXRlck1ldGhvZEN1c3RvbShjCiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBXZWJH
TFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dG9O
YXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAwICYmICFpc1Vu
ZGVmaW5lZE9yTnVsbChhcmdzWzBdKSAmJiAhVjhXZWJHTFByb2dyYW06Okhhc0luc3RhbmNlKGFy
Z3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDAgJiYg
IWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMF0pICYmICFWOFdlYkdMUHJvZ3JhbTo6SGFzSW5zdGFu
Y2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUo
KSkpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRlKCkp
OwotICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IFY4V2ViR0xQcm9ncmFtOjpIYXNJbnN0YW5j
ZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOFdlYkdMUHJvZ3JhbTo6dG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwOworICAgIFdlYkdMUHJv
Z3JhbSogcHJvZ3JhbSA9IFY4V2ViR0xQcm9ncmFtOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdz
LkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOFdlYkdMUHJv
Z3JhbTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAw
OwogICAgIHVuc2lnbmVkIHBuYW1lID0gdG9JbnQzMihhcmdzWzFdKTsKICAgICBXZWJHTEdldElu
Zm8gaW5mbyA9IGNvbnRleHQtPmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgcG5hbWUsIGVj
KTsKICAgICBpZiAoZWMpCkBAIC0zODMsOSArMzgzLDkgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJQYXJhbWV0ZXJNZXRob2RDdXN0b20o
Y28KIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4
dCogY29udGV4dCA9IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKTsKLSAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDAgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFy
Z3NbMF0pICYmICFWOFdlYkdMU2hhZGVyOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElz
b2xhdGUoKSkpCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAwICYmICFpc1VuZGVmaW5lZE9yTnVs
bChhcmdzWzBdKSAmJiAhVjhXZWJHTFNoYWRlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5H
ZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKQogICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRlKCkpOwotICAgIFdlYkdMU2hhZGVy
KiBzaGFkZXIgPSBWOFdlYkdMU2hhZGVyOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElz
b2xhdGUoKSkgPyBWOFdlYkdMU2hhZGVyOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KGFyZ3NbMF0pKSA6IDA7CisgICAgV2ViR0xTaGFkZXIqIHNoYWRlciA9IFY4V2ViR0xT
aGFkZXI6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUo
YXJncy5HZXRJc29sYXRlKCkpKSA/IFY4V2ViR0xTaGFkZXI6OnRvTmF0aXZlKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKICAgICB1bnNpZ25lZCBwbmFtZSA9IHRv
SW50MzIoYXJnc1sxXSk7CiAgICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LT5nZXRTaGFk
ZXJQYXJhbWV0ZXIoc2hhZGVyLCBwbmFtZSwgZWMpOwogICAgIGlmIChlYykKQEAgLTQxOCwxMSAr
NDE4LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0VW5pZm9ybU1ldGhvZEN1c3RvbShjb25zdCB2ODo6CiAKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBWOFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPiAwICYmICFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzBdKSAmJiAhVjhXZWJHTFByb2dyYW06
Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICBpZiAoYXJncy5M
ZW5ndGgoKSA+IDAgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMF0pICYmICFWOFdlYkdMUHJv
Z3JhbTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShh
cmdzLkdldElzb2xhdGUoKSkpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJn
cy5HZXRJc29sYXRlKCkpOwotICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IFY4V2ViR0xQcm9n
cmFtOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOFdlYkdMUHJv
Z3JhbTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAw
OworICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IFY4V2ViR0xQcm9ncmFtOjpIYXNJbnN0YW5j
ZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgp
KSkgPyBWOFdlYkdMUHJvZ3JhbTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dChhcmdzWzBdKSkgOiAwOwogCi0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxICYmICFpc1VuZGVm
aW5lZE9yTnVsbChhcmdzWzFdKSAmJiAhVjhXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6SGFzSW5zdGFu
Y2UoYXJnc1sxXSwgYXJncy5HZXRJc29sYXRlKCkpKQorICAgIGlmIChhcmdzLkxlbmd0aCgpID4g
MSAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkgJiYgIVY4V2ViR0xVbmlmb3JtTG9jYXRp
b246Okhhc0luc3RhbmNlKGFyZ3NbMV0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJn
cy5HZXRJc29sYXRlKCkpKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKDAsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uID0gdG9XZWJHTFVuaWZvcm1Mb2NhdGlvbihhcmdzWzFdLCBvaywgYXJn
cy5HZXRJc29sYXRlKCkpOwpAQCAtNDg3LDE0ICs0ODcsMTQgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2ZXJ0ZXhBdHRyaWJBbmRVbmlmb3JtSGVscGVyZihjb25zdCB2ODo6QXJndW1l
bnRzJgogICAgIGlmIChpc0Z1bmN0aW9uVG9DYWxsRm9yQXR0cmlidXRlKGZ1bmN0aW9uVG9DYWxs
KSkKICAgICAgICAgaW5kZXggPSB0b0ludDMyKGFyZ3NbMF0pOwogICAgIGVsc2UgewotICAgICAg
ICBpZiAoYXJncy5MZW5ndGgoKSA+IDAgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMF0pICYm
ICFWOFdlYkdMVW5pZm9ybUxvY2F0aW9uOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElz
b2xhdGUoKSkpCisgICAgICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMCAmJiAhaXNVbmRlZmluZWRP
ck51bGwoYXJnc1swXSkgJiYgIVY4V2ViR0xVbmlmb3JtTG9jYXRpb246Okhhc0luc3RhbmNlKGFy
Z3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkK
ICAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7
CiAgICAgICAgIGxvY2F0aW9uID0gdG9XZWJHTFVuaWZvcm1Mb2NhdGlvbihhcmdzWzBdLCBvaywg
YXJncy5HZXRJc29sYXRlKCkpOwogICAgIH0KIAogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCog
Y29udGV4dCA9IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKIAotICAgIGlmIChWOEZsb2F0MzJBcnJheTo6SGFzSW5zdGFuY2UoYXJnc1sxXSwgYXJncy5H
ZXRJc29sYXRlKCkpKSB7CisgICAgaWYgKFY4RmxvYXQzMkFycmF5OjpIYXNJbnN0YW5jZShhcmdz
WzFdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpIHsK
ICAgICAgICAgRmxvYXQzMkFycmF5KiBhcnJheSA9IFY4RmxvYXQzMkFycmF5Ojp0b05hdGl2ZShh
cmdzWzFdLT5Ub09iamVjdCgpKTsKICAgICAgICAgQVNTRVJUKGFycmF5ICE9IE5VTEwpOwogICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTU1OCwxMiArNTU4LDEyIEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdW5pZm9ybUhlbHBlcmkoY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncywKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5H
ZXRJc29sYXRlKCkpOwogCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0gVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIGlmIChh
cmdzLkxlbmd0aCgpID4gMCAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1swXSkgJiYgIVY4V2Vi
R0xVbmlmb3JtTG9jYXRpb246Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgp
KSkKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDAgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3Nb
MF0pICYmICFWOFdlYkdMVW5pZm9ybUxvY2F0aW9uOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdz
LkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgYm9vbCBvayA9
IGZhbHNlOwogICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiA9IHRvV2ViR0xVbmlm
b3JtTG9jYXRpb24oYXJnc1swXSwgb2ssIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAotICAgIGlmIChW
OEludDMyQXJyYXk6Okhhc0luc3RhbmNlKGFyZ3NbMV0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkgewor
ICAgIGlmIChWOEludDMyQXJyYXk6Okhhc0luc3RhbmNlKGFyZ3NbMV0sIGFyZ3MuR2V0SXNvbGF0
ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkgewogICAgICAgICBJbnQzMkFycmF5
KiBhcnJheSA9IFY4SW50MzJBcnJheTo6dG9OYXRpdmUoYXJnc1sxXS0+VG9PYmplY3QoKSk7CiAg
ICAgICAgIEFTU0VSVChhcnJheSAhPSBOVUxMKTsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CkBAIC02NjAsMTMgKzY2MCwxMyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHVu
aWZvcm1NYXRyaXhIZWxwZXIoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywKIAogICAgIFdlYkdM
UmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKIAotICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMCAmJiAhaXNV
bmRlZmluZWRPck51bGwoYXJnc1swXSkgJiYgIVY4V2ViR0xVbmlmb3JtTG9jYXRpb246Okhhc0lu
c3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKKyAgICBpZiAoYXJncy5MZW5ndGgo
KSA+IDAgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMF0pICYmICFWOFdlYkdMVW5pZm9ybUxv
Y2F0aW9uOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBl
KGFyZ3MuR2V0SXNvbGF0ZSgpKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBh
cmdzLkdldElzb2xhdGUoKSk7CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBsb2NhdGlvbiA9IHRvV2ViR0xVbmlmb3JtTG9jYXRpb24oYXJnc1swXSwgb2ss
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICAKICAgICBib29sIHRyYW5zcG9zZSA9IGFyZ3NbMV0t
PkJvb2xlYW5WYWx1ZSgpOwotICAgIGlmIChWOEZsb2F0MzJBcnJheTo6SGFzSW5zdGFuY2UoYXJn
c1syXSwgYXJncy5HZXRJc29sYXRlKCkpKSB7CisgICAgaWYgKFY4RmxvYXQzMkFycmF5OjpIYXNJ
bnN0YW5jZShhcmdzWzJdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNv
bGF0ZSgpKSkpIHsKICAgICAgICAgRmxvYXQzMkFycmF5KiBhcnJheSA9IFY4RmxvYXQzMkFycmF5
Ojp0b05hdGl2ZShhcmdzWzJdLT5Ub09iamVjdCgpKTsKICAgICAgICAgQVNTRVJUKGFycmF5ICE9
IE5VTEwpOwogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9t
LmNwcAppbmRleCAxYWFmYTc0MmIxYmQ1ZDA1ZTEzNzQxOWFhZTFjMzgxNjczNWUxOTI3Li43ZWM4
OTEwYWU5NzU2NTEyZTk5OTQxYTU4YWFmMTlhZjU1ZTljYzczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0
b20uY3BwCkBAIC0xNTgsMTAgKzE1OCwxMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxI
dHRwUmVxdWVzdDo6b3Blbk1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcgogICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXN0YXRpYyBib29sIGlzRG9jdW1lbnRUeXBl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitzdGF0
aWMgYm9vbCBpc0RvY3VtZW50VHlwZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAg
ICAgLy8gRklYTUU6IGFkZCBvdGhlciBkb2N1bWVudCB0eXBlcy4KLSAgICByZXR1cm4gVjhEb2N1
bWVudDo6SGFzSW5zdGFuY2UodmFsdWUsIGlzb2xhdGUpIHx8IFY4SFRNTERvY3VtZW50OjpIYXNJ
bnN0YW5jZSh2YWx1ZSwgaXNvbGF0ZSk7CisgICAgcmV0dXJuIFY4RG9jdW1lbnQ6Okhhc0luc3Rh
bmNlKHZhbHVlLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKSB8fCBWOEhUTUxEb2N1bWVudDo6
SGFzSW5zdGFuY2UodmFsdWUsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQogCiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6c2VuZE1ldGhvZEN1c3RvbShjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtMTc1LDMwICsxNzUsMzEgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXIKICAgICAgICAgeG1sSHR0cFJlcXVlc3QtPnNlbmQoZWMpOwogICAgIGVsc2Ug
ewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJnID0gYXJnc1swXTsKKyAgICAgICAg
V3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlID0gd29ybGRUeXBlKGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKICAgICAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGFyZykpCiAgICAgICAgICAg
ICB4bWxIdHRwUmVxdWVzdC0+c2VuZChlYyk7Ci0gICAgICAgIGVsc2UgaWYgKGlzRG9jdW1lbnRU
eXBlKGFyZywgYXJncy5HZXRJc29sYXRlKCkpKSB7CisgICAgICAgIGVsc2UgaWYgKGlzRG9jdW1l
bnRUeXBlKGFyZywgYXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpKSB7CiAgICAg
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpIYW5kbGU8djg6Ok9i
amVjdD46OkNhc3QoYXJnKTsKICAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IFY4RG9j
dW1lbnQ6OnRvTmF0aXZlKG9iamVjdCk7CiAgICAgICAgICAgICBBU1NFUlQoZG9jdW1lbnQpOwog
ICAgICAgICAgICAgeG1sSHR0cFJlcXVlc3QtPnNlbmQoZG9jdW1lbnQsIGVjKTsKLSAgICAgICAg
fSBlbHNlIGlmIChWOEJsb2I6Okhhc0luc3RhbmNlKGFyZywgYXJncy5HZXRJc29sYXRlKCkpKSB7
CisgICAgICAgIH0gZWxzZSBpZiAoVjhCbG9iOjpIYXNJbnN0YW5jZShhcmcsIGFyZ3MuR2V0SXNv
bGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSkgewogICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBvYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZyk7CiAgICAg
ICAgICAgICBCbG9iKiBibG9iID0gVjhCbG9iOjp0b05hdGl2ZShvYmplY3QpOwogICAgICAgICAg
ICAgQVNTRVJUKGJsb2IpOwogICAgICAgICAgICAgeG1sSHR0cFJlcXVlc3QtPnNlbmQoYmxvYiwg
ZWMpOwotICAgICAgICB9IGVsc2UgaWYgKFY4RE9NRm9ybURhdGE6Okhhc0luc3RhbmNlKGFyZywg
YXJncy5HZXRJc29sYXRlKCkpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoVjhET01Gb3JtRGF0YTo6
SGFzSW5zdGFuY2UoYXJnLCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlwZSkpIHsK
ICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdChhcmcpOwogICAgICAgICAgICAgRE9NRm9ybURhdGEqIGRvbUZvcm1E
YXRhID0gVjhET01Gb3JtRGF0YTo6dG9OYXRpdmUob2JqZWN0KTsKICAgICAgICAgICAgIEFTU0VS
VChkb21Gb3JtRGF0YSk7CiAgICAgICAgICAgICB4bWxIdHRwUmVxdWVzdC0+c2VuZChkb21Gb3Jt
RGF0YSwgZWMpOwogI2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKEJMT0IpCi0gICAgICAgIH0g
ZWxzZSBpZiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnLCBhcmdzLkdldElzb2xhdGUo
KSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZShhcmcs
IGFyZ3MuR2V0SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSkgewogICAgICAgICAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KGFyZyk7CiAgICAgICAgICAgICBBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIgPSBWOEFycmF5QnVm
ZmVyOjp0b05hdGl2ZShvYmplY3QpOwogICAgICAgICAgICAgQVNTRVJUKGFycmF5QnVmZmVyKTsK
ICAgICAgICAgICAgIHhtbEh0dHBSZXF1ZXN0LT5zZW5kKGFycmF5QnVmZmVyLCBlYyk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKGFyZywgYXJncy5H
ZXRJc29sYXRlKCkpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoVjhBcnJheUJ1ZmZlclZpZXc6Okhh
c0luc3RhbmNlKGFyZywgYXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpKSB7CiAg
ICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoYXJnKTsKICAgICAgICAgICAgIEFycmF5QnVmZmVyVmlldyogYXJyYXlC
dWZmZXJWaWV3ID0gVjhBcnJheUJ1ZmZlclZpZXc6OnRvTmF0aXZlKG9iamVjdCk7CiAgICAgICAg
ICAgICBBU1NFUlQoYXJyYXlCdWZmZXJWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkFycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkFycmF5QnVmZmVyLmNwcAppbmRleCAwZWM1ZGYzZjRlZWEyYjEzZWYyZGQzNmE1ODQ5
ODYwZWE0NjJmMTM4Li5iMGQ5OTczMjQ0MjAxNzhhZjMyOTlhNDI0Yzg3ZWE3MGU5ZGUyYjEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXJyYXlCdWZmZXIuY3BwCkBAIC03
OCw3ICs3OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJBcnJheUJ1ZmZlcjo6dG9WOFZh
bHVlKCkKIAogV2ViQXJyYXlCdWZmZXIqIFdlYkFycmF5QnVmZmVyOjpjcmVhdGVGcm9tVjhWYWx1
ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCiB7Ci0gICAgaWYgKCFWOEFycmF5QnVmZmVy
OjpIYXNJbnN0YW5jZSh2YWx1ZSwgdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKSkpCisgICAgaWYg
KCFWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZUluQW55V29ybGQodmFsdWUsIHY4OjpJc29sYXRl
OjpHZXRDdXJyZW50KCkpKQogICAgICAgICByZXR1cm4gMDsKICAgICBXVEY6OkFycmF5QnVmZmVy
KiBidWZmZXIgPSBWOEFycmF5QnVmZmVyOjp0b05hdGl2ZSh2YWx1ZS0+VG9PYmplY3QoKSk7CiAg
ICAgcmV0dXJuIG5ldyBXZWJBcnJheUJ1ZmZlcihidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkFycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggM2FlY2NmZWRhZDEy
OGU3NmYxZGQ2NmFhZTNlYzZkN2NiNGVmNzU4OS4uYmZlNzI3NmZhZWM3MGM2NWU3OTJlZTExNzE2
NDhkYmMyM2IyZWNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
QXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJB
cnJheUJ1ZmZlclZpZXcuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHVuc2lnbmVkIFdlYkFycmF5QnVm
ZmVyVmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiAKIFdlYkFycmF5QnVmZmVyVmlldyogV2ViQXJy
YXlCdWZmZXJWaWV3OjpjcmVhdGVGcm9tVjhWYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUpCiB7Ci0gICAgaWYgKCFXZWJDb3JlOjpWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2Uo
dmFsdWUsIHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCkpKQorICAgIGlmICghV2ViQ29yZTo6VjhB
cnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlSW5BbnlXb3JsZCh2YWx1ZSwgdjg6Oklzb2xhdGU6
OkdldEN1cnJlbnQoKSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIEFycmF5QnVmZmVyVmlldyog
dmlldyA9IFdlYkNvcmU6OlY4QXJyYXlCdWZmZXJWaWV3Ojp0b05hdGl2ZSh2YWx1ZS0+VG9PYmpl
Y3QoKSk7CiAgICAgcmV0dXJuIG5ldyBXZWJBcnJheUJ1ZmZlclZpZXcodmlldyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCaW5kaW5ncy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCaW5kaW5ncy5jcHAKaW5kZXggZTdlN2RkYjZhMTU0ZDEw
ZDQ3NTI5ZmNlNzQyZDQ2ZTUxZDg4YjZjOS4uNTVmMGQ2YjA5YTcyYzE0ZjhlM2ZiYjUxN2M1ODIx
N2E3ODAxNGFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmlu
ZGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkJpbmRpbmdzLmNw
cApAQCAtMjE0LDcgKzIxNCw3IEBAIHN0YXRpYyBib29sIGdldFJhbmdlSW1wbChOUE9iamVjdCog
b2JqZWN0LCBXZWJSYW5nZSogd2ViUmFuZ2UsIHY4OjpJc29sYXRlKiBpc29sCiAgICAgaWYgKCFW
OFJhbmdlOjppbmZvLmVxdWFscyh0b1dyYXBwZXJUeXBlSW5mbyh2OE9iamVjdCkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBSYW5nZSogbmF0aXZlID0gVjhSYW5nZTo6SGFzSW5zdGFu
Y2UodjhPYmplY3QsIGlzb2xhdGUpID8gVjhSYW5nZTo6dG9OYXRpdmUodjhPYmplY3QpIDogMDsK
KyAgICBSYW5nZSogbmF0aXZlID0gVjhSYW5nZTo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4T2Jq
ZWN0LCBpc29sYXRlKSA/IFY4UmFuZ2U6OnRvTmF0aXZlKHY4T2JqZWN0KSA6IDA7CiAgICAgaWYg
KCFuYXRpdmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjI5LDcgKzIyOSw3IEBAIHN0
YXRpYyBib29sIGdldE5vZGVJbXBsKE5QT2JqZWN0KiBvYmplY3QsIFdlYk5vZGUqIHdlYk5vZGUs
IHY4OjpJc29sYXRlKiBpc29sYXRlCiAKICAgICBWOE5QT2JqZWN0KiB2OE5QT2JqZWN0ID0gcmVp
bnRlcnByZXRfY2FzdDxWOE5QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHY4T2JqZWN0KHY4TlBPYmplY3QtPnY4T2JqZWN0KTsKLSAgICBOb2RlKiBuYXRpdmUg
PSBWOE5vZGU6Okhhc0luc3RhbmNlKHY4T2JqZWN0LCBpc29sYXRlKSA/IFY4Tm9kZTo6dG9OYXRp
dmUodjhPYmplY3QpIDogMDsKKyAgICBOb2RlKiBuYXRpdmUgPSBWOE5vZGU6Okhhc0luc3RhbmNl
SW5BbnlXb3JsZCh2OE9iamVjdCwgaXNvbGF0ZSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4T2JqZWN0
KSA6IDA7CiAgICAgaWYgKCFuYXRpdmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjQ0
LDcgKzI0NCw3IEBAIHN0YXRpYyBib29sIGdldEVsZW1lbnRJbXBsKE5QT2JqZWN0KiBvYmplY3Qs
IFdlYkVsZW1lbnQqIHdlYkVsZW1lbnQsIHY4OjpJc29sYXRlCiAKICAgICBWOE5QT2JqZWN0KiB2
OE5QT2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxWOE5QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4T2JqZWN0KHY4TlBPYmplY3QtPnY4T2JqZWN0KTsKLSAg
ICBFbGVtZW50KiBuYXRpdmUgPSBWOEVsZW1lbnQ6Okhhc0luc3RhbmNlKHY4T2JqZWN0LCBpc29s
YXRlKSA/IFY4RWxlbWVudDo6dG9OYXRpdmUodjhPYmplY3QpIDogMDsKKyAgICBFbGVtZW50KiBu
YXRpdmUgPSBWOEVsZW1lbnQ6Okhhc0luc3RhbmNlSW5BbnlXb3JsZCh2OE9iamVjdCwgaXNvbGF0
ZSkgPyBWOEVsZW1lbnQ6OnRvTmF0aXZlKHY4T2JqZWN0KSA6IDA7CiAgICAgaWYgKCFuYXRpdmUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjU5LDcgKzI1OSw3IEBAIHN0YXRpYyBib29s
IGdldEFycmF5QnVmZmVySW1wbChOUE9iamVjdCogb2JqZWN0LCBXZWJBcnJheUJ1ZmZlciogYXJy
YXlCdWZmZXIsIHY4CiAKICAgICBWOE5QT2JqZWN0KiB2OE5QT2JqZWN0ID0gcmVpbnRlcnByZXRf
Y2FzdDxWOE5QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4
T2JqZWN0KHY4TlBPYmplY3QtPnY4T2JqZWN0KTsKLSAgICBBcnJheUJ1ZmZlciogbmF0aXZlID0g
VjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UodjhPYmplY3QsIGlzb2xhdGUpID8gVjhBcnJheUJ1
ZmZlcjo6dG9OYXRpdmUodjhPYmplY3QpIDogMDsKKyAgICBBcnJheUJ1ZmZlciogbmF0aXZlID0g
VjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4T2JqZWN0LCBpc29sYXRlKSA/
IFY4QXJyYXlCdWZmZXI6OnRvTmF0aXZlKHY4T2JqZWN0KSA6IDA7CiAgICAgaWYgKCFuYXRpdmUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjc0LDcgKzI3NCw3IEBAIHN0YXRpYyBib29s
IGdldEFycmF5QnVmZmVyVmlld0ltcGwoTlBPYmplY3QqIG9iamVjdCwgV2ViQXJyYXlCdWZmZXJW
aWV3KiBhcnJheUJ1CiAKICAgICBWOE5QT2JqZWN0KiB2OE5QT2JqZWN0ID0gcmVpbnRlcnByZXRf
Y2FzdDxWOE5QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4
T2JqZWN0KHY4TlBPYmplY3QtPnY4T2JqZWN0KTsKLSAgICBBcnJheUJ1ZmZlclZpZXcqIG5hdGl2
ZSA9IFY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZSh2OE9iamVjdCwgaXNvbGF0ZSkgPyBW
OEFycmF5QnVmZmVyVmlldzo6dG9OYXRpdmUodjhPYmplY3QpIDogMDsKKyAgICBBcnJheUJ1ZmZl
clZpZXcqIG5hdGl2ZSA9IFY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZUluQW55V29ybGQo
djhPYmplY3QsIGlzb2xhdGUpID8gVjhBcnJheUJ1ZmZlclZpZXc6OnRvTmF0aXZlKHY4T2JqZWN0
KSA6IDA7CiAgICAgaWYgKCFuYXRpdmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>