<?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>238925</bug_id>
          
          <creation_ts>2022-04-06 22:53:53 -0700</creation_ts>
          <short_desc>Replace deprecated String(const char*) with String::fromLatin1() in more places</short_desc>
          <delta_ts>2022-04-07 19:22:16 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>pascoe</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1859150</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-06 22:53:53 -0700</bug_when>
    <thetext>Replace deprecated String(const char*) with String::fromLatin1() in more places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859152</commentid>
    <comment_count>1</comment_count>
      <attachid>456893</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-06 22:59:56 -0700</bug_when>
    <thetext>Created attachment 456893
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859374</commentid>
    <comment_count>2</comment_count>
      <attachid>456893</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-07 12:27:23 -0700</bug_when>
    <thetext>Comment on attachment 456893
Patch

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

I am puzzled by many of these, but grepping for String::fromLatin1 later will be easy so this is a step in the right direction.

Sadly, grepping for const char* used in makeString, implicitly treated as Latin-1, is not so easy. So maybe later we could tighten makeString as well, and requiring that we specify which const char* are Latin-1 vs. UTF-8 vs. ASCII vs. ASCII literal.

&gt; Source/WebKit/NetworkProcess/DatabaseUtilities.cpp:208
&gt; +    return String::fromLatin1(originalQuery).replace(&quot;CREATE UNIQUE INDEX IF NOT EXISTS&quot;, &quot;CREATE UNIQUE INDEX&quot;);

I love this.

Should we also make a String::fromASCII that is the same as Latin-1, but has a debug-only assertion that there are no non-ASCII characters? If we had that, we would probably use that here. It seems like there are a lot of call sites that use String::fromLatin1, not because it’s a Latin-1 string, but because it’s a string where all the characters are ASCII, and I would love the clarity from saying what we mean in such cases. This would be a debug-only check, so not super-risky.

Also if we some day we change String representation to use UTF-8, then the distinction might matter.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:611
&gt; +    CString prologue { &quot;{\n\&quot;entries\&quot;: [\n&quot; };
&gt;      writeToFile(fd, prologue.data(), prologue.length());

Let’s get rid of the unnecessary memory allocation with something more like this:

    const char* prologue = &quot;{\n\&quot;entries\&quot;: [\n&quot;;
    writeToFile(fd, prologue, std::strlen(prologue));

&gt; Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:44
&gt; +        API::ExperimentalFeature::create(String::fromLatin1(&lt;%= @pref.humanReadableName %&gt;), &quot;&lt;%= @pref.name %&gt;&quot;_s, String::fromLatin1(&lt;%= @pref.humanReadableDescription %&gt;), DEFAULT_VALUE_FOR_&lt;%= @pref.name %&gt;, &lt;%= @pref.hidden %&gt;),

These names aren’t known at compile time?

&gt; Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb:43
&gt; +        API::InternalDebugFeature::create(String::fromLatin1(&lt;%= @pref.humanReadableName %&gt;), &quot;&lt;%= @pref.name %&gt;&quot;_s, String::fromLatin1(&lt;%= @pref.humanReadableDescription %&gt;), DEFAULT_VALUE_FOR_&lt;%= @pref.name %&gt;, &lt;%= @pref.hidden %&gt;),

Same question.

&gt; Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesStoreDefaultsMap.cpp.erb:56
&gt; +        defaults.get().set(WebPreferencesKey::&lt;%= @pref.nameLower %&gt;Key(), Value(makeString(DEFAULT_VALUE_FOR_&lt;%= @pref.name %&gt;)));

What exactly are we converting to a String here? Just curious.

&gt; Source/WebKit/Shared/Cocoa/SandboxExtensionCocoa.mm:302
&gt; +    return { { WTFMove(handle), String::fromLatin1(path.data()) } };

This one seems clearly wrong. Why wouldn’t we use pathString here, which is correctly made with String::fromUTF8. Instead the old code incorrectly makes a second String with the wrong encoding!

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:1903
&gt; +    showedWarningDictionary.set(&quot;source&quot;_s, &quot;service&quot;_str);

How did you know it was a good idea to use _str instead of _s here? Part of why I ask is that Geoff was proposing we remove _str at some point; adding new uses does not help us move in that direction.

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:1918
&gt; +        dictionary.set(&quot;source&quot;_s, &quot;service&quot;_str);

And here.

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:1935
&gt; +        dictionary.set(&quot;action&quot;_s, &quot;go back&quot;_s);

But not here.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:192
&gt; +        (id)kSecAttrAccessGroup: (id)@(LocalAuthenticatorAccessGroup),

I don’t think we need (id) before the @.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:173
&gt; +        (id)kSecAttrAccessGroup: (id)@(LocalAuthenticatorAccessGroup),

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859396</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-07 13:03:15 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 456893 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456893&amp;action=review
&gt; 
&gt; I am puzzled by many of these, but grepping for String::fromLatin1 later
&gt; will be easy so this is a step in the right direction.
&gt; 
&gt; Sadly, grepping for const char* used in makeString, implicitly treated as
&gt; Latin-1, is not so easy. So maybe later we could tighten makeString as well,
&gt; and requiring that we specify which const char* are Latin-1 vs. UTF-8 vs.
&gt; ASCII vs. ASCII literal.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/DatabaseUtilities.cpp:208
&gt; &gt; +    return String::fromLatin1(originalQuery).replace(&quot;CREATE UNIQUE INDEX IF NOT EXISTS&quot;, &quot;CREATE UNIQUE INDEX&quot;);
&gt; 
&gt; I love this.
&gt; 
&gt; Should we also make a String::fromASCII that is the same as Latin-1, but has
&gt; a debug-only assertion that there are no non-ASCII characters? If we had
&gt; that, we would probably use that here. It seems like there are a lot of call
&gt; sites that use String::fromLatin1, not because it’s a Latin-1 string, but
&gt; because it’s a string where all the characters are ASCII, and I would love
&gt; the clarity from saying what we mean in such cases. This would be a
&gt; debug-only check, so not super-risky.
&gt; 
&gt; Also if we some day we change String representation to use UTF-8, then the
&gt; distinction might matter.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:611
&gt; &gt; +    CString prologue { &quot;{\n\&quot;entries\&quot;: [\n&quot; };
&gt; &gt;      writeToFile(fd, prologue.data(), prologue.length());
&gt; 
&gt; Let’s get rid of the unnecessary memory allocation with something more like
&gt; this:
&gt; 
&gt;     const char* prologue = &quot;{\n\&quot;entries\&quot;: [\n&quot;;
&gt;     writeToFile(fd, prologue, std::strlen(prologue));
&gt; 
&gt; &gt; Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:44
&gt; &gt; +        API::ExperimentalFeature::create(String::fromLatin1(&lt;%= @pref.humanReadableName %&gt;), &quot;&lt;%= @pref.name %&gt;&quot;_s, String::fromLatin1(&lt;%= @pref.humanReadableDescription %&gt;), DEFAULT_VALUE_FOR_&lt;%= @pref.name %&gt;, &lt;%= @pref.hidden %&gt;),
&gt; 
&gt; These names aren’t known at compile time?
&gt; 
&gt; &gt; Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb:43
&gt; &gt; +        API::InternalDebugFeature::create(String::fromLatin1(&lt;%= @pref.humanReadableName %&gt;), &quot;&lt;%= @pref.name %&gt;&quot;_s, String::fromLatin1(&lt;%= @pref.humanReadableDescription %&gt;), DEFAULT_VALUE_FOR_&lt;%= @pref.name %&gt;, &lt;%= @pref.hidden %&gt;),
&gt; 
&gt; Same question.
&gt; 
&gt; &gt; Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesStoreDefaultsMap.cpp.erb:56
&gt; &gt; +        defaults.get().set(WebPreferencesKey::&lt;%= @pref.nameLower %&gt;Key(), Value(makeString(DEFAULT_VALUE_FOR_&lt;%= @pref.name %&gt;)));
&gt; 
&gt; What exactly are we converting to a String here? Just curious.

I struggled a lot yesterday getting things building. Basically, the default value is defined in the yaml file. It usually looks like: &apos;&quot;foo&quot;&apos;, &apos;{}&apos;, &apos;defaultValueForFoo&apos;.
String() didn&apos;t work because you cannot you need to call fromLatin1() when the input is a const char*. If I remember correctly, fromLatin1() didn&apos;t work either because something the input is not a const char* (could be a String for e.g.).
I also tried to define all the string values in the yaml files as either ASCIILiteral or String() but that didn&apos;t work because one of our generated Cocoa files is &quot;boxing&quot; the default value with @().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859397</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-07 13:05:57 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 456893 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456893&amp;action=review
&gt; 
&gt; I am puzzled by many of these, but grepping for String::fromLatin1 later
&gt; will be easy so this is a step in the right direction.
&gt; 
&gt; Sadly, grepping for const char* used in makeString, implicitly treated as
&gt; Latin-1, is not so easy. So maybe later we could tighten makeString as well,
&gt; and requiring that we specify which const char* are Latin-1 vs. UTF-8 vs.
&gt; ASCII vs. ASCII literal.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/DatabaseUtilities.cpp:208
&gt; &gt; +    return String::fromLatin1(originalQuery).replace(&quot;CREATE UNIQUE INDEX IF NOT EXISTS&quot;, &quot;CREATE UNIQUE INDEX&quot;);
&gt; 
&gt; I love this.
&gt; 
&gt; Should we also make a String::fromASCII that is the same as Latin-1, but has
&gt; a debug-only assertion that there are no non-ASCII characters? If we had
&gt; that, we would probably use that here. It seems like there are a lot of call
&gt; sites that use String::fromLatin1, not because it’s a Latin-1 string, but
&gt; because it’s a string where all the characters are ASCII, and I would love
&gt; the clarity from saying what we mean in such cases. This would be a
&gt; debug-only check, so not super-risky.
&gt; 
&gt; Also if we some day we change String representation to use UTF-8, then the
&gt; distinction might matter.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:611
&gt; &gt; +    CString prologue { &quot;{\n\&quot;entries\&quot;: [\n&quot; };
&gt; &gt;      writeToFile(fd, prologue.data(), prologue.length());
&gt; 
&gt; Let’s get rid of the unnecessary memory allocation with something more like
&gt; this:
&gt; 
&gt;     const char* prologue = &quot;{\n\&quot;entries\&quot;: [\n&quot;;
&gt;     writeToFile(fd, prologue, std::strlen(prologue));
&gt; 
&gt; &gt; Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:44
&gt; &gt; +        API::ExperimentalFeature::create(String::fromLatin1(&lt;%= @pref.humanReadableName %&gt;), &quot;&lt;%= @pref.name %&gt;&quot;_s, String::fromLatin1(&lt;%= @pref.humanReadableDescription %&gt;), DEFAULT_VALUE_FOR_&lt;%= @pref.name %&gt;, &lt;%= @pref.hidden %&gt;),
&gt; 
&gt; These names aren’t known at compile time?
&gt; 
&gt; &gt; Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb:43
&gt; &gt; +        API::InternalDebugFeature::create(String::fromLatin1(&lt;%= @pref.humanReadableName %&gt;), &quot;&lt;%= @pref.name %&gt;&quot;_s, String::fromLatin1(&lt;%= @pref.humanReadableDescription %&gt;), DEFAULT_VALUE_FOR_&lt;%= @pref.name %&gt;, &lt;%= @pref.hidden %&gt;),
&gt; 
&gt; Same question.
&gt; 
&gt; &gt; Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesStoreDefaultsMap.cpp.erb:56
&gt; &gt; +        defaults.get().set(WebPreferencesKey::&lt;%= @pref.nameLower %&gt;Key(), Value(makeString(DEFAULT_VALUE_FOR_&lt;%= @pref.name %&gt;)));
&gt; 
&gt; What exactly are we converting to a String here? Just curious.
&gt; 
&gt; &gt; Source/WebKit/Shared/Cocoa/SandboxExtensionCocoa.mm:302
&gt; &gt; +    return { { WTFMove(handle), String::fromLatin1(path.data()) } };
&gt; 
&gt; This one seems clearly wrong. Why wouldn’t we use pathString here, which is
&gt; correctly made with String::fromUTF8. Instead the old code incorrectly makes
&gt; a second String with the wrong encoding!
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:1903
&gt; &gt; +    showedWarningDictionary.set(&quot;source&quot;_s, &quot;service&quot;_str);

I&apos;ll double check if _s would have built. I decided to be explicit about it being a String because the value in the map is a variant which may be a String (or other things).

I personally don&apos;t think it is worth removing _str, it helps in some very specific cases write a bit more concise code by letting the compiler know this is a String (and not an ASCIILiteral which could be converted to a String or something else).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859400</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-07 13:10:23 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 456893 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456893&amp;action=review
&gt; 
&gt; I am puzzled by many of these, but grepping for String::fromLatin1 later
&gt; will be easy so this is a step in the right direction.
&gt; 
&gt; Sadly, grepping for const char* used in makeString, implicitly treated as
&gt; Latin-1, is not so easy. So maybe later we could tighten makeString as well,
&gt; and requiring that we specify which const char* are Latin-1 vs. UTF-8 vs.
&gt; ASCII vs. ASCII literal.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/DatabaseUtilities.cpp:208
&gt; &gt; +    return String::fromLatin1(originalQuery).replace(&quot;CREATE UNIQUE INDEX IF NOT EXISTS&quot;, &quot;CREATE UNIQUE INDEX&quot;);
&gt; 
&gt; I love this.
&gt; 
&gt; Should we also make a String::fromASCII that is the same as Latin-1, but has
&gt; a debug-only assertion that there are no non-ASCII characters? If we had
&gt; that, we would probably use that here. It seems like there are a lot of call
&gt; sites that use String::fromLatin1, not because it’s a Latin-1 string, but
&gt; because it’s a string where all the characters are ASCII, and I would love
&gt; the clarity from saying what we mean in such cases. This would be a
&gt; debug-only check, so not super-risky.
&gt; 
&gt; Also if we some day we change String representation to use UTF-8, then the
&gt; distinction might matter.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:611
&gt; &gt; +    CString prologue { &quot;{\n\&quot;entries\&quot;: [\n&quot; };
&gt; &gt;      writeToFile(fd, prologue.data(), prologue.length());
&gt; 
&gt; Let’s get rid of the unnecessary memory allocation with something more like
&gt; this:
&gt; 
&gt;     const char* prologue = &quot;{\n\&quot;entries\&quot;: [\n&quot;;
&gt;     writeToFile(fd, prologue, std::strlen(prologue));
&gt; 
&gt; &gt; Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:44
&gt; &gt; +        API::ExperimentalFeature::create(String::fromLatin1(&lt;%= @pref.humanReadableName %&gt;), &quot;&lt;%= @pref.name %&gt;&quot;_s, String::fromLatin1(&lt;%= @pref.humanReadableDescription %&gt;), DEFAULT_VALUE_FOR_&lt;%= @pref.name %&gt;, &lt;%= @pref.hidden %&gt;),
&gt; 
&gt; These names aren’t known at compile time?

Yes, I believe they are know at compile time and defined as const char* (&quot;foo&quot;) in the YAML files.
I&apos;ll double check but I am pretty sure I tried using &quot;&quot;_s or &quot;&quot;_str in the yaml files but it failed building because there is a Cocoa file &quot;boxing&quot; these with @() in ObjC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859404</commentid>
    <comment_count>6</comment_count>
      <attachid>456961</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-07 13:15:29 -0700</bug_when>
    <thetext>Created attachment 456961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859455</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-07 15:00:34 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; &gt; &gt; +        API::ExperimentalFeature::create(String::fromLatin1(&lt;%= @pref.humanReadableName %&gt;), &quot;&lt;%= @pref.name %&gt;&quot;_s, String::fromLatin1(&lt;%= @pref.humanReadableDescription %&gt;), DEFAULT_VALUE_FOR_&lt;%= @pref.name %&gt;, &lt;%= @pref.hidden %&gt;),
&gt; &gt; 
&gt; &gt; These names aren’t known at compile time?
&gt; 
&gt; Yes, I believe they are know at compile time and defined as const char*
&gt; (&quot;foo&quot;) in the YAML files.
&gt; I&apos;ll double check but I am pretty sure I tried using &quot;&quot;_s or &quot;&quot;_str in the
&gt; yaml files but it failed building because there is a Cocoa file &quot;boxing&quot;
&gt; these with @() in ObjC.

If we know it’s a literal this should work:

    &lt;%= @pref.humanReadableName %&gt; &quot;&quot;_s

Rather than:

    String::fromLatin1(&lt;%= @pref.humanReadableName %&gt;)

Token pasting should combine the string in in the &lt;% %&gt; with the &quot;&quot;_s, producing an ASCIILiteral.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859467</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-07 15:23:45 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; (In reply to Chris Dumez from comment #5)
&gt; &gt; &gt; &gt; +        API::ExperimentalFeature::create(String::fromLatin1(&lt;%= @pref.humanReadableName %&gt;), &quot;&lt;%= @pref.name %&gt;&quot;_s, String::fromLatin1(&lt;%= @pref.humanReadableDescription %&gt;), DEFAULT_VALUE_FOR_&lt;%= @pref.name %&gt;, &lt;%= @pref.hidden %&gt;),
&gt; &gt; &gt; 
&gt; &gt; &gt; These names aren’t known at compile time?
&gt; &gt; 
&gt; &gt; Yes, I believe they are know at compile time and defined as const char*
&gt; &gt; (&quot;foo&quot;) in the YAML files.
&gt; &gt; I&apos;ll double check but I am pretty sure I tried using &quot;&quot;_s or &quot;&quot;_str in the
&gt; &gt; yaml files but it failed building because there is a Cocoa file &quot;boxing&quot;
&gt; &gt; these with @() in ObjC.
&gt; 
&gt; If we know it’s a literal this should work:
&gt; 
&gt;     &lt;%= @pref.humanReadableName %&gt; &quot;&quot;_s

Ok, I can try that.

FYI, I had tried:
&lt;%= @pref.humanReadableName %&gt;_s

but that didn&apos;t work because one of the human names was a #define.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859475</commentid>
    <comment_count>9</comment_count>
      <attachid>456978</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-07 15:40:52 -0700</bug_when>
    <thetext>Created attachment 456978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859558</commentid>
    <comment_count>10</comment_count>
      <attachid>456978</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-07 19:21:26 -0700</bug_when>
    <thetext>Comment on attachment 456978
Patch

Clearing flags on attachment: 456978

Committed r292587 (249420@trunk): &lt;https://commits.webkit.org/249420@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859559</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-07 19:21:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859560</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-07 19:22:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/91458997&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456893</attachid>
            <date>2022-04-06 22:59:56 -0700</date>
            <delta_ts>2022-04-07 13:15:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238925-20220406225955.patch</filename>
            <type>text/plain</type>
            <size>39955</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE5MjZiMTU1MzNkYTMwYmNm
NDc3OTMwMzQ3NWFhY2E4ODQ4MzQ4NjcuLjMwMWJkODkyZWVhNzBlNWM0MGY0Nzk4YTg4ZWVhYjJj
ZWZlYzZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjItMDQtMDYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGRlcHJlY2F0ZWQgU3Ry
aW5nKGNvbnN0IGNoYXIqKSB3aXRoIFN0cmluZzo6ZnJvbUxhdGluMSgpIGluIG1vcmUgcGxhY2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg5MjUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJh
c2VVdGlsaXRpZXM6OnN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKToKKyAgICAgICAgKiBT
Y3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVh
dHVyZXMuY3BwLmVyYjoKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dl
YlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5lcmI6CisgICAgICAgICogU2Ny
aXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAu
Y3BwLmVyYjoKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIu
bW06CisgICAgICAgIChlbmNvZGVPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2Ev
X1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5IF9zZW5kSW52b2NhdGlvbjppbnRlcmZhY2U6XSk6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2lu
dC5tbToKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6Omdl
dENsaWVudEJ1bmRsZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5p
dGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50UHJvY2Vzc05hbWUpOgorICAgICAgICAoV2ViS2l0
OjpYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlvbkRh
dGEpOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZp
Y2UvWFBDU2VydmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VNYWluKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW06CisgICAgICAgICgrW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgZ2V0QWxsTG9jYWxBdXRo
ZW50aWNhdG9yQ3JlZGVudGlhbHNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzaG93U2FmZUJyb3dzaW5n
V2FybmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2NvY29hL1Byb2Nlc3NMYXVu
Y2hlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFBy
b2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2Nh
bEF1dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6
Y2xlYXJBbGxDcmVkZW50aWFscyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxDb25u
ZWN0aW9uOjpjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleSBjb25zdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBhc3RlQWNjZXNzQ2F0
ZWdvcnlGb3JDb21tYW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAg
ICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpwbHVnaW5JbmZvKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpyZXBs
YWNlU2VsZWN0aW9uUGFzdGVib2FyZE5hbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9JUENUZXN0aW5nQVBJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6Y3Jl
YXRlSlNBcnJheUZvckFyZ3VtZW50RGVzY3JpcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6SVBD
VGVzdGluZ0FQSTo6SlNNZXNzYWdlTGlzdGVuZXI6OmpzRGVzY3JpcHRpb25Gcm9tRGVjb2Rlcik6
CisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlB1c2hEYWVtb25NYWluKToKKwogMjAyMi0wNC0wNiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEltcHJvdmUgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmRlc2VyaWFsaXplIHRvIG5vdCBhbGxvY2F0ZSBhIG5ldyBKU0NvbnRleHQgZXZlcnkgc2Vj
b25kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMGM2YWVlODA5NGYxYzZmNWM5OWY3
OTg0MTMyZDA4ZTNhYjU5NjE2Yi4uMGI1YmZmMWI4OTA0MjYzMTg2NWU4MDc0ZjZhNjY2YzA2MWYz
ZWZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIy
LTA0LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFj
ZSBkZXByZWNhdGVkIFN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBTdHJpbmc6OmZyb21MYXRpbjEo
KSBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM4OTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBIaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW06CisgICAgICAgIChIaXN0
b3J5UHJvcGVydHlMaXN0V3JpdGVyOjpIaXN0b3J5UHJvcGVydHlMaXN0V3JpdGVyKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBjb3Jl
Q29tbWFuZEJ5TmFtZTpdKToKKwogMjAyMi0wNC0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIERyb3AgdW5uZWNlc3NhcnkgRXhjZXB0aW9uT3I8PiByZXR1cm4g
dHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VV
dGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxp
dGllcy5jcHAKaW5kZXggMThmMTFkMzM5ZTFlMjA3NTlhNjk4OWVhM2FmMjNkOGE5ODYxYzQ1Yi4u
ODAwMDU2NzgzZjY1ZmZhZWFlM2RjOGVkMmZjMDFhZTdjYzRkY2QyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAKQEAgLTIwNSw3
ICsyMDUsNyBAQCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBEYXRhYmFzZVV0aWxp
dGllczo6YnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudAogCiBTdHJpbmcgRGF0YWJhc2VVdGls
aXRpZXM6OnN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjb25zdCBjaGFyKiBvcmln
aW5hbFF1ZXJ5KQogewotICAgIHJldHVybiBTdHJpbmcob3JpZ2luYWxRdWVyeSkucmVwbGFjZSgi
Q1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIiwgIkNSRUFURSBVTklRVUUgSU5ERVgi
KTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tTGF0aW4xKG9yaWdpbmFsUXVlcnkpLnJlcGxhY2Uo
IkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyIsICJDUkVBVEUgVU5JUVVFIElOREVY
Iik7CiB9CiAKIFRhYmxlQW5kSW5kZXhQYWlyIERhdGFiYXNlVXRpbGl0aWVzOjpjdXJyZW50VGFi
bGVBbmRJbmRleFF1ZXJpZXMoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggZjVk
ZDMxZmZiNTk5ZWNmMTMzZWEwNzNhZWE4YWQ2NzE2MjE4ZGY1My4uOTQ2MmQyYzdmZWQzM2QyNTIy
NDI3NzI2MmUyNzY5YzM0NGY5ODM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtNjA3LDcgKzYwNyw3IEBAIHZvaWQg
Q2FjaGU6OmR1bXBDb250ZW50c1RvRmlsZSgpCiAgICAgYXV0byBmZCA9IG9wZW5GaWxlKGR1bXBG
aWxlUGF0aCgpLCBGaWxlT3Blbk1vZGU6OldyaXRlKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
ZmQpKQogICAgICAgICByZXR1cm47Ci0gICAgYXV0byBwcm9sb2d1ZSA9IFN0cmluZygie1xuXCJl
bnRyaWVzXCI6IFtcbiIpLnV0ZjgoKTsKKyAgICBDU3RyaW5nIHByb2xvZ3VlIHsgIntcblwiZW50
cmllc1wiOiBbXG4iIH07CiAgICAgd3JpdGVUb0ZpbGUoZmQsIHByb2xvZ3VlLmRhdGEoKSwgcHJv
bG9ndWUubGVuZ3RoKCkpOwogCiAgICAgc3RydWN0IFRvdGFscyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBl
cmltZW50YWxGZWF0dXJlcy5jcHAuZXJiIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVu
Y2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMuY3BwLmVyYgpp
bmRleCA4MzBlYmFiOGU4NjIxODBlYjAzMGE2NTM5NjYyNmY0Mzg5MTBjMmI4Li5lZGQ4ZTYxNjcy
ZjQ0YjM2N2JiMWM0NjVkY2U4OWMwNzkxYTA3OWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxG
ZWF0dXJlcy5jcHAuZXJiCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1Rl
bXBsYXRlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNwcC5lcmIKQEAgLTQx
LDcgKzQxLDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+JiBXZWJQcmVmZXJl
bmNlczo6ZXhwZXJpbWVudGFsRmVhdHVyZXMoKQogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4K
ICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgotICAgICAgICBBUEk6OkV4
cGVyaW1lbnRhbEZlYXR1cmU6OmNyZWF0ZShTdHJpbmcgeyA8JT0gQHByZWYuaHVtYW5SZWFkYWJs
ZU5hbWUgJT4gfSwgIjwlPSBAcHJlZi5uYW1lICU+Il9zLCBTdHJpbmcgeyA8JT0gQHByZWYuaHVt
YW5SZWFkYWJsZURlc2NyaXB0aW9uICU+IH0sIERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5u
YW1lICU+LCA8JT0gQHByZWYuaGlkZGVuICU+KSwKKyAgICAgICAgQVBJOjpFeHBlcmltZW50YWxG
ZWF0dXJlOjpjcmVhdGUoU3RyaW5nOjpmcm9tTGF0aW4xKDwlPSBAcHJlZi5odW1hblJlYWRhYmxl
TmFtZSAlPiksICI8JT0gQHByZWYubmFtZSAlPiJfcywgU3RyaW5nOjpmcm9tTGF0aW4xKDwlPSBA
cHJlZi5odW1hblJlYWRhYmxlRGVzY3JpcHRpb24gJT4pLCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0g
QHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmhpZGRlbiAlPiksCiA8JS0gaWYgQHByZWYuY29uZGl0
aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0Zl
YXR1cmVzLmNwcC5lcmIgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgppbmRleCBlNTY3
ZjQ1YjFlNDQ1MTZiNTJiMDM2NTBiYjlmMmU5NjRiODQ5YjFjLi4zNTgwYjRmZmE4YjIwNTRmM2Yw
OGEwM2I2ZmMxYjM2OGU0ZWM3Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMu
Y3BwLmVyYgorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
V2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgpAQCAtNDAsNyArNDAs
NyBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4mIFdlYlByZWZlcmVuY2VzOjpp
bnRlcm5hbERlYnVnRmVhdHVyZXMoKQogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8
JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgotICAgICAgICBBUEk6OkludGVybmFs
RGVidWdGZWF0dXJlOjpjcmVhdGUoU3RyaW5nIHsgPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVOYW1l
ICU+IH0sICI8JT0gQHByZWYubmFtZSAlPiJfcywgU3RyaW5nIHsgPCU9IEBwcmVmLmh1bWFuUmVh
ZGFibGVEZXNjcmlwdGlvbiAlPiB9LCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAl
PiwgPCU9IEBwcmVmLmhpZGRlbiAlPiksCisgICAgICAgIEFQSTo6SW50ZXJuYWxEZWJ1Z0ZlYXR1
cmU6OmNyZWF0ZShTdHJpbmc6OmZyb21MYXRpbjEoPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVOYW1l
ICU+KSwgIjwlPSBAcHJlZi5uYW1lICU+Il9zLCBTdHJpbmc6OmZyb21MYXRpbjEoPCU9IEBwcmVm
Lmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAlPiksIERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJl
Zi5uYW1lICU+LCA8JT0gQHByZWYuaGlkZGVuICU+KSwKIDwlLSBpZiBAcHJlZi5jb25kaXRpb24g
LSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNw
cC5lcmIgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJl
ZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNwcC5lcmIKaW5kZXggZTc4NGFhNmE3ZmFiM2FhZDg0
ODcyZTVhN2Q5OWJjMzczMTc4NWM4NS4uYjgzNzQxNTg3ZTNlNjk0OWRlZDNmZGQyYWJmNmQyZWNj
NmJmNmMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVt
cGxhdGVzL1dlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHAuZXJiCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc1N0b3Jl
RGVmYXVsdHNNYXAuY3BwLmVyYgpAQCAtNTIsNyArNTIsMTEgQEAgV2ViUHJlZmVyZW5jZXNTdG9y
ZTo6VmFsdWVNYXAmIFdlYlByZWZlcmVuY2VzU3RvcmU6OmRlZmF1bHRzKCkKIDwlLSBpZiBAcHJl
Zi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4K
KzwlLSBpZiBAcHJlZi50eXBlID09ICJTdHJpbmciIC0lPgorICAgICAgICBkZWZhdWx0cy5nZXQo
KS5zZXQoV2ViUHJlZmVyZW5jZXNLZXk6OjwlPSBAcHJlZi5uYW1lTG93ZXIgJT5LZXkoKSwgVmFs
dWUobWFrZVN0cmluZyhERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPikpKTsKKzwl
LSBlbHNlIC0lPgogICAgICAgICBkZWZhdWx0cy5nZXQoKS5zZXQoV2ViUHJlZmVyZW5jZXNLZXk6
OjwlPSBAcHJlZi5uYW1lTG93ZXIgJT5LZXkoKSwgVmFsdWUoPCU9IEBwcmVmLnR5cGUgJT4oREVG
QVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4pKSk7Cis8JS0gZW5kIC0lPgogPCUtIGlm
IEBwcmVmLmNvbmRpdGlvbiAtJT4KICNlbmRpZgogPCUtIGVuZCAtJT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KaW5kZXgg
MTU3M2RmMmI3MmM2MDg3NjI4ZTk3ZDRjM2RkY2VmOTQyZDhjZDNlNC4uOGMxMmVkZWE3ZWFjYjE5
MzJhMjMxYWFjNzVmMDkyOWY0NzlmNzFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KQEAgLTQ2NCw3ICs0NjQsNyBA
QCBzdGF0aWMgdm9pZCBlbmNvZGVPYmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICplbmNvZGVy
LCBpZCBvYmplY3QpCiAgICAgICAgIGVuY29kZXItPl9vYmplY3RzQmVpbmdFbmNvZGVkLnJlbW92
ZShvYmplY3QpOwogICAgIH0pOwogCi0gICAgZW5jb2Rlci0+X2N1cnJlbnREaWN0aW9uYXJ5LT5z
ZXQoY2xhc3NOYW1lS2V5LCBBUEk6OlN0cmluZzo6Y3JlYXRlKFN0cmluZyB7IGNsYXNzX2dldE5h
bWUob2JqZWN0Q2xhc3MpIH0pKTsKKyAgICBlbmNvZGVyLT5fY3VycmVudERpY3Rpb25hcnktPnNl
dChjbGFzc05hbWVLZXksIEFQSTo6U3RyaW5nOjpjcmVhdGUoU3RyaW5nOjpmcm9tTGF0aW4xKGNs
YXNzX2dldE5hbWUob2JqZWN0Q2xhc3MpKSkpOwogCiAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZD
bGFzczpbTlNJbnZvY2F0aW9uIGNsYXNzXV0pIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBzcGVj
aWFsIGNhc2UgTlNJbnZvY2F0aW9uIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gZW5jb2RlIHRoZSB0
YXJnZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVt
b3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXggNTk2OTdlMjYyZDk5M2Y1Mjk4YmQzOGUxZmMz
ZGUzZDE2OTk4Y2MwZi4uYTc2ZmQ3YWI3NTg4NjY0MGM3NTU4NmU5ZjU1ZjMxNGJjNjQ5NmNhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1v
dGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTYyLDcgKzE2Miw3IEBAIC0gKHZvaWQpX3NlbmRJbnZv
Y2F0aW9uOihOU0ludm9jYXRpb24gKilpbnZvY2F0aW9uIGludGVyZmFjZTooX1dLUmVtb3RlT2Jq
ZWN0SW50CiAgICAgICAgIGlmIChzdHJjbXAoW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdp
dGhPYmpDVHlwZXM6cmVwbHlCbG9ja1NpZ25hdHVyZV0ubWV0aG9kUmV0dXJuVHlwZSwgInYiKSkK
ICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlv
biBmb3JtYXQ6QCJSZXR1cm4gdmFsdWUgb2YgYmxvY2sgYXJndW1lbnQgbXVzdCBiZSAndm9pZCcu
ICglcykiLCBzZWxfZ2V0TmFtZShpbnZvY2F0aW9uLnNlbGVjdG9yKV07CiAKLSAgICAgICAgcmVw
bHlJbmZvID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb246OlJlcGx5
SW5mbz4oZ2VuZXJhdGVSZXBseUlkZW50aWZpZXIoKSwgU3RyaW5nIHsgcmVwbHlCbG9ja1NpZ25h
dHVyZSB9KTsKKyAgICAgICAgcmVwbHlJbmZvID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlbW90ZU9i
amVjdEludm9jYXRpb246OlJlcGx5SW5mbz4oZ2VuZXJhdGVSZXBseUlkZW50aWZpZXIoKSwgU3Ry
aW5nOjpmcm9tTGF0aW4xKHJlcGx5QmxvY2tTaWduYXR1cmUpKTsKIAogICAgICAgICAvLyBSZXBs
YWNlIHRoZSBibG9jayBvYmplY3Qgc28gd2Ugd29uJ3QgdHJ5IHRvIGVuY29kZSBpdC4KICAgICAg
ICAgaWQgbnVsbCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KaW5kZXggZjYxYjdmNDQ5YzdiZDA2NTAxYTRlZjA4
NmI1YTkxMTI4ZmE5YWJhMi4uOTQyYWE5NzhiNzZhOWE5ZjgxNTM2MzAyNDNiNTEzYWU4Y2RiOTNk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lv
bkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNp
b25Db2NvYS5tbQpAQCAtMjk5LDcgKzI5OSw3IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShTdHJpbmdWaWV3IHByZWZpeCwgVHlwZSB0eXBlCiAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGNyZWF0ZSBhIHNhbmRib3ggZXh0ZW5zaW9u
IGZvciB0ZW1wb3JhcnkgZmlsZSAnJXMnIiwgcGF0aC5kYXRhKCkpOwogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KLSAgICByZXR1cm4ge3sgV1RGTW92ZShoYW5kbGUpLCBTdHJp
bmcocGF0aC5kYXRhKCkpIH19OworICAgIHJldHVybiB7IHsgV1RGTW92ZShoYW5kbGUpLCBTdHJp
bmc6OmZyb21MYXRpbjEocGF0aC5kYXRhKCkpIH0gfTsKIH0KIAogYXV0byBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBleHRlbnNp
b25DbGFzcykgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vydmlj
ZUVudHJ5UG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVz
L0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0KaW5kZXggNDI2MDQyNjA5
Y2ZmOGQxOTA4NDhkZmEzOGQxMDc5YmQ3ZjgyNWRhYi4uY2I3MjQwZDg1ZDI1ZTE3MzFjM2Q0NmVi
MzZhZTdjZjc2ODY0OGU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQ
b2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vy
dmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQpAQCAtNzgsNyArNzgsNyBAQCBib29sIFhQQ1Nl
cnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRDbGllbnRJZGVudGlmaWVyKFN0cmluZyYgY2xp
ZW50SWRlbnRpZmllcgogCiBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRD
bGllbnRCdW5kbGVJZGVudGlmaWVyKFN0cmluZyYgY2xpZW50QnVuZGxlSWRlbnRpZmllcikKIHsK
LSAgICBjbGllbnRCdW5kbGVJZGVudGlmaWVyID0gU3RyaW5nIHsgeHBjX2RpY3Rpb25hcnlfZ2V0
X3N0cmluZyhtX2luaXRpYWxpemVyTWVzc2FnZSwgImNsaWVudC1idW5kbGUtaWRlbnRpZmllciIp
IH07CisgICAgY2xpZW50QnVuZGxlSWRlbnRpZmllciA9IFN0cmluZzo6ZnJvbUxhdGluMSh4cGNf
ZGljdGlvbmFyeV9nZXRfc3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiY2xpZW50LWJ1bmRs
ZS1pZGVudGlmaWVyIikpOwogICAgIHJldHVybiAhY2xpZW50QnVuZGxlSWRlbnRpZmllci5pc0Vt
cHR5KCk7CiB9CiAKQEAgLTExMSw3ICsxMTEsNyBAQCBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXpl
ckRlbGVnYXRlOjpnZXRQcm9jZXNzSWRlbnRpZmllcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZgog
CiBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRDbGllbnRQcm9jZXNzTmFt
ZShTdHJpbmcmIGNsaWVudFByb2Nlc3NOYW1lKQogewotICAgIGNsaWVudFByb2Nlc3NOYW1lID0g
U3RyaW5nIHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhtX2luaXRpYWxpemVyTWVzc2FnZSwg
InVpLXByb2Nlc3MtbmFtZSIpIH07CisgICAgY2xpZW50UHJvY2Vzc05hbWUgPSBTdHJpbmc6OmZy
b21MYXRpbjEoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhtX2luaXRpYWxpemVyTWVzc2FnZSwg
InVpLXByb2Nlc3MtbmFtZSIpKTsKICAgICByZXR1cm4gIWNsaWVudFByb2Nlc3NOYW1lLmlzRW1w
dHkoKTsKIH0KIApAQCAtMTE5LDMwICsxMTksMzAgQEAgYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6
ZXJEZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlvbkRhdGEoSGFzaE1hcDxTdHJpbmcsIFMK
IHsKICAgICB4cGNfb2JqZWN0X3QgZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0ID0g
eHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiZXh0cmEtaW5p
dGlhbGl6YXRpb24tZGF0YSIpOwogCi0gICAgU3RyaW5nIGluc3BlY3RvclByb2Nlc3MgeyB4cGNf
ZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwg
Imluc3BlY3Rvci1wcm9jZXNzIikgfTsKKyAgICBhdXRvIGluc3BlY3RvclByb2Nlc3MgPSBTdHJp
bmc6OmZyb21MYXRpbjEoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFs
aXphdGlvbkRhdGFPYmplY3QsICJpbnNwZWN0b3ItcHJvY2VzcyIpKTsKICAgICBpZiAoIWluc3Bl
Y3RvclByb2Nlc3MuaXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxpemF0aW9uRGF0YS5h
ZGQoImluc3BlY3Rvci1wcm9jZXNzIl9zLCBpbnNwZWN0b3JQcm9jZXNzKTsKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICBTdHJpbmcgc2VydmljZVdvcmtlclByb2Nlc3MgeyB4cGNf
ZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwg
InNlcnZpY2Utd29ya2VyLXByb2Nlc3MiKSB9OworICAgIGF1dG8gc2VydmljZVdvcmtlclByb2Nl
c3MgPSBTdHJpbmc6OmZyb21MYXRpbjEoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURh
dGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJzZXJ2aWNlLXdvcmtlci1wcm9jZXNzIikpOwog
ICAgIGlmICghc2VydmljZVdvcmtlclByb2Nlc3MuaXNFbXB0eSgpKQogICAgICAgICBleHRyYUlu
aXRpYWxpemF0aW9uRGF0YS5hZGQoInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiX3MsIFdURk1vdmUo
c2VydmljZVdvcmtlclByb2Nlc3MpKTsKLSAgICBTdHJpbmcgcmVnaXN0cmFibGVEb21haW4geyB4
cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVj
dCwgInJlZ2lzdHJhYmxlLWRvbWFpbiIpIH07CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9
IFN0cmluZzo6ZnJvbUxhdGluMSh4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUlu
aXRpYWxpemF0aW9uRGF0YU9iamVjdCwgInJlZ2lzdHJhYmxlLWRvbWFpbiIpKTsKICAgICBpZiAo
IXJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSkKICAgICAgICAgZXh0cmFJbml0aWFsaXphdGlv
bkRhdGEuYWRkKCJyZWdpc3RyYWJsZS1kb21haW4iX3MsIFdURk1vdmUocmVnaXN0cmFibGVEb21h
aW4pKTsKICNlbmRpZgogCi0gICAgU3RyaW5nIGlzUHJld2FybWVkUHJvY2VzcyB7IHhwY19kaWN0
aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiaXMt
cHJld2FybWVkIikgfTsKKyAgICBhdXRvIGlzUHJld2FybWVkUHJvY2VzcyA9IFN0cmluZzo6ZnJv
bUxhdGluMSh4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9u
RGF0YU9iamVjdCwgImlzLXByZXdhcm1lZCIpKTsKICAgICBpZiAoIWlzUHJld2FybWVkUHJvY2Vz
cy5pc0VtcHR5KCkpCiAgICAgICAgIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgiaXMtcHJl
d2FybWVkIl9zLCBpc1ByZXdhcm1lZFByb2Nlc3MpOwogCiAgICAgaWYgKCFpc0NsaWVudFNhbmRi
b3hlZCgpKSB7Ci0gICAgICAgIFN0cmluZyB1c2VyRGlyZWN0b3J5U3VmZml4IHsgeHBjX2RpY3Rp
b25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJ1c2Vy
LWRpcmVjdG9yeS1zdWZmaXgiKSB9OworICAgICAgICBhdXRvIHVzZXJEaXJlY3RvcnlTdWZmaXgg
PSBTdHJpbmc6OmZyb21MYXRpbjEoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJ
bml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgiKSk7CiAgICAg
ICAgIGlmICghdXNlckRpcmVjdG9yeVN1ZmZpeC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBleHRy
YUluaXRpYWxpemF0aW9uRGF0YS5hZGQoInVzZXItZGlyZWN0b3J5LXN1ZmZpeCJfcywgdXNlckRp
cmVjdG9yeVN1ZmZpeCk7CiAgICAgfQogCi0gICAgU3RyaW5nIGFsd2F5c1J1bnNBdEJhY2tncm91
bmRQcmlvcml0eSB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6
YXRpb25EYXRhT2JqZWN0LCAiYWx3YXlzLXJ1bnMtYXQtYmFja2dyb3VuZC1wcmlvcml0eSIpIH07
CisgICAgYXV0byBhbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkgPSBTdHJpbmc6OmZyb21M
YXRpbjEoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRh
dGFPYmplY3QsICJhbHdheXMtcnVucy1hdC1iYWNrZ3JvdW5kLXByaW9yaXR5IikpOwogICAgIGlm
ICghYWx3YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5LmlzRW1wdHkoKSkKICAgICAgICAgZXh0
cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJhbHdheXMtcnVucy1hdC1iYWNrZ3JvdW5kLXByaW9y
aXR5Il9zLCBhbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2Uv
WFBDU2VydmljZU1haW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0
aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KaW5kZXggMTA4Y2IwOGFhYjhl
NmU1MTg1YWE1MWFiYjBiNmRmMmI1MzQ0MTM2NC4uZjFjZjQ5ZDgzNmI4OGI3NDkyNjc0ODNkNjg0
ZWQ3ZTk5OTEyZjZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENT
ZXJ2aWNlTWFpbi5tbQpAQCAtMjAzLDcgKzIwMyw3IEBAIGludCBYUENTZXJ2aWNlTWFpbihpbnQs
IGNvbnN0IGNoYXIqKikKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2VuZGlmCi0gICAgICAg
IFN0cmluZyB3ZWJLaXRCdW5kbGVWZXJzaW9uIHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhi
b290c3RyYXAuZ2V0KCksICJXZWJLaXRCdW5kbGVWZXJzaW9uIikgfTsKKyAgICAgICAgYXV0byB3
ZWJLaXRCdW5kbGVWZXJzaW9uID0gU3RyaW5nOjpmcm9tTGF0aW4xKHhwY19kaWN0aW9uYXJ5X2dl
dF9zdHJpbmcoYm9vdHN0cmFwLmdldCgpLCAiV2ViS2l0QnVuZGxlVmVyc2lvbiIpKTsKICAgICAg
ICAgU3RyaW5nIGV4cGVjdGVkQnVuZGxlVmVyc2lvbiA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRl
bnRpZmllcjpAImNvbS5hcHBsZS5XZWJLaXQiXS5pbmZvRGljdGlvbmFyeVsoX19icmlkZ2UgTlNT
dHJpbmcgKilrQ0ZCdW5kbGVWZXJzaW9uS2V5XTsKICAgICAgICAgaWYgKCF3ZWJLaXRCdW5kbGVW
ZXJzaW9uLmlzTnVsbCgpICYmICFleHBlY3RlZEJ1bmRsZVZlcnNpb24uaXNOdWxsKCkgJiYgd2Vi
S2l0QnVuZGxlVmVyc2lvbiAhPSBleHBlY3RlZEJ1bmRsZVZlcnNpb24pIHsKICAgICAgICAgICAg
IGF1dG8gZXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiV2ViS2l0IGZyYW1ld29yayB2ZXJzaW9u
IG1pc21hdGNoOiAiLCB3ZWJLaXRCdW5kbGVWZXJzaW9uLCAiICE9ICIsIGV4cGVjdGVkQnVuZGxl
VmVyc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IGQ3ZmQxYTY4MzYzMmU5
MWI1Njg1ZTczMjRkZWZkYTU3Nzk0OGIxZDUuLmFjNjRlZjM0ZDZmZWU4MDNmOGY2YTg2ZjMyZjk4
ODYwNjdlYzA0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0zMTUsNyArMzE1
LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBnZXRBbGxMb2NhbEF1dGhlbnRpY2F0b3JD
cmVkZW50aWFsc0ltcGwoTlNTdHJpbmcgKmFjY2UKICsgKE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+
ICopZ2V0QWxsTG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbHMKIHsKICNpZiBFTkFCTEUoV0VC
X0FVVEhOKQotICAgIHJldHVybiBnZXRBbGxMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsc0lt
cGwoU3RyaW5nKFdlYkNvcmU6OkxvY2FsQXV0aGVudGljYXRvckFjY2Vzc0dyb3VwKSkuYXV0b3Jl
bGVhc2UoKTsKKyAgICByZXR1cm4gZ2V0QWxsTG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbHNJ
bXBsKEAoV2ViQ29yZTo6TG9jYWxBdXRoZW50aWNhdG9yQWNjZXNzR3JvdXApKS5hdXRvcmVsZWFz
ZSgpOwogI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAwNjZiOGIwNTU3M2JhYzYwMGQ0
ZGY0MTAwNGU2MjJmMDBmZmY5MzJjLi5jZDI3NDc2OWY4NzY2OWJjZjM0ZWY3ZjljMjRhMThhZWU0
OGExOWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQpAQCAtMTkwMCw3ICsxOTAwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2hvd1NhZmVCcm93c2lu
Z1dhcm5pbmcoY29uc3QgU2FmZUJyb3dzaW5nV2FybmluZyYgd2FybmluZywgQ28KICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKENvbnRpbnVlVW5zYWZlTG9hZDo6WWVzKTsKIAogICAg
IFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpWYWx1ZURpY3Rpb25hcnkgc2hvd2Vk
V2FybmluZ0RpY3Rpb25hcnk7Ci0gICAgc2hvd2VkV2FybmluZ0RpY3Rpb25hcnkuc2V0KCJzb3Vy
Y2UiX3MsIFN0cmluZygic2VydmljZSIpKTsKKyAgICBzaG93ZWRXYXJuaW5nRGljdGlvbmFyeS5z
ZXQoInNvdXJjZSJfcywgInNlcnZpY2UiX3N0cik7CiAKICAgICBtX3BhZ2UtPmxvZ0RpYWdub3N0
aWNNZXNzYWdlV2l0aFZhbHVlRGljdGlvbmFyeSgiU2FmZUJyb3dzaW5nLlNob3dlZFdhcm5pbmci
X3MsICJTYWZhcmkiX3MsIHNob3dlZFdhcm5pbmdEaWN0aW9uYXJ5LCBXZWJDb3JlOjpTaG91bGRT
YW1wbGU6Ok5vKTsKIApAQCAtMTkxNSw3ICsxOTE1LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2hv
d1NhZmVCcm93c2luZ1dhcm5pbmcoY29uc3QgU2FmZUJyb3dzaW5nV2FybmluZyYgd2FybmluZywg
Q28KICAgICAgICAgYm9vbCBmb3JNYWluRnJhbWVOYXZpZ2F0aW9uID0gW3dlYWtUaGlzLT5tX3Nh
ZmVCcm93c2luZ1dhcm5pbmcgZm9yTWFpbkZyYW1lTmF2aWdhdGlvbl07CiAKICAgICAgICAgV2Vi
Q29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OlZhbHVlRGljdGlvbmFyeSBkaWN0aW9uYXJ5
OwotICAgICAgICBkaWN0aW9uYXJ5LnNldCgic291cmNlIl9zLCBTdHJpbmcoInNlcnZpY2UiKSk7
CisgICAgICAgIGRpY3Rpb25hcnkuc2V0KCJzb3VyY2UiX3MsICJzZXJ2aWNlIl9zdHIpOwogICAg
ICAgICBpZiAobmF2aWdhdGVzRnJhbWUgJiYgZm9yTWFpbkZyYW1lTmF2aWdhdGlvbikgewogICAg
ICAgICAgICAgLy8gVGhlIHNhZmUgYnJvd3Npbmcgd2FybmluZyB3aWxsIGJlIGhpZGRlbiBvbmNl
IHRoZSBuZXh0IHBhZ2UgaXMgc2hvd24uCiAgICAgICAgICAgICBib29sIGNvbnRpbnVpbmdVbnNh
ZmVMb2FkID0gV1RGOjpzd2l0Y2hPbihyZXN1bHQsCkBAIC0xOTI0LDE1ICsxOTI0LDE1IEBAIHZv
aWQgV2ViVmlld0ltcGw6OnNob3dTYWZlQnJvd3NpbmdXYXJuaW5nKGNvbnN0IFNhZmVCcm93c2lu
Z1dhcm5pbmcmIHdhcm5pbmcsIENvCiAgICAgICAgICAgICApOwogCiAgICAgICAgICAgICBpZiAo
Y29udGludWluZ1Vuc2FmZUxvYWQpCi0gICAgICAgICAgICAgICAgZGljdGlvbmFyeS5zZXQoImFj
dGlvbiJfcywgU3RyaW5nKCJ2aXNpdCB3ZWJzaXRlIikpOworICAgICAgICAgICAgICAgIGRpY3Rp
b25hcnkuc2V0KCJhY3Rpb24iX3MsICJ2aXNpdCB3ZWJzaXRlIl9zdHIpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIGRpY3Rpb25hcnkuc2V0KCJhY3Rpb24iX3MsIFN0cmluZygi
cmVkaXJlY3QgdG8gdXJsIikpOworICAgICAgICAgICAgICAgIGRpY3Rpb25hcnkuc2V0KCJhY3Rp
b24iX3MsICJyZWRpcmVjdCB0byB1cmwiX3N0cik7CiAKICAgICAgICAgICAgIHdlYWtUaGlzLT5t
X3BhZ2UtPmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlRGljdGlvbmFyeSgiU2FmZUJyb3dz
aW5nLlBlcmZvcm1lZEFjdGlvbiJfcywgIlNhZmFyaSJfcywgZGljdGlvbmFyeSwgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlOjpObyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBkaWN0aW9uYXJ5LnNldCgiYWN0aW9uIl9zLCBTdHJpbmcoImdvIGJhY2siKSk7CisgICAg
ICAgIGRpY3Rpb25hcnkuc2V0KCJhY3Rpb24iX3MsICJnbyBiYWNrIl9zKTsKICAgICAgICAgd2Vh
a1RoaXMtPm1fcGFnZS0+bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWVEaWN0aW9uYXJ5KCJT
YWZlQnJvd3NpbmcuUGVyZm9ybWVkQWN0aW9uIl9zLCAiU2FmYXJpIl9zLCBkaWN0aW9uYXJ5LCBX
ZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKIAogICAgICAgICBpZiAoIW5hdmlnYXRlc0ZyYW1l
ICYmIHdlYWtUaGlzLT5tX3NhZmVCcm93c2luZ1dhcm5pbmcgJiYgIWZvck1haW5GcmFtZU5hdmln
YXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2Nv
Y29hL1Byb2Nlc3NMYXVuY2hlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1
bmNoZXIvY29jb2EvUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0KaW5kZXggZDhmMGVjYWVlMzNhZWJi
MzI0ZTEyYTY3N2ZjNjJiNzQyM2ZhMWU4Yi4uNDllYTlmZjNlMjU3MjVhYTlmMDFlZGQ2ZTg3ZjBm
ZTNmMzMwNWQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
Y29jb2EvUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTGF1bmNoZXIvY29jb2EvUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0KQEAgLTIzNyw3ICsyMzcs
NyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAKICAgICB4cGNfZGlj
dGlvbmFyeV9zZXRfdmFsdWUoYm9vdHN0cmFwTWVzc2FnZS5nZXQoKSwgImV4dHJhLWluaXRpYWxp
emF0aW9uLWRhdGEiLCBleHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQoKSk7CiAKLSAgICBhdXRv
IGVycm9ySGFuZGxlckltcGwgPSBbd2Vha1Byb2Nlc3NMYXVuY2hlciA9IFdlYWtQdHIgeyAqdGhp
cyB9LCBsaXN0ZW5pbmdQb3J0LCBsb2dOYW1lID0gU3RyaW5nKG5hbWUpXSAoeHBjX29iamVjdF90
IGV2ZW50KSB7CisgICAgYXV0byBlcnJvckhhbmRsZXJJbXBsID0gW3dlYWtQcm9jZXNzTGF1bmNo
ZXIgPSBXZWFrUHRyIHsgKnRoaXMgfSwgbGlzdGVuaW5nUG9ydCwgbG9nTmFtZSA9IENTdHJpbmco
bmFtZSldICh4cGNfb2JqZWN0X3QgZXZlbnQpIHsKICAgICAgICAgQVNTRVJUKCFldmVudCB8fCB4
cGNfZ2V0X3R5cGUoZXZlbnQpID09IFhQQ19UWVBFX0VSUk9SKTsKIAogICAgICAgICBhdXRvIHBy
b2Nlc3NMYXVuY2hlciA9IHdlYWtQcm9jZXNzTGF1bmNoZXIuZ2V0KCk7CkBAIC0yNTIsOSArMjUy
LDkgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogI2VuZGlmCiAKICAg
ICAgICAgaWYgKGV2ZW50KQotICAgICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciB3aGlsZSBsYXVu
Y2hpbmcgJXM6ICVzIiwgbG9nTmFtZS51dGY4KCkuZGF0YSgpLCB4cGNfZGljdGlvbmFyeV9nZXRf
c3RyaW5nKGV2ZW50LCBYUENfRVJST1JfS0VZX0RFU0NSSVBUSU9OKSk7CisgICAgICAgICAgICBM
T0dfRVJST1IoIkVycm9yIHdoaWxlIGxhdW5jaGluZyAlczogJXMiLCBsb2dOYW1lLmRhdGEoKSwg
eHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgWFBDX0VSUk9SX0tFWV9ERVNDUklQVElP
TikpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBMT0dfRVJST1IoIkVycm9yIHdoaWxlIGxh
dW5jaGluZyAlczogTm8geHBjX29iamVjdF90IGV2ZW50IGF2YWlsYWJsZS4iLCBsb2dOYW1lLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciB3aGlsZSBsYXVuY2hp
bmcgJXM6IE5vIHhwY19vYmplY3RfdCBldmVudCBhdmFpbGFibGUuIiwgbG9nTmFtZS5kYXRhKCkp
OwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgbWFjaF9wb3J0X3VyZWZzX3Qgc2VuZFJp
Z2h0Q291bnQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCmlu
ZGV4IDlkNWRkOGQzMTk4YzkxM2RkMzRjYTdjYzk0NTBjOTVjM2Y2MWI1ZDUuLjhmNGYwODY4ODVh
NGIzZGVkZjI4ZTkxM2JjZWFhNTA1MmJjZjBmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2Nh
bEF1dGhlbnRpY2F0b3IubW0KQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIExvY2FsQXV0aGVudGlj
YXRvcjo6Y2xlYXJBbGxDcmVkZW50aWFscygpCiAgICAgYXV0byBxdWVyeSA9IGFkb3B0TlMoW1tO
U011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgW3F1ZXJ5IHNldERpY3Rpb25h
cnk6QHsKICAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKLSAgICAgICAg
KGlkKWtTZWNBdHRyQWNjZXNzR3JvdXA6IChpZClTdHJpbmcoTG9jYWxBdXRoZW50aWNhdG9yQWNj
ZXNzR3JvdXApLAorICAgICAgICAoaWQpa1NlY0F0dHJBY2Nlc3NHcm91cDogKGlkKUAoTG9jYWxB
dXRoZW50aWNhdG9yQWNjZXNzR3JvdXApLAogICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0
aW9uS2V5Y2hhaW46IEBZRVMKICAgICB9XTsKICAgICB1cGRhdGVRdWVyeUlmTmVjZXNzYXJ5KHF1
ZXJ5LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbQppbmRleCBlNGU5
NzlmNDlkYTg4ZWY5MmNjMmQ2MjI2NjEzNWU5MTkwNDkwOGY5Li4yZDJhZDllMjk4ZGZiYzRiNjlk
ZTUwNjQyYTc5OGJiYmQ0NDhlMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9u
Lm1tCkBAIC0xNzAsNyArMTcwLDcgQEAgUmV0YWluUHRyPFNlY0tleVJlZj4gTG9jYWxDb25uZWN0
aW9uOjpjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShMQUNvbnRleHQgKmNvbnQKICAgICBSZXRh
aW5QdHIgcHJpdmF0ZUtleUF0dHJpYnV0ZXMgPSBAewogICAgICAgICAoaWQpa1NlY0F0dHJBY2Nl
c3NDb250cm9sOiAoaWQpYWNjZXNzQ29udHJvbFJlZiwKICAgICAgICAgKGlkKWtTZWNBdHRySXNQ
ZXJtYW5lbnQ6IEBZRVMsCi0gICAgICAgIChpZClrU2VjQXR0ckFjY2Vzc0dyb3VwOiAoaWQpU3Ry
aW5nKExvY2FsQXV0aGVudGljYXRvckFjY2Vzc0dyb3VwKSwKKyAgICAgICAgKGlkKWtTZWNBdHRy
QWNjZXNzR3JvdXA6IChpZClAKExvY2FsQXV0aGVudGljYXRvckFjY2Vzc0dyb3VwKSwKICAgICAg
ICAgKGlkKWtTZWNBdHRyTGFiZWw6IHNlY0F0dHJMYWJlbCwKICAgICAgICAgKGlkKWtTZWNBdHRy
QXBwbGljYXRpb25UYWc6IHNlY0F0dHJBcHBsaWNhdGlvblRhZywKICAgICB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggODU1YjNhN2QyZTA1YjBhMjZjODM2
ODQxZTlkYmMxNjYwMzY4ZGYyOS4uMGIyMmYwMGQxMWRmMWFiY2NlZjNjZjUyZjQ2M2U1YmVhZDQ3
OTZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNTM4
LDExICsyNTM4LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RBbGwoKQogc3RhdGljIHN0
ZDo6b3B0aW9uYWw8RE9NUGFzdGVBY2Nlc3NDYXRlZ29yeT4gcGFzdGVBY2Nlc3NDYXRlZ29yeUZv
ckNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSkKIHsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaE1hcDxTdHJpbmcsIERPTVBhc3RlQWNjZXNzQ2F0ZWdvcnksIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4+IHBhc3RlQ29tbWFuZE5hbWVzID0gSGFzaE1hcDxTdHJpbmcsIERP
TVBhc3RlQWNjZXNzQ2F0ZWdvcnksIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gewotICAgICAg
ICB7ICJQYXN0ZSIsIERPTVBhc3RlQWNjZXNzQ2F0ZWdvcnk6OkdlbmVyYWwgfSwKLSAgICAgICAg
eyAiUGFzdGVBbmRNYXRjaFN0eWxlIiwgRE9NUGFzdGVBY2Nlc3NDYXRlZ29yeTo6R2VuZXJhbCB9
LAotICAgICAgICB7ICJQYXN0ZUFzUXVvdGF0aW9uIiwgRE9NUGFzdGVBY2Nlc3NDYXRlZ29yeTo6
R2VuZXJhbCB9LAotICAgICAgICB7ICJQYXN0ZUFzUGxhaW5UZXh0IiwgRE9NUGFzdGVBY2Nlc3ND
YXRlZ29yeTo6R2VuZXJhbCB9LAotICAgICAgICB7ICJQYXN0ZUZvbnQiLCBET01QYXN0ZUFjY2Vz
c0NhdGVnb3J5OjpGb250cyB9LAorICAgICAgICB7ICJQYXN0ZSJfcywgRE9NUGFzdGVBY2Nlc3ND
YXRlZ29yeTo6R2VuZXJhbCB9LAorICAgICAgICB7ICJQYXN0ZUFuZE1hdGNoU3R5bGUiX3MsIERP
TVBhc3RlQWNjZXNzQ2F0ZWdvcnk6OkdlbmVyYWwgfSwKKyAgICAgICAgeyAiUGFzdGVBc1F1b3Rh
dGlvbiJfcywgRE9NUGFzdGVBY2Nlc3NDYXRlZ29yeTo6R2VuZXJhbCB9LAorICAgICAgICB7ICJQ
YXN0ZUFzUGxhaW5UZXh0Il9zLCBET01QYXN0ZUFjY2Vzc0NhdGVnb3J5OjpHZW5lcmFsIH0sCisg
ICAgICAgIHsgIlBhc3RlRm9udCJfcywgRE9NUGFzdGVBY2Nlc3NDYXRlZ29yeTo6Rm9udHMgfSwK
ICAgICB9OwogCiAgICAgYXV0byBpdCA9IHBhc3RlQ29tbWFuZE5hbWVzLT5maW5kKGNvbW1hbmRO
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAx
YjJiODUxZTk3MjRhYzUwZmUzOThmOTA0ZmIzZWM1N2FlNTA5YTA1Li43N2M0YmU3OTQzZDFiMDI0
MjJlNzY3NjI3OGMyMGY4YzA5NTNiMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCkBAIC02MzUsNyArNjM1LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiAg
ICAgaWYgKCFzX2ludmFsaWRNZXNzYWdlQ2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAg
IHNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKFN0cmlu
ZyB7IGRlc2NyaXB0aW9uKG1lc3NhZ2VOYW1lKSB9KS5wdHIoKSkpOworICAgIHNfaW52YWxpZE1l
c3NhZ2VDYWxsYmFjayh0b0FQSShBUEk6OlN0cmluZzo6Y3JlYXRlKFN0cmluZzo6ZnJvbUxhdGlu
MShkZXNjcmlwdGlvbihtZXNzYWdlTmFtZSkpKS5wdHIoKSkpOwogfQogCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjpyZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBhNDg5MWI5
MmRhZmNkNDY2NjQ4ZjE2ZGMxMzM2MjYwYWJmMTJjODc5Li42NzVlNzIzMzYxNjhiYzJmOGM4ZDIy
NmQwMTFkZjk0MjU2MDU0ODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTEyODQsMTMgKzEyODQsMTMgQEAgUGx1Z2luSW5m
byBQREZQbHVnaW46OnBsdWdpbkluZm8oKQogICAgIE1pbWVDbGFzc0luZm8gcGRmTWltZUNsYXNz
SW5mbzsKICAgICBwZGZNaW1lQ2xhc3NJbmZvLnR5cGUgPSAiYXBwbGljYXRpb24vcGRmIl9zOwog
ICAgIHBkZk1pbWVDbGFzc0luZm8uZGVzYyA9IHBkZkRvY3VtZW50VHlwZURlc2NyaXB0aW9uKCk7
Ci0gICAgcGRmTWltZUNsYXNzSW5mby5leHRlbnNpb25zLmFwcGVuZCgicGRmIik7CisgICAgcGRm
TWltZUNsYXNzSW5mby5leHRlbnNpb25zLmFwcGVuZCgicGRmIl9zKTsKICAgICBpbmZvLm1pbWVz
LmFwcGVuZChwZGZNaW1lQ2xhc3NJbmZvKTsKIAogICAgIE1pbWVDbGFzc0luZm8gdGV4dFBERk1p
bWVDbGFzc0luZm87CiAgICAgdGV4dFBERk1pbWVDbGFzc0luZm8udHlwZSA9ICJ0ZXh0L3BkZiJf
czsKICAgICB0ZXh0UERGTWltZUNsYXNzSW5mby5kZXNjID0gcGRmRG9jdW1lbnRUeXBlRGVzY3Jp
cHRpb24oKTsKLSAgICB0ZXh0UERGTWltZUNsYXNzSW5mby5leHRlbnNpb25zLmFwcGVuZCgicGRm
Iik7CisgICAgdGV4dFBERk1pbWVDbGFzc0luZm8uZXh0ZW5zaW9ucy5hcHBlbmQoInBkZiJfcyk7
CiAgICAgaW5mby5taW1lcy5hcHBlbmQodGV4dFBERk1pbWVDbGFzc0luZm8pOwogCiAgICAgcmV0
dXJuIGluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggODk0Mzg3OTlmOWMzMDY2M2Y3ZGQwYTZhYmRjNzI1
OGMzZjYyYzkwNy4uZjkwZWEwMDA3YmE2NzcxYjY4YTliOWM3MDExNmI0Yjg1YzgyYTdkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBh
Z2VDb2NvYS5tbQpAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQgV2ViUGFnZTo6aGFuZGxlQ2xpY2tG
b3JEYXRhRGV0ZWN0aW9uUmVzdWx0KGNvbnN0IERhdGFEZXRlY3RvckVsZW1lbnRJbmZvJiBpCiAK
IHN0YXRpYyBTdHJpbmcmIHJlcGxhY2VTZWxlY3Rpb25QYXN0ZWJvYXJkTmFtZSgpCiB7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc3RyaW5nKCJSZXBsYWNlU2VsZWN0aW9uUGFz
dGVib2FyZCIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHN0cmluZygiUmVw
bGFjZVNlbGVjdGlvblBhc3RlYm9hcmQiX3MpOwogICAgIHJldHVybiBzdHJpbmc7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAK
aW5kZXggZGI1YWE4ZTQwZDNkYmY2YWJiYzc0ZmZhMGFjYzA4YjJkZDJiNTZmNS4uMzRjOGRlNjI4
NGFmZjQzNjdlYTlmNmRmOWZkZDY5MDI2ZmFjM2U2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKQEAgLTE5ODMsMTcgKzE5ODMs
MTcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjcmVhdGVKU0FycmF5Rm9yQXJndW1lbnREZXNjcmlw
dGlvbnMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2wKICAgICAgICAgYXJndW1lbnRzQXJyYXktPnB1
dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgYXJndW1lbnRJbmRleCwganNEZXNjcmlwdGlvbnMp
OwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OmpzVERaVmFsdWUoKSk7
CiAKLSAgICAgICAganNEZXNjcmlwdGlvbnMtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAibmFtZSJfcyksIEpTQzo6anNTdHJpbmcodm0sIFN0cmluZyhkZXNj
cmlwdGlvbi5uYW1lKSkpOworICAgICAgICBqc0Rlc2NyaXB0aW9ucy0+cHV0RGlyZWN0KHZtLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJuYW1lIl9zKSwgSlNDOjpqc1N0cmluZyh2
bSwgU3RyaW5nOjpmcm9tTGF0aW4xKGRlc2NyaXB0aW9uLm5hbWUpKSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6anNURFpWYWx1ZSgpKTsKIAotICAgICAgICBqc0Rl
c2NyaXB0aW9ucy0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJ0eXBlIl9zKSwgSlNDOjpqc1N0cmluZyh2bSwgU3RyaW5nKGRlc2NyaXB0aW9uLnR5cGUpKSk7
CisgICAgICAgIGpzRGVzY3JpcHRpb25zLT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6OmpzU3RyaW5nKHZtLCBTdHJpbmc6OmZyb21M
YXRpbjEoZGVzY3JpcHRpb24udHlwZSkpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgSlNDOjpqc1REWlZhbHVlKCkpOwogCiAgICAgICAgIGpzRGVzY3JpcHRpb25zLT5wdXRE
aXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm9wdGlvbmFsIl9zKSwg
SlNDOjpqc0Jvb2xlYW4oZGVzY3JpcHRpb24uaXNPcHRpb25hbCkpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OmpzVERaVmFsdWUoKSk7CiAKICAgICAgICAgaWYgKGRl
c2NyaXB0aW9uLmVudW1OYW1lKSB7Ci0gICAgICAgICAgICBqc0Rlc2NyaXB0aW9ucy0+cHV0RGly
ZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVtIl9zKSwgSlNDOjpq
c1N0cmluZyh2bSwgU3RyaW5nKGRlc2NyaXB0aW9uLmVudW1OYW1lKSkpOworICAgICAgICAgICAg
anNEZXNjcmlwdGlvbnMtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiZW51bSJfcyksIEpTQzo6anNTdHJpbmcodm0sIFN0cmluZzo6ZnJvbUxhdGluMShkZXNj
cmlwdGlvbi5lbnVtTmFtZSkpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEpTQzo6anNURFpWYWx1ZSgpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNDEsNyArMjE0
MSw3IEBAIEpTQzo6SlNPYmplY3QqIEpTTWVzc2FnZUxpc3RlbmVyOjpqc0Rlc2NyaXB0aW9uRnJv
bURlY29kZXIoSlNDOjpKU0dsb2JhbE9iamVjdCoKICAgICBqc1Jlc3VsdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJuYW1lIl9zKSwgSlNDOjpKU1ZhbHVl
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAgICBqc1Jlc3VsdC0+cHV0RGly
ZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkZXNjcmlwdGlvbiJfcyks
IEpTQzo6anNTdHJpbmcodm0sIFN0cmluZyB7IElQQzo6ZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNz
YWdlTmFtZSgpKSB9KSk7CisgICAganNSZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVzY3JpcHRpb24iX3MpLCBKU0M6OmpzU3RyaW5nKHZtLCBT
dHJpbmc6OmZyb21MYXRpbjEoSVBDOjpkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkp
KSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCiAgICAganNS
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVz
dGluYXRpb25JRCJfcyksIEpTQzo6SlNWYWx1ZShkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFpbi5tbSBi
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW0KaW5kZXggYWZlNTA5
ZTIxNTAzMDMwZjA5YWFiZTMzNDg1NWM3YjAxYTEzZDk4OS4uYTQyM2E0MDlkZTZlNTBiMjI5MThk
MmRjYTVjMzcxMGNhMmU2N2U4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9X
ZWJQdXNoRGFlbW9uTWFpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hE
YWVtb25NYWluLm1tCkBAIC0xMzAsNyArMTMwLDcgQEAgaW50IFdlYlB1c2hEYWVtb25NYWluKGlu
dCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBTdHJpbmcg
bGlicmFyeVBhdGggPSBOU1NlYXJjaFBhdGhGb3JEaXJlY3Rvcmllc0luRG9tYWlucyhOU0xpYnJh
cnlEaXJlY3RvcnksIE5TVXNlckRvbWFpbk1hc2ssIFlFUylbMF07CiAgICAgICAgICAgICBTdHJp
bmcgcHVzaERhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dHMobGlicmFyeVBhdGgsIHsgIldlYktpdCJfcywgIldlYlB1c2giX3MsICJQdXNoRGF0YWJhc2Uu
ZGIiX3MgfSk7Ci0gICAgICAgICAgICA6OldlYlB1c2hEOjpEYWVtb246OnNpbmdsZXRvbigpLnN0
YXJ0UHVzaFNlcnZpY2UoU3RyaW5nIHsgaW5jb21pbmdQdXNoU2VydmljZU5hbWUgfSwgcHVzaERh
dGFiYXNlUGF0aCk7CisgICAgICAgICAgICA6OldlYlB1c2hEOjpEYWVtb246OnNpbmdsZXRvbigp
LnN0YXJ0UHVzaFNlcnZpY2UoU3RyaW5nOjpmcm9tTGF0aW4xKGluY29taW5nUHVzaFNlcnZpY2VO
YW1lKSwgcHVzaERhdGFiYXNlUGF0aCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgQ0ZSdW5Mb29w
UnVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0hpc3Rv
cnlQcm9wZXJ0eUxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0hpc3Rv
cnlQcm9wZXJ0eUxpc3QubW0KaW5kZXggNzk5YTdiNTk1MmIyYjg1Y2I3MGEwYjAwYzU2MmI5MDE3
ODZjMzM2Yy4uNTE4OGMyNjg4ODI4ZjI0MzRmMmI2OTMwNWQ3YmMyMWZjYzgwYjhhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9IaXN0b3J5UHJvcGVydHlMaXN0
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvSGlzdG9yeVByb3BlcnR5
TGlzdC5tbQpAQCAtMzMsMTIgKzMzLDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogc3Rh
dGljIGNvbnN0IGludCBjdXJyZW50RmlsZVZlcnNpb24gPSAxOwogCiBIaXN0b3J5UHJvcGVydHlM
aXN0V3JpdGVyOjpIaXN0b3J5UHJvcGVydHlMaXN0V3JpdGVyKCkKLSAgICA6IG1fZGlzcGxheVRp
dGxlS2V5KCJkaXNwbGF5VGl0bGUiKQotICAgICwgbV9sYXN0VmlzaXRXYXNGYWlsdXJlS2V5KCJs
YXN0VmlzaXRXYXNGYWlsdXJlIikKLSAgICAsIG1fbGFzdFZpc2l0ZWREYXRlS2V5KCJsYXN0Vmlz
aXRlZERhdGUiKQotICAgICwgbV9yZWRpcmVjdFVSTHNLZXkoInJlZGlyZWN0VVJMcyIpCi0gICAg
LCBtX3RpdGxlS2V5KCJ0aXRsZSIpCi0gICAgLCBtX3VybEtleSgiIikKKyAgICA6IG1fZGlzcGxh
eVRpdGxlS2V5KCJkaXNwbGF5VGl0bGUiX3MpCisgICAgLCBtX2xhc3RWaXNpdFdhc0ZhaWx1cmVL
ZXkoImxhc3RWaXNpdFdhc0ZhaWx1cmUiX3MpCisgICAgLCBtX2xhc3RWaXNpdGVkRGF0ZUtleSgi
bGFzdFZpc2l0ZWREYXRlIl9zKQorICAgICwgbV9yZWRpcmVjdFVSTHNLZXkoInJlZGlyZWN0VVJM
cyJfcykKKyAgICAsIG1fdGl0bGVLZXkoInRpdGxlIl9zKQorICAgICwgbV91cmxLZXkoZW1wdHlT
dHJpbmcoKSkKICAgICAsIG1fYnVmZmVyKDApCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCBiZmQ1ZDA5ZTk4YWRmNzM5YWI4ZjM3
N2JjYjdlNGQ1NGUyZTgwNzVmLi5kNmI1YjE5YmQ1YTgxYjhjMDQxZWFjNzJmMmQwZjY1ZTVmMzZm
MTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KQEAgLTI2NTAsNyArMjY1MCw3IEBAIC0gKFdlYkNvcmU6OkVkaXRvcjo6Q29tbWFuZCljb3Jl
Q29tbWFuZEJ5TmFtZTooY29uc3QgY2hhciopbmFtZQogICAgIGF1dG8qIGNvcmVGcmFtZSA9IGNv
cmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpFZGl0b3I6OkNvbW1hbmQoKTsKLSAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3Io
KS5jb21tYW5kKFN0cmluZyB7IG5hbWUgfSk7CisgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9y
KCkuY29tbWFuZChTdHJpbmc6OmZyb21MYXRpbjEobmFtZSkpOwogfQogCiAtICh2b2lkKWV4ZWN1
dGVDb3JlQ29tbWFuZEJ5U2VsZWN0b3I6KFNFTClzZWxlY3RvcgpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhkNzQ4ZGJmMTUwNmIwOGNiZTJiYzA5
MmQzYjVkNDNlYjg3YjYyNDQuLjRiNTcxYjg0MjdlNTY5ZDAyMDg2MmMxMzRiNGJmMTY3NGQ3ODhi
ZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNiBAQAorMjAyMi0wNC0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFJlcGxhY2UgZGVwcmVjYXRlZCBTdHJpbmcoY29uc3QgY2hhciopIHdpdGgg
U3RyaW5nOjpmcm9tTGF0aW4xKCkgaW4gbW9yZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODkyNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5j
cHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRBY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAg
IChoYW5kbGVDb250cm9sQ29tbWFuZCk6CisgICAgICAgIChjaGFuZ2VXaW5kb3dTY2FsZUlmTmVl
ZGVkKToKKyAgICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0JPUlJlYWRlclRlc3QuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjp3YWl0Rm9yUG9z
dER1bXBXYXRjaGRvZ1RpbWVyRmlyZWQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29j
b2EvQ3Jhc2hSZXBvcnRlckluZm8ubW06CisgICAgICAgIChXVFI6OnRlc3RQYXRoRnJvbVVSTCk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1t
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y29jb2FQbGF0Zm9ybUluaXRpYWxpemUp
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y29jb2FSZXNldFN0YXRlVG9Db25zaXN0
ZW50VmFsdWVzKToKKwogMjAyMi0wNC0wNiAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1QGFwcGxlLmNv
bT4KIAogICAgICAgICBVc2UgJ29wZW4nIGNvbW1hbmQgb24gbWFjT1MgdG8gbGF1bmNoIFVSTCBz
aG91bGQgcGFzcyBTYWZhcmkgYXBwIGJ1bmRsZSBpbnN0ZWFkIG9mIGJpbmFyeQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCBjNWIxYTUwZmRkMTk3NWNiZDEwOGRiNmEyZDU3MDg3
Y2I4YzMyYTQxLi44NmUwNmVmMTUyMTE0NTk5MmI1NTYwNWQ0NmJlNWZjYWNjZmZmYjJjIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMjIxOCw3ICsyMjE4LDcgQEAgdm9pZCBU
ZXN0UnVubmVyOjpzZXRBY2N1bW11bGF0ZUxvZ3NGb3JDaGFubmVsKEpTU3RyaW5nUmVmIGNoYW5u
ZWwpCiAgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4obWF4TGVuZ3RoICsg
MSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhjaGFubmVsLCBidWZmZXIuZ2V0KCksIG1h
eExlbmd0aCArIDEpOwogCi0gICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRMb2dDaGFubmVsVG9B
Y2N1bXVsYXRlKFN0cmluZyB7IGJ1ZmZlci5nZXQoKSB9KTsKKyAgICBXZWJDb3JlVGVzdFN1cHBv
cnQ6OnNldExvZ0NoYW5uZWxUb0FjY3VtdWxhdGUoU3RyaW5nOjpmcm9tTGF0aW4xKGJ1ZmZlci5n
ZXQoKSkpOwogfQogCiB1c2luZyBDYWxsYmFja01hcCA9IFdURjo6SGFzaE1hcDx1bnNpZ25lZCwg
SlNPYmplY3RSZWY+OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
CmluZGV4IGZiNTY5OWJjMjcwYWQ5ZjE0N2MxNGY1ZWVkZWUyNGE1NTc0ZWE3MGEuLmJlYTE0OWNm
MTg3YTc5NmZjZmMxMmM3NWE0M2Y1Y2ZmMWI0OTM1OWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTEwNDYsNyArMTA0Niw3IEBAIHN0YXRpYyBib29s
IGhhbmRsZUNvbnRyb2xDb21tYW5kKGNvbnN0IGNoYXIqIGNvbW1hbmQpCiB7CiAgICAgaWYgKCFz
dHJuY21wKCIjQ0hFQ0sgRk9SIFdPUkxEIExFQUtTIiwgY29tbWFuZCwgMjIpIHx8ICFzdHJuY21w
KCIjTElTVCBDSElMRCBQUk9DRVNTRVMiLCBjb21tYW5kLCAyMSkpIHsKICAgICAgICAgLy8gRHVt
cFJlbmRlclRyZWUgZG9lcyBub3Qgc3VwcG9ydCBjaGVja2luZyBmb3Igd29ybGQgbGVha3Mgb3Ig
bGlzdGluZyBjaGlsZCBwcm9jZXNzZXMuCi0gICAgICAgIFdURjo6U3RyaW5nIHJlc3VsdCgiXG4i
KTsKKyAgICAgICAgV1RGOjpTdHJpbmcgcmVzdWx0KCJcbiJfcyk7CiAgICAgICAgIHVuc2lnbmVk
IHJlc3VsdExlbmd0aCA9IHJlc3VsdC5sZW5ndGgoKTsKICAgICAgICAgcHJpbnRmKCJDb250ZW50
LVR5cGU6IHRleHQvcGxhaW5cbiIpOwogICAgICAgICBwcmludGYoIkNvbnRlbnQtTGVuZ3RoOiAl
dVxuIiwgcmVzdWx0TGVuZ3RoKTsKQEAgLTE0OTksNyArMTQ5OSw3IEBAIHN0YXRpYyB2b2lkIGR1
bXBCYWNrRm9yd2FyZExpc3RGb3JXZWJWaWV3KFdlYlZpZXcgKnZpZXcpCiAjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiBzdGF0aWMgdm9pZCBjaGFuZ2VXaW5kb3dTY2FsZUlmTmVlZGVkKGNvbnN0
IGNoYXIqIHRlc3RQYXRoT3JVUkwpCiB7Ci0gICAgYXV0byBsb2NhbFBhdGhPclVSTCA9IFN0cmlu
Zyh0ZXN0UGF0aE9yVVJMKTsKKyAgICBhdXRvIGxvY2FsUGF0aE9yVVJMID0gU3RyaW5nOjpmcm9t
VVRGOCh0ZXN0UGF0aE9yVVJMKTsKICAgICBmbG9hdCBjdXJyZW50U2NhbGVGYWN0b3IgPSBbW1tt
YWluRnJhbWUgd2ViVmlld10gd2luZG93XSBiYWNraW5nU2NhbGVGYWN0b3JdOwogICAgIGZsb2F0
IHJlcXVpcmVkU2NhbGVGYWN0b3IgPSAxOwogICAgIGlmIChsb2NhbFBhdGhPclVSTC5jb250YWlu
c0lnbm9yaW5nQVNDSUlDYXNlKCIvaGlkcGktM3gtIikpCkBAIC0xODAzLDcgKzE4MDMsNyBAQCBz
dGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZShjb25zdCBXVFI6OlRlc3RP
cHRpb25zJiBvcHRpb25zLCBSZXNldAogICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJv
YXJkXSBkZWNsYXJlVHlwZXM6QFtOU1N0cmluZ1Bib2FyZFR5cGVdIG93bmVyOm5pbF07CiAjZW5k
aWYKIAotICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdl
VHlwZXNGb3JUZXN0aW5nKFN0cmluZyB7IG9wdGlvbnMuYWRkaXRpb25hbFN1cHBvcnRlZEltYWdl
VHlwZXMoKS5jX3N0cigpIH0pOworICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0QWRkaXRpb25h
bFN1cHBvcnRlZEltYWdlVHlwZXNGb3JUZXN0aW5nKFN0cmluZzo6ZnJvbUxhdGluMShvcHRpb25z
LmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKCkuY19zdHIoKSkpOwogCiAgICAgW21haW5G
cmFtZSBfY2xlYXJPcGVuZXJdOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ0JPUlJlYWRlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0NCT1JSZWFkZXJUZXN0LmNwcAppbmRleCA2NjMzMmU5ZTFlZmJmYmM2MzBmNDcw
ZGY4MjYzNTA0YzZjMjA3MGIwLi40NGY3OTE3YWRiZWEwYmZmOGJiOGVmNDMwYTk5Y2FmODM0NWFh
MzI1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0JPUlJl
YWRlclRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQk9S
UmVhZGVyVGVzdC5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCBURVNUKENCT1JSZWFkZXJUZXN0LCBU
ZXN0UmVhZFN0cmluZ1dpdGhOVUwpCiAgICAgICAgIGNvbnN0IFN0cmluZyB2YWx1ZTsKICAgICAg
ICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+IGNib3JEYXRhOwogICAgIH0ga1N0cmluZ1Rlc3RDYXNl
c1tdID0gewotICAgICAgICB7IFN0cmluZygic3RyaW5nX3dpdGhvdXRfbnVsIiksCisgICAgICAg
IHsgInN0cmluZ193aXRob3V0X251bCJfc3RyLAogICAgICAgICAgICAgeyAweDcyLCAweDczLCAw
eDc0LCAweDcyLCAweDY5LCAweDZFLCAweDY3LCAweDVGLCAweDc3LCAweDY5LCAweDc0LCAweDY4
LAogICAgICAgICAgICAgICAgIDB4NkYsIDB4NzUsIDB4NzQsIDB4NUYsIDB4NkUsIDB4NzUsIDB4
NkMgfSB9LAogICAgICAgICB7IFN0cmluZygibnVsX3Rlcm1pbmF0ZWRfc3RyaW5nXDAiLCAyMiks
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDJiM2M1MGVl
ZmQ1NjVhY2E4NzlkNDE1MzM0ZmZjZDA5NTkyNDZkMTUuLjNiMmYyOGZiN2RiZDU0YmQwZTZhMDYw
ZDlhNTBmN2EzMGJjZmQyYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwCkBAIC0xNzA4LDcgKzE3MDgsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjp3YWl0Rm9y
UG9zdER1bXBXYXRjaGRvZ1RpbWVyRmlyZWQoKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGNo
YXIgYnVmZmVyWzEwMjRdOwogICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIj
UElEIFVOUkVTUE9OU0lWRSAtICVzIChwaWQgJWQpXG4iLCBnZXRwcm9nbmFtZSgpLCBnZXRwaWQo
KSk7Ci0gICAgb3V0cHV0VGV4dChTdHJpbmcgeyBidWZmZXIgfSk7CisgICAgb3V0cHV0VGV4dChT
dHJpbmc6OmZyb21MYXRpbjEoYnVmZmVyKSk7CiAjZW5kaWYKICAgICBkb25lKCk7CiB9CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL0NyYXNoUmVwb3J0ZXJJbmZvLm1t
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9DcmFzaFJlcG9ydGVySW5mby5tbQppbmRl
eCA0MTBkOWZkY2IzMWUyYzZlNmNhNzY0OTU2MTQ2MDYzOGMwOTEwNWViLi4xZjJmMTAwOTEzMmJi
ZmUwYWY5NmRkNGIxYWFjOGJkMzIwZjYzMTI4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NvY29hL0NyYXNoUmVwb3J0ZXJJbmZvLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvY29jb2EvQ3Jhc2hSZXBvcnRlckluZm8ubW0KQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGlj
IFN0cmluZyB0ZXN0UGF0aEZyb21VUkwoV0tVUkxSZWYgdXJsKQogICAgIFN0cmluZyBwYXRoU3Ry
aW5nKHBhdGhDRlN0cmluZy5nZXQoKSk7CiAgICAgCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHNjaGVtZVN0cmluZywgImZpbGUiKSkgewotICAgICAgICBTdHJpbmcgbGF5
b3V0VGVzdHMoIi9MYXlvdXRUZXN0cy8iKTsKKyAgICAgICAgU3RyaW5nIGxheW91dFRlc3RzKCIv
TGF5b3V0VGVzdHMvIl9zKTsKICAgICAgICAgc2l6ZV90IGxheW91dFRlc3RzT2Zmc2V0ID0gcGF0
aFN0cmluZy5maW5kKGxheW91dFRlc3RzKTsKICAgICAgICAgaWYgKGxheW91dFRlc3RzT2Zmc2V0
ID09IG5vdEZvdW5kKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IGRm
ODFmNGNkNzA5NjM0ZTE2YzlmOGE0OTFmYmQ5Mjc1NTQzODBhZjguLjA1OTBiZGZhMTRlZDk1MGY4
NGQwODQ3YTA4YzNhN2QxNGEyNTZhMzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTExMCw5ICsxMTAsOSBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjpjb2NvYVBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBPcHRpb25zJiBv
cHRpb25zKQogICAgIGlmICghZHVtcFJlbmRlclRyZWVUZW1wKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTdHJpbmcgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvbGRlciA9IFN0cmluZyhkdW1wUmVu
ZGVyVHJlZVRlbXApICsgJy8nICsgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiOworICAgIFN0cmlu
ZyByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9sZGVyID0gbWFrZVN0cmluZyhkdW1wUmVuZGVyVHJl
ZVRlbXAsICIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOwogICAgIFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRQYXRoOnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGb2xkZXIgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBl
cnJvcjogbmlsXTsKLSAgICBTdHJpbmcgZnVsbEJyb3dzaW5nU2Vzc2lvblJlc291cmNlTG9nID0g
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvbGRlciArICcvJyArICJmdWxsX2Jyb3dzaW5nX3Nlc3Np
b25fcmVzb3VyY2VMb2cucGxpc3QiOworICAgIFN0cmluZyBmdWxsQnJvd3NpbmdTZXNzaW9uUmVz
b3VyY2VMb2cgPSBtYWtlU3RyaW5nKHJlc291cmNlTG9hZFN0YXRpc3RpY3NGb2xkZXIsICIvZnVs
bF9icm93c2luZ19zZXNzaW9uX3Jlc291cmNlTG9nLnBsaXN0Iik7CiAgICAgTlNEaWN0aW9uYXJ5
ICpyZXNvdXJjZUxvZ1BsaXN0ID0gQHsgQCJ2ZXJzaW9uIjogQCgxKSB9OwogICAgIGlmICghW3Jl
c291cmNlTG9nUGxpc3Qgd3JpdGVUb0ZpbGU6ZnVsbEJyb3dzaW5nU2Vzc2lvblJlc291cmNlTG9n
IGF0b21pY2FsbHk6WUVTXSkKICAgICAgICAgV1RGQ3Jhc2goKTsKQEAgLTMyOCw3ICszMjgsNyBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpjb2NvYVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMo
Y29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbgogCiAgICAgW2dsb2JhbFdlYnNpdGVEYXRhU3RvcmVE
ZWxlZ2F0ZUNsaWVudCgpIHNldEFsbG93UmFpc2luZ1F1b3RhOllFU107CiAKLSAgICBXZWJDb3Jl
VGVzdFN1cHBvcnQ6OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9yVGVzdGluZyhT
dHJpbmcgeyBvcHRpb25zLmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKCkuY19zdHIoKSB9
KTsKKyAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5
cGVzRm9yVGVzdGluZyhTdHJpbmc6OmZyb21MYXRpbjEob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9y
dGVkSW1hZ2VUeXBlcygpLmNfc3RyKCkpKTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxh
dGZvcm1XaWxsUnVuVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdEludm9jYXRpb24pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456961</attachid>
            <date>2022-04-07 13:15:29 -0700</date>
            <delta_ts>2022-04-07 15:40:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238925-20220407131528.patch</filename>
            <type>text/plain</type>
            <size>40002</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDg5OWNmZDQ2NTU3N2ViZjFi
YjZkNDgxMzBmOWYxNDc5ODVlMTA0M2EuLjlhNjZiNzVmOWY5ZTZiMmQ3MDcyMzE5MmFlYzVhNGRh
ZGNmZjE5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjItMDQtMDcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGRlcHJlY2F0ZWQgU3Ry
aW5nKGNvbnN0IGNoYXIqKSB3aXRoIFN0cmluZzo6ZnJvbUxhdGluMSgpIGluIG1vcmUgcGxhY2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg5MjUK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VV
dGlsaXRpZXM6OnN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpDYWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKToKKyAgICAgICAgKiBTY3Jp
cHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVy
ZXMuY3BwLmVyYjoKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlBy
ZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5lcmI6CisgICAgICAgICogU2NyaXB0
cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3Bw
LmVyYjoKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW06
CisgICAgICAgIChlbmNvZGVPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5IF9zZW5kSW52b2NhdGlvbjppbnRlcmZhY2U6XSk6CisgICAgICAgICogU2hhcmVkL0NvY29h
L1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5t
bToKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENs
aWVudEJ1bmRsZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlh
bGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50UHJvY2Vzc05hbWUpOgorICAgICAgICAoV2ViS2l0OjpY
UENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlvbkRhdGEp
OgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2Uv
WFBDU2VydmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VNYWluKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06
CisgICAgICAgICgrW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgZ2V0QWxsTG9jYWxBdXRoZW50
aWNhdG9yQ3JlZGVudGlhbHNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzaG93U2FmZUJyb3dzaW5nV2Fy
bmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2NvY29hL1Byb2Nlc3NMYXVuY2hl
ckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nl
c3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1
dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y2xl
YXJBbGxDcmVkZW50aWFscyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxDb25uZWN0
aW9uOjpjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleSBjb25zdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBhc3RlQWNjZXNzQ2F0ZWdv
cnlGb3JDb21tYW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAg
ICAgKFdlYktpdDo6UERGUGx1Z2luOjpwbHVnaW5JbmZvKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpyZXBsYWNl
U2VsZWN0aW9uUGFzdGVib2FyZE5hbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9J
UENUZXN0aW5nQVBJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6Y3JlYXRl
SlNBcnJheUZvckFyZ3VtZW50RGVzY3JpcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6SVBDVGVz
dGluZ0FQSTo6SlNNZXNzYWdlTGlzdGVuZXI6OmpzRGVzY3JpcHRpb25Gcm9tRGVjb2Rlcik6Cisg
ICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlB1c2hEYWVtb25NYWluKToKKwogMjAyMi0wNC0wNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHRoZSBzYW1lIGNhbGxiYWNrIG1lY2hhbmlzbSBm
b3IgU2VydmljZVdvcmtlciBvcGVuV2luZG93IGFuZCBuYXZpZ2F0ZSBpbiBVSVByb2Nlc3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAxYWM5MDliZmViZTNjNDEyZWJhMTczMjhmNTE4
NGE3NGY3ZTA4NDAzLi44MDg2NzIyNTYyOGFjOWE1ZGJiYzM2MTdjZGY1ZGVlOTAwY2FjMGM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDQtMDcg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGRlcHJl
Y2F0ZWQgU3RyaW5nKGNvbnN0IGNoYXIqKSB3aXRoIFN0cmluZzo6ZnJvbUxhdGluMSgpIGluIG1v
cmUgcGxhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzg5MjUKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAq
IEhpc3RvcnkvSGlzdG9yeVByb3BlcnR5TGlzdC5tbToKKyAgICAgICAgKEhpc3RvcnlQcm9wZXJ0
eUxpc3RXcml0ZXI6Okhpc3RvcnlQcm9wZXJ0eUxpc3RXcml0ZXIpOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGNvcmVDb21tYW5kQnlO
YW1lOl0pOgorCiAyMDIyLTA0LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgRHJvcCB1bnVzZWQgRWRpdG9yQ2xpZW50OjpnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rp
b25Gb3JNaXNzcGVsbGVkV29yZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwCmluZGV4IDE4ZjExZDMzOWUxZTIwNzU5YTY5ODllYTNh
ZjIzZDhhOTg2MWM0NWIuLjgwMDA1Njc4M2Y2NWZmYWVhZTNkYzhlZDJmYzAxYWU3Y2M0ZGNkMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRp
ZXMuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgRGF0YWJhc2VVdGlsaXRpZXM6OmJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQKIAogU3Ry
aW5nIERhdGFiYXNlVXRpbGl0aWVzOjpzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUo
Y29uc3QgY2hhciogb3JpZ2luYWxRdWVyeSkKIHsKLSAgICByZXR1cm4gU3RyaW5nKG9yaWdpbmFs
UXVlcnkpLnJlcGxhY2UoIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyIsICJDUkVB
VEUgVU5JUVVFIElOREVYIik7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbUxhdGluMShvcmlnaW5h
bFF1ZXJ5KS5yZXBsYWNlKCJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMiLCAiQ1JF
QVRFIFVOSVFVRSBJTkRFWCIpOwogfQogCiBUYWJsZUFuZEluZGV4UGFpciBEYXRhYmFzZVV0aWxp
dGllczo6Y3VycmVudFRhYmxlQW5kSW5kZXhRdWVyaWVzKGNvbnN0IFN0cmluZyYgdGFibGVOYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuY3BwCmluZGV4IGY1ZGQzMWZmYjU5OWVjZjEzM2VhMDczYWVhOGFkNjcxNjIxOGRmNTMuLmM0
ZmZhZmE5YTRjNWFhNmIxZDY5NzYxNjM1ZDVjZThmOWZjOTUzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTYwNyw4
ICs2MDcsOSBAQCB2b2lkIENhY2hlOjpkdW1wQ29udGVudHNUb0ZpbGUoKQogICAgIGF1dG8gZmQg
PSBvcGVuRmlsZShkdW1wRmlsZVBhdGgoKSwgRmlsZU9wZW5Nb2RlOjpXcml0ZSk7CiAgICAgaWYg
KCFpc0hhbmRsZVZhbGlkKGZkKSkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gcHJvbG9ndWUg
PSBTdHJpbmcoIntcblwiZW50cmllc1wiOiBbXG4iKS51dGY4KCk7Ci0gICAgd3JpdGVUb0ZpbGUo
ZmQsIHByb2xvZ3VlLmRhdGEoKSwgcHJvbG9ndWUubGVuZ3RoKCkpOworCisgICAgc3RhdGljIGNv
bnN0IGNoYXIgcHJvbG9ndWVbXSA9ICJ7XG5cImVudHJpZXNcIjogW1xuIjsKKyAgICB3cml0ZVRv
RmlsZShmZCwgcHJvbG9ndWUsIHN0cmxlbihwcm9sb2d1ZSkpOwogCiAgICAgc3RydWN0IFRvdGFs
cyB7CiAgICAgICAgIHVuc2lnbmVkIGNvdW50IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVu
dGFsRmVhdHVyZXMuY3BwLmVyYiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1Rl
bXBsYXRlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNwcC5lcmIKaW5kZXgg
ODMwZWJhYjhlODYyMTgwZWIwMzBhNjUzOTY2MjZmNDM4OTEwYzJiOC4uZWRkOGU2MTY3MmY0NGIz
NjdiYjFjNDY1ZGNlODljMDc5MWEwNzlkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVy
ZXMuY3BwLmVyYgorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5jcHAuZXJiCkBAIC00MSw3ICs0
MSw3IEBAIGNvbnN0IFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiYgV2ViUHJlZmVyZW5jZXM6
OmV4cGVyaW1lbnRhbEZlYXR1cmVzKCkKIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYg
PCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KLSAgICAgICAgQVBJOjpFeHBlcmlt
ZW50YWxGZWF0dXJlOjpjcmVhdGUoU3RyaW5nIHsgPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVOYW1l
ICU+IH0sICI8JT0gQHByZWYubmFtZSAlPiJfcywgU3RyaW5nIHsgPCU9IEBwcmVmLmh1bWFuUmVh
ZGFibGVEZXNjcmlwdGlvbiAlPiB9LCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAl
PiwgPCU9IEBwcmVmLmhpZGRlbiAlPiksCisgICAgICAgIEFQSTo6RXhwZXJpbWVudGFsRmVhdHVy
ZTo6Y3JlYXRlKFN0cmluZzo6ZnJvbUxhdGluMSg8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUg
JT4pLCAiPCU9IEBwcmVmLm5hbWUgJT4iX3MsIFN0cmluZzo6ZnJvbUxhdGluMSg8JT0gQHByZWYu
aHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uICU+KSwgREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVm
Lm5hbWUgJT4sIDwlPSBAcHJlZi5oaWRkZW4gJT4pLAogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAt
JT4KICNlbmRpZgogPCUtIGVuZCAtJT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsRGVidWdGZWF0dXJl
cy5jcHAuZXJiIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dl
YlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5lcmIKaW5kZXggZTU2N2Y0NWIx
ZTQ0NTE2YjUyYjAzNjUwYmI5ZjJlOTY0Yjg0OWIxYy4uMzU4MGI0ZmZhOGIyMDU0ZjNmMDhhMDNi
NmZjMWIzNjhlNGVjN2NkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5l
cmIKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlBy
ZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5lcmIKQEAgLTQwLDcgKzQwLDcgQEAg
Y29uc3QgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+JiBXZWJQcmVmZXJlbmNlczo6aW50ZXJu
YWxEZWJ1Z0ZlYXR1cmVzKCkKIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBw
cmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KLSAgICAgICAgQVBJOjpJbnRlcm5hbERlYnVn
RmVhdHVyZTo6Y3JlYXRlKFN0cmluZyB7IDwlPSBAcHJlZi5odW1hblJlYWRhYmxlTmFtZSAlPiB9
LCAiPCU9IEBwcmVmLm5hbWUgJT4iX3MsIFN0cmluZyB7IDwlPSBAcHJlZi5odW1hblJlYWRhYmxl
RGVzY3JpcHRpb24gJT4gfSwgREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4sIDwl
PSBAcHJlZi5oaWRkZW4gJT4pLAorICAgICAgICBBUEk6OkludGVybmFsRGVidWdGZWF0dXJlOjpj
cmVhdGUoU3RyaW5nOjpmcm9tTGF0aW4xKDwlPSBAcHJlZi5odW1hblJlYWRhYmxlTmFtZSAlPiks
ICI8JT0gQHByZWYubmFtZSAlPiJfcywgU3RyaW5nOjpmcm9tTGF0aW4xKDwlPSBAcHJlZi5odW1h
blJlYWRhYmxlRGVzY3JpcHRpb24gJT4pLCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFt
ZSAlPiwgPCU9IEBwcmVmLmhpZGRlbiAlPiksCiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgog
I2VuZGlmCiA8JS0gZW5kIC0lPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHAuZXJi
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVu
Y2VzU3RvcmVEZWZhdWx0c01hcC5jcHAuZXJiCmluZGV4IGU3ODRhYTZhN2ZhYjNhYWQ4NDg3MmU1
YTdkOTliYzM3MzE3ODVjODUuLmI4Mzc0MTU4N2UzZTY5NDlkZWQzZmRkMmFiZjZkMmVjYzZiZjZj
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRl
cy9XZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwLmVyYgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1
bHRzTWFwLmNwcC5lcmIKQEAgLTUyLDcgKzUyLDExIEBAIFdlYlByZWZlcmVuY2VzU3RvcmU6OlZh
bHVlTWFwJiBXZWJQcmVmZXJlbmNlc1N0b3JlOjpkZWZhdWx0cygpCiA8JS0gaWYgQHByZWYuY29u
ZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+Cis8JS0g
aWYgQHByZWYudHlwZSA9PSAiU3RyaW5nIiAtJT4KKyAgICAgICAgZGVmYXVsdHMuZ2V0KCkuc2V0
KFdlYlByZWZlcmVuY2VzS2V5Ojo8JT0gQHByZWYubmFtZUxvd2VyICU+S2V5KCksIFZhbHVlKG1h
a2VTdHJpbmcoREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4pKSk7Cis8JS0gZWxz
ZSAtJT4KICAgICAgICAgZGVmYXVsdHMuZ2V0KCkuc2V0KFdlYlByZWZlcmVuY2VzS2V5Ojo8JT0g
QHByZWYubmFtZUxvd2VyICU+S2V5KCksIFZhbHVlKDwlPSBAcHJlZi50eXBlICU+KERFRkFVTFRf
VkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+KSkpOworPCUtIGVuZCAtJT4KIDwlLSBpZiBAcHJl
Zi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCmluZGV4IDE1NzNk
ZjJiNzJjNjA4NzYyOGU5N2Q0YzNkZGNlZjk0MmQ4Y2QzZTQuLjhjMTJlZGVhN2VhY2IxOTMyYTIz
MWFhYzc1ZjA5MjlmNDc5ZjcxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBAIC00NjQsNyArNDY0LDcgQEAgc3Rh
dGljIHZvaWQgZW5jb2RlT2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqZW5jb2RlciwgaWQg
b2JqZWN0KQogICAgICAgICBlbmNvZGVyLT5fb2JqZWN0c0JlaW5nRW5jb2RlZC5yZW1vdmUob2Jq
ZWN0KTsKICAgICB9KTsKIAotICAgIGVuY29kZXItPl9jdXJyZW50RGljdGlvbmFyeS0+c2V0KGNs
YXNzTmFtZUtleSwgQVBJOjpTdHJpbmc6OmNyZWF0ZShTdHJpbmcgeyBjbGFzc19nZXROYW1lKG9i
amVjdENsYXNzKSB9KSk7CisgICAgZW5jb2Rlci0+X2N1cnJlbnREaWN0aW9uYXJ5LT5zZXQoY2xh
c3NOYW1lS2V5LCBBUEk6OlN0cmluZzo6Y3JlYXRlKFN0cmluZzo6ZnJvbUxhdGluMShjbGFzc19n
ZXROYW1lKG9iamVjdENsYXNzKSkpKTsKIAogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6
W05TSW52b2NhdGlvbiBjbGFzc11dKSB7CiAgICAgICAgIC8vIFdlIGhhdmUgdG8gc3BlY2lhbCBj
YXNlIE5TSW52b2NhdGlvbiBzaW5jZSB3ZSBkb24ndCB3YW50IHRvIGVuY29kZSB0aGUgdGFyZ2V0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90
ZU9iamVjdFJlZ2lzdHJ5Lm1tCmluZGV4IDU5Njk3ZTI2MmQ5OTNmNTI5OGJkMzhlMWZjM2RlM2Qx
Njk5OGNjMGYuLmE3NmZkN2FiNzU4ODY2NDBjNzU1ODZlOWY1NWYzMTRiYzY0OTZjYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdp
c3RyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkubW0KQEAgLTE2Miw3ICsxNjIsNyBAQCAtICh2b2lkKV9zZW5kSW52b2NhdGlv
bjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbiBpbnRlcmZhY2U6KF9XS1JlbW90ZU9iamVjdElu
dAogICAgICAgICBpZiAoc3RyY21wKFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2Jq
Q1R5cGVzOnJlcGx5QmxvY2tTaWduYXR1cmVdLm1ldGhvZFJldHVyblR5cGUsICJ2IikpCiAgICAg
ICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9y
bWF0OkAiUmV0dXJuIHZhbHVlIG9mIGJsb2NrIGFyZ3VtZW50IG11c3QgYmUgJ3ZvaWQnLiAoJXMp
Iiwgc2VsX2dldE5hbWUoaW52b2NhdGlvbi5zZWxlY3RvcildOwogCi0gICAgICAgIHJlcGx5SW5m
byA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpSZXBseUluZm8+
KGdlbmVyYXRlUmVwbHlJZGVudGlmaWVyKCksIFN0cmluZyB7IHJlcGx5QmxvY2tTaWduYXR1cmUg
fSk7CisgICAgICAgIHJlcGx5SW5mbyA9IG1ha2VVbmlxdWU8V2ViS2l0OjpSZW1vdGVPYmplY3RJ
bnZvY2F0aW9uOjpSZXBseUluZm8+KGdlbmVyYXRlUmVwbHlJZGVudGlmaWVyKCksIFN0cmluZzo6
ZnJvbUxhdGluMShyZXBseUJsb2NrU2lnbmF0dXJlKSk7CiAKICAgICAgICAgLy8gUmVwbGFjZSB0
aGUgYmxvY2sgb2JqZWN0IHNvIHdlIHdvbid0IHRyeSB0byBlbmNvZGUgaXQuCiAgICAgICAgIGlk
IG51bGwgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
U2FuZGJveEV4dGVuc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2Fu
ZGJveEV4dGVuc2lvbkNvY29hLm1tCmluZGV4IGY2MWI3ZjQ0OWM3YmQwNjUwMWE0ZWYwODZiNWE5
MTEyOGZhOWFiYTIuLjVlYWI4MTYyNjYyZmRjZDZmYWY4OGI1MWNmZTIyNjM5YmFkM2UyNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29j
b2EubW0KQEAgLTI5OSw3ICsyOTksNyBAQCBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvclRlbXBvcmFyeUZpbGUoU3RyaW5nVmlldyBwcmVmaXgsIFR5cGUgdHlwZQogICAgICAg
ICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBjcmVhdGUgYSBzYW5kYm94IGV4dGVuc2lvbiBmb3Ig
dGVtcG9yYXJ5IGZpbGUgJyVzJyIsIHBhdGguZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9Ci0gICAgcmV0dXJuIHt7IFdURk1vdmUoaGFuZGxlKSwgU3RyaW5nKHBh
dGguZGF0YSgpKSB9fTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoaGFuZGxlKSwgU3RyaW5nOjpm
cm9tVVRGOChwYXRoLmRhdGEoKSkgfSB9OwogfQogCiBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGV4dGVuc2lvbkNsYXNz
KSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQ
b2ludC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2Ev
WFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQppbmRleCA0MjYwNDI2MDljZmY4ZDE5
MDg0OGRmYTM4ZDEwNzliZDdmODI1ZGFiLi5jYjcyNDBkODVkMjVlMTczMWMzZDQ2ZWIzNmFlN2Nm
NzY4NjQ4ZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRp
bGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQ
Q1NlcnZpY2VFbnRyeVBvaW50Lm1tCkBAIC03OCw3ICs3OCw3IEBAIGJvb2wgWFBDU2VydmljZUlu
aXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudElkZW50aWZpZXIoU3RyaW5nJiBjbGllbnRJZGVu
dGlmaWVyCiAKIGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudEJ1
bmRsZUlkZW50aWZpZXIoU3RyaW5nJiBjbGllbnRCdW5kbGVJZGVudGlmaWVyKQogewotICAgIGNs
aWVudEJ1bmRsZUlkZW50aWZpZXIgPSBTdHJpbmcgeyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5n
KG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiY2xpZW50LWJ1bmRsZS1pZGVudGlmaWVyIikgfTsKKyAg
ICBjbGllbnRCdW5kbGVJZGVudGlmaWVyID0gU3RyaW5nOjpmcm9tTGF0aW4xKHhwY19kaWN0aW9u
YXJ5X2dldF9zdHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJjbGllbnQtYnVuZGxlLWlkZW50
aWZpZXIiKSk7CiAgICAgcmV0dXJuICFjbGllbnRCdW5kbGVJZGVudGlmaWVyLmlzRW1wdHkoKTsK
IH0KIApAQCAtMTExLDcgKzExMSw3IEBAIGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdh
dGU6OmdldFByb2Nlc3NJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmCiAKIGJvb2wg
WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudFByb2Nlc3NOYW1lKFN0cmlu
ZyYgY2xpZW50UHJvY2Vzc05hbWUpCiB7Ci0gICAgY2xpZW50UHJvY2Vzc05hbWUgPSBTdHJpbmcg
eyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAidWktcHJv
Y2Vzcy1uYW1lIikgfTsKKyAgICBjbGllbnRQcm9jZXNzTmFtZSA9IFN0cmluZzo6ZnJvbUxhdGlu
MSh4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAidWktcHJv
Y2Vzcy1uYW1lIikpOwogICAgIHJldHVybiAhY2xpZW50UHJvY2Vzc05hbWUuaXNFbXB0eSgpOwog
fQogCkBAIC0xMTksMzAgKzExOSwzMCBAQCBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVn
YXRlOjpnZXRFeHRyYUluaXRpYWxpemF0aW9uRGF0YShIYXNoTWFwPFN0cmluZywgUwogewogICAg
IHhwY19vYmplY3RfdCBleHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QgPSB4cGNfZGlj
dGlvbmFyeV9nZXRfdmFsdWUobV9pbml0aWFsaXplck1lc3NhZ2UsICJleHRyYS1pbml0aWFsaXph
dGlvbi1kYXRhIik7CiAKLSAgICBTdHJpbmcgaW5zcGVjdG9yUHJvY2VzcyB7IHhwY19kaWN0aW9u
YXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiaW5zcGVj
dG9yLXByb2Nlc3MiKSB9OworICAgIGF1dG8gaW5zcGVjdG9yUHJvY2VzcyA9IFN0cmluZzo6ZnJv
bUxhdGluMSh4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9u
RGF0YU9iamVjdCwgImluc3BlY3Rvci1wcm9jZXNzIikpOwogICAgIGlmICghaW5zcGVjdG9yUHJv
Y2Vzcy5pc0VtcHR5KCkpCiAgICAgICAgIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgiaW5z
cGVjdG9yLXByb2Nlc3MiX3MsIGluc3BlY3RvclByb2Nlc3MpOwogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyUHJvY2VzcyB7IHhwY19kaWN0aW9u
YXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAic2Vydmlj
ZS13b3JrZXItcHJvY2VzcyIpIH07CisgICAgYXV0byBzZXJ2aWNlV29ya2VyUHJvY2VzcyA9IFN0
cmluZzo6ZnJvbUxhdGluMSh4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRp
YWxpemF0aW9uRGF0YU9iamVjdCwgInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiKSk7CiAgICAgaWYg
KCFzZXJ2aWNlV29ya2VyUHJvY2Vzcy5pc0VtcHR5KCkpCiAgICAgICAgIGV4dHJhSW5pdGlhbGl6
YXRpb25EYXRhLmFkZCgic2VydmljZS13b3JrZXItcHJvY2VzcyJfcywgV1RGTW92ZShzZXJ2aWNl
V29ya2VyUHJvY2VzcykpOwotICAgIFN0cmluZyByZWdpc3RyYWJsZURvbWFpbiB7IHhwY19kaWN0
aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAicmVn
aXN0cmFibGUtZG9tYWluIikgfTsKKyAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gU3RyaW5n
Ojpmcm9tTGF0aW4xKHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6
YXRpb25EYXRhT2JqZWN0LCAicmVnaXN0cmFibGUtZG9tYWluIikpOwogICAgIGlmICghcmVnaXN0
cmFibGVEb21haW4uaXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxpemF0aW9uRGF0YS5h
ZGQoInJlZ2lzdHJhYmxlLWRvbWFpbiJfcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikpOwog
I2VuZGlmCiAKLSAgICBTdHJpbmcgaXNQcmV3YXJtZWRQcm9jZXNzIHsgeHBjX2RpY3Rpb25hcnlf
Z2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJpcy1wcmV3YXJt
ZWQiKSB9OworICAgIGF1dG8gaXNQcmV3YXJtZWRQcm9jZXNzID0gU3RyaW5nOjpmcm9tTGF0aW4x
KHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2Jq
ZWN0LCAiaXMtcHJld2FybWVkIikpOwogICAgIGlmICghaXNQcmV3YXJtZWRQcm9jZXNzLmlzRW1w
dHkoKSkKICAgICAgICAgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJpcy1wcmV3YXJtZWQi
X3MsIGlzUHJld2FybWVkUHJvY2Vzcyk7CiAKICAgICBpZiAoIWlzQ2xpZW50U2FuZGJveGVkKCkp
IHsKLSAgICAgICAgU3RyaW5nIHVzZXJEaXJlY3RvcnlTdWZmaXggeyB4cGNfZGljdGlvbmFyeV9n
ZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwgInVzZXItZGlyZWN0
b3J5LXN1ZmZpeCIpIH07CisgICAgICAgIGF1dG8gdXNlckRpcmVjdG9yeVN1ZmZpeCA9IFN0cmlu
Zzo6ZnJvbUxhdGluMSh4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxp
emF0aW9uRGF0YU9iamVjdCwgInVzZXItZGlyZWN0b3J5LXN1ZmZpeCIpKTsKICAgICAgICAgaWYg
KCF1c2VyRGlyZWN0b3J5U3VmZml4LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGV4dHJhSW5pdGlh
bGl6YXRpb25EYXRhLmFkZCgidXNlci1kaXJlY3Rvcnktc3VmZml4Il9zLCB1c2VyRGlyZWN0b3J5
U3VmZml4KTsKICAgICB9CiAKLSAgICBTdHJpbmcgYWx3YXlzUnVuc0F0QmFja2dyb3VuZFByaW9y
aXR5IHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRh
dGFPYmplY3QsICJhbHdheXMtcnVucy1hdC1iYWNrZ3JvdW5kLXByaW9yaXR5IikgfTsKKyAgICBh
dXRvIGFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSA9IFN0cmluZzo6ZnJvbUxhdGluMSh4
cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVj
dCwgImFsd2F5cy1ydW5zLWF0LWJhY2tncm91bmQtcHJpb3JpdHkiKSk7CiAgICAgaWYgKCFhbHdh
eXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkuaXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRp
YWxpemF0aW9uRGF0YS5hZGQoImFsd2F5cy1ydW5zLWF0LWJhY2tncm91bmQtcHJpb3JpdHkiX3Ms
IGFsd2F5c1J1bnNBdEJhY2tncm91bmRQcmlvcml0eSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2
aWNlTWFpbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29j
b2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQppbmRleCAxMDhjYjA4YWFiOGU2ZTUxODVh
YTUxYWJiMGI2ZGYyYjUzNDQxMzY0Li5mMWNmNDlkODM2Yjg4Yjc0OTI2NzQ4M2Q2ODRlZDdlOTk5
MTJmNmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0
aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VN
YWluLm1tCkBAIC0yMDMsNyArMjAzLDcgQEAgaW50IFhQQ1NlcnZpY2VNYWluKGludCwgY29uc3Qg
Y2hhcioqKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgU3RyaW5n
IHdlYktpdEJ1bmRsZVZlcnNpb24geyB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGJvb3RzdHJh
cC5nZXQoKSwgIldlYktpdEJ1bmRsZVZlcnNpb24iKSB9OworICAgICAgICBhdXRvIHdlYktpdEJ1
bmRsZVZlcnNpb24gPSBTdHJpbmc6OmZyb21MYXRpbjEoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmlu
Zyhib290c3RyYXAuZ2V0KCksICJXZWJLaXRCdW5kbGVWZXJzaW9uIikpOwogICAgICAgICBTdHJp
bmcgZXhwZWN0ZWRCdW5kbGVWZXJzaW9uID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVy
OkAiY29tLmFwcGxlLldlYktpdCJdLmluZm9EaWN0aW9uYXJ5WyhfX2JyaWRnZSBOU1N0cmluZyAq
KWtDRkJ1bmRsZVZlcnNpb25LZXldOwogICAgICAgICBpZiAoIXdlYktpdEJ1bmRsZVZlcnNpb24u
aXNOdWxsKCkgJiYgIWV4cGVjdGVkQnVuZGxlVmVyc2lvbi5pc051bGwoKSAmJiB3ZWJLaXRCdW5k
bGVWZXJzaW9uICE9IGV4cGVjdGVkQnVuZGxlVmVyc2lvbikgewogICAgICAgICAgICAgYXV0byBl
cnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJXZWJLaXQgZnJhbWV3b3JrIHZlcnNpb24gbWlzbWF0
Y2g6ICIsIHdlYktpdEJ1bmRsZVZlcnNpb24sICIgIT0gIiwgZXhwZWN0ZWRCdW5kbGVWZXJzaW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggZDdmZDFhNjgzNjMyZTkxYjU2ODVl
NzMyNGRlZmRhNTc3OTQ4YjFkNS4uYWM2NGVmMzRkNmZlZTgwM2Y4ZjZhODZmMzJmOTg4NjA2N2Vj
MDQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTMxNSw3ICszMTUsNyBAQCBz
dGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGdldEFsbExvY2FsQXV0aGVudGljYXRvckNyZWRlbnRp
YWxzSW1wbChOU1N0cmluZyAqYWNjZQogKyAoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKilnZXRB
bGxMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFscwogewogI2lmIEVOQUJMRShXRUJfQVVUSE4p
Ci0gICAgcmV0dXJuIGdldEFsbExvY2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWxzSW1wbChTdHJp
bmcoV2ViQ29yZTo6TG9jYWxBdXRoZW50aWNhdG9yQWNjZXNzR3JvdXApKS5hdXRvcmVsZWFzZSgp
OworICAgIHJldHVybiBnZXRBbGxMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsc0ltcGwoQChX
ZWJDb3JlOjpMb2NhbEF1dGhlbnRpY2F0b3JBY2Nlc3NHcm91cCkpLmF1dG9yZWxlYXNlKCk7CiAj
ZWxzZQogICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDA2NmI4YjA1NTczYmFjNjAwZDRkZjQxMDA0
ZTYyMmYwMGZmZjkzMmMuLjAxNWE2Njg0MGRiYzg3ODhiZDM0ZDc5ZmQ3YzNiYmU1OWNlZDE3NDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0x
OTAwLDcgKzE5MDAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzaG93U2FmZUJyb3dzaW5nV2Fybmlu
Zyhjb25zdCBTYWZlQnJvd3NpbmdXYXJuaW5nJiB3YXJuaW5nLCBDbwogICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoQ29udGludWVVbnNhZmVMb2FkOjpZZXMpOwogCiAgICAgV2ViQ29y
ZTo6RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OlZhbHVlRGljdGlvbmFyeSBzaG93ZWRXYXJuaW5n
RGljdGlvbmFyeTsKLSAgICBzaG93ZWRXYXJuaW5nRGljdGlvbmFyeS5zZXQoInNvdXJjZSJfcywg
U3RyaW5nKCJzZXJ2aWNlIikpOworICAgIHNob3dlZFdhcm5pbmdEaWN0aW9uYXJ5LnNldCgic291
cmNlIl9zLCAic2VydmljZSJfcyk7CiAKICAgICBtX3BhZ2UtPmxvZ0RpYWdub3N0aWNNZXNzYWdl
V2l0aFZhbHVlRGljdGlvbmFyeSgiU2FmZUJyb3dzaW5nLlNob3dlZFdhcm5pbmciX3MsICJTYWZh
cmkiX3MsIHNob3dlZFdhcm5pbmdEaWN0aW9uYXJ5LCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5v
KTsKIApAQCAtMTkxNSw3ICsxOTE1LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2hvd1NhZmVCcm93
c2luZ1dhcm5pbmcoY29uc3QgU2FmZUJyb3dzaW5nV2FybmluZyYgd2FybmluZywgQ28KICAgICAg
ICAgYm9vbCBmb3JNYWluRnJhbWVOYXZpZ2F0aW9uID0gW3dlYWtUaGlzLT5tX3NhZmVCcm93c2lu
Z1dhcm5pbmcgZm9yTWFpbkZyYW1lTmF2aWdhdGlvbl07CiAKICAgICAgICAgV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQ6OlZhbHVlRGljdGlvbmFyeSBkaWN0aW9uYXJ5OwotICAgICAg
ICBkaWN0aW9uYXJ5LnNldCgic291cmNlIl9zLCBTdHJpbmcoInNlcnZpY2UiKSk7CisgICAgICAg
IGRpY3Rpb25hcnkuc2V0KCJzb3VyY2UiX3MsICJzZXJ2aWNlIl9zKTsKICAgICAgICAgaWYgKG5h
dmlnYXRlc0ZyYW1lICYmIGZvck1haW5GcmFtZU5hdmlnYXRpb24pIHsKICAgICAgICAgICAgIC8v
IFRoZSBzYWZlIGJyb3dzaW5nIHdhcm5pbmcgd2lsbCBiZSBoaWRkZW4gb25jZSB0aGUgbmV4dCBw
YWdlIGlzIHNob3duLgogICAgICAgICAgICAgYm9vbCBjb250aW51aW5nVW5zYWZlTG9hZCA9IFdU
Rjo6c3dpdGNoT24ocmVzdWx0LApAQCAtMTkyNCwxNSArMTkyNCwxNSBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpzaG93U2FmZUJyb3dzaW5nV2FybmluZyhjb25zdCBTYWZlQnJvd3NpbmdXYXJuaW5nJiB3
YXJuaW5nLCBDbwogICAgICAgICAgICAgKTsKIAogICAgICAgICAgICAgaWYgKGNvbnRpbnVpbmdV
bnNhZmVMb2FkKQotICAgICAgICAgICAgICAgIGRpY3Rpb25hcnkuc2V0KCJhY3Rpb24iX3MsIFN0
cmluZygidmlzaXQgd2Vic2l0ZSIpKTsKKyAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5LnNldCgi
YWN0aW9uIl9zLCAidmlzaXQgd2Vic2l0ZSJfcyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgZGljdGlvbmFyeS5zZXQoImFjdGlvbiJfcywgU3RyaW5nKCJyZWRpcmVjdCB0byB1
cmwiKSk7CisgICAgICAgICAgICAgICAgZGljdGlvbmFyeS5zZXQoImFjdGlvbiJfcywgInJlZGly
ZWN0IHRvIHVybCJfcyk7CiAKICAgICAgICAgICAgIHdlYWtUaGlzLT5tX3BhZ2UtPmxvZ0RpYWdu
b3N0aWNNZXNzYWdlV2l0aFZhbHVlRGljdGlvbmFyeSgiU2FmZUJyb3dzaW5nLlBlcmZvcm1lZEFj
dGlvbiJfcywgIlNhZmFyaSJfcywgZGljdGlvbmFyeSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpO
byk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBkaWN0aW9uYXJ5
LnNldCgiYWN0aW9uIl9zLCBTdHJpbmcoImdvIGJhY2siKSk7CisgICAgICAgIGRpY3Rpb25hcnku
c2V0KCJhY3Rpb24iX3MsICJnbyBiYWNrIl9zKTsKICAgICAgICAgd2Vha1RoaXMtPm1fcGFnZS0+
bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWVEaWN0aW9uYXJ5KCJTYWZlQnJvd3NpbmcuUGVy
Zm9ybWVkQWN0aW9uIl9zLCAiU2FmYXJpIl9zLCBkaWN0aW9uYXJ5LCBXZWJDb3JlOjpTaG91bGRT
YW1wbGU6Ok5vKTsKIAogICAgICAgICBpZiAoIW5hdmlnYXRlc0ZyYW1lICYmIHdlYWtUaGlzLT5t
X3NhZmVCcm93c2luZ1dhcm5pbmcgJiYgIWZvck1haW5GcmFtZU5hdmlnYXRpb24pIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2NvY29hL1Byb2Nlc3NMYXVu
Y2hlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvY29jb2EvUHJv
Y2Vzc0xhdW5jaGVyQ29jb2EubW0KaW5kZXggZDhmMGVjYWVlMzNhZWJiMzI0ZTEyYTY3N2ZjNjJi
NzQyM2ZhMWU4Yi4uNDllYTlmZjNlMjU3MjVhYTlmMDFlZGQ2ZTg3ZjBmZTNmMzMwNWQ5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvY29jb2EvUHJvY2Vzc0xh
dW5jaGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvY29j
b2EvUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0KQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIFByb2Nl
c3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAKICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFs
dWUoYm9vdHN0cmFwTWVzc2FnZS5nZXQoKSwgImV4dHJhLWluaXRpYWxpemF0aW9uLWRhdGEiLCBl
eHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQoKSk7CiAKLSAgICBhdXRvIGVycm9ySGFuZGxlcklt
cGwgPSBbd2Vha1Byb2Nlc3NMYXVuY2hlciA9IFdlYWtQdHIgeyAqdGhpcyB9LCBsaXN0ZW5pbmdQ
b3J0LCBsb2dOYW1lID0gU3RyaW5nKG5hbWUpXSAoeHBjX29iamVjdF90IGV2ZW50KSB7CisgICAg
YXV0byBlcnJvckhhbmRsZXJJbXBsID0gW3dlYWtQcm9jZXNzTGF1bmNoZXIgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgbGlzdGVuaW5nUG9ydCwgbG9nTmFtZSA9IENTdHJpbmcobmFtZSldICh4cGNfb2Jq
ZWN0X3QgZXZlbnQpIHsKICAgICAgICAgQVNTRVJUKCFldmVudCB8fCB4cGNfZ2V0X3R5cGUoZXZl
bnQpID09IFhQQ19UWVBFX0VSUk9SKTsKIAogICAgICAgICBhdXRvIHByb2Nlc3NMYXVuY2hlciA9
IHdlYWtQcm9jZXNzTGF1bmNoZXIuZ2V0KCk7CkBAIC0yNTIsOSArMjUyLDkgQEAgdm9pZCBQcm9j
ZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogI2VuZGlmCiAKICAgICAgICAgaWYgKGV2ZW50
KQotICAgICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciB3aGlsZSBsYXVuY2hpbmcgJXM6ICVzIiwg
bG9nTmFtZS51dGY4KCkuZGF0YSgpLCB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCBY
UENfRVJST1JfS0VZX0RFU0NSSVBUSU9OKSk7CisgICAgICAgICAgICBMT0dfRVJST1IoIkVycm9y
IHdoaWxlIGxhdW5jaGluZyAlczogJXMiLCBsb2dOYW1lLmRhdGEoKSwgeHBjX2RpY3Rpb25hcnlf
Z2V0X3N0cmluZyhldmVudCwgWFBDX0VSUk9SX0tFWV9ERVNDUklQVElPTikpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBMT0dfRVJST1IoIkVycm9yIHdoaWxlIGxhdW5jaGluZyAlczogTm8g
eHBjX29iamVjdF90IGV2ZW50IGF2YWlsYWJsZS4iLCBsb2dOYW1lLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciB3aGlsZSBsYXVuY2hpbmcgJXM6IE5vIHhwY19v
YmplY3RfdCBldmVudCBhdmFpbGFibGUuIiwgbG9nTmFtZS5kYXRhKCkpOwogCiAjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICAgICAgbWFjaF9wb3J0X3VyZWZzX3Qgc2VuZFJpZ2h0Q291bnQgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IDlkNWRkOGQzMTk4
YzkxM2RkMzRjYTdjYzk0NTBjOTVjM2Y2MWI1ZDUuLmQyMTE2Nzk5NjFjMWU1Mzg0MTMxZTBlMmRi
ZmMwZmFkNjMzMzAyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3Iu
bW0KQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y2xlYXJBbGxD
cmVkZW50aWFscygpCiAgICAgYXV0byBxdWVyeSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgW3F1ZXJ5IHNldERpY3Rpb25hcnk6QHsKICAgICAgICAg
KGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKLSAgICAgICAgKGlkKWtTZWNBdHRyQWNj
ZXNzR3JvdXA6IChpZClTdHJpbmcoTG9jYWxBdXRoZW50aWNhdG9yQWNjZXNzR3JvdXApLAorICAg
ICAgICAoaWQpa1NlY0F0dHJBY2Nlc3NHcm91cDogQChMb2NhbEF1dGhlbnRpY2F0b3JBY2Nlc3NH
cm91cCksCiAgICAgICAgIChpZClrU2VjVXNlRGF0YVByb3RlY3Rpb25LZXljaGFpbjogQFlFUwog
ICAgIH1dOwogICAgIHVwZGF0ZVF1ZXJ5SWZOZWNlc3NhcnkocXVlcnkuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tCmluZGV4IGU0ZTk3OWY0OWRhODhlZjkyY2MyZDYy
MjY2MTM1ZTkxOTA0OTA4ZjkuLjNjYjFkN2YyYmYyODUzMjlmNzgyMGIwYWUwMGE4MTBiZDIyMzhm
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KQEAgLTE3MCw3ICsxNzAs
NyBAQCBSZXRhaW5QdHI8U2VjS2V5UmVmPiBMb2NhbENvbm5lY3Rpb246OmNyZWF0ZUNyZWRlbnRp
YWxQcml2YXRlS2V5KExBQ29udGV4dCAqY29udAogICAgIFJldGFpblB0ciBwcml2YXRlS2V5QXR0
cmlidXRlcyA9IEB7CiAgICAgICAgIChpZClrU2VjQXR0ckFjY2Vzc0NvbnRyb2w6IChpZClhY2Nl
c3NDb250cm9sUmVmLAogICAgICAgICAoaWQpa1NlY0F0dHJJc1Blcm1hbmVudDogQFlFUywKLSAg
ICAgICAgKGlkKWtTZWNBdHRyQWNjZXNzR3JvdXA6IChpZClTdHJpbmcoTG9jYWxBdXRoZW50aWNh
dG9yQWNjZXNzR3JvdXApLAorICAgICAgICAoaWQpa1NlY0F0dHJBY2Nlc3NHcm91cDogQChMb2Nh
bEF1dGhlbnRpY2F0b3JBY2Nlc3NHcm91cCksCiAgICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiBz
ZWNBdHRyTGFiZWwsCiAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnOiBzZWNBdHRy
QXBwbGljYXRpb25UYWcsCiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IGY4YzJiYWJmMmMxYzY3NDYwMDlmOGU2ZTY5YTlmZjhhMGI2NjVlNDguLjE1
MzQ5NWVlYjk4NjMwNDQyNGVlN2UwZmFjMzdiMThiZjBlMWE4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjUzOCwxMSArMjUzOCwxMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2VsZWN0QWxsKCkKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERPTVBhc3RlQWNj
ZXNzQ2F0ZWdvcnk+IHBhc3RlQWNjZXNzQ2F0ZWdvcnlGb3JDb21tYW5kKGNvbnN0IFN0cmluZyYg
Y29tbWFuZE5hbWUpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U3RyaW5n
LCBET01QYXN0ZUFjY2Vzc0NhdGVnb3J5LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBwYXN0
ZUNvbW1hbmROYW1lcyA9IEhhc2hNYXA8U3RyaW5nLCBET01QYXN0ZUFjY2Vzc0NhdGVnb3J5LCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsKLSAgICAgICAgeyAiUGFzdGUiLCBET01QYXN0ZUFj
Y2Vzc0NhdGVnb3J5OjpHZW5lcmFsIH0sCi0gICAgICAgIHsgIlBhc3RlQW5kTWF0Y2hTdHlsZSIs
IERPTVBhc3RlQWNjZXNzQ2F0ZWdvcnk6OkdlbmVyYWwgfSwKLSAgICAgICAgeyAiUGFzdGVBc1F1
b3RhdGlvbiIsIERPTVBhc3RlQWNjZXNzQ2F0ZWdvcnk6OkdlbmVyYWwgfSwKLSAgICAgICAgeyAi
UGFzdGVBc1BsYWluVGV4dCIsIERPTVBhc3RlQWNjZXNzQ2F0ZWdvcnk6OkdlbmVyYWwgfSwKLSAg
ICAgICAgeyAiUGFzdGVGb250IiwgRE9NUGFzdGVBY2Nlc3NDYXRlZ29yeTo6Rm9udHMgfSwKKyAg
ICAgICAgeyAiUGFzdGUiX3MsIERPTVBhc3RlQWNjZXNzQ2F0ZWdvcnk6OkdlbmVyYWwgfSwKKyAg
ICAgICAgeyAiUGFzdGVBbmRNYXRjaFN0eWxlIl9zLCBET01QYXN0ZUFjY2Vzc0NhdGVnb3J5OjpH
ZW5lcmFsIH0sCisgICAgICAgIHsgIlBhc3RlQXNRdW90YXRpb24iX3MsIERPTVBhc3RlQWNjZXNz
Q2F0ZWdvcnk6OkdlbmVyYWwgfSwKKyAgICAgICAgeyAiUGFzdGVBc1BsYWluVGV4dCJfcywgRE9N
UGFzdGVBY2Nlc3NDYXRlZ29yeTo6R2VuZXJhbCB9LAorICAgICAgICB7ICJQYXN0ZUZvbnQiX3Ms
IERPTVBhc3RlQWNjZXNzQ2F0ZWdvcnk6OkZvbnRzIH0sCiAgICAgfTsKIAogICAgIGF1dG8gaXQg
PSBwYXN0ZUNvbW1hbmROYW1lcy0+ZmluZChjb21tYW5kTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMWIyYjg1MWU5NzI0YWM1MGZlMzk4Zjkw
NGZiM2VjNTdhZTUwOWEwNS4uNzdjNGJlNzk0M2QxYjAyNDIyZTc2NzYyNzhjMjBmOGMwOTUzYjA0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNjM1
LDcgKzYzNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShJUEM6Ok1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogICAgIGlmICghc19pbnZhbGlkTWVzc2Fn
ZUNhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBzX2ludmFsaWRNZXNzYWdlQ2FsbGJh
Y2sodG9BUEkoQVBJOjpTdHJpbmc6OmNyZWF0ZShTdHJpbmcgeyBkZXNjcmlwdGlvbihtZXNzYWdl
TmFtZSkgfSkucHRyKCkpKTsKKyAgICBzX2ludmFsaWRNZXNzYWdlQ2FsbGJhY2sodG9BUEkoQVBJ
OjpTdHJpbmc6OmNyZWF0ZShTdHJpbmc6OmZyb21MYXRpbjEoZGVzY3JpcHRpb24obWVzc2FnZU5h
bWUpKSkucHRyKCkpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzb2x2ZVBhdGhzRm9y
U2FuZGJveEV4dGVuc2lvbnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggYTQ4OTFiOTJkYWZjZDQ2NjY0OGYxNmRjMTMzNjI2
MGFiZjEyYzg3OS4uNjc1ZTcyMzM2MTY4YmMyZjhjOGQyMjZkMDExZGY5NDI1NjA1NDgzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
CkBAIC0xMjg0LDEzICsxMjg0LDEzIEBAIFBsdWdpbkluZm8gUERGUGx1Z2luOjpwbHVnaW5JbmZv
KCkKICAgICBNaW1lQ2xhc3NJbmZvIHBkZk1pbWVDbGFzc0luZm87CiAgICAgcGRmTWltZUNsYXNz
SW5mby50eXBlID0gImFwcGxpY2F0aW9uL3BkZiJfczsKICAgICBwZGZNaW1lQ2xhc3NJbmZvLmRl
c2MgPSBwZGZEb2N1bWVudFR5cGVEZXNjcmlwdGlvbigpOwotICAgIHBkZk1pbWVDbGFzc0luZm8u
ZXh0ZW5zaW9ucy5hcHBlbmQoInBkZiIpOworICAgIHBkZk1pbWVDbGFzc0luZm8uZXh0ZW5zaW9u
cy5hcHBlbmQoInBkZiJfcyk7CiAgICAgaW5mby5taW1lcy5hcHBlbmQocGRmTWltZUNsYXNzSW5m
byk7CiAKICAgICBNaW1lQ2xhc3NJbmZvIHRleHRQREZNaW1lQ2xhc3NJbmZvOwogICAgIHRleHRQ
REZNaW1lQ2xhc3NJbmZvLnR5cGUgPSAidGV4dC9wZGYiX3M7CiAgICAgdGV4dFBERk1pbWVDbGFz
c0luZm8uZGVzYyA9IHBkZkRvY3VtZW50VHlwZURlc2NyaXB0aW9uKCk7Ci0gICAgdGV4dFBERk1p
bWVDbGFzc0luZm8uZXh0ZW5zaW9ucy5hcHBlbmQoInBkZiIpOworICAgIHRleHRQREZNaW1lQ2xh
c3NJbmZvLmV4dGVuc2lvbnMuYXBwZW5kKCJwZGYiX3MpOwogICAgIGluZm8ubWltZXMuYXBwZW5k
KHRleHRQREZNaW1lQ2xhc3NJbmZvKTsKIAogICAgIHJldHVybiBpbmZvOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCmlu
ZGV4IDg5NDM4Nzk5ZjljMzA2NjNmN2RkMGE2YWJkYzcyNThjM2Y2MmM5MDcuLmY5MGVhMDAwN2Jh
Njc3MWI2OGE5YjljNzAxMTZiNGI4NWM4MmE3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KQEAgLTU0MSw3ICs1
NDEsNyBAQCB2b2lkIFdlYlBhZ2U6OmhhbmRsZUNsaWNrRm9yRGF0YURldGVjdGlvblJlc3VsdChj
b25zdCBEYXRhRGV0ZWN0b3JFbGVtZW50SW5mbyYgaQogCiBzdGF0aWMgU3RyaW5nJiByZXBsYWNl
U2VsZWN0aW9uUGFzdGVib2FyZE5hbWUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IHN0cmluZygiUmVwbGFjZVNlbGVjdGlvblBhc3RlYm9hcmQiKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzdHJpbmcoIlJlcGxhY2VTZWxlY3Rpb25QYXN0ZWJvYXJk
Il9zKTsKICAgICByZXR1cm4gc3RyaW5nOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCmluZGV4IGRiNWFhOGU0MGQzZGJmNmFi
YmM3NGZmYTBhY2MwOGIyZGQyYjU2ZjUuLjM0YzhkZTYyODRhZmY0MzY3ZWE5ZjZkZjlmZGQ2OTAy
NmZhYzNlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQ
Q1Rlc3RpbmdBUEkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQ
Q1Rlc3RpbmdBUEkuY3BwCkBAIC0xOTgzLDE3ICsxOTgzLDE3IEBAIHN0YXRpYyBKU0M6OkpTVmFs
dWUgY3JlYXRlSlNBcnJheUZvckFyZ3VtZW50RGVzY3JpcHRpb25zKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsCiAgICAgICAgIGFyZ3VtZW50c0FycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50SW5kZXgsIGpzRGVzY3JpcHRpb25zKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgSlNDOjpqc1REWlZhbHVlKCkpOwogCi0gICAgICAgIGpzRGVzY3JpcHRp
b25zLT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5hbWUi
X3MpLCBKU0M6OmpzU3RyaW5nKHZtLCBTdHJpbmcoZGVzY3JpcHRpb24ubmFtZSkpKTsKKyAgICAg
ICAganNEZXNjcmlwdGlvbnMtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAibmFtZSJfcyksIEpTQzo6anNTdHJpbmcodm0sIFN0cmluZzo6ZnJvbUxhdGluMShk
ZXNjcmlwdGlvbi5uYW1lKSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBK
U0M6OmpzVERaVmFsdWUoKSk7CiAKLSAgICAgICAganNEZXNjcmlwdGlvbnMtPnB1dERpcmVjdCh2
bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHlwZSJfcyksIEpTQzo6anNTdHJp
bmcodm0sIFN0cmluZyhkZXNjcmlwdGlvbi50eXBlKSkpOworICAgICAgICBqc0Rlc2NyaXB0aW9u
cy0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0eXBlIl9z
KSwgSlNDOjpqc1N0cmluZyh2bSwgU3RyaW5nOjpmcm9tTGF0aW4xKGRlc2NyaXB0aW9uLnR5cGUp
KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTQzo6anNURFpWYWx1ZSgp
KTsKIAogICAgICAgICBqc0Rlc2NyaXB0aW9ucy0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJvcHRpb25hbCJfcyksIEpTQzo6anNCb29sZWFuKGRlc2NyaXB0
aW9uLmlzT3B0aW9uYWwpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlND
Ojpqc1REWlZhbHVlKCkpOwogCiAgICAgICAgIGlmIChkZXNjcmlwdGlvbi5lbnVtTmFtZSkgewot
ICAgICAgICAgICAganNEZXNjcmlwdGlvbnMtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiZW51bSJfcyksIEpTQzo6anNTdHJpbmcodm0sIFN0cmluZyhkZXNj
cmlwdGlvbi5lbnVtTmFtZSkpKTsKKyAgICAgICAgICAgIGpzRGVzY3JpcHRpb25zLT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImVudW0iX3MpLCBKU0M6Ompz
U3RyaW5nKHZtLCBTdHJpbmc6OmZyb21MYXRpbjEoZGVzY3JpcHRpb24uZW51bU5hbWUpKSk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OmpzVERaVmFsdWUoKSk7
CiAgICAgICAgIH0KICAgICB9CkBAIC0yMTQxLDcgKzIxNDEsNyBAQCBKU0M6OkpTT2JqZWN0KiBK
U01lc3NhZ2VMaXN0ZW5lcjo6anNEZXNjcmlwdGlvbkZyb21EZWNvZGVyKEpTQzo6SlNHbG9iYWxP
YmplY3QqCiAgICAganNSZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAibmFtZSJfcyksIEpTQzo6SlNWYWx1ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOwogCi0gICAganNSZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiZGVzY3JpcHRpb24iX3MpLCBKU0M6OmpzU3RyaW5nKHZtLCBTdHJp
bmcgeyBJUEM6OmRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSkgfSkpOworICAgIGpz
UmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRl
c2NyaXB0aW9uIl9zKSwgSlNDOjpqc1N0cmluZyh2bSwgU3RyaW5nOjpmcm9tTGF0aW4xKElQQzo6
ZGVzY3JpcHRpb24oZGVjb2Rlci5tZXNzYWdlTmFtZSgpKSkpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAogICAgIGpzUmVzdWx0LT5wdXREaXJlY3Qodm0sIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRlc3RpbmF0aW9uSUQiX3MpLCBKU0M6OkpT
VmFsdWUoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1dlYlB1c2hEYWVtb25NYWluLm1tCmluZGV4IGFmZTUwOWUyMTUwMzAzMGYwOWFhYmUzMzQ4NTVj
N2IwMWExM2Q5ODkuLmE0MjNhNDA5ZGU2ZTUwYjIyOTE4ZDJkY2E1YzM3MTBjYTJlNjdlODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW0KKysr
IGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFpbi5tbQpAQCAtMTMwLDcg
KzEzMCw3IEBAIGludCBXZWJQdXNoRGFlbW9uTWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgU3RyaW5nIGxpYnJhcnlQYXRoID0gTlNTZWFyY2hQ
YXRoRm9yRGlyZWN0b3JpZXNJbkRvbWFpbnMoTlNMaWJyYXJ5RGlyZWN0b3J5LCBOU1VzZXJEb21h
aW5NYXNrLCBZRVMpWzBdOwogICAgICAgICAgICAgU3RyaW5nIHB1c2hEYXRhYmFzZVBhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKGxpYnJhcnlQYXRoLCB7ICJXZWJL
aXQiX3MsICJXZWJQdXNoIl9zLCAiUHVzaERhdGFiYXNlLmRiIl9zIH0pOwotICAgICAgICAgICAg
OjpXZWJQdXNoRDo6RGFlbW9uOjpzaW5nbGV0b24oKS5zdGFydFB1c2hTZXJ2aWNlKFN0cmluZyB7
IGluY29taW5nUHVzaFNlcnZpY2VOYW1lIH0sIHB1c2hEYXRhYmFzZVBhdGgpOworICAgICAgICAg
ICAgOjpXZWJQdXNoRDo6RGFlbW9uOjpzaW5nbGV0b24oKS5zdGFydFB1c2hTZXJ2aWNlKFN0cmlu
Zzo6ZnJvbUxhdGluMShpbmNvbWluZ1B1c2hTZXJ2aWNlTmFtZSksIHB1c2hEYXRhYmFzZVBhdGgp
OwogICAgICAgICB9CiAgICAgfQogICAgIENGUnVuTG9vcFJ1bigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9IaXN0b3J5UHJvcGVydHlMaXN0Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9IaXN0b3J5UHJvcGVydHlMaXN0Lm1tCmluZGV4
IDc5OWE3YjU5NTJiMmI4NWNiNzBhMGIwMGM1NjJiOTAxNzg2YzMzNmMuLjUxODhjMjY4ODgyOGYy
NDM0ZjJiNjkzMDVkN2JjMjFmY2M4MGI4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0hpc3RvcnkvSGlzdG9yeVByb3BlcnR5TGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9IaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW0KQEAgLTMzLDEyICszMywx
MiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHN0YXRpYyBjb25zdCBpbnQgY3VycmVudEZp
bGVWZXJzaW9uID0gMTsKIAogSGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlcjo6SGlzdG9yeVByb3Bl
cnR5TGlzdFdyaXRlcigpCi0gICAgOiBtX2Rpc3BsYXlUaXRsZUtleSgiZGlzcGxheVRpdGxlIikK
LSAgICAsIG1fbGFzdFZpc2l0V2FzRmFpbHVyZUtleSgibGFzdFZpc2l0V2FzRmFpbHVyZSIpCi0g
ICAgLCBtX2xhc3RWaXNpdGVkRGF0ZUtleSgibGFzdFZpc2l0ZWREYXRlIikKLSAgICAsIG1fcmVk
aXJlY3RVUkxzS2V5KCJyZWRpcmVjdFVSTHMiKQotICAgICwgbV90aXRsZUtleSgidGl0bGUiKQot
ICAgICwgbV91cmxLZXkoIiIpCisgICAgOiBtX2Rpc3BsYXlUaXRsZUtleSgiZGlzcGxheVRpdGxl
Il9zKQorICAgICwgbV9sYXN0VmlzaXRXYXNGYWlsdXJlS2V5KCJsYXN0VmlzaXRXYXNGYWlsdXJl
Il9zKQorICAgICwgbV9sYXN0VmlzaXRlZERhdGVLZXkoImxhc3RWaXNpdGVkRGF0ZSJfcykKKyAg
ICAsIG1fcmVkaXJlY3RVUkxzS2V5KCJyZWRpcmVjdFVSTHMiX3MpCisgICAgLCBtX3RpdGxlS2V5
KCJ0aXRsZSJfcykKKyAgICAsIG1fdXJsS2V5KGVtcHR5U3RyaW5nKCkpCiAgICAgLCBtX2J1ZmZl
cigwKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0KaW5kZXggYmZkNWQwOWU5OGFkZjczOWFiOGYzNzdiY2I3ZTRkNTRlMmU4MDc1Zi4uZDZi
NWIxOWJkNWE4MWI4YzA0MWVhYzcyZjJkMGY2NWU1ZjM2ZjExYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0yNjUwLDcgKzI2NTAsNyBA
QCAtIChXZWJDb3JlOjpFZGl0b3I6OkNvbW1hbmQpY29yZUNvbW1hbmRCeU5hbWU6KGNvbnN0IGNo
YXIqKW5hbWUKICAgICBhdXRvKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwogICAg
IGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RWRpdG9yOjpDb21tYW5k
KCk7Ci0gICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChTdHJpbmcgeyBuYW1l
IH0pOworICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoU3RyaW5nOjpmcm9t
TGF0aW4xKG5hbWUpKTsKIH0KIAogLSAodm9pZClleGVjdXRlQ29yZUNvbW1hbmRCeVNlbGVjdG9y
OihTRUwpc2VsZWN0b3IKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBhMGJkNGIzNTlkY2RjMDhmYjZhNTJiOTJlNzI1Y2FlYjVjNTBiOTBhLi45YjVi
MWIyY2RhNzYwMGEwMDk1MjlmYTZmZGQ2MGE3OGU5ODRmMzI4IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjItMDQt
MDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGRl
cHJlY2F0ZWQgU3RyaW5nKGNvbnN0IGNoYXIqKSB3aXRoIFN0cmluZzo6ZnJvbUxhdGluMSgpIGlu
IG1vcmUgcGxhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzg5MjUKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6
c2V0QWNjdW1tdWxhdGVMb2dzRm9yQ2hhbm5lbCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoaGFuZGxlQ29udHJvbENvbW1hbmQpOgor
ICAgICAgICAoY2hhbmdlV2luZG93U2NhbGVJZk5lZWRlZCk6CisgICAgICAgIChyZXNldFdlYlZp
ZXdUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0NCT1JSZWFkZXJUZXN0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAo
V1RSOjpUZXN0SW52b2NhdGlvbjo6d2FpdEZvclBvc3REdW1wV2F0Y2hkb2dUaW1lckZpcmVkKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL0NyYXNoUmVwb3J0ZXJJbmZvLm1tOgor
ICAgICAgICAoV1RSOjp0ZXN0UGF0aEZyb21VUkwpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OmNvY29hUGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OmNvY29hUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisKIDIwMjItMDQtMDcg
IEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtNZXJnZS1R
dWV1ZV0gQWRkIHN0ZXAgdG8gY2xvc2UgcHVsbCByZXF1ZXN0CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RS
dW5uZXIuY3BwCmluZGV4IGM1YjFhNTBmZGQxOTc1Y2JkMTA4ZGI2YTJkNTcwODdjYjhjMzJhNDEu
Ljg2ZTA2ZWYxNTIxMTQ1OTkyYjU1NjA1ZDQ2YmU1ZmNhY2NmZmZiMmMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yMjE4LDcgKzIyMTgsNyBAQCB2b2lkIFRlc3RSdW5uZXI6
OnNldEFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwoSlNTdHJpbmdSZWYgY2hhbm5lbCkKICAgICBh
dXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihtYXhMZW5ndGggKyAxKTsKICAgICBK
U1N0cmluZ0dldFVURjhDU3RyaW5nKGNoYW5uZWwsIGJ1ZmZlci5nZXQoKSwgbWF4TGVuZ3RoICsg
MSk7CiAKLSAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldExvZ0NoYW5uZWxUb0FjY3VtdWxhdGUo
U3RyaW5nIHsgYnVmZmVyLmdldCgpIH0pOworICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0TG9n
Q2hhbm5lbFRvQWNjdW11bGF0ZShTdHJpbmc6OmZyb21MYXRpbjEoYnVmZmVyLmdldCgpKSk7CiB9
CiAKIHVzaW5nIENhbGxiYWNrTWFwID0gV1RGOjpIYXNoTWFwPHVuc2lnbmVkLCBKU09iamVjdFJl
Zj47CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggZmI1
Njk5YmMyNzBhZDlmMTQ3YzE0ZjVlZWRlZTI0YTU1NzRlYTcwYS4uYmVhMTQ5Y2YxODdhNzk2ZmNm
YzEyYzc1YTQzZjVjZmYxYjQ5MzU5YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbQpAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgc3RhdGljIGJvb2wgaGFuZGxlQ29u
dHJvbENvbW1hbmQoY29uc3QgY2hhciogY29tbWFuZCkKIHsKICAgICBpZiAoIXN0cm5jbXAoIiND
SEVDSyBGT1IgV09STEQgTEVBS1MiLCBjb21tYW5kLCAyMikgfHwgIXN0cm5jbXAoIiNMSVNUIENI
SUxEIFBST0NFU1NFUyIsIGNvbW1hbmQsIDIxKSkgewogICAgICAgICAvLyBEdW1wUmVuZGVyVHJl
ZSBkb2VzIG5vdCBzdXBwb3J0IGNoZWNraW5nIGZvciB3b3JsZCBsZWFrcyBvciBsaXN0aW5nIGNo
aWxkIHByb2Nlc3Nlcy4KLSAgICAgICAgV1RGOjpTdHJpbmcgcmVzdWx0KCJcbiIpOworICAgICAg
ICBXVEY6OlN0cmluZyByZXN1bHQoIlxuIl9zKTsKICAgICAgICAgdW5zaWduZWQgcmVzdWx0TGVu
Z3RoID0gcmVzdWx0Lmxlbmd0aCgpOwogICAgICAgICBwcmludGYoIkNvbnRlbnQtVHlwZTogdGV4
dC9wbGFpblxuIik7CiAgICAgICAgIHByaW50ZigiQ29udGVudC1MZW5ndGg6ICV1XG4iLCByZXN1
bHRMZW5ndGgpOwpAQCAtMTQ5OSw3ICsxNDk5LDcgQEAgc3RhdGljIHZvaWQgZHVtcEJhY2tGb3J3
YXJkTGlzdEZvcldlYlZpZXcoV2ViVmlldyAqdmlldykKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIHN0YXRpYyB2b2lkIGNoYW5nZVdpbmRvd1NjYWxlSWZOZWVkZWQoY29uc3QgY2hhciogdGVz
dFBhdGhPclVSTCkKIHsKLSAgICBhdXRvIGxvY2FsUGF0aE9yVVJMID0gU3RyaW5nKHRlc3RQYXRo
T3JVUkwpOworICAgIGF1dG8gbG9jYWxQYXRoT3JVUkwgPSBTdHJpbmc6OmZyb21VVEY4KHRlc3RQ
YXRoT3JVUkwpOwogICAgIGZsb2F0IGN1cnJlbnRTY2FsZUZhY3RvciA9IFtbW21haW5GcmFtZSB3
ZWJWaWV3XSB3aW5kb3ddIGJhY2tpbmdTY2FsZUZhY3Rvcl07CiAgICAgZmxvYXQgcmVxdWlyZWRT
Y2FsZUZhY3RvciA9IDE7CiAgICAgaWYgKGxvY2FsUGF0aE9yVVJMLmNvbnRhaW5zSWdub3JpbmdB
U0NJSUNhc2UoIi9oaWRwaS0zeC0iKSkKQEAgLTE4MDMsNyArMTgwMyw3IEBAIHN0YXRpYyB2b2lk
IHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlKGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmIG9w
dGlvbnMsIFJlc2V0CiAgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGRlY2xh
cmVUeXBlczpAW05TU3RyaW5nUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKICNlbmRpZgogCi0gICAg
V2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc0ZvclRl
c3RpbmcoU3RyaW5nIHsgb3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcygpLmNf
c3RyKCkgfSk7CisgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFsU3VwcG9ydGVk
SW1hZ2VUeXBlc0ZvclRlc3RpbmcoU3RyaW5nOjpmcm9tTGF0aW4xKG9wdGlvbnMuYWRkaXRpb25h
bFN1cHBvcnRlZEltYWdlVHlwZXMoKS5jX3N0cigpKSk7CiAKICAgICBbbWFpbkZyYW1lIF9jbGVh
ck9wZW5lcl07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9DQk9SUmVhZGVyVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Q0JPUlJlYWRlclRlc3QuY3BwCmluZGV4IDY2MzMyZTllMWVmYmZiYzYzMGY0NzBkZjgyNjM1MDRj
NmMyMDcwYjAuLjQ0Zjc5MTdhZGJlYTBiZmY4YmI4ZWY0MzBhOTljYWY4MzQ1YWEzMjUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQk9SUmVhZGVyVGVzdC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NCT1JSZWFkZXJUZXN0
LmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIFRFU1QoQ0JPUlJlYWRlclRlc3QsIFRlc3RSZWFkU3Ry
aW5nV2l0aE5VTCkKICAgICAgICAgY29uc3QgU3RyaW5nIHZhbHVlOwogICAgICAgICBjb25zdCBW
ZWN0b3I8dWludDhfdD4gY2JvckRhdGE7CiAgICAgfSBrU3RyaW5nVGVzdENhc2VzW10gPSB7Ci0g
ICAgICAgIHsgU3RyaW5nKCJzdHJpbmdfd2l0aG91dF9udWwiKSwKKyAgICAgICAgeyAic3RyaW5n
X3dpdGhvdXRfbnVsIl9zdHIsCiAgICAgICAgICAgICB7IDB4NzIsIDB4NzMsIDB4NzQsIDB4NzIs
IDB4NjksIDB4NkUsIDB4NjcsIDB4NUYsIDB4NzcsIDB4NjksIDB4NzQsIDB4NjgsCiAgICAgICAg
ICAgICAgICAgMHg2RiwgMHg3NSwgMHg3NCwgMHg1RiwgMHg2RSwgMHg3NSwgMHg2QyB9IH0sCiAg
ICAgICAgIHsgU3RyaW5nKCJudWxfdGVybWluYXRlZF9zdHJpbmdcMCIsIDIyKSwKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMmIzYzUwZWVmZDU2NWFjYTg3
OWQ0MTUzMzRmZmNkMDk1OTI0NmQxNS4uM2IyZjI4ZmI3ZGJkNTRiZDBlNmEwNjBkOWE1MGY3YTMw
YmNmZDJhOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAg
LTE3MDgsNyArMTcwOCw3IEBAIHZvaWQgVGVzdEludm9jYXRpb246OndhaXRGb3JQb3N0RHVtcFdh
dGNoZG9nVGltZXJGaXJlZCgpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgY2hhciBidWZmZXJb
MTAyNF07CiAgICAgc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiNQSUQgVU5SRVNQ
T05TSVZFIC0gJXMgKHBpZCAlZClcbiIsIGdldHByb2duYW1lKCksIGdldHBpZCgpKTsKLSAgICBv
dXRwdXRUZXh0KFN0cmluZyB7IGJ1ZmZlciB9KTsKKyAgICBvdXRwdXRUZXh0KFN0cmluZzo6ZnJv
bUxhdGluMShidWZmZXIpKTsKICNlbmRpZgogICAgIGRvbmUoKTsKIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvQ3Jhc2hSZXBvcnRlckluZm8ubW0gYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvY29hL0NyYXNoUmVwb3J0ZXJJbmZvLm1tCmluZGV4IDQxMGQ5ZmRj
YjMxZTJjNmU2Y2E3NjQ5NTYxNDYwNjM4YzA5MTA1ZWIuLjFmMmYxMDA5MTMyYmJmZTBhZjk2ZGQ0
YjFhYWM4YmQzMjBmNjMxMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29j
b2EvQ3Jhc2hSZXBvcnRlckluZm8ubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2Nv
YS9DcmFzaFJlcG9ydGVySW5mby5tbQpAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgU3RyaW5nIHRl
c3RQYXRoRnJvbVVSTChXS1VSTFJlZiB1cmwpCiAgICAgU3RyaW5nIHBhdGhTdHJpbmcocGF0aENG
U3RyaW5nLmdldCgpKTsKICAgICAKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoc2NoZW1lU3RyaW5nLCAiZmlsZSIpKSB7Ci0gICAgICAgIFN0cmluZyBsYXlvdXRUZXN0cygi
L0xheW91dFRlc3RzLyIpOworICAgICAgICBTdHJpbmcgbGF5b3V0VGVzdHMoIi9MYXlvdXRUZXN0
cy8iX3MpOwogICAgICAgICBzaXplX3QgbGF5b3V0VGVzdHNPZmZzZXQgPSBwYXRoU3RyaW5nLmZp
bmQobGF5b3V0VGVzdHMpOwogICAgICAgICBpZiAobGF5b3V0VGVzdHNPZmZzZXQgPT0gbm90Rm91
bmQpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggZGY4MWY0Y2Q3MDk2
MzRlMTZjOWY4YTQ5MWZiZDkyNzU1NDM4MGFmOC4uMDU5MGJkZmExNGVkOTUwZjg0ZDA4NDdhMDhj
M2E3ZDE0YTI1NmEzMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2Ev
VGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMTEwLDkgKzExMCw5IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmNvY29hUGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IE9wdGlvbnMmIG9wdGlvbnMpCiAg
ICAgaWYgKCFkdW1wUmVuZGVyVHJlZVRlbXApCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmlu
ZyByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9sZGVyID0gU3RyaW5nKGR1bXBSZW5kZXJUcmVlVGVt
cCkgKyAnLycgKyAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyI7CisgICAgU3RyaW5nIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NGb2xkZXIgPSBtYWtlU3RyaW5nKGR1bXBSZW5kZXJUcmVlVGVtcCwgIi9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7CiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBjcmVhdGVEaXJlY3RvcnlBdFBhdGg6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvbGRlciB3
aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOiBuaWxd
OwotICAgIFN0cmluZyBmdWxsQnJvd3NpbmdTZXNzaW9uUmVzb3VyY2VMb2cgPSByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRm9sZGVyICsgJy8nICsgImZ1bGxfYnJvd3Npbmdfc2Vzc2lvbl9yZXNvdXJj
ZUxvZy5wbGlzdCI7CisgICAgU3RyaW5nIGZ1bGxCcm93c2luZ1Nlc3Npb25SZXNvdXJjZUxvZyA9
IG1ha2VTdHJpbmcocmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvbGRlciwgIi9mdWxsX2Jyb3dzaW5n
X3Nlc3Npb25fcmVzb3VyY2VMb2cucGxpc3QiKTsKICAgICBOU0RpY3Rpb25hcnkgKnJlc291cmNl
TG9nUGxpc3QgPSBAeyBAInZlcnNpb24iOiBAKDEpIH07CiAgICAgaWYgKCFbcmVzb3VyY2VMb2dQ
bGlzdCB3cml0ZVRvRmlsZTpmdWxsQnJvd3NpbmdTZXNzaW9uUmVzb3VyY2VMb2cgYXRvbWljYWxs
eTpZRVNdKQogICAgICAgICBXVEZDcmFzaCgpOwpAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgVGVz
dENvbnRyb2xsZXI6OmNvY29hUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0
T3B0aW9ucyYgb3B0aW9uCiAKICAgICBbZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xp
ZW50KCkgc2V0QWxsb3dSYWlzaW5nUXVvdGE6WUVTXTsKIAotICAgIFdlYkNvcmVUZXN0U3VwcG9y
dDo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNGb3JUZXN0aW5nKFN0cmluZyB7IG9w
dGlvbnMuYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoKS5jX3N0cigpIH0pOworICAgIFdl
YkNvcmVUZXN0U3VwcG9ydDo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNGb3JUZXN0
aW5nKFN0cmluZzo6ZnJvbUxhdGluMShvcHRpb25zLmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5
cGVzKCkuY19zdHIoKSkpOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVdpbGxS
dW5UZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0SW52b2NhdGlvbikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456978</attachid>
            <date>2022-04-07 15:40:52 -0700</date>
            <delta_ts>2022-04-07 19:21:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238925-20220407154051.patch</filename>
            <type>text/plain</type>
            <size>39880</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJlNzhlNzFkZmM2YjRiNzgw
MjM4ZjJhOTFlNGQ4MTZhYTk4MTQ4OTQuLmM0MGZlZWVkYTVlYjIwNWQ2MzkyZWRhOTMwNTc0OGI4
ZjM4NDY3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjItMDQtMDcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGRlcHJlY2F0ZWQgU3Ry
aW5nKGNvbnN0IGNoYXIqKSB3aXRoIFN0cmluZzo6ZnJvbUxhdGluMSgpIGluIG1vcmUgcGxhY2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg5MjUK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VV
dGlsaXRpZXM6OnN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpDYWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKToKKyAgICAgICAgKiBTY3Jp
cHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVy
ZXMuY3BwLmVyYjoKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlBy
ZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5lcmI6CisgICAgICAgICogU2NyaXB0
cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3Bw
LmVyYjoKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW06
CisgICAgICAgIChlbmNvZGVPYmplY3QpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAgICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5IF9zZW5kSW52b2NhdGlvbjppbnRlcmZhY2U6XSk6CisgICAgICAgICogU2hhcmVkL0NvY29h
L1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5t
bToKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENs
aWVudEJ1bmRsZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlh
bGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50UHJvY2Vzc05hbWUpOgorICAgICAgICAoV2ViS2l0OjpY
UENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlvbkRhdGEp
OgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2Uv
WFBDU2VydmljZU1haW4ubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VNYWluKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06
CisgICAgICAgICgrW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgZ2V0QWxsTG9jYWxBdXRoZW50
aWNhdG9yQ3JlZGVudGlhbHNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzaG93U2FmZUJyb3dzaW5nV2Fy
bmluZyk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2NvY29hL1Byb2Nlc3NMYXVuY2hl
ckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nl
c3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1
dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y2xl
YXJBbGxDcmVkZW50aWFscyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxDb25uZWN0
aW9uOjpjcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleSBjb25zdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBhc3RlQWNjZXNzQ2F0ZWdv
cnlGb3JDb21tYW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAg
ICAgKFdlYktpdDo6UERGUGx1Z2luOjpwbHVnaW5JbmZvKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpyZXBsYWNl
U2VsZWN0aW9uUGFzdGVib2FyZE5hbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9J
UENUZXN0aW5nQVBJLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6Y3JlYXRl
SlNBcnJheUZvckFyZ3VtZW50RGVzY3JpcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6SVBDVGVz
dGluZ0FQSTo6SlNNZXNzYWdlTGlzdGVuZXI6OmpzRGVzY3JpcHRpb25Gcm9tRGVjb2Rlcik6Cisg
ICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlB1c2hEYWVtb25NYWluKToKKwogMjAyMi0wNC0wNyAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBMYXllckJhY2tpbmcgUmVuZGVyaW5n
UHVycG9zZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDFhYzkwOWJmZWJlM2M0MTJl
YmExNzMyOGY1MTg0YTc0ZjdlMDg0MDMuLjgwODY3MjI1NjI4YWM5YTVkYmJjMzYxN2NkZjVkZWU5
MDBjYWMwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMi0wNC0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJl
cGxhY2UgZGVwcmVjYXRlZCBTdHJpbmcoY29uc3QgY2hhciopIHdpdGggU3RyaW5nOjpmcm9tTGF0
aW4xKCkgaW4gbW9yZSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzODkyNQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgICogSGlzdG9yeS9IaXN0b3J5UHJvcGVydHlMaXN0Lm1tOgorICAgICAgICAoSGlz
dG9yeVByb3BlcnR5TGlzdFdyaXRlcjo6SGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlcik6CisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgY29y
ZUNvbW1hbmRCeU5hbWU6XSk6CisKIDIwMjItMDQtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBEcm9wIHVudXNlZCBFZGl0b3JDbGllbnQ6OmdldEF1dG9Db3Jy
ZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAKaW5kZXggMThmMTFkMzM5ZTFlMjA3
NTlhNjk4OWVhM2FmMjNkOGE5ODYxYzQ1Yi4uODAwMDU2NzgzZjY1ZmZhZWFlM2RjOGVkMmZjMDFh
ZTdjYzRkY2QyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRh
YmFzZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRh
YmFzZVV0aWxpdGllcy5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCBEYXRhYmFzZVV0aWxpdGllczo6YnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudAogCiBTdHJpbmcgRGF0YWJhc2VVdGlsaXRpZXM6OnN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hT
dG9yZWRWYWx1ZShjb25zdCBjaGFyKiBvcmlnaW5hbFF1ZXJ5KQogewotICAgIHJldHVybiBTdHJp
bmcob3JpZ2luYWxRdWVyeSkucmVwbGFjZSgiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJ
U1RTIiwgIkNSRUFURSBVTklRVUUgSU5ERVgiKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tTGF0
aW4xKG9yaWdpbmFsUXVlcnkpLnJlcGxhY2UoIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVY
SVNUUyIsICJDUkVBVEUgVU5JUVVFIElOREVYIik7CiB9CiAKIFRhYmxlQW5kSW5kZXhQYWlyIERh
dGFiYXNlVXRpbGl0aWVzOjpjdXJyZW50VGFibGVBbmRJbmRleFF1ZXJpZXMoY29uc3QgU3RyaW5n
JiB0YWJsZU5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5jcHAKaW5kZXggZjVkZDMxZmZiNTk5ZWNmMTMzZWEwNzNhZWE4YWQ2NzE2
MjE4ZGY1My4uYzRmZmFmYTlhNGM1YWE2YjFkNjk3NjE2MzVkNWNlOGY5ZmM5NTM5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNw
cApAQCAtNjA3LDggKzYwNyw5IEBAIHZvaWQgQ2FjaGU6OmR1bXBDb250ZW50c1RvRmlsZSgpCiAg
ICAgYXV0byBmZCA9IG9wZW5GaWxlKGR1bXBGaWxlUGF0aCgpLCBGaWxlT3Blbk1vZGU6OldyaXRl
KTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoZmQpKQogICAgICAgICByZXR1cm47Ci0gICAgYXV0
byBwcm9sb2d1ZSA9IFN0cmluZygie1xuXCJlbnRyaWVzXCI6IFtcbiIpLnV0ZjgoKTsKLSAgICB3
cml0ZVRvRmlsZShmZCwgcHJvbG9ndWUuZGF0YSgpLCBwcm9sb2d1ZS5sZW5ndGgoKSk7CisKKyAg
ICBzdGF0aWMgY29uc3QgY2hhciBwcm9sb2d1ZVtdID0gIntcblwiZW50cmllc1wiOiBbXG4iOwor
ICAgIHdyaXRlVG9GaWxlKGZkLCBwcm9sb2d1ZSwgc3RybGVuKHByb2xvZ3VlKSk7CiAKICAgICBz
dHJ1Y3QgVG90YWxzIHsKICAgICAgICAgdW5zaWduZWQgY291bnQgeyAwIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5j
ZXNFeHBlcmltZW50YWxGZWF0dXJlcy5jcHAuZXJiIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMuY3Bw
LmVyYgppbmRleCA4MzBlYmFiOGU4NjIxODBlYjAzMGE2NTM5NjYyNmY0Mzg5MTBjMmI4Li4zNTE4
YWE4MjU2MjVjZTlhNWNiYzI1YThhYzFiZTEyNDVlZjBlODhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmlt
ZW50YWxGZWF0dXJlcy5jcHAuZXJiCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJl
bmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNwcC5lcmIK
QEAgLTQxLDcgKzQxLDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+JiBXZWJQ
cmVmZXJlbmNlczo6ZXhwZXJpbWVudGFsRmVhdHVyZXMoKQogPCUtIGlmIEBwcmVmLmNvbmRpdGlv
biAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgotICAgICAgICBB
UEk6OkV4cGVyaW1lbnRhbEZlYXR1cmU6OmNyZWF0ZShTdHJpbmcgeyA8JT0gQHByZWYuaHVtYW5S
ZWFkYWJsZU5hbWUgJT4gfSwgIjwlPSBAcHJlZi5uYW1lICU+Il9zLCBTdHJpbmcgeyA8JT0gQHBy
ZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uICU+IH0sIERFRkFVTFRfVkFMVUVfRk9SXzwlPSBA
cHJlZi5uYW1lICU+LCA8JT0gQHByZWYuaGlkZGVuICU+KSwKKyAgICAgICAgQVBJOjpFeHBlcmlt
ZW50YWxGZWF0dXJlOjpjcmVhdGUoPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVOYW1lICU+IiJfcywg
IjwlPSBAcHJlZi5uYW1lICU+Il9zLCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9u
ICU+IiJfcywgREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBAcHJlZi5o
aWRkZW4gJT4pLAogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNlbmRpZgogPCUtIGVuZCAt
JT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRl
cy9XZWJQcmVmZXJlbmNlc0ludGVybmFsRGVidWdGZWF0dXJlcy5jcHAuZXJiIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxE
ZWJ1Z0ZlYXR1cmVzLmNwcC5lcmIKaW5kZXggZTU2N2Y0NWIxZTQ0NTE2YjUyYjAzNjUwYmI5ZjJl
OTY0Yjg0OWIxYy4uMWM2MGVkZGQ4MjU2NjRkNGViMmIxMjRhMzI3OWQzMjdkMzViNDkxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlBy
ZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5lcmIKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1
Z0ZlYXR1cmVzLmNwcC5lcmIKQEAgLTQwLDcgKzQwLDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxB
UEk6Ok9iamVjdD4+JiBXZWJQcmVmZXJlbmNlczo6aW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKCkKIDwl
LSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUt
IGVuZCAtJT4KLSAgICAgICAgQVBJOjpJbnRlcm5hbERlYnVnRmVhdHVyZTo6Y3JlYXRlKFN0cmlu
ZyB7IDwlPSBAcHJlZi5odW1hblJlYWRhYmxlTmFtZSAlPiB9LCAiPCU9IEBwcmVmLm5hbWUgJT4i
X3MsIFN0cmluZyB7IDwlPSBAcHJlZi5odW1hblJlYWRhYmxlRGVzY3JpcHRpb24gJT4gfSwgREVG
QVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBAcHJlZi5oaWRkZW4gJT4pLAor
ICAgICAgICBBUEk6OkludGVybmFsRGVidWdGZWF0dXJlOjpjcmVhdGUoPCU9IEBwcmVmLmh1bWFu
UmVhZGFibGVOYW1lICU+IiJfcywgIjwlPSBAcHJlZi5uYW1lICU+Il9zLCA8JT0gQHByZWYuaHVt
YW5SZWFkYWJsZURlc2NyaXB0aW9uICU+IiJfcywgREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVm
Lm5hbWUgJT4sIDwlPSBAcHJlZi5oaWRkZW4gJT4pLAogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAt
JT4KICNlbmRpZgogPCUtIGVuZCAtJT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3Bw
LmVyYiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVm
ZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwLmVyYgppbmRleCBlNzg0YWE2YTdmYWIzYWFkODQ4
NzJlNWE3ZDk5YmMzNzMxNzg1Yzg1Li5iODM3NDE1ODdlM2U2OTQ5ZGVkM2ZkZDJhYmY2ZDJlY2M2
YmY2YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1w
bGF0ZXMvV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNwcC5lcmIKKysrIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzU3RvcmVE
ZWZhdWx0c01hcC5jcHAuZXJiCkBAIC01Miw3ICs1MiwxMSBAQCBXZWJQcmVmZXJlbmNlc1N0b3Jl
OjpWYWx1ZU1hcCYgV2ViUHJlZmVyZW5jZXNTdG9yZTo6ZGVmYXVsdHMoKQogPCUtIGlmIEBwcmVm
LmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgor
PCUtIGlmIEBwcmVmLnR5cGUgPT0gIlN0cmluZyIgLSU+CisgICAgICAgIGRlZmF1bHRzLmdldCgp
LnNldChXZWJQcmVmZXJlbmNlc0tleTo6PCU9IEBwcmVmLm5hbWVMb3dlciAlPktleSgpLCBWYWx1
ZShtYWtlU3RyaW5nKERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+KSkpOworPCUt
IGVsc2UgLSU+CiAgICAgICAgIGRlZmF1bHRzLmdldCgpLnNldChXZWJQcmVmZXJlbmNlc0tleTo6
PCU9IEBwcmVmLm5hbWVMb3dlciAlPktleSgpLCBWYWx1ZSg8JT0gQHByZWYudHlwZSAlPihERUZB
VUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPikpKTsKKzwlLSBlbmQgLSU+CiA8JS0gaWYg
QHByZWYuY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQppbmRleCAx
NTczZGYyYjcyYzYwODc2MjhlOTdkNGMzZGRjZWY5NDJkOGNkM2U0Li44YzEyZWRlYTdlYWNiMTkz
MmEyMzFhYWM3NWYwOTI5ZjQ3OWY3MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtNDY0LDcgKzQ2NCw3IEBA
IHN0YXRpYyB2b2lkIGVuY29kZU9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIgKmVuY29kZXIs
IGlkIG9iamVjdCkKICAgICAgICAgZW5jb2Rlci0+X29iamVjdHNCZWluZ0VuY29kZWQucmVtb3Zl
KG9iamVjdCk7CiAgICAgfSk7CiAKLSAgICBlbmNvZGVyLT5fY3VycmVudERpY3Rpb25hcnktPnNl
dChjbGFzc05hbWVLZXksIEFQSTo6U3RyaW5nOjpjcmVhdGUoU3RyaW5nIHsgY2xhc3NfZ2V0TmFt
ZShvYmplY3RDbGFzcykgfSkpOworICAgIGVuY29kZXItPl9jdXJyZW50RGljdGlvbmFyeS0+c2V0
KGNsYXNzTmFtZUtleSwgQVBJOjpTdHJpbmc6OmNyZWF0ZShTdHJpbmc6OmZyb21MYXRpbjEoY2xh
c3NfZ2V0TmFtZShvYmplY3RDbGFzcykpKSk7CiAKICAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNs
YXNzOltOU0ludm9jYXRpb24gY2xhc3NdXSkgewogICAgICAgICAvLyBXZSBoYXZlIHRvIHNwZWNp
YWwgY2FzZSBOU0ludm9jYXRpb24gc2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBlbmNvZGUgdGhlIHRh
cmdldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1v
dGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCA1OTY5N2UyNjJkOTkzZjUyOThiZDM4ZTFmYzNk
ZTNkMTY5OThjYzBmLi5hNzZmZDdhYjc1ODg2NjQwYzc1NTg2ZTlmNTVmMzE0YmM2NDk2Y2E0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0
UmVnaXN0cnkubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90
ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC0xNjIsNyArMTYyLDcgQEAgLSAodm9pZClfc2VuZEludm9j
YXRpb246KE5TSW52b2NhdGlvbiAqKWludm9jYXRpb24gaW50ZXJmYWNlOihfV0tSZW1vdGVPYmpl
Y3RJbnQKICAgICAgICAgaWYgKHN0cmNtcChbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0
aE9iakNUeXBlczpyZXBseUJsb2NrU2lnbmF0dXJlXS5tZXRob2RSZXR1cm5UeXBlLCAidiIpKQog
ICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9u
IGZvcm1hdDpAIlJldHVybiB2YWx1ZSBvZiBibG9jayBhcmd1bWVudCBtdXN0IGJlICd2b2lkJy4g
KCVzKSIsIHNlbF9nZXROYW1lKGludm9jYXRpb24uc2VsZWN0b3IpXTsKIAotICAgICAgICByZXBs
eUluZm8gPSBtYWtlVW5pcXVlPFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6UmVwbHlJ
bmZvPihnZW5lcmF0ZVJlcGx5SWRlbnRpZmllcigpLCBTdHJpbmcgeyByZXBseUJsb2NrU2lnbmF0
dXJlIH0pOworICAgICAgICByZXBseUluZm8gPSBtYWtlVW5pcXVlPFdlYktpdDo6UmVtb3RlT2Jq
ZWN0SW52b2NhdGlvbjo6UmVwbHlJbmZvPihnZW5lcmF0ZVJlcGx5SWRlbnRpZmllcigpLCBTdHJp
bmc6OmZyb21MYXRpbjEocmVwbHlCbG9ja1NpZ25hdHVyZSkpOwogCiAgICAgICAgIC8vIFJlcGxh
Y2UgdGhlIGJsb2NrIG9iamVjdCBzbyB3ZSB3b24ndCB0cnkgdG8gZW5jb2RlIGl0LgogICAgICAg
ICBpZCBudWxsID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQppbmRleCBmNjFiN2Y0NDljN2JkMDY1MDFhNGVmMDg2
YjVhOTExMjhmYTlhYmEyLi41ZWFiODE2MjY2MmZkY2Q2ZmFmODhiNTFjZmUyMjYzOWJhZDNlMjc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9u
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lv
bkNvY29hLm1tCkBAIC0yOTksNyArMjk5LDcgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcgcHJlZml4LCBUeXBlIHR5cGUKICAg
ICAgICAgV1RGTG9nQWx3YXlzKCJDb3VsZCBub3QgY3JlYXRlIGEgc2FuZGJveCBleHRlbnNpb24g
Zm9yIHRlbXBvcmFyeSBmaWxlICclcyciLCBwYXRoLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQotICAgIHJldHVybiB7eyBXVEZNb3ZlKGhhbmRsZSksIFN0cmlu
ZyhwYXRoLmRhdGEoKSkgfX07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGhhbmRsZSksIFN0cmlu
Zzo6ZnJvbVVURjgocGF0aC5kYXRhKCkpIH0gfTsKIH0KIAogYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBleHRlbnNpb25D
bGFzcykgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVu
dHJ5UG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0Nv
Y29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0KaW5kZXggNDI2MDQyNjA5Y2Zm
OGQxOTA4NDhkZmEzOGQxMDc5YmQ3ZjgyNWRhYi4uY2I3MjQwZDg1ZDI1ZTE3MzFjM2Q0NmViMzZh
ZTdjZjc2ODY0OGU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vydmlj
ZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQpAQCAtNzgsNyArNzgsNyBAQCBib29sIFhQQ1NlcnZp
Y2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRDbGllbnRJZGVudGlmaWVyKFN0cmluZyYgY2xpZW50
SWRlbnRpZmllcgogCiBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRDbGll
bnRCdW5kbGVJZGVudGlmaWVyKFN0cmluZyYgY2xpZW50QnVuZGxlSWRlbnRpZmllcikKIHsKLSAg
ICBjbGllbnRCdW5kbGVJZGVudGlmaWVyID0gU3RyaW5nIHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0
cmluZyhtX2luaXRpYWxpemVyTWVzc2FnZSwgImNsaWVudC1idW5kbGUtaWRlbnRpZmllciIpIH07
CisgICAgY2xpZW50QnVuZGxlSWRlbnRpZmllciA9IFN0cmluZzo6ZnJvbUxhdGluMSh4cGNfZGlj
dGlvbmFyeV9nZXRfc3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiY2xpZW50LWJ1bmRsZS1p
ZGVudGlmaWVyIikpOwogICAgIHJldHVybiAhY2xpZW50QnVuZGxlSWRlbnRpZmllci5pc0VtcHR5
KCk7CiB9CiAKQEAgLTExMSw3ICsxMTEsNyBAQCBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRl
bGVnYXRlOjpnZXRQcm9jZXNzSWRlbnRpZmllcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZgogCiBi
b29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRDbGllbnRQcm9jZXNzTmFtZShT
dHJpbmcmIGNsaWVudFByb2Nlc3NOYW1lKQogewotICAgIGNsaWVudFByb2Nlc3NOYW1lID0gU3Ry
aW5nIHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhtX2luaXRpYWxpemVyTWVzc2FnZSwgInVp
LXByb2Nlc3MtbmFtZSIpIH07CisgICAgY2xpZW50UHJvY2Vzc05hbWUgPSBTdHJpbmc6OmZyb21M
YXRpbjEoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhtX2luaXRpYWxpemVyTWVzc2FnZSwgInVp
LXByb2Nlc3MtbmFtZSIpKTsKICAgICByZXR1cm4gIWNsaWVudFByb2Nlc3NOYW1lLmlzRW1wdHko
KTsKIH0KIApAQCAtMTE5LDMwICsxMTksMzAgQEAgYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJE
ZWxlZ2F0ZTo6Z2V0RXh0cmFJbml0aWFsaXphdGlvbkRhdGEoSGFzaE1hcDxTdHJpbmcsIFMKIHsK
ICAgICB4cGNfb2JqZWN0X3QgZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0ID0geHBj
X2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiZXh0cmEtaW5pdGlh
bGl6YXRpb24tZGF0YSIpOwogCi0gICAgU3RyaW5nIGluc3BlY3RvclByb2Nlc3MgeyB4cGNfZGlj
dGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwgImlu
c3BlY3Rvci1wcm9jZXNzIikgfTsKKyAgICBhdXRvIGluc3BlY3RvclByb2Nlc3MgPSBTdHJpbmc6
OmZyb21MYXRpbjEoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXph
dGlvbkRhdGFPYmplY3QsICJpbnNwZWN0b3ItcHJvY2VzcyIpKTsKICAgICBpZiAoIWluc3BlY3Rv
clByb2Nlc3MuaXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQo
Imluc3BlY3Rvci1wcm9jZXNzIl9zLCBpbnNwZWN0b3JQcm9jZXNzKTsKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLSAgICBTdHJpbmcgc2VydmljZVdvcmtlclByb2Nlc3MgeyB4cGNfZGlj
dGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwgInNl
cnZpY2Utd29ya2VyLXByb2Nlc3MiKSB9OworICAgIGF1dG8gc2VydmljZVdvcmtlclByb2Nlc3Mg
PSBTdHJpbmc6OmZyb21MYXRpbjEoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJ
bml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJzZXJ2aWNlLXdvcmtlci1wcm9jZXNzIikpOwogICAg
IGlmICghc2VydmljZVdvcmtlclByb2Nlc3MuaXNFbXB0eSgpKQogICAgICAgICBleHRyYUluaXRp
YWxpemF0aW9uRGF0YS5hZGQoInNlcnZpY2Utd29ya2VyLXByb2Nlc3MiX3MsIFdURk1vdmUoc2Vy
dmljZVdvcmtlclByb2Nlc3MpKTsKLSAgICBTdHJpbmcgcmVnaXN0cmFibGVEb21haW4geyB4cGNf
ZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0YU9iamVjdCwg
InJlZ2lzdHJhYmxlLWRvbWFpbiIpIH07CisgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFN0
cmluZzo6ZnJvbUxhdGluMSh4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRp
YWxpemF0aW9uRGF0YU9iamVjdCwgInJlZ2lzdHJhYmxlLWRvbWFpbiIpKTsKICAgICBpZiAoIXJl
Z2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSkKICAgICAgICAgZXh0cmFJbml0aWFsaXphdGlvbkRh
dGEuYWRkKCJyZWdpc3RyYWJsZS1kb21haW4iX3MsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4p
KTsKICNlbmRpZgogCi0gICAgU3RyaW5nIGlzUHJld2FybWVkUHJvY2VzcyB7IHhwY19kaWN0aW9u
YXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRpb25EYXRhT2JqZWN0LCAiaXMtcHJl
d2FybWVkIikgfTsKKyAgICBhdXRvIGlzUHJld2FybWVkUHJvY2VzcyA9IFN0cmluZzo6ZnJvbUxh
dGluMSh4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV4dHJhRGF0YUluaXRpYWxpemF0aW9uRGF0
YU9iamVjdCwgImlzLXByZXdhcm1lZCIpKTsKICAgICBpZiAoIWlzUHJld2FybWVkUHJvY2Vzcy5p
c0VtcHR5KCkpCiAgICAgICAgIGV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZCgiaXMtcHJld2Fy
bWVkIl9zLCBpc1ByZXdhcm1lZFByb2Nlc3MpOwogCiAgICAgaWYgKCFpc0NsaWVudFNhbmRib3hl
ZCgpKSB7Ci0gICAgICAgIFN0cmluZyB1c2VyRGlyZWN0b3J5U3VmZml4IHsgeHBjX2RpY3Rpb25h
cnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFPYmplY3QsICJ1c2VyLWRp
cmVjdG9yeS1zdWZmaXgiKSB9OworICAgICAgICBhdXRvIHVzZXJEaXJlY3RvcnlTdWZmaXggPSBT
dHJpbmc6OmZyb21MYXRpbjEoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0
aWFsaXphdGlvbkRhdGFPYmplY3QsICJ1c2VyLWRpcmVjdG9yeS1zdWZmaXgiKSk7CiAgICAgICAg
IGlmICghdXNlckRpcmVjdG9yeVN1ZmZpeC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBleHRyYUlu
aXRpYWxpemF0aW9uRGF0YS5hZGQoInVzZXItZGlyZWN0b3J5LXN1ZmZpeCJfcywgdXNlckRpcmVj
dG9yeVN1ZmZpeCk7CiAgICAgfQogCi0gICAgU3RyaW5nIGFsd2F5c1J1bnNBdEJhY2tncm91bmRQ
cmlvcml0eSB7IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXh0cmFEYXRhSW5pdGlhbGl6YXRp
b25EYXRhT2JqZWN0LCAiYWx3YXlzLXJ1bnMtYXQtYmFja2dyb3VuZC1wcmlvcml0eSIpIH07Cisg
ICAgYXV0byBhbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkgPSBTdHJpbmc6OmZyb21MYXRp
bjEoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhleHRyYURhdGFJbml0aWFsaXphdGlvbkRhdGFP
YmplY3QsICJhbHdheXMtcnVucy1hdC1iYWNrZ3JvdW5kLXByaW9yaXR5IikpOwogICAgIGlmICgh
YWx3YXlzUnVuc0F0QmFja2dyb3VuZFByaW9yaXR5LmlzRW1wdHkoKSkKICAgICAgICAgZXh0cmFJ
bml0aWFsaXphdGlvbkRhdGEuYWRkKCJhbHdheXMtcnVucy1hdC1iYWNrZ3JvdW5kLXByaW9yaXR5
Il9zLCBhbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBD
U2VydmljZU1haW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVz
L0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4ubW0KaW5kZXggMTA4Y2IwOGFhYjhlNmU1
MTg1YWE1MWFiYjBiNmRmMmI1MzQ0MTM2NC4uZjFjZjQ5ZDgzNmI4OGI3NDkyNjc0ODNkNjg0ZWQ3
ZTk5OTEyZjZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0
aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2
aWNlTWFpbi5tbQpAQCAtMjAzLDcgKzIwMyw3IEBAIGludCBYUENTZXJ2aWNlTWFpbihpbnQsIGNv
bnN0IGNoYXIqKikKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIFN0
cmluZyB3ZWJLaXRCdW5kbGVWZXJzaW9uIHsgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhib290
c3RyYXAuZ2V0KCksICJXZWJLaXRCdW5kbGVWZXJzaW9uIikgfTsKKyAgICAgICAgYXV0byB3ZWJL
aXRCdW5kbGVWZXJzaW9uID0gU3RyaW5nOjpmcm9tTGF0aW4xKHhwY19kaWN0aW9uYXJ5X2dldF9z
dHJpbmcoYm9vdHN0cmFwLmdldCgpLCAiV2ViS2l0QnVuZGxlVmVyc2lvbiIpKTsKICAgICAgICAg
U3RyaW5nIGV4cGVjdGVkQnVuZGxlVmVyc2lvbiA9IFtOU0J1bmRsZSBidW5kbGVXaXRoSWRlbnRp
ZmllcjpAImNvbS5hcHBsZS5XZWJLaXQiXS5pbmZvRGljdGlvbmFyeVsoX19icmlkZ2UgTlNTdHJp
bmcgKilrQ0ZCdW5kbGVWZXJzaW9uS2V5XTsKICAgICAgICAgaWYgKCF3ZWJLaXRCdW5kbGVWZXJz
aW9uLmlzTnVsbCgpICYmICFleHBlY3RlZEJ1bmRsZVZlcnNpb24uaXNOdWxsKCkgJiYgd2ViS2l0
QnVuZGxlVmVyc2lvbiAhPSBleHBlY3RlZEJ1bmRsZVZlcnNpb24pIHsKICAgICAgICAgICAgIGF1
dG8gZXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiV2ViS2l0IGZyYW1ld29yayB2ZXJzaW9uIG1p
c21hdGNoOiAiLCB3ZWJLaXRCdW5kbGVWZXJzaW9uLCAiICE9ICIsIGV4cGVjdGVkQnVuZGxlVmVy
c2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IGQ3ZmQxYTY4MzYzMmU5MWI1
Njg1ZTczMjRkZWZkYTU3Nzk0OGIxZDUuLmFjNjRlZjM0ZDZmZWU4MDNmOGY2YTg2ZjMyZjk4ODYw
NjdlYzA0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0zMTUsNyArMzE1LDcg
QEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBnZXRBbGxMb2NhbEF1dGhlbnRpY2F0b3JDcmVk
ZW50aWFsc0ltcGwoTlNTdHJpbmcgKmFjY2UKICsgKE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICop
Z2V0QWxsTG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbHMKIHsKICNpZiBFTkFCTEUoV0VCX0FV
VEhOKQotICAgIHJldHVybiBnZXRBbGxMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsc0ltcGwo
U3RyaW5nKFdlYkNvcmU6OkxvY2FsQXV0aGVudGljYXRvckFjY2Vzc0dyb3VwKSkuYXV0b3JlbGVh
c2UoKTsKKyAgICByZXR1cm4gZ2V0QWxsTG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbHNJbXBs
KEAoV2ViQ29yZTo6TG9jYWxBdXRoZW50aWNhdG9yQWNjZXNzR3JvdXApKS5hdXRvcmVsZWFzZSgp
OwogI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAwNjZiOGIwNTU3M2JhYzYwMGQ0ZGY0
MTAwNGU2MjJmMDBmZmY5MzJjLi4wMTVhNjY4NDBkYmM4Nzg4YmQzNGQ3OWZkN2MzYmJlNTljZWQx
NzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpA
QCAtMTkwMCw3ICsxOTAwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2hvd1NhZmVCcm93c2luZ1dh
cm5pbmcoY29uc3QgU2FmZUJyb3dzaW5nV2FybmluZyYgd2FybmluZywgQ28KICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKENvbnRpbnVlVW5zYWZlTG9hZDo6WWVzKTsKIAogICAgIFdl
YkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpWYWx1ZURpY3Rpb25hcnkgc2hvd2VkV2Fy
bmluZ0RpY3Rpb25hcnk7Ci0gICAgc2hvd2VkV2FybmluZ0RpY3Rpb25hcnkuc2V0KCJzb3VyY2Ui
X3MsIFN0cmluZygic2VydmljZSIpKTsKKyAgICBzaG93ZWRXYXJuaW5nRGljdGlvbmFyeS5zZXQo
InNvdXJjZSJfcywgInNlcnZpY2UiX3MpOwogCiAgICAgbV9wYWdlLT5sb2dEaWFnbm9zdGljTWVz
c2FnZVdpdGhWYWx1ZURpY3Rpb25hcnkoIlNhZmVCcm93c2luZy5TaG93ZWRXYXJuaW5nIl9zLCAi
U2FmYXJpIl9zLCBzaG93ZWRXYXJuaW5nRGljdGlvbmFyeSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxl
OjpObyk7CiAKQEAgLTE5MTUsNyArMTkxNSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNob3dTYWZl
QnJvd3NpbmdXYXJuaW5nKGNvbnN0IFNhZmVCcm93c2luZ1dhcm5pbmcmIHdhcm5pbmcsIENvCiAg
ICAgICAgIGJvb2wgZm9yTWFpbkZyYW1lTmF2aWdhdGlvbiA9IFt3ZWFrVGhpcy0+bV9zYWZlQnJv
d3NpbmdXYXJuaW5nIGZvck1haW5GcmFtZU5hdmlnYXRpb25dOwogCiAgICAgICAgIFdlYkNvcmU6
OkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpWYWx1ZURpY3Rpb25hcnkgZGljdGlvbmFyeTsKLSAg
ICAgICAgZGljdGlvbmFyeS5zZXQoInNvdXJjZSJfcywgU3RyaW5nKCJzZXJ2aWNlIikpOworICAg
ICAgICBkaWN0aW9uYXJ5LnNldCgic291cmNlIl9zLCAic2VydmljZSJfcyk7CiAgICAgICAgIGlm
IChuYXZpZ2F0ZXNGcmFtZSAmJiBmb3JNYWluRnJhbWVOYXZpZ2F0aW9uKSB7CiAgICAgICAgICAg
ICAvLyBUaGUgc2FmZSBicm93c2luZyB3YXJuaW5nIHdpbGwgYmUgaGlkZGVuIG9uY2UgdGhlIG5l
eHQgcGFnZSBpcyBzaG93bi4KICAgICAgICAgICAgIGJvb2wgY29udGludWluZ1Vuc2FmZUxvYWQg
PSBXVEY6OnN3aXRjaE9uKHJlc3VsdCwKQEAgLTE5MjQsMTUgKzE5MjQsMTUgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6c2hvd1NhZmVCcm93c2luZ1dhcm5pbmcoY29uc3QgU2FmZUJyb3dzaW5nV2Fybmlu
ZyYgd2FybmluZywgQ28KICAgICAgICAgICAgICk7CiAKICAgICAgICAgICAgIGlmIChjb250aW51
aW5nVW5zYWZlTG9hZCkKLSAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5LnNldCgiYWN0aW9uIl9z
LCBTdHJpbmcoInZpc2l0IHdlYnNpdGUiKSk7CisgICAgICAgICAgICAgICAgZGljdGlvbmFyeS5z
ZXQoImFjdGlvbiJfcywgInZpc2l0IHdlYnNpdGUiX3MpOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGRpY3Rpb25hcnkuc2V0KCJhY3Rpb24iX3MsIFN0cmluZygicmVkaXJlY3Qg
dG8gdXJsIikpOworICAgICAgICAgICAgICAgIGRpY3Rpb25hcnkuc2V0KCJhY3Rpb24iX3MsICJy
ZWRpcmVjdCB0byB1cmwiX3MpOwogCiAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9wYWdlLT5sb2dE
aWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZURpY3Rpb25hcnkoIlNhZmVCcm93c2luZy5QZXJmb3Jt
ZWRBY3Rpb24iX3MsICJTYWZhcmkiX3MsIGRpY3Rpb25hcnksIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZTo6Tm8pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgZGljdGlv
bmFyeS5zZXQoImFjdGlvbiJfcywgU3RyaW5nKCJnbyBiYWNrIikpOworICAgICAgICBkaWN0aW9u
YXJ5LnNldCgiYWN0aW9uIl9zLCAiZ28gYmFjayJfcyk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3Bh
Z2UtPmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlRGljdGlvbmFyeSgiU2FmZUJyb3dzaW5n
LlBlcmZvcm1lZEFjdGlvbiJfcywgIlNhZmFyaSJfcywgZGljdGlvbmFyeSwgV2ViQ29yZTo6U2hv
dWxkU2FtcGxlOjpObyk7CiAKICAgICAgICAgaWYgKCFuYXZpZ2F0ZXNGcmFtZSAmJiB3ZWFrVGhp
cy0+bV9zYWZlQnJvd3NpbmdXYXJuaW5nICYmICFmb3JNYWluRnJhbWVOYXZpZ2F0aW9uKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9jb2NvYS9Qcm9jZXNz
TGF1bmNoZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2NvY29h
L1Byb2Nlc3NMYXVuY2hlckNvY29hLm1tCmluZGV4IGQ4ZjBlY2FlZTMzYWViYjMyNGUxMmE2Nzdm
YzYyYjc0MjNmYTFlOGIuLjQ5ZWE5ZmYzZTI1NzI1YWE5ZjAxZWRkNmU4N2YwZmUzZjMzMDVkOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2NvY29hL1Byb2Nl
c3NMYXVuY2hlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVy
L2NvY29hL1Byb2Nlc3NMYXVuY2hlckNvY29hLm1tCkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBQ
cm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogCiAgICAgeHBjX2RpY3Rpb25hcnlfc2V0
X3ZhbHVlKGJvb3RzdHJhcE1lc3NhZ2UuZ2V0KCksICJleHRyYS1pbml0aWFsaXphdGlvbi1kYXRh
IiwgZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0KCkpOwogCi0gICAgYXV0byBlcnJvckhhbmRs
ZXJJbXBsID0gW3dlYWtQcm9jZXNzTGF1bmNoZXIgPSBXZWFrUHRyIHsgKnRoaXMgfSwgbGlzdGVu
aW5nUG9ydCwgbG9nTmFtZSA9IFN0cmluZyhuYW1lKV0gKHhwY19vYmplY3RfdCBldmVudCkgewor
ICAgIGF1dG8gZXJyb3JIYW5kbGVySW1wbCA9IFt3ZWFrUHJvY2Vzc0xhdW5jaGVyID0gV2Vha1B0
ciB7ICp0aGlzIH0sIGxpc3RlbmluZ1BvcnQsIGxvZ05hbWUgPSBDU3RyaW5nKG5hbWUpXSAoeHBj
X29iamVjdF90IGV2ZW50KSB7CiAgICAgICAgIEFTU0VSVCghZXZlbnQgfHwgeHBjX2dldF90eXBl
KGV2ZW50KSA9PSBYUENfVFlQRV9FUlJPUik7CiAKICAgICAgICAgYXV0byBwcm9jZXNzTGF1bmNo
ZXIgPSB3ZWFrUHJvY2Vzc0xhdW5jaGVyLmdldCgpOwpAQCAtMjUyLDkgKzI1Miw5IEBAIHZvaWQg
UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICNlbmRpZgogCiAgICAgICAgIGlmIChl
dmVudCkKLSAgICAgICAgICAgIExPR19FUlJPUigiRXJyb3Igd2hpbGUgbGF1bmNoaW5nICVzOiAl
cyIsIGxvZ05hbWUudXRmOCgpLmRhdGEoKSwgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVu
dCwgWFBDX0VSUk9SX0tFWV9ERVNDUklQVElPTikpOworICAgICAgICAgICAgTE9HX0VSUk9SKCJF
cnJvciB3aGlsZSBsYXVuY2hpbmcgJXM6ICVzIiwgbG9nTmFtZS5kYXRhKCksIHhwY19kaWN0aW9u
YXJ5X2dldF9zdHJpbmcoZXZlbnQsIFhQQ19FUlJPUl9LRVlfREVTQ1JJUFRJT04pKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgTE9HX0VSUk9SKCJFcnJvciB3aGlsZSBsYXVuY2hpbmcgJXM6
IE5vIHhwY19vYmplY3RfdCBldmVudCBhdmFpbGFibGUuIiwgbG9nTmFtZS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIExPR19FUlJPUigiRXJyb3Igd2hpbGUgbGF1bmNoaW5nICVzOiBObyB4
cGNfb2JqZWN0X3QgZXZlbnQgYXZhaWxhYmxlLiIsIGxvZ05hbWUuZGF0YSgpKTsKIAogI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgICAgIG1hY2hfcG9ydF91cmVmc190IHNlbmRSaWdodENvdW50ID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCA5ZDVkZDhk
MzE5OGM5MTNkZDM0Y2E3Y2M5NDUwYzk1YzNmNjFiNWQ1Li5kMjExNjc5OTYxYzFlNTM4NDEzMWUw
ZTJkYmZjMGZhZDYzMzMwMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNh
dG9yLm1tCkBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNsZWFy
QWxsQ3JlZGVudGlhbHMoKQogICAgIGF1dG8gcXVlcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgIFtxdWVyeSBzZXREaWN0aW9uYXJ5OkB7CiAgICAg
ICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCi0gICAgICAgIChpZClrU2VjQXR0
ckFjY2Vzc0dyb3VwOiAoaWQpU3RyaW5nKExvY2FsQXV0aGVudGljYXRvckFjY2Vzc0dyb3VwKSwK
KyAgICAgICAgKGlkKWtTZWNBdHRyQWNjZXNzR3JvdXA6IEAoTG9jYWxBdXRoZW50aWNhdG9yQWNj
ZXNzR3JvdXApLAogICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZ
RVMKICAgICB9XTsKICAgICB1cGRhdGVRdWVyeUlmTmVjZXNzYXJ5KHF1ZXJ5LmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbQppbmRleCBlNGU5NzlmNDlkYTg4ZWY5MmNj
MmQ2MjI2NjEzNWU5MTkwNDkwOGY5Li4zY2IxZDdmMmJmMjg1MzI5Zjc4MjBiMGFlMDBhODEwYmQy
MjM4ZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tCkBAIC0xNzAsNyAr
MTcwLDcgQEAgUmV0YWluUHRyPFNlY0tleVJlZj4gTG9jYWxDb25uZWN0aW9uOjpjcmVhdGVDcmVk
ZW50aWFsUHJpdmF0ZUtleShMQUNvbnRleHQgKmNvbnQKICAgICBSZXRhaW5QdHIgcHJpdmF0ZUtl
eUF0dHJpYnV0ZXMgPSBAewogICAgICAgICAoaWQpa1NlY0F0dHJBY2Nlc3NDb250cm9sOiAoaWQp
YWNjZXNzQ29udHJvbFJlZiwKICAgICAgICAgKGlkKWtTZWNBdHRySXNQZXJtYW5lbnQ6IEBZRVMs
Ci0gICAgICAgIChpZClrU2VjQXR0ckFjY2Vzc0dyb3VwOiAoaWQpU3RyaW5nKExvY2FsQXV0aGVu
dGljYXRvckFjY2Vzc0dyb3VwKSwKKyAgICAgICAgKGlkKWtTZWNBdHRyQWNjZXNzR3JvdXA6IEAo
TG9jYWxBdXRoZW50aWNhdG9yQWNjZXNzR3JvdXApLAogICAgICAgICAoaWQpa1NlY0F0dHJMYWJl
bDogc2VjQXR0ckxhYmVsLAogICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZzogc2Vj
QXR0ckFwcGxpY2F0aW9uVGFnLAogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAppbmRleCBmOGMyYmFiZjJjMWM2NzQ2MDA5ZjhlNmU2OWE5ZmY4YTBiNjY1ZTQ4
Li4xNTM0OTVlZWI5ODYzMDQ0MjRlZTdlMGZhYzM3YjE4YmYwZTFhOGNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI1MzgsMTEgKzI1MzgsMTEgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNlbGVjdEFsbCgpCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxET01QYXN0
ZUFjY2Vzc0NhdGVnb3J5PiBwYXN0ZUFjY2Vzc0NhdGVnb3J5Rm9yQ29tbWFuZChjb25zdCBTdHJp
bmcmIGNvbW1hbmROYW1lKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0
cmluZywgRE9NUGFzdGVBY2Nlc3NDYXRlZ29yeSwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4g
cGFzdGVDb21tYW5kTmFtZXMgPSBIYXNoTWFwPFN0cmluZywgRE9NUGFzdGVBY2Nlc3NDYXRlZ29y
eSwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiB7Ci0gICAgICAgIHsgIlBhc3RlIiwgRE9NUGFz
dGVBY2Nlc3NDYXRlZ29yeTo6R2VuZXJhbCB9LAotICAgICAgICB7ICJQYXN0ZUFuZE1hdGNoU3R5
bGUiLCBET01QYXN0ZUFjY2Vzc0NhdGVnb3J5OjpHZW5lcmFsIH0sCi0gICAgICAgIHsgIlBhc3Rl
QXNRdW90YXRpb24iLCBET01QYXN0ZUFjY2Vzc0NhdGVnb3J5OjpHZW5lcmFsIH0sCi0gICAgICAg
IHsgIlBhc3RlQXNQbGFpblRleHQiLCBET01QYXN0ZUFjY2Vzc0NhdGVnb3J5OjpHZW5lcmFsIH0s
Ci0gICAgICAgIHsgIlBhc3RlRm9udCIsIERPTVBhc3RlQWNjZXNzQ2F0ZWdvcnk6OkZvbnRzIH0s
CisgICAgICAgIHsgIlBhc3RlIl9zLCBET01QYXN0ZUFjY2Vzc0NhdGVnb3J5OjpHZW5lcmFsIH0s
CisgICAgICAgIHsgIlBhc3RlQW5kTWF0Y2hTdHlsZSJfcywgRE9NUGFzdGVBY2Nlc3NDYXRlZ29y
eTo6R2VuZXJhbCB9LAorICAgICAgICB7ICJQYXN0ZUFzUXVvdGF0aW9uIl9zLCBET01QYXN0ZUFj
Y2Vzc0NhdGVnb3J5OjpHZW5lcmFsIH0sCisgICAgICAgIHsgIlBhc3RlQXNQbGFpblRleHQiX3Ms
IERPTVBhc3RlQWNjZXNzQ2F0ZWdvcnk6OkdlbmVyYWwgfSwKKyAgICAgICAgeyAiUGFzdGVGb250
Il9zLCBET01QYXN0ZUFjY2Vzc0NhdGVnb3J5OjpGb250cyB9LAogICAgIH07CiAKICAgICBhdXRv
IGl0ID0gcGFzdGVDb21tYW5kTmFtZXMtPmZpbmQoY29tbWFuZE5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDFiMmI4NTFlOTcyNGFjNTBmZTM5
OGY5MDRmYjNlYzU3YWU1MDlhMDUuLjc3YzRiZTc5NDNkMWIwMjQyMmU3Njc2Mjc4YzIwZjhjMDk1
M2IwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTYzNSw3ICs2MzUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoSVBDOjpNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICAgICBpZiAoIXNfaW52YWxpZE1l
c3NhZ2VDYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgc19pbnZhbGlkTWVzc2FnZUNh
bGxiYWNrKHRvQVBJKEFQSTo6U3RyaW5nOjpjcmVhdGUoU3RyaW5nIHsgZGVzY3JpcHRpb24obWVz
c2FnZU5hbWUpIH0pLnB0cigpKSk7CisgICAgc19pbnZhbGlkTWVzc2FnZUNhbGxiYWNrKHRvQVBJ
KEFQSTo6U3RyaW5nOjpjcmVhdGUoU3RyaW5nOjpmcm9tTGF0aW4xKGRlc2NyaXB0aW9uKG1lc3Nh
Z2VOYW1lKSkpLnB0cigpKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc29sdmVQYXRo
c0ZvclNhbmRib3hFeHRlbnNpb25zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGE0ODkxYjkyZGFmY2Q0NjY2NDhmMTZkYzEz
MzYyNjBhYmYxMmM4NzkuLjY3NWU3MjMzNjE2OGJjMmY4YzhkMjI2ZDAxMWRmOTQyNTYwNTQ4MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbQpAQCAtMTI4NCwxMyArMTI4NCwxMyBAQCBQbHVnaW5JbmZvIFBERlBsdWdpbjo6cGx1Z2lu
SW5mbygpCiAgICAgTWltZUNsYXNzSW5mbyBwZGZNaW1lQ2xhc3NJbmZvOwogICAgIHBkZk1pbWVD
bGFzc0luZm8udHlwZSA9ICJhcHBsaWNhdGlvbi9wZGYiX3M7CiAgICAgcGRmTWltZUNsYXNzSW5m
by5kZXNjID0gcGRmRG9jdW1lbnRUeXBlRGVzY3JpcHRpb24oKTsKLSAgICBwZGZNaW1lQ2xhc3NJ
bmZvLmV4dGVuc2lvbnMuYXBwZW5kKCJwZGYiKTsKKyAgICBwZGZNaW1lQ2xhc3NJbmZvLmV4dGVu
c2lvbnMuYXBwZW5kKCJwZGYiX3MpOwogICAgIGluZm8ubWltZXMuYXBwZW5kKHBkZk1pbWVDbGFz
c0luZm8pOwogCiAgICAgTWltZUNsYXNzSW5mbyB0ZXh0UERGTWltZUNsYXNzSW5mbzsKICAgICB0
ZXh0UERGTWltZUNsYXNzSW5mby50eXBlID0gInRleHQvcGRmIl9zOwogICAgIHRleHRQREZNaW1l
Q2xhc3NJbmZvLmRlc2MgPSBwZGZEb2N1bWVudFR5cGVEZXNjcmlwdGlvbigpOwotICAgIHRleHRQ
REZNaW1lQ2xhc3NJbmZvLmV4dGVuc2lvbnMuYXBwZW5kKCJwZGYiKTsKKyAgICB0ZXh0UERGTWlt
ZUNsYXNzSW5mby5leHRlbnNpb25zLmFwcGVuZCgicGRmIl9zKTsKICAgICBpbmZvLm1pbWVzLmFw
cGVuZCh0ZXh0UERGTWltZUNsYXNzSW5mbyk7CiAKICAgICByZXR1cm4gaW5mbzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bQppbmRleCA4OTQzODc5OWY5YzMwNjYzZjdkZDBhNmFiZGM3MjU4YzNmNjJjOTA3Li5mOTBlYTAw
MDdiYTY3NzFiNjhhOWI5YzcwMTE2YjRiODVjODJhN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCkBAIC01NDEs
NyArNTQxLDcgQEAgdm9pZCBXZWJQYWdlOjpoYW5kbGVDbGlja0ZvckRhdGFEZXRlY3Rpb25SZXN1
bHQoY29uc3QgRGF0YURldGVjdG9yRWxlbWVudEluZm8mIGkKIAogc3RhdGljIFN0cmluZyYgcmVw
bGFjZVNlbGVjdGlvblBhc3RlYm9hcmROYW1lKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiBzdHJpbmcoIlJlcGxhY2VTZWxlY3Rpb25QYXN0ZWJvYXJkIik7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc3RyaW5nKCJSZXBsYWNlU2VsZWN0aW9uUGFzdGVi
b2FyZCJfcyk7CiAgICAgcmV0dXJuIHN0cmluZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAppbmRleCBkYjVhYThlNDBkM2Ri
ZjZhYmJjNzRmZmEwYWNjMDhiMmRkMmI1NmY1Li4zNGM4ZGU2Mjg0YWZmNDM2N2VhOWY2ZGY5ZmRk
NjkwMjZmYWMzZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9JUENUZXN0aW5nQVBJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9JUENUZXN0aW5nQVBJLmNwcApAQCAtMTk4MywxNyArMTk4MywxNyBAQCBzdGF0aWMgSlNDOjpK
U1ZhbHVlIGNyZWF0ZUpTQXJyYXlGb3JBcmd1bWVudERlc2NyaXB0aW9ucyhKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbAogICAgICAgICBhcmd1bWVudHNBcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFs
T2JqZWN0LCBhcmd1bWVudEluZGV4LCBqc0Rlc2NyaXB0aW9ucyk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIEpTQzo6anNURFpWYWx1ZSgpKTsKIAotICAgICAgICBqc0Rlc2Ny
aXB0aW9ucy0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJu
YW1lIl9zKSwgSlNDOjpqc1N0cmluZyh2bSwgU3RyaW5nKGRlc2NyaXB0aW9uLm5hbWUpKSk7Cisg
ICAgICAgIGpzRGVzY3JpcHRpb25zLT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIm5hbWUiX3MpLCBKU0M6OmpzU3RyaW5nKHZtLCBTdHJpbmc6OmZyb21MYXRp
bjEoZGVzY3JpcHRpb24ubmFtZSkpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgSlNDOjpqc1REWlZhbHVlKCkpOwogCi0gICAgICAgIGpzRGVzY3JpcHRpb25zLT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiX3MpLCBKU0M6Ompz
U3RyaW5nKHZtLCBTdHJpbmcoZGVzY3JpcHRpb24udHlwZSkpKTsKKyAgICAgICAganNEZXNjcmlw
dGlvbnMtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHlw
ZSJfcyksIEpTQzo6anNTdHJpbmcodm0sIFN0cmluZzo6ZnJvbUxhdGluMShkZXNjcmlwdGlvbi50
eXBlKSkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU0M6OmpzVERaVmFs
dWUoKSk7CiAKICAgICAgICAganNEZXNjcmlwdGlvbnMtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAib3B0aW9uYWwiX3MpLCBKU0M6OmpzQm9vbGVhbihkZXNj
cmlwdGlvbi5pc09wdGlvbmFsKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEpTQzo6anNURFpWYWx1ZSgpKTsKIAogICAgICAgICBpZiAoZGVzY3JpcHRpb24uZW51bU5hbWUp
IHsKLSAgICAgICAgICAgIGpzRGVzY3JpcHRpb25zLT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImVudW0iX3MpLCBKU0M6OmpzU3RyaW5nKHZtLCBTdHJpbmco
ZGVzY3JpcHRpb24uZW51bU5hbWUpKSk7CisgICAgICAgICAgICBqc0Rlc2NyaXB0aW9ucy0+cHV0
RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJlbnVtIl9zKSwgSlND
Ojpqc1N0cmluZyh2bSwgU3RyaW5nOjpmcm9tTGF0aW4xKGRlc2NyaXB0aW9uLmVudW1OYW1lKSkp
OwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNDOjpqc1REWlZhbHVl
KCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjE0MSw3ICsyMTQxLDcgQEAgSlNDOjpKU09iamVj
dCogSlNNZXNzYWdlTGlzdGVuZXI6OmpzRGVzY3JpcHRpb25Gcm9tRGVjb2RlcihKU0M6OkpTR2xv
YmFsT2JqZWN0KgogICAgIGpzUmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIm5hbWUiX3MpLCBKU0M6OkpTVmFsdWUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGRlY29kZXIubWVzc2FnZU5hbWUoKSkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBudWxscHRyKTsKIAotICAgIGpzUmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImRlc2NyaXB0aW9uIl9zKSwgSlNDOjpqc1N0cmluZyh2bSwg
U3RyaW5nIHsgSVBDOjpkZXNjcmlwdGlvbihkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpIH0pKTsKKyAg
ICBqc1Jlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJkZXNjcmlwdGlvbiJfcyksIEpTQzo6anNTdHJpbmcodm0sIFN0cmluZzo6ZnJvbUxhdGluMShJ
UEM6OmRlc2NyaXB0aW9uKGRlY29kZXIubWVzc2FnZU5hbWUoKSkpKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKICAgICBqc1Jlc3VsdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJkZXN0aW5hdGlvbklEIl9zKSwgSlND
OjpKU1ZhbHVlKGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tIGIvU291cmNlL1dlYktpdC93ZWJw
dXNoZC9XZWJQdXNoRGFlbW9uTWFpbi5tbQppbmRleCBhZmU1MDllMjE1MDMwMzBmMDlhYWJlMzM0
ODU1YzdiMDFhMTNkOTg5Li5hNDIzYTQwOWRlNmU1MGIyMjkxOGQyZGNhNWMzNzEwY2EyZTY3ZTgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW0KQEAgLTEz
MCw3ICsxMzAsNyBAQCBpbnQgV2ViUHVzaERhZW1vbk1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2
KQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFN0cmluZyBsaWJyYXJ5UGF0aCA9IE5TU2Vh
cmNoUGF0aEZvckRpcmVjdG9yaWVzSW5Eb21haW5zKE5TTGlicmFyeURpcmVjdG9yeSwgTlNVc2Vy
RG9tYWluTWFzaywgWUVTKVswXTsKICAgICAgICAgICAgIFN0cmluZyBwdXNoRGF0YWJhc2VQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhsaWJyYXJ5UGF0aCwgeyAi
V2ViS2l0Il9zLCAiV2ViUHVzaCJfcywgIlB1c2hEYXRhYmFzZS5kYiJfcyB9KTsKLSAgICAgICAg
ICAgIDo6V2ViUHVzaEQ6OkRhZW1vbjo6c2luZ2xldG9uKCkuc3RhcnRQdXNoU2VydmljZShTdHJp
bmcgeyBpbmNvbWluZ1B1c2hTZXJ2aWNlTmFtZSB9LCBwdXNoRGF0YWJhc2VQYXRoKTsKKyAgICAg
ICAgICAgIDo6V2ViUHVzaEQ6OkRhZW1vbjo6c2luZ2xldG9uKCkuc3RhcnRQdXNoU2VydmljZShT
dHJpbmc6OmZyb21MYXRpbjEoaW5jb21pbmdQdXNoU2VydmljZU5hbWUpLCBwdXNoRGF0YWJhc2VQ
YXRoKTsKICAgICAgICAgfQogICAgIH0KICAgICBDRlJ1bkxvb3BSdW4oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvSGlzdG9yeVByb3BlcnR5TGlzdC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvSGlzdG9yeVByb3BlcnR5TGlzdC5tbQpp
bmRleCA3OTlhN2I1OTUyYjJiODVjYjcwYTBiMDBjNTYyYjkwMTc4NmMzMzZjLi41MTg4YzI2ODg4
MjhmMjQzNGYyYjY5MzA1ZDdiYzIxZmNjODBiOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9IaXN0b3J5L0hpc3RvcnlQcm9wZXJ0eUxpc3QubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvSGlzdG9yeS9IaXN0b3J5UHJvcGVydHlMaXN0Lm1tCkBAIC0zMywxMiAr
MzMsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBzdGF0aWMgY29uc3QgaW50IGN1cnJl
bnRGaWxlVmVyc2lvbiA9IDE7CiAKIEhpc3RvcnlQcm9wZXJ0eUxpc3RXcml0ZXI6Okhpc3RvcnlQ
cm9wZXJ0eUxpc3RXcml0ZXIoKQotICAgIDogbV9kaXNwbGF5VGl0bGVLZXkoImRpc3BsYXlUaXRs
ZSIpCi0gICAgLCBtX2xhc3RWaXNpdFdhc0ZhaWx1cmVLZXkoImxhc3RWaXNpdFdhc0ZhaWx1cmUi
KQotICAgICwgbV9sYXN0VmlzaXRlZERhdGVLZXkoImxhc3RWaXNpdGVkRGF0ZSIpCi0gICAgLCBt
X3JlZGlyZWN0VVJMc0tleSgicmVkaXJlY3RVUkxzIikKLSAgICAsIG1fdGl0bGVLZXkoInRpdGxl
IikKLSAgICAsIG1fdXJsS2V5KCIiKQorICAgIDogbV9kaXNwbGF5VGl0bGVLZXkoImRpc3BsYXlU
aXRsZSJfcykKKyAgICAsIG1fbGFzdFZpc2l0V2FzRmFpbHVyZUtleSgibGFzdFZpc2l0V2FzRmFp
bHVyZSJfcykKKyAgICAsIG1fbGFzdFZpc2l0ZWREYXRlS2V5KCJsYXN0VmlzaXRlZERhdGUiX3Mp
CisgICAgLCBtX3JlZGlyZWN0VVJMc0tleSgicmVkaXJlY3RVUkxzIl9zKQorICAgICwgbV90aXRs
ZUtleSgidGl0bGUiX3MpCisgICAgLCBtX3VybEtleShlbXB0eVN0cmluZygpKQogICAgICwgbV9i
dWZmZXIoMCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCmluZGV4IGJmZDVkMDllOThhZGY3MzlhYjhmMzc3YmNiN2U0ZDU0ZTJlODA3NWYu
LmQ2YjViMTliZDVhODFiOGMwNDFlYWM3MmYyZDBmNjVlNWYzNmYxMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMjY1MCw3ICsyNjUw
LDcgQEAgLSAoV2ViQ29yZTo6RWRpdG9yOjpDb21tYW5kKWNvcmVDb21tYW5kQnlOYW1lOihjb25z
dCBjaGFyKiluYW1lCiAgICAgYXV0byogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsK
ICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkVkaXRvcjo6Q29t
bWFuZCgpOwotICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoU3RyaW5nIHsg
bmFtZSB9KTsKKyAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKFN0cmluZzo6
ZnJvbUxhdGluMShuYW1lKSk7CiB9CiAKIC0gKHZvaWQpZXhlY3V0ZUNvcmVDb21tYW5kQnlTZWxl
Y3RvcjooU0VMKXNlbGVjdG9yCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggZDYxZGFhMDJiYjcxYWIwYmUxZTU3M2I1NGY4MWU5NWU3ZmViYmVlMS4u
MTA3NzI3NGY1OWVlNjhhN2M2ZDdiY2FkMzUwOGY1ZDhiOTA1ZWNjNyAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIy
LTA0LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFj
ZSBkZXByZWNhdGVkIFN0cmluZyhjb25zdCBjaGFyKikgd2l0aCBTdHJpbmc6OmZyb21MYXRpbjEo
KSBpbiBtb3JlIHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM4OTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFRlc3RSdW5u
ZXI6OnNldEFjY3VtbXVsYXRlTG9nc0ZvckNoYW5uZWwpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGhhbmRsZUNvbnRyb2xDb21tYW5k
KToKKyAgICAgICAgKGNoYW5nZVdpbmRvd1NjYWxlSWZOZWVkZWQpOgorICAgICAgICAocmVzZXRX
ZWJWaWV3VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9DQk9SUmVhZGVyVGVzdC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdEludm9jYXRpb246OndhaXRGb3JQb3N0RHVtcFdhdGNoZG9nVGltZXJGaXJl
ZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9DcmFzaFJlcG9ydGVySW5mby5t
bToKKyAgICAgICAgKFdUUjo6dGVzdFBhdGhGcm9tVVJMKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpjb2NvYVBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpjb2NvYVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorCiAyMDIyLTA0
LTA3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVy
Z2UtUXVldWVdIENoYW5nZSBsYWJlbCBuYW1lcwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNw
cAppbmRleCBjNWIxYTUwZmRkMTk3NWNiZDEwOGRiNmEyZDU3MDg3Y2I4YzMyYTQxLi44NmUwNmVm
MTUyMTE0NTk5MmI1NTYwNWQ0NmJlNWZjYWNjZmZmYjJjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
UnVubmVyLmNwcApAQCAtMjIxOCw3ICsyMjE4LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRBY2N1
bW11bGF0ZUxvZ3NGb3JDaGFubmVsKEpTU3RyaW5nUmVmIGNoYW5uZWwpCiAgICAgYXV0byBidWZm
ZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4obWF4TGVuZ3RoICsgMSk7CiAgICAgSlNTdHJpbmdH
ZXRVVEY4Q1N0cmluZyhjaGFubmVsLCBidWZmZXIuZ2V0KCksIG1heExlbmd0aCArIDEpOwogCi0g
ICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRlKFN0cmluZyB7
IGJ1ZmZlci5nZXQoKSB9KTsKKyAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldExvZ0NoYW5uZWxU
b0FjY3VtdWxhdGUoU3RyaW5nOjpmcm9tTGF0aW4xKGJ1ZmZlci5nZXQoKSkpOwogfQogCiB1c2lu
ZyBDYWxsYmFja01hcCA9IFdURjo6SGFzaE1hcDx1bnNpZ25lZCwgSlNPYmplY3RSZWY+OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IGZiNTY5OWJjMjcw
YWQ5ZjE0N2MxNGY1ZWVkZWUyNGE1NTc0ZWE3MGEuLmJlYTE0OWNmMTg3YTc5NmZjZmMxMmM3NWE0
M2Y1Y2ZmMWI0OTM1OWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0KQEAgLTEwNDYsNyArMTA0Niw3IEBAIHN0YXRpYyBib29sIGhhbmRsZUNvbnRyb2xDb21t
YW5kKGNvbnN0IGNoYXIqIGNvbW1hbmQpCiB7CiAgICAgaWYgKCFzdHJuY21wKCIjQ0hFQ0sgRk9S
IFdPUkxEIExFQUtTIiwgY29tbWFuZCwgMjIpIHx8ICFzdHJuY21wKCIjTElTVCBDSElMRCBQUk9D
RVNTRVMiLCBjb21tYW5kLCAyMSkpIHsKICAgICAgICAgLy8gRHVtcFJlbmRlclRyZWUgZG9lcyBu
b3Qgc3VwcG9ydCBjaGVja2luZyBmb3Igd29ybGQgbGVha3Mgb3IgbGlzdGluZyBjaGlsZCBwcm9j
ZXNzZXMuCi0gICAgICAgIFdURjo6U3RyaW5nIHJlc3VsdCgiXG4iKTsKKyAgICAgICAgV1RGOjpT
dHJpbmcgcmVzdWx0KCJcbiJfcyk7CiAgICAgICAgIHVuc2lnbmVkIHJlc3VsdExlbmd0aCA9IHJl
c3VsdC5sZW5ndGgoKTsKICAgICAgICAgcHJpbnRmKCJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5c
biIpOwogICAgICAgICBwcmludGYoIkNvbnRlbnQtTGVuZ3RoOiAldVxuIiwgcmVzdWx0TGVuZ3Ro
KTsKQEAgLTE0OTksNyArMTQ5OSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBCYWNrRm9yd2FyZExpc3RG
b3JXZWJWaWV3KFdlYlZpZXcgKnZpZXcpCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBzdGF0
aWMgdm9pZCBjaGFuZ2VXaW5kb3dTY2FsZUlmTmVlZGVkKGNvbnN0IGNoYXIqIHRlc3RQYXRoT3JV
UkwpCiB7Ci0gICAgYXV0byBsb2NhbFBhdGhPclVSTCA9IFN0cmluZyh0ZXN0UGF0aE9yVVJMKTsK
KyAgICBhdXRvIGxvY2FsUGF0aE9yVVJMID0gU3RyaW5nOjpmcm9tVVRGOCh0ZXN0UGF0aE9yVVJM
KTsKICAgICBmbG9hdCBjdXJyZW50U2NhbGVGYWN0b3IgPSBbW1ttYWluRnJhbWUgd2ViVmlld10g
d2luZG93XSBiYWNraW5nU2NhbGVGYWN0b3JdOwogICAgIGZsb2F0IHJlcXVpcmVkU2NhbGVGYWN0
b3IgPSAxOwogICAgIGlmIChsb2NhbFBhdGhPclVSTC5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNl
KCIvaGlkcGktM3gtIikpCkBAIC0xODAzLDcgKzE4MDMsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdl
YlZpZXdUb0NvbnNpc3RlbnRTdGF0ZShjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zLCBS
ZXNldAogICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6
QFtOU1N0cmluZ1Bib2FyZFR5cGVdIG93bmVyOm5pbF07CiAjZW5kaWYKIAotICAgIFdlYkNvcmVU
ZXN0U3VwcG9ydDo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNGb3JUZXN0aW5nKFN0
cmluZyB7IG9wdGlvbnMuYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoKS5jX3N0cigpIH0p
OworICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlw
ZXNGb3JUZXN0aW5nKFN0cmluZzo6ZnJvbUxhdGluMShvcHRpb25zLmFkZGl0aW9uYWxTdXBwb3J0
ZWRJbWFnZVR5cGVzKCkuY19zdHIoKSkpOwogCiAgICAgW21haW5GcmFtZSBfY2xlYXJPcGVuZXJd
OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0JPUlJl
YWRlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NCT1JSZWFk
ZXJUZXN0LmNwcAppbmRleCA2NjMzMmU5ZTFlZmJmYmM2MzBmNDcwZGY4MjYzNTA0YzZjMjA3MGIw
Li40NGY3OTE3YWRiZWEwYmZmOGJiOGVmNDMwYTk5Y2FmODM0NWFhMzI1IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ0JPUlJlYWRlclRlc3QuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DQk9SUmVhZGVyVGVzdC5jcHAKQEAg
LTE5Miw3ICsxOTIsNyBAQCBURVNUKENCT1JSZWFkZXJUZXN0LCBUZXN0UmVhZFN0cmluZ1dpdGhO
VUwpCiAgICAgICAgIGNvbnN0IFN0cmluZyB2YWx1ZTsKICAgICAgICAgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+IGNib3JEYXRhOwogICAgIH0ga1N0cmluZ1Rlc3RDYXNlc1tdID0gewotICAgICAgICB7
IFN0cmluZygic3RyaW5nX3dpdGhvdXRfbnVsIiksCisgICAgICAgIHsgInN0cmluZ193aXRob3V0
X251bCJfc3RyLAogICAgICAgICAgICAgeyAweDcyLCAweDczLCAweDc0LCAweDcyLCAweDY5LCAw
eDZFLCAweDY3LCAweDVGLCAweDc3LCAweDY5LCAweDc0LCAweDY4LAogICAgICAgICAgICAgICAg
IDB4NkYsIDB4NzUsIDB4NzQsIDB4NUYsIDB4NkUsIDB4NzUsIDB4NkMgfSB9LAogICAgICAgICB7
IFN0cmluZygibnVsX3Rlcm1pbmF0ZWRfc3RyaW5nXDAiLCAyMiksCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDJiM2M1MGVlZmQ1NjVhY2E4NzlkNDE1MzM0
ZmZjZDA5NTkyNDZkMTUuLjNiMmYyOGZiN2RiZDU0YmQwZTZhMDYwZDlhNTBmN2EzMGJjZmQyYTgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xNzA4LDcg
KzE3MDgsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjp3YWl0Rm9yUG9zdER1bXBXYXRjaGRvZ1Rp
bWVyRmlyZWQoKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGNoYXIgYnVmZmVyWzEwMjRdOwog
ICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIjUElEIFVOUkVTUE9OU0lWRSAt
ICVzIChwaWQgJWQpXG4iLCBnZXRwcm9nbmFtZSgpLCBnZXRwaWQoKSk7Ci0gICAgb3V0cHV0VGV4
dChTdHJpbmcgeyBidWZmZXIgfSk7CisgICAgb3V0cHV0VGV4dChTdHJpbmc6OmZyb21MYXRpbjEo
YnVmZmVyKSk7CiAjZW5kaWYKICAgICBkb25lKCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL0NyYXNoUmVwb3J0ZXJJbmZvLm1tIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jb2NvYS9DcmFzaFJlcG9ydGVySW5mby5tbQppbmRleCA0MTBkOWZkY2IzMWUyYzZl
NmNhNzY0OTU2MTQ2MDYzOGMwOTEwNWViLi4xZjJmMTAwOTEzMmJiZmUwYWY5NmRkNGIxYWFjOGJk
MzIwZjYzMTI4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL0NyYXNo
UmVwb3J0ZXJJbmZvLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvQ3Jhc2hS
ZXBvcnRlckluZm8ubW0KQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIFN0cmluZyB0ZXN0UGF0aEZy
b21VUkwoV0tVUkxSZWYgdXJsKQogICAgIFN0cmluZyBwYXRoU3RyaW5nKHBhdGhDRlN0cmluZy5n
ZXQoKSk7CiAgICAgCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHNjaGVt
ZVN0cmluZywgImZpbGUiKSkgewotICAgICAgICBTdHJpbmcgbGF5b3V0VGVzdHMoIi9MYXlvdXRU
ZXN0cy8iKTsKKyAgICAgICAgU3RyaW5nIGxheW91dFRlc3RzKCIvTGF5b3V0VGVzdHMvIl9zKTsK
ICAgICAgICAgc2l6ZV90IGxheW91dFRlc3RzT2Zmc2V0ID0gcGF0aFN0cmluZy5maW5kKGxheW91
dFRlc3RzKTsKICAgICAgICAgaWYgKGxheW91dFRlc3RzT2Zmc2V0ID09IG5vdEZvdW5kKQogICAg
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IGRmODFmNGNkNzA5NjM0ZTE2Yzlm
OGE0OTFmYmQ5Mjc1NTQzODBhZjguLjA1OTBiZGZhMTRlZDk1MGY4NGQwODQ3YTA4YzNhN2QxNGEy
NTZhMzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRy
b2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250
cm9sbGVyQ29jb2EubW0KQEAgLTExMCw5ICsxMTAsOSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpj
b2NvYVBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBPcHRpb25zJiBvcHRpb25zKQogICAgIGlmICgh
ZHVtcFJlbmRlclRyZWVUZW1wKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0ZvbGRlciA9IFN0cmluZyhkdW1wUmVuZGVyVHJlZVRlbXApICsgJy8n
ICsgIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiOworICAgIFN0cmluZyByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRm9sZGVyID0gbWFrZVN0cmluZyhkdW1wUmVuZGVyVHJlZVRlbXAsICIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyIpOwogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3Jl
YXRlRGlyZWN0b3J5QXRQYXRoOnJlc291cmNlTG9hZFN0YXRpc3RpY3NGb2xkZXIgd2l0aEludGVy
bWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjogbmlsXTsKLSAgICBT
dHJpbmcgZnVsbEJyb3dzaW5nU2Vzc2lvblJlc291cmNlTG9nID0gcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZvbGRlciArICcvJyArICJmdWxsX2Jyb3dzaW5nX3Nlc3Npb25fcmVzb3VyY2VMb2cucGxp
c3QiOworICAgIFN0cmluZyBmdWxsQnJvd3NpbmdTZXNzaW9uUmVzb3VyY2VMb2cgPSBtYWtlU3Ry
aW5nKHJlc291cmNlTG9hZFN0YXRpc3RpY3NGb2xkZXIsICIvZnVsbF9icm93c2luZ19zZXNzaW9u
X3Jlc291cmNlTG9nLnBsaXN0Iik7CiAgICAgTlNEaWN0aW9uYXJ5ICpyZXNvdXJjZUxvZ1BsaXN0
ID0gQHsgQCJ2ZXJzaW9uIjogQCgxKSB9OwogICAgIGlmICghW3Jlc291cmNlTG9nUGxpc3Qgd3Jp
dGVUb0ZpbGU6ZnVsbEJyb3dzaW5nU2Vzc2lvblJlc291cmNlTG9nIGF0b21pY2FsbHk6WUVTXSkK
ICAgICAgICAgV1RGQ3Jhc2goKTsKQEAgLTMyOCw3ICszMjgsNyBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjpjb2NvYVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMm
IG9wdGlvbgogCiAgICAgW2dsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCgpIHNl
dEFsbG93UmFpc2luZ1F1b3RhOllFU107CiAKLSAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldEFk
ZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9yVGVzdGluZyhTdHJpbmcgeyBvcHRpb25zLmFk
ZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKCkuY19zdHIoKSB9KTsKKyAgICBXZWJDb3JlVGVz
dFN1cHBvcnQ6OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9yVGVzdGluZyhTdHJp
bmc6OmZyb21MYXRpbjEob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcygpLmNf
c3RyKCkpKTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1XaWxsUnVuVGVzdChj
b25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdEludm9jYXRpb24pCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>