<?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>239853</bug_id>
          
          <creation_ts>2022-04-28 08:46:48 -0700</creation_ts>
          <short_desc>ARIA reflection for FrozenArray&lt;Element&gt; attributes</short_desc>
          <delta_ts>2022-05-12 22:05:38 -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>Bindings</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>
          <dependson>239852</dependson>
          <blocked>196843</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Manuel Rego Casasnovas">rego</reporter>
          <assigned_to name="Manuel Rego Casasnovas">rego</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rniwa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1865155</commentid>
    <comment_count>0</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2022-04-28 08:46:48 -0700</bug_when>
    <thetext>This is related to bug #196843 and it&apos;ll cover reflection of attributes that refer to a list of Elements.

This would be the 2nd step after bug #239852 gets fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866854</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-05-05 08:47:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/92797836&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867649</commentid>
    <comment_count>2</comment_count>
      <attachid>459048</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2022-05-09 08:32:45 -0700</bug_when>
    <thetext>Created attachment 459048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867876</commentid>
    <comment_count>3</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2022-05-10 01:31:28 -0700</bug_when>
    <thetext>Patch is ready for review, please take a look. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868192</commentid>
    <comment_count>4</comment_count>
      <attachid>459048</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-05-11 12:03:00 -0700</bug_when>
    <thetext>Comment on attachment 459048
Patch

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

r=me with comments

&gt; Source/WebCore/dom/Element.cpp:2038
&gt; +

Unnecessary blank line.

&gt; Source/WebCore/dom/Element.cpp:2045
&gt; +        if (it != map-&gt;end()) {

With modern C++, I like this syntax personally:
if (auto it = map-&gt;find(attributeName); it != map-&gt;end()) {

&gt; Source/WebCore/dom/Element.cpp:2046
&gt; +            for (auto element : it-&gt;value) {

auto&amp; to avoid some refcounting churn.

&gt; Source/WebCore/dom/Element.cpp:2061
&gt; +    auto ids = SpaceSplitString(getAttribute(attr), SpaceSplitString::ShouldFoldCase::No);

SpaceSplitString ids(getAttribute(attr), SpaceSplitString::ShouldFoldCase::No);

Looks better IMO.

&gt; Source/WebCore/dom/Element.cpp:2062
&gt; +    for (unsigned i = 0; i &lt; ids.size(); i++) {

++i

&gt; Source/WebCore/dom/Element.cpp:2069
&gt; +void Element::setElementsArrayAttribute(const QualifiedName&amp; attributeName, std::optional&lt;Vector&lt;RefPtr&lt;Element&gt;&gt;&gt; elements)

Should likely be a `std::optional&lt;Vector&lt;RefPtr&lt;Element&gt;&gt;&gt;&amp;&amp;`. Should work given it comes from bindings. If it doesn&apos;t, then plan B would be `std::optional&lt;Vector&lt;RefPtr&lt;Element&gt;&gt;&gt;` but not passing by value.

&gt; Source/WebCore/dom/Element.cpp:2081
&gt; +    Vector&lt;WeakPtr&lt;Element&gt;&gt; newElements;

newElements.reserveInitialCapacity(elements-&gt;size());

&gt; Source/WebCore/dom/Element.cpp:2083
&gt; +    for (auto element : elements.value()) {

auto&amp;

&gt; Source/WebCore/dom/Element.cpp:2085
&gt; +            newElements.append(element);

uncheckedAppend

&gt; Source/WebCore/dom/Element.cpp:2089
&gt; +        newElements.append(element);

uncheckedAppend

Seems we could avoid some code duplication by doing:
```
newElements.uncheckedAppend(element);
if (value.isEmpty() &amp;&amp; newElements.size() &gt; 1)
    continue;
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868197</commentid>
    <comment_count>5</comment_count>
      <attachid>459048</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-05-11 12:40:32 -0700</bug_when>
    <thetext>Comment on attachment 459048
Patch

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

&gt;&gt; Source/WebCore/dom/Element.cpp:2046
&gt;&gt; +            for (auto element : it-&gt;value) {
&gt; 
&gt; auto&amp; to avoid some refcounting churn.

We can just use compactMap here.

&gt;&gt; Source/WebCore/dom/Element.cpp:2062
&gt;&gt; +    for (unsigned i = 0; i &lt; ids.size(); i++) {
&gt; 
&gt; ++i

Ditto

&gt;&gt; Source/WebCore/dom/Element.cpp:2083
&gt;&gt; +    for (auto element : elements.value()) {
&gt; 
&gt; auto&amp;

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868198</commentid>
    <comment_count>6</comment_count>
      <attachid>459048</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-05-11 12:40:34 -0700</bug_when>
    <thetext>Comment on attachment 459048
Patch

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

&gt;&gt; Source/WebCore/dom/Element.cpp:2046
&gt;&gt; +            for (auto element : it-&gt;value) {
&gt; 
&gt; auto&amp; to avoid some refcounting churn.

We can just use compactMap here.

&gt;&gt; Source/WebCore/dom/Element.cpp:2062
&gt;&gt; +    for (unsigned i = 0; i &lt; ids.size(); i++) {
&gt; 
&gt; ++i

Ditto

&gt;&gt; Source/WebCore/dom/Element.cpp:2083
&gt;&gt; +    for (auto element : elements.value()) {
&gt; 
&gt; auto&amp;

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868199</commentid>
    <comment_count>7</comment_count>
      <attachid>459048</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-05-11 12:42:56 -0700</bug_when>
    <thetext>Comment on attachment 459048
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/dom/Element.cpp:2083
&gt;&gt;&gt;&gt; +    for (auto element : elements.value()) {
&gt;&gt;&gt; 
&gt;&gt;&gt; auto&amp;
&gt;&gt; 
&gt;&gt; Ditto
&gt; 
&gt; Ditto

I agree compactMap() is the way to go for the 2 cases above. For this one, it is less obvious to me given that the loop that other things that populating the vector (building a string).
Sure, we could do that in the compactMap() lambda but it might be a bit confusing, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868201</commentid>
    <comment_count>8</comment_count>
      <attachid>459048</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-05-11 12:48:59 -0700</bug_when>
    <thetext>Comment on attachment 459048
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/dom/Element.cpp:2083
&gt;&gt;&gt;&gt;&gt; +    for (auto element : elements.value()) {
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; auto&amp;
&gt;&gt;&gt; 
&gt;&gt;&gt; Ditto
&gt;&gt; 
&gt;&gt; Ditto
&gt; 
&gt; I agree compactMap() is the way to go for the 2 cases above. For this one, it is less obvious to me given that the loop that other things that populating the vector (building a string).
&gt; Sure, we could do that in the compactMap() lambda but it might be a bit confusing, no?

Oh I see. I was thinking that we can have a compactMap to create the new element vector and iterate over the new element vector but I guess it&apos;s optional so we can&apos;t do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868342</commentid>
    <comment_count>9</comment_count>
      <attachid>459219</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2022-05-12 03:57:20 -0700</bug_when>
    <thetext>Created attachment 459219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868343</commentid>
    <comment_count>10</comment_count>
      <attachid>459048</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2022-05-12 03:58:56 -0700</bug_when>
    <thetext>Comment on attachment 459048
Patch

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

Thanks for the reviews, other than the compactMap() thing I have applied all the suggested changes.

I&apos;d appreciate some advice regarding compactMap() and returning a Vector&lt;RefPtr&lt;&gt;&gt;.

&gt;&gt; Source/WebCore/dom/Element.cpp:2038
&gt;&gt; +
&gt; 
&gt; Unnecessary blank line.

Removed.

&gt;&gt; Source/WebCore/dom/Element.cpp:2045
&gt;&gt; +        if (it != map-&gt;end()) {
&gt; 
&gt; With modern C++, I like this syntax personally:
&gt; if (auto it = map-&gt;find(attributeName); it != map-&gt;end()) {

Done.

&gt;&gt;&gt;&gt; Source/WebCore/dom/Element.cpp:2046
&gt;&gt;&gt;&gt; +            for (auto element : it-&gt;value) {
&gt;&gt;&gt; 
&gt;&gt;&gt; auto&amp; to avoid some refcounting churn.
&gt;&gt; 
&gt;&gt; We can just use compactMap here.
&gt; 
&gt; We can just use compactMap here.

&gt; auto&amp; to avoid some refcounting churn.

Done.


&gt; We can just use compactMap here.

I&apos;ve tried using compactMap like this:
            return compactMap(it-&gt;value, [&amp;](auto&amp; element) -&gt; RefPtr&lt;Element&gt; {
                if (element &amp;&amp; isDescendantOrShadowDescendantOf(element-&gt;rootNode()))
                    return element.get();
                return nullptr;
            });

However that creates a Vector&lt;Ref&lt;Element&gt;&gt; instead of a Vector&lt;RefPtr&lt;Element&gt;&gt; like I need to return here.

Not sure if there&apos;s a way to create a Vector&lt;RefPtr&lt;Element&gt;&gt; with compactMap.

&gt;&gt; Source/WebCore/dom/Element.cpp:2061
&gt;&gt; +    auto ids = SpaceSplitString(getAttribute(attr), SpaceSplitString::ShouldFoldCase::No);
&gt; 
&gt; SpaceSplitString ids(getAttribute(attr), SpaceSplitString::ShouldFoldCase::No);
&gt; 
&gt; Looks better IMO.

Done.

&gt;&gt;&gt;&gt; Source/WebCore/dom/Element.cpp:2062
&gt;&gt;&gt;&gt; +    for (unsigned i = 0; i &lt; ids.size(); i++) {
&gt;&gt;&gt; 
&gt;&gt;&gt; ++i
&gt;&gt; 
&gt;&gt; Ditto
&gt; 
&gt; Ditto

&gt; ++i

Done.

&gt;&gt; Source/WebCore/dom/Element.cpp:2069
&gt;&gt; +void Element::setElementsArrayAttribute(const QualifiedName&amp; attributeName, std::optional&lt;Vector&lt;RefPtr&lt;Element&gt;&gt;&gt; elements)
&gt; 
&gt; Should likely be a `std::optional&lt;Vector&lt;RefPtr&lt;Element&gt;&gt;&gt;&amp;&amp;`. Should work given it comes from bindings. If it doesn&apos;t, then plan B would be `std::optional&lt;Vector&lt;RefPtr&lt;Element&gt;&gt;&gt;` but not passing by value.

Changed it to use &quot;std::optional&lt;Vector&lt;RefPtr&lt;Element&gt;&gt;&gt;&amp;&amp;&quot;.

&gt;&gt; Source/WebCore/dom/Element.cpp:2081
&gt;&gt; +    Vector&lt;WeakPtr&lt;Element&gt;&gt; newElements;
&gt; 
&gt; newElements.reserveInitialCapacity(elements-&gt;size());

Done.

&gt;&gt; Source/WebCore/dom/Element.cpp:2085
&gt;&gt; +            newElements.append(element);
&gt; 
&gt; uncheckedAppend

Ok.

&gt;&gt; Source/WebCore/dom/Element.cpp:2089
&gt;&gt; +        newElements.append(element);
&gt; 
&gt; uncheckedAppend
&gt; 
&gt; Seems we could avoid some code duplication by doing:
&gt; ```
&gt; newElements.uncheckedAppend(element);
&gt; if (value.isEmpty() &amp;&amp; newElements.size() &gt; 1)
&gt;     continue;
&gt; ```

Good idea, done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868419</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-05-12 08:25:42 -0700</bug_when>
    <thetext>(In reply to Manuel Rego Casasnovas from comment #10)
&gt; Comment on attachment 459048 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=459048&amp;action=review
&gt; 
&gt; Thanks for the reviews, other than the compactMap() thing I have applied all
&gt; the suggested changes.
&gt; 
&gt; I&apos;d appreciate some advice regarding compactMap() and returning a
&gt; Vector&lt;RefPtr&lt;&gt;&gt;.
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/Element.cpp:2038
&gt; &gt;&gt; +
&gt; &gt; 
&gt; &gt; Unnecessary blank line.
&gt; 
&gt; Removed.
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/Element.cpp:2045
&gt; &gt;&gt; +        if (it != map-&gt;end()) {
&gt; &gt; 
&gt; &gt; With modern C++, I like this syntax personally:
&gt; &gt; if (auto it = map-&gt;find(attributeName); it != map-&gt;end()) {
&gt; 
&gt; Done.
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/dom/Element.cpp:2046
&gt; &gt;&gt;&gt;&gt; +            for (auto element : it-&gt;value) {
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; auto&amp; to avoid some refcounting churn.
&gt; &gt;&gt; 
&gt; &gt;&gt; We can just use compactMap here.
&gt; &gt; 
&gt; &gt; We can just use compactMap here.
&gt; 
&gt; &gt; auto&amp; to avoid some refcounting churn.
&gt; 
&gt; Done.
&gt; 
&gt; 
&gt; &gt; We can just use compactMap here.
&gt; 
&gt; I&apos;ve tried using compactMap like this:
&gt;             return compactMap(it-&gt;value, [&amp;](auto&amp; element) -&gt;
&gt; RefPtr&lt;Element&gt; {
&gt;                 if (element &amp;&amp;
&gt; isDescendantOrShadowDescendantOf(element-&gt;rootNode()))
&gt;                     return element.get();
&gt;                 return nullptr;
&gt;             });
&gt; 
&gt; However that creates a Vector&lt;Ref&lt;Element&gt;&gt; instead of a
&gt; Vector&lt;RefPtr&lt;Element&gt;&gt; like I need to return here.
&gt; 
&gt; Not sure if there&apos;s a way to create a Vector&lt;RefPtr&lt;Element&gt;&gt; with
&gt; compactMap.

I don&apos;t feel like it is a really big deal to be using compactMap() here. However, I *think* you would be able to do what you want by returning a std::optional&lt;RefPtr&lt;Element&gt;&gt;, and have your lambda return std::nullopt instead of nullptr when you don&apos;t want this item in the output vector. It is a little awkward though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868459</commentid>
    <comment_count>12</comment_count>
      <attachid>459237</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2022-05-12 10:14:16 -0700</bug_when>
    <thetext>Created attachment 459237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868460</commentid>
    <comment_count>13</comment_count>
      <attachid>459048</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2022-05-12 10:18:20 -0700</bug_when>
    <thetext>Comment on attachment 459048
Patch

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

Thanks for the help on compactMap(), I didn&apos;t manage to use it in one place.
I hope this is fine to land anyway.

&gt;&gt;&gt;&gt; Source/WebCore/dom/Element.cpp:2038
&gt;&gt;&gt;&gt; +
&gt;&gt;&gt; 
&gt;&gt;&gt; Unnecessary blank line.
&gt;&gt; 
&gt;&gt; Removed.
&gt; 
&gt; I don&apos;t feel like it is a really big deal to be using compactMap() here. However, I *think* you would be able to do what you want by returning a std::optional&lt;RefPtr&lt;Element&gt;&gt;, and have your lambda return std::nullopt instead of nullptr when you don&apos;t want this item in the output vector. It is a little awkward though.

Yeah that worked. Thank you very much, I&apos;ve now used compactMap() in the first loop.

&gt;&gt;&gt;&gt;&gt; Source/WebCore/dom/Element.cpp:2062
&gt;&gt;&gt;&gt;&gt; +    for (unsigned i = 0; i &lt; ids.size(); i++) {
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; ++i
&gt;&gt;&gt; 
&gt;&gt;&gt; Ditto
&gt;&gt; 
&gt;&gt; Ditto
&gt; 
&gt; 

I haven&apos;t used compactMap() here because I didn&apos;t find a way to use it with SpaceSplitString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868461</commentid>
    <comment_count>14</comment_count>
      <attachid>459238</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2022-05-12 10:20:42 -0700</bug_when>
    <thetext>Created attachment 459238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868636</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-12 22:05:34 -0700</bug_when>
    <thetext>Committed r294141 (250511@main): &lt;https://commits.webkit.org/250511@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 459238.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459048</attachid>
            <date>2022-05-09 08:32:45 -0700</date>
            <delta_ts>2022-05-12 03:59:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239853-20220509173244.patch</filename>
            <type>text/plain</type>
            <size>31528</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzOTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQxMWQ3NGFkMDEwZjI3
ZDNmYTgwMDQ2Zjc2ODAxNmQ0NmM1MjRlYS4uNWNkOGIzNWQ2ZDNkZTZkYWZhODI0MmUwMjNjYjRk
MDg3MmQ4ODM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIyLTA1LTA5ICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIEFSSUEgcmVm
bGVjdGlvbiBmb3IgRnJvemVuQXJyYXk8RWxlbWVudD4gYXR0cmlidXRlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODUzCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS85Mjc5NzgzNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnQgQVJJQSByZWZsZWN0aW9uIGZvciBhdHRyaWJ1dGVzIHRo
YXQgcmVmZXIgdG8gYSBsaXN0IG9mIEVsZW1lbnRzOgorICAgICAgICBhcmlhLWNvbnRyb2xzLCBh
cmlhLWRlc2NyaWJlZGJ5LCBhcmlhLWRldGFpbHMsIGFyaWEtZmxvd3RvLAorICAgICAgICBhcmlh
LWxhYmVsbGVkYnkgYW5kIGFyaWEtb3ducy4KKyAgICAgICAgRm9yIHRoZSBwcm9wZXJ0aWVzIG5h
bWVzIHRoaXMgcGF0Y2ggdXNlcyAiRWxlbWVudHMiIHN1ZmZpeDoKKyAgICAgICAgYXJpYUNvbnRy
b2xzRWxlbWVudHMsIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzLCBhcmlhRGVzY3JpYmVkQnlFbGVt
ZW50cywKKyAgICAgICAgYXJpYUZsb3dUb0VsZW1lbnRzLCBhcmlhTGFiZWxsZWRCeUVsZW1lbnRz
LCBhcmlhT3duc0VsZW1lbnRzCisgICAgICAgIHRoaXMgbWF0Y2hlcyBDaHJvbWl1bSBpbXBsZW1l
bnRhdGlvbiBhbmQgQU9NIGV4cGxhaW5lciwgYnV0IG5vdCBBT00gc3BlYzoKKyAgICAgICAgaHR0
cHM6Ly9naXRodWIuY29tL3czYy9hcmlhL2lzc3Vlcy8xNzMyCisKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FyaWFBdHRyaWJ1dGVzLmlkbDogQWRkIHRoZSBuZXcgcHJvcGVydGllcyB1bmRlcgor
ICAgICAgICBBcmlhUmVmbGVjdGlvbkZvckVsZW1lbnRSZWZlcmVuY2VzRW5hYmxlZCBydW50aW1l
IGZsYWcuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtOgorICAg
ICAgICAoR2V0dGVyRXhwcmVzc2lvbik6IEFkZCBmdW5jdGlvbiBmb3IgRnJvemVuQXJyYXk8RWxl
bWVudD4gcHJvcGVydGllcy4KKyAgICAgICAgKFNldHRlckV4cHJlc3Npb24pOiBEaXR0by4KKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDogQWRkIHRlc3Rz
LgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqRE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHJH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ial9yZWZsZWN0ZWRFbGVtZW50c0FycmF5QXR0clNl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDogQWRkIGV4YW1wbGUgYXR0
cmlidXRlLgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlz
RWxlbWVudHNBcnJheVJlZmxlY3Rpb25BdHRyaWJ1dGUpOiBOZXcgdXRpbGl0eSBtZXRob2QgdG8K
KyAgICAgICAgaWRlbnRpZnkgdGhlIGF0dHJpYnV0ZXMgdGhhdCByZWZlciB0byBhIGxpc3Qgb2Yg
RWxlbWVudHMuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKTog
SW5jbHVkZSBjaGVjayBmb3IgZWxlbWVudHMKKyAgICAgICAgYXJyYXkuCisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpnZXRFbGVtZW50c0FycmF5QXR0cmlidXRlIGNvbnN0KTogSW1wbGVtZW50
IGdldHRlci4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEVsZW1lbnRzQXJyYXlBdHRy
aWJ1dGUpOiBJbXBsZW1lbnQgc2V0dGVyLgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6IFJlbW92
ZSBGSVhNRSBpbiBFeHBsaWNpdGx5U2V0QXR0ckVsZW1lbnRzTWFwIGFzIG5vdworICAgICAgICBp
dCBzdG9yZXMgbW9yZSB0aGFuIG9uZSBlbGVtZW50LiBBZGQgaGVhZGVycyBmb3IgZ2V0dGVyIGFu
ZCBzZXR0ZXIuCisKIDIwMjItMDUtMDkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlIHNo
b3VsZCBub3QgcmVjb25maWd1cmUgdGhlIGF1ZGlvIHVuaXQgaWYgQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZSBpcyBub3Qgc3RhcnRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BcmlhQXR0cmlidXRlcy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fy
aWFBdHRyaWJ1dGVzLmlkbAppbmRleCAxMmExNjg1ZTFhMzExMmQ1OWFmMmVmMmNiYzM3OTNkZGEw
ZTU3OGIxLi41NDAyNmVhZjc2MjQ5MDA0NTliMGY4MTQwM2RiNDg2YzAwMzJmZmFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FyaWFBdHRyaWJ1dGVzLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FyaWFBdHRyaWJ1dGVzLmlkbApAQCAtMzMs
MjEgKzMzLDI3IEBAIGludGVyZmFjZSBtaXhpbiBBcmlhQXR0cmlidXRlcyB7CiAgICAgW1JlZmxl
Y3Q9YXJpYV9jb2xjb3VudF0gICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhQ29sQ291
bnQ7CiAgICAgW1JlZmxlY3Q9YXJpYV9jb2xpbmRleF0gICAgICAgICBhdHRyaWJ1dGUgRE9NU3Ry
aW5nPyBhcmlhQ29sSW5kZXg7CiAgICAgW1JlZmxlY3Q9YXJpYV9jb2xzcGFuXSAgICAgICAgICBh
dHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhQ29sU3BhbjsKKyAgICBbUmVmbGVjdD1hcmlhX2NvbnRy
b2xzLCBFbmFibGVkQnlTZXR0aW5nPUFyaWFSZWZsZWN0aW9uRm9yRWxlbWVudFJlZmVyZW5jZXNF
bmFibGVkXSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8RWxlbWVudD4/IGFyaWFDb250cm9sc0VsZW1l
bnRzOwogICAgIFtSZWZsZWN0PWFyaWFfY3VycmVudF0gICAgICAgICAgYXR0cmlidXRlIERPTVN0
cmluZz8gYXJpYUN1cnJlbnQ7CisgICAgW1JlZmxlY3Q9YXJpYV9kZXNjcmliZWRieSwgRW5hYmxl
ZEJ5U2V0dGluZz1BcmlhUmVmbGVjdGlvbkZvckVsZW1lbnRSZWZlcmVuY2VzRW5hYmxlZF0gYXR0
cmlidXRlIEZyb3plbkFycmF5PEVsZW1lbnQ+PyBhcmlhRGVzY3JpYmVkQnlFbGVtZW50czsKKyAg
ICBbUmVmbGVjdD1hcmlhX2RldGFpbHMsIEVuYWJsZWRCeVNldHRpbmc9QXJpYVJlZmxlY3Rpb25G
b3JFbGVtZW50UmVmZXJlbmNlc0VuYWJsZWRdIGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxFbGVtZW50
Pj8gYXJpYURldGFpbHNFbGVtZW50czsKICAgICBbUmVmbGVjdD1hcmlhX2Rpc2FibGVkXSAgICAg
ICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IGFyaWFEaXNhYmxlZDsKICAgICBbUmVmbGVjdD1hcmlh
X2Vycm9ybWVzc2FnZSwgRW5hYmxlZEJ5U2V0dGluZz1BcmlhUmVmbGVjdGlvbkZvckVsZW1lbnRS
ZWZlcmVuY2VzRW5hYmxlZF0gYXR0cmlidXRlIEVsZW1lbnQ/IGFyaWFFcnJvck1lc3NhZ2VFbGVt
ZW50OwogICAgIFtSZWZsZWN0PWFyaWFfZXhwYW5kZWRdICAgICAgICAgYXR0cmlidXRlIERPTVN0
cmluZz8gYXJpYUV4cGFuZGVkOworICAgIFtSZWZsZWN0PWFyaWFfZmxvd3RvLCBFbmFibGVkQnlT
ZXR0aW5nPUFyaWFSZWZsZWN0aW9uRm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVkXSBhdHRyaWJ1
dGUgRnJvemVuQXJyYXk8RWxlbWVudD4/IGFyaWFGbG93VG9FbGVtZW50czsKICAgICBbUmVmbGVj
dD1hcmlhX2hhc3BvcHVwXSAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IGFyaWFIYXNQb3B1
cDsKICAgICBbUmVmbGVjdD1hcmlhX2hpZGRlbl0gICAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJp
bmc/IGFyaWFIaWRkZW47CiAgICAgW1JlZmxlY3Q9YXJpYV9pbnZhbGlkXSAgICAgICAgICBhdHRy
aWJ1dGUgRE9NU3RyaW5nPyBhcmlhSW52YWxpZDsKICAgICBbUmVmbGVjdD1hcmlhX2tleXNob3J0
Y3V0c10gICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IGFyaWFLZXlTaG9ydGN1dHM7CiAgICAgW1Jl
ZmxlY3Q9YXJpYV9sYWJlbF0gICAgICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhTGFi
ZWw7CisgICAgW1JlZmxlY3Q9YXJpYV9sYWJlbGxlZGJ5LCBFbmFibGVkQnlTZXR0aW5nPUFyaWFS
ZWZsZWN0aW9uRm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVkXSBhdHRyaWJ1dGUgRnJvemVuQXJy
YXk8RWxlbWVudD4/IGFyaWFMYWJlbGxlZEJ5RWxlbWVudHM7CiAgICAgW1JlZmxlY3Q9YXJpYV9s
ZXZlbF0gICAgICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhTGV2ZWw7CiAgICAgW1Jl
ZmxlY3Q9YXJpYV9saXZlXSAgICAgICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhTGl2
ZTsKICAgICBbUmVmbGVjdD1hcmlhX21vZGFsXSAgICAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJp
bmc/IGFyaWFNb2RhbDsKICAgICBbUmVmbGVjdD1hcmlhX211bHRpbGluZV0gICAgICAgIGF0dHJp
YnV0ZSBET01TdHJpbmc/IGFyaWFNdWx0aUxpbmU7CiAgICAgW1JlZmxlY3Q9YXJpYV9tdWx0aXNl
bGVjdGFibGVdICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhTXVsdGlTZWxlY3RhYmxlOwogICAg
IFtSZWZsZWN0PWFyaWFfb3JpZW50YXRpb25dICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJp
YU9yaWVudGF0aW9uOworICAgIFtSZWZsZWN0PWFyaWFfb3ducywgRW5hYmxlZEJ5U2V0dGluZz1B
cmlhUmVmbGVjdGlvbkZvckVsZW1lbnRSZWZlcmVuY2VzRW5hYmxlZF0gYXR0cmlidXRlIEZyb3pl
bkFycmF5PEVsZW1lbnQ+PyBhcmlhT3duc0VsZW1lbnRzOwogICAgIFtSZWZsZWN0PWFyaWFfcGxh
Y2Vob2xkZXJdICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYVBsYWNlaG9sZGVyOwogICAg
IFtSZWZsZWN0PWFyaWFfcG9zaW5zZXRdICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJp
YVBvc0luU2V0OwogICAgIFtSZWZsZWN0PWFyaWFfcHJlc3NlZF0gICAgICAgICAgYXR0cmlidXRl
IERPTVN0cmluZz8gYXJpYVByZXNzZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KaW5kZXggYjhkN2E0ZjBiYmZmOWQ4MWU0NTFmYTUyNTVm
NGQzMDZjNzZjYzZlYi4uOWQ3ZTAxYzU3OWUxNzE1NTFiYmNiOTkyNmE2Njc5ZWZmNGVlMTIyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5w
bQpAQCAtMTExMCw2ICsxMTEwLDggQEAgc3ViIEdldHRlckV4cHJlc3Npb24KICAgICAgICAgJGZ1
bmN0aW9uTmFtZSA9ICJnZXRVbnNpZ25lZEludGVncmFsQXR0cmlidXRlIjsKICAgICB9IGVsc2lm
ICgkYXR0cmlidXRlVHlwZS0+bmFtZSBlcSAiRWxlbWVudCIpIHsKICAgICAgICAgJGZ1bmN0aW9u
TmFtZSA9ICJnZXRFbGVtZW50QXR0cmlidXRlIjsKKyAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlw
ZS0+bmFtZSBlcSAiRnJvemVuQXJyYXkiICYmIHNjYWxhciBAeyRhdHRyaWJ1dGVUeXBlLT5zdWJ0
eXBlc30gPT0gMSAmJiBAeyRhdHRyaWJ1dGVUeXBlLT5zdWJ0eXBlc31bMF0tPm5hbWUgZXEgIkVs
ZW1lbnQiKSB7CisgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiZ2V0RWxlbWVudHNBcnJheUF0dHJp
YnV0ZSI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCRjb250ZW50QXR0cmlidXRlTmFtZSBl
cSAiV2ViQ29yZTo6SFRNTE5hbWVzOjppZEF0dHIiKSB7CiAgICAgICAgICAgICAkZnVuY3Rpb25O
YW1lID0gImdldElkQXR0cmlidXRlIjsKQEAgLTExNDksNiArMTE1MSw4IEBAIHN1YiBTZXR0ZXJF
eHByZXNzaW9uCiAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAic2V0VW5zaWduZWRJbnRlZ3JhbEF0
dHJpYnV0ZSI7CiAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZVR5cGUtPm5hbWUgZXEgIkVsZW1lbnQi
KSB7CiAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAic2V0RWxlbWVudEF0dHJpYnV0ZSI7CisgICAg
fSBlbHNpZiAoJGF0dHJpYnV0ZVR5cGUtPm5hbWUgZXEgIkZyb3plbkFycmF5IiAmJiBzY2FsYXIg
QHskYXR0cmlidXRlVHlwZS0+c3VidHlwZXN9ID09IDEgJiYgQHskYXR0cmlidXRlVHlwZS0+c3Vi
dHlwZXN9WzBdLT5uYW1lIGVxICJFbGVtZW50IikgeworICAgICAgICAkZnVuY3Rpb25OYW1lID0g
InNldEVsZW1lbnRzQXJyYXlBdHRyaWJ1dGUiOwogICAgIH0gZWxzaWYgKCRnZW5lcmF0b3ItPklz
U1ZHQW5pbWF0ZWRUeXBlKCRhdHRyaWJ1dGVUeXBlKSkgewogICAgICAgICAkZnVuY3Rpb25OYW1l
ID0gInNldEF0dHJpYnV0ZSI7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggNTFjYjhmM2Q4
YzM5OGI2YjAyZmZiZDljMTQzYWNjYzhkOGFiMWIxZC4uZDAzMTFhMTkxOWExNDM3YzVkMmRlNzE0
ZmJiNjFiZTg5YzM5NTVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE4MDUsNiArMTgwNSw4IEBAIHN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial9yZWZsZWN0ZWRCb29sZWFuQXR0
cik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfcmVmbGVj
dGVkQm9vbGVhbkF0dHIpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0
T2JqX3JlZmxlY3RlZEVsZW1lbnRBdHRyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdE9ial9yZWZsZWN0ZWRFbGVtZW50QXR0cik7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHIpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3JlZmxlY3RlZEVs
ZW1lbnRzQXJyYXlBdHRyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVz
dE9ial9yZWZsZWN0ZWRVUkxBdHRyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVS
KHNldEpTVGVzdE9ial9yZWZsZWN0ZWRVUkxBdHRyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKGpzVGVzdE9ial9yZWZsZWN0ZWRVU1ZVUkxBdHRyKTsKQEAgLTIxNzgsNiArMjE4
MCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJs
ZVZhbHVlc1tdID0KICAgICB7ICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2Jq
X3JlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3JlZmxlY3RlZFVuc2ln
bmVkSW50ZWdyYWxBdHRyKSB9IH0sCiAgICAgeyAicmVmbGVjdGVkQm9vbGVhbkF0dHIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9i
al9yZWZsZWN0ZWRCb29sZWFuQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9yZWZsZWN0ZWRCb29sZWFuQXR0cikg
fSB9LAogICAgIHsgInJlZmxlY3RlZEVsZW1lbnRBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVu
dEF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVudEF0dHIpIH0gfSwKKyAgICB7ICJyZWZs
ZWN0ZWRFbGVtZW50c0FycmF5QXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRP
TUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3JlZmxlY3RlZEVsZW1lbnRzQXJyYXlBdHRy
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0T2JqX3JlZmxlY3RlZEVsZW1lbnRzQXJyYXlBdHRyKSB9IH0sCiAgICAgeyAicmVm
bGVjdGVkVVJMQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0
ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0T2JqX3JlZmxlY3RlZFVSTEF0dHIpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcmVmbGVj
dGVkVVJMQXR0cikgfSB9LAogICAgIHsgInJlZmxlY3RlZFVTVlVSTEF0dHIiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9yZWZs
ZWN0ZWRVU1ZVUkxBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3JlZmxlY3RlZFVTVlVSTEF0dHIpIH0gfSwKICAg
ICB7ICJyZWZsZWN0ZWRTdHJpbmdBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfcmVmbGVjdGVkU3RyaW5nQXR0ciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdE9ial9yZWZsZWN0ZWRTdHJpbmdBdHRyKSB9IH0sCkBAIC0zOTUyLDYgKzM5NTUsMzcgQEAg
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial9yZWZsZWN0ZWRFbGVtZW50QXR0
ciwgKEpTR2xvYmFsT2JqZWN0KiBsZXgKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9i
aj46OnNldDxzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVudEF0dHJTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9
CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJh
eUF0dHJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9i
aiYgdGhpc09iamVjdCkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRnJvemVuQXJyYXk8SURMSW50ZXJmYWNlPEVs
ZW1lbnQ+Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCks
IHRocm93U2NvcGUsIGltcGwuZ2V0RWxlbWVudHNBcnJheUF0dHJpYnV0ZShXZWJDb3JlOjpIVE1M
TmFtZXM6OnJlZmxlY3RlZGVsZW1lbnRzYXJyYXlhdHRyQXR0cikpKSk7Cit9CisKK0pTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHIsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqX3JlZmxlY3RlZEVsZW1lbnRzQXJyYXlBdHRy
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKK30KKworc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdE9ial9yZWZsZWN0ZWRFbGVtZW50c0FycmF5QXR0clNldHRlcihKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PElETEZyb3plbkFycmF5PElETEludGVyZmFjZTxFbGVtZW50Pj4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGZhbHNlKTsKKyAgICBpbnZva2VGdW5jdG9yUHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2Fy
eShsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4g
aW1wbC5zZXRFbGVtZW50c0FycmF5QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVj
dGVkZWxlbWVudHNhcnJheWF0dHJBdHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rl
c3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK3sKKyAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVu
dHNBcnJheUF0dHJTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RPYmpfcmVmbGVjdGVkVVJMQXR0ckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggN2U5ODJkNTE2MjRiNGNmZDhiODZlZDUx
NDc3ZjcxN2IxYmJmZTVjNy4uMjgwNzkyOThhMDI1YzFiMjMwMTUxYTM2ZDkzNTdjZjg4ZGNiNTc3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RP
YmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2Jq
LmlkbApAQCAtMTA1LDYgKzEwNSw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJr
aW5kYS1sb3ciIH07CiAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHJlZmxl
Y3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgYm9vbGVh
biByZWZsZWN0ZWRCb29sZWFuQXR0cjsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIEVsZW1lbnQg
cmVmbGVjdGVkRWxlbWVudEF0dHI7CisgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBGcm96ZW5BcnJh
eTxFbGVtZW50PiByZWZsZWN0ZWRFbGVtZW50c0FycmF5QXR0cjsKICAgICBbUmVmbGVjdCwgVVJM
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJlZmxlY3RlZFVSTEF0dHI7CiAgICAgW1JlZmxlY3QsIFVS
TF0gYXR0cmlidXRlIFVTVlN0cmluZyByZWZsZWN0ZWRVU1ZVUkxBdHRyOwogICAgIFtSZWZsZWN0
PWN1c3RvbUNvbnRlbnRTdHJpbmdBdHRyXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJlZmxlY3RlZFN0
cmluZ0F0dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNjZhM2Q4NmQ2OWNhZjdjNzM2NTA2
NDMwMWU1OTExYzA0Mzg2NmM4NS4uNmY5MDVmYTM3ODVlMzJjN2ZjYWVkNzgzYmZlYmQ2MTUxMTE4
MWU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTkwNiw2ICsxOTA2LDE2IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc0VsZW1lbnRSZWZsZWN0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUpCiAgICAgcmV0dXJuIG5hbWUgPT0gSFRNTE5hbWVzOjphcmlhX2FjdGl2ZWRl
c2NlbmRhbnRBdHRyIHx8IG5hbWUgPT0gSFRNTE5hbWVzOjphcmlhX2Vycm9ybWVzc2FnZUF0dHI7
CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0VsZW1lbnRzQXJyYXlSZWZsZWN0aW9uQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCit7CisgICAgcmV0dXJuIG5hbWUgPT0gSFRN
TE5hbWVzOjphcmlhX2NvbnRyb2xzQXR0cgorICAgICAgICB8fCBuYW1lID09IEhUTUxOYW1lczo6
YXJpYV9kZXNjcmliZWRieUF0dHIKKyAgICAgICAgfHwgbmFtZSA9PSBIVE1MTmFtZXM6OmFyaWFf
ZGV0YWlsc0F0dHIKKyAgICAgICAgfHwgbmFtZSA9PSBIVE1MTmFtZXM6OmFyaWFfZmxvd3RvQXR0
cgorICAgICAgICB8fCBuYW1lID09IEhUTUxOYW1lczo6YXJpYV9sYWJlbGxlZGJ5QXR0cgorICAg
ICAgICB8fCBuYW1lID09IEhUTUxOYW1lczo6YXJpYV9vd25zQXR0cjsKK30KKwogdm9pZCBFbGVt
ZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21TdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRl
TW9kaWZpY2F0aW9uUmVhc29uKQogewogICAgIGJvb2wgdmFsdWVJc1NhbWVBc0JlZm9yZSA9IG9s
ZFZhbHVlID09IG5ld1ZhbHVlOwpAQCAtMTk0Miw3ICsxOTUyLDcgQEAgdm9pZCBFbGVtZW50Ojph
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJp
bmcmIG9sZFYKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChuYW1lID09IEhUTUxO
YW1lczo6cGFydEF0dHIpCiAgICAgICAgICAgICBwYXJ0QXR0cmlidXRlQ2hhbmdlZChuZXdWYWx1
ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5hcmlhUmVmbGVjdGlv
bkZvckVsZW1lbnRSZWZlcmVuY2VzRW5hYmxlZCgpICYmIGlzRWxlbWVudFJlZmxlY3Rpb25BdHRy
aWJ1dGUobmFtZSkpIHsKKyAgICAgICAgZWxzZSBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmFy
aWFSZWZsZWN0aW9uRm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVkKCkgJiYgKGlzRWxlbWVudFJl
ZmxlY3Rpb25BdHRyaWJ1dGUobmFtZSkgfHwgaXNFbGVtZW50c0FycmF5UmVmbGVjdGlvbkF0dHJp
YnV0ZShuYW1lKSkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBtYXAgPSBleHBsaWNpdGx5U2V0
QXR0ckVsZW1lbnRzTWFwSWZFeGlzdHMoKSkKICAgICAgICAgICAgICAgICBtYXAtPnJlbW92ZShu
YW1lKTsKICAgICAgICAgfSBlbHNlIGlmIChuYW1lID09IEhUTUxOYW1lczo6ZXhwb3J0cGFydHNB
dHRyKSB7CkBAIC0yMDIzLDYgKzIwMzMsNzQgQEAgdm9pZCBFbGVtZW50OjpzZXRFbGVtZW50QXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEVsZW1lbnQqIGUKICAg
ICBleHBsaWNpdGx5U2V0QXR0ckVsZW1lbnRzTWFwKCkuc2V0KGF0dHJpYnV0ZU5hbWUsIFZlY3Rv
cjxXZWFrUHRyPEVsZW1lbnQ+PiB7IGVsZW1lbnQgfSk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8VmVj
dG9yPFJlZlB0cjxFbGVtZW50Pj4+IEVsZW1lbnQ6OmdldEVsZW1lbnRzQXJyYXlBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3QKK3sKKworICAgIEFTU0VS
VChkb2N1bWVudCgpLnNldHRpbmdzKCkuYXJpYVJlZmxlY3Rpb25Gb3JFbGVtZW50UmVmZXJlbmNl
c0VuYWJsZWQoKSk7CisgICAgQVNTRVJUKGlzRWxlbWVudHNBcnJheVJlZmxlY3Rpb25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSkpOworCisgICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4gZWxlbWVu
dHM7CisgICAgaWYgKGF1dG8qIG1hcCA9IGV4cGxpY2l0bHlTZXRBdHRyRWxlbWVudHNNYXBJZkV4
aXN0cygpKSB7CisgICAgICAgIGF1dG8gaXQgPSBtYXAtPmZpbmQoYXR0cmlidXRlTmFtZSk7Cisg
ICAgICAgIGlmIChpdCAhPSBtYXAtPmVuZCgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZWxl
bWVudCA6IGl0LT52YWx1ZSkgeworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ICYmIGlzRGVz
Y2VuZGFudE9yU2hhZG93RGVzY2VuZGFudE9mKGVsZW1lbnQtPnJvb3ROb2RlKCkpKQorICAgICAg
ICAgICAgICAgICAgICBlbGVtZW50cy5hcHBlbmQoZWxlbWVudC5nZXQoKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudHM7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBhdXRvIGF0dHIgPSBhdHRyaWJ1dGVOYW1lOworICAgIGlmIChhdHRyID09IEhUTUxOYW1lczo6
YXJpYV9sYWJlbGxlZGJ5QXR0ciAmJiAhaGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9sYWJl
bGxlZGJ5QXR0cikgJiYgaGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9sYWJlbGVkYnlBdHRy
KSkKKyAgICAgICAgYXR0ciA9IEhUTUxOYW1lczo6YXJpYV9sYWJlbGVkYnlBdHRyOworCisgICAg
aWYgKCFoYXNBdHRyaWJ1dGUoYXR0cikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBhdXRvIGlkcyA9IFNwYWNlU3BsaXRTdHJpbmcoZ2V0QXR0cmlidXRlKGF0dHIpLCBTcGFj
ZVNwbGl0U3RyaW5nOjpTaG91bGRGb2xkQ2FzZTo6Tm8pOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBpZHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSB0
cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChpZHNbaV0pKQorICAgICAgICAgICAgZWxlbWVudHMu
YXBwZW5kKGVsZW1lbnQpOworICAgIH0KKyAgICByZXR1cm4gZWxlbWVudHM7Cit9CisKK3ZvaWQg
RWxlbWVudDo6c2V0RWxlbWVudHNBcnJheUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+PiBlbGVt
ZW50cykKK3sKKyAgICBBU1NFUlQoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmFyaWFSZWZsZWN0aW9u
Rm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVkKCkpOworICAgIEFTU0VSVChpc0VsZW1lbnRzQXJy
YXlSZWZsZWN0aW9uQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKTsKKworICAgIGlmICghZWxlbWVu
dHMpIHsKKyAgICAgICAgaWYgKGF1dG8qIG1hcCA9IGV4cGxpY2l0bHlTZXRBdHRyRWxlbWVudHNN
YXBJZkV4aXN0cygpKQorICAgICAgICAgICAgbWFwLT5yZW1vdmUoYXR0cmlidXRlTmFtZSk7Cisg
ICAgICAgIHJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFZlY3RvcjxXZWFrUHRyPEVsZW1lbnQ+PiBuZXdFbGVtZW50czsKKyAgICBT
dHJpbmdCdWlsZGVyIHZhbHVlOworICAgIGZvciAoYXV0byBlbGVtZW50IDogZWxlbWVudHMudmFs
dWUoKSkgeworICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpICYmICFuZXdFbGVtZW50cy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgIG5ld0VsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgbmV3RWxlbWVudHMuYXBwZW5k
KGVsZW1lbnQpOworCisgICAgICAgIGF1dG8gaWQgPSBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgp
OworICAgICAgICBpZiAoIWlkLmlzTnVsbCgpICYmICZyb290Tm9kZSgpID09ICZlbGVtZW50LT5y
b290Tm9kZSgpICYmIHRyZWVTY29wZSgpLmdldEVsZW1lbnRCeUlkKGlkKSA9PSBlbGVtZW50KSB7
CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICB2YWx1
ZS5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgIHZhbHVlLmFwcGVuZChpZCk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgdmFsdWUuY2xlYXIoKTsKKyAgICB9CisgICAgc2V0QXR0cmlidXRl
KGF0dHJpYnV0ZU5hbWUsIHZhbHVlLnRvQXRvbVN0cmluZygpKTsKKworICAgIGV4cGxpY2l0bHlT
ZXRBdHRyRWxlbWVudHNNYXAoKS5zZXQoYXR0cmlidXRlTmFtZSwgV1RGTW92ZShuZXdFbGVtZW50
cykpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc05vbkVtcHR5VG9rZW5MaXN0KGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGIyN2RlOGQ4NzJl
YzU4MDk5NDRlODFiNjUwYjFjOWU0OWM2MzcxOGIuLjlhZGUzZDFiYmUyZGVhNmU0NDUxZmMxNTk1
ZmFjODJlOTIxNDhhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtOTMsOCArOTMsNiBAQCBzdHJ1
Y3QgU2Nyb2xsVG9PcHRpb25zOwogc3RydWN0IFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnRJ
bml0Owogc3RydWN0IFNoYWRvd1Jvb3RJbml0OwogCi0vLyBGSVhNRTogVGhpcyBvbmx5IHN0b3Jl
cyBvbmUgRWxlbWVudCBpbiB0aGUgVmVjdG9yIHJpZ2h0IG5vdywgdGhvdWdoIHRoaXMgd2lsbCBj
aGFuZ2UKLS8vIG9uY2UgcmVmbGVjdGlvbiBmb3IgRnJvemVuQXJyYXk8RWxlbWVudD4gaXMgaW1w
bGVtZW50ZWQgaW4gaHR0cHM6Ly93ZWJraXQub3JnL2IvMjM5ODUzLgogdXNpbmcgRXhwbGljaXRs
eVNldEF0dHJFbGVtZW50c01hcCA9IEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgVmVjdG9yPFdlYWtQ
dHI8RWxlbWVudD4+PjsKIAogbmFtZXNwYWNlIFN0eWxlIHsKQEAgLTEyNyw2ICsxMjUsOCBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVbnNpZ25lZEludGVncmFsQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIHVuc2lnbmVkIHZhbHVlKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBnZXRFbGVtZW50QXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0RWxlbWVudEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
LCBFbGVtZW50KiB2YWx1ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmUHRyPEVsZW1lbnQ+Pj4gZ2V0RWxlbWVudHNBcnJheUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldEVsZW1lbnRzQXJyYXlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+Pj4gdmFsdWUpOwogCiAg
ICAgLy8gQ2FsbCB0aGlzIHRvIGdldCB0aGUgdmFsdWUgb2YgYW4gYXR0cmlidXRlIHRoYXQgaXMg
a25vd24gbm90IHRvIGJlIHRoZSBzdHlsZQogICAgIC8vIGF0dHJpYnV0ZSBvciBvbmUgb2YgdGhl
IFNWRyBhbmltYXRhYmxlIGF0dHJpYnV0ZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODAzMzJiNWE2N2Q0MjJiZWVlOGE0
OTYwNDNkYjIxNTNkNmJiZWIyMS4uZjI2YjZlNzFmMjliYzg3NTdkNmVkNzdjZjhjZTc0NjQ0M2Ey
NGE4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTA1LTA5ICBNYW51ZWwgUmVnbyBDYXNh
c25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIEFSSUEgcmVmbGVjdGlvbiBmb3Ig
RnJvemVuQXJyYXk8RWxlbWVudD4gYXR0cmlidXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85
Mjc5NzgzNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgdGVzdCBzbyBpdCBpZGVudGlmaWVzIHRoZSBGcm96ZW5BcnJheTxFbGVtZW50PiBh
dHRyaWJ1dGVzLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BUklBLXJlZmxlY3Rpb24tZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVJJQS1yZWZsZWN0aW9uLmh0bWw6
CisKIDIwMjItMDUtMDkgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW1dpbkNhaXJvXVtXSzFdIGFjY2Vzc2liaWxpdHkvYXJpYS1jb21ib2JveC1j
b250cm9sLW93bnMtZWxlbWVudHMuaHRtbCBpcyBjcmFzaGluZyBhZnRlciAyNTAzMjVAbWFpbgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggM2FlODZhZTI2ZDg1YzE1MTcyMDczZGE5
Njg2MmNkMjg2OGIyOWM5Yi4uMTg0MDIwOGUwODZmMzM4Y2Y2NmEyMmEyMTllZDdiYTk4MGM2NDdi
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjIt
MDUtMDkgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgQVJJQSByZWZsZWN0aW9uIGZvciBGcm96ZW5BcnJheTxFbGVtZW50PiBhdHRyaWJ1dGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk4NTMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkyNzk3ODM2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBleHBlY3RhdGlvbnMgd2l0aCB0aGUgbmV3
IFBBU1MgbGluZXMuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL2Fy
aWEtZWxlbWVudC1yZWZsZWN0aW9uLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQ6CisKIDIwMjItMDUt
MDYgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBVc2UgY29ycmVjdCBk
b2N1bWVudCBhcyByb290IGZvciBsYXp5IGltYWdlIG9ic2VydmVyCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L0FSSUEtcmVmbGVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L0FSSUEtcmVmbGVjdGlvbi1leHBlY3RlZC50eHQKaW5kZXgg
ZTNmZWVjMzBjNGM3YTllYWZhZDFhOTRkZWRlZWM2M2Y4OGJiODBlNy4uM2M4NGExNjA3MTQwM2Iw
OGVmMjg3MzdjN2NjMTJkZjRmYmU0OWQ2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9BUklBLXJlZmxlY3Rpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvQVJJQS1yZWZsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtNjcsNiArNjcsMTMg
QEAgUEFTUyBlbGVtZW50LmdldEF0dHJpYnV0ZShjdXJyZW50QXR0cmlidXRlKSBpcyBkYXRhQXR0
cmlidXRlCiBlbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1jb2xzcGFuIiwgb3RoZXJEYXRhKTsK
IFBBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG90aGVyRGF0YVByb3BlcnR5CiAKK1Rl
c3QgYXJpYUNvbnRyb2xzRWxlbWVudHMgPCAtID4gYXJpYS1jb250cm9scworUEFTUyBlbGVtZW50
W2N1cnJlbnRQcm9wZXJ0eV0gaXMgbnVsbAorUEFTUyBlbGVtZW50LmdldEF0dHJpYnV0ZShjdXJy
ZW50QXR0cmlidXRlKSBpcyBudWxsCitQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGN1cnJlbnRB
dHRyaWJ1dGUpIGlzIGRhdGFBdHRyaWJ1dGUKK2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWNv
bnRyb2xzIiwgb3RoZXJEYXRhKTsKK1BBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG90
aGVyRGF0YVByb3BlcnR5CisKIFRlc3QgYXJpYUN1cnJlbnQgPCAtID4gYXJpYS1jdXJyZW50CiBQ
QVNTIGVsZW1lbnRbY3VycmVudFByb3BlcnR5XSBpcyBudWxsCiBQQVNTIGVsZW1lbnQuZ2V0QXR0
cmlidXRlKGN1cnJlbnRBdHRyaWJ1dGUpIGlzIG51bGwKQEAgLTc0LDYgKzgxLDIwIEBAIFBBU1Mg
ZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgZGF0YUF0dHJpYnV0ZQog
ZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtY3VycmVudCIsIG90aGVyRGF0YSk7CiBQQVNTIGVs
ZW1lbnRbY3VycmVudFByb3BlcnR5XSBpcyBvdGhlckRhdGFQcm9wZXJ0eQogCitUZXN0IGFyaWFE
ZXNjcmliZWRCeUVsZW1lbnRzIDwgLSA+IGFyaWEtZGVzY3JpYmVkYnkKK1BBU1MgZWxlbWVudFtj
dXJyZW50UHJvcGVydHldIGlzIG51bGwKK1BBU1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3VycmVu
dEF0dHJpYnV0ZSkgaXMgbnVsbAorUEFTUyBlbGVtZW50LmdldEF0dHJpYnV0ZShjdXJyZW50QXR0
cmlidXRlKSBpcyBkYXRhQXR0cmlidXRlCitlbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1kZXNj
cmliZWRieSIsIG90aGVyRGF0YSk7CitQQVNTIGVsZW1lbnRbY3VycmVudFByb3BlcnR5XSBpcyBv
dGhlckRhdGFQcm9wZXJ0eQorCitUZXN0IGFyaWFEZXRhaWxzRWxlbWVudHMgPCAtID4gYXJpYS1k
ZXRhaWxzCitQQVNTIGVsZW1lbnRbY3VycmVudFByb3BlcnR5XSBpcyBudWxsCitQQVNTIGVsZW1l
bnQuZ2V0QXR0cmlidXRlKGN1cnJlbnRBdHRyaWJ1dGUpIGlzIG51bGwKK1BBU1MgZWxlbWVudC5n
ZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgZGF0YUF0dHJpYnV0ZQorZWxlbWVudC5z
ZXRBdHRyaWJ1dGUoImFyaWEtZGV0YWlscyIsIG90aGVyRGF0YSk7CitQQVNTIGVsZW1lbnRbY3Vy
cmVudFByb3BlcnR5XSBpcyBvdGhlckRhdGFQcm9wZXJ0eQorCiBUZXN0IGFyaWFEaXNhYmxlZCA8
IC0gPiBhcmlhLWRpc2FibGVkCiBQQVNTIGVsZW1lbnRbY3VycmVudFByb3BlcnR5XSBpcyBudWxs
CiBQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGN1cnJlbnRBdHRyaWJ1dGUpIGlzIG51bGwKQEAg
LTk1LDYgKzExNiwxMyBAQCBQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGN1cnJlbnRBdHRyaWJ1
dGUpIGlzIGRhdGFBdHRyaWJ1dGUKIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVk
Iiwgb3RoZXJEYXRhKTsKIFBBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG90aGVyRGF0
YVByb3BlcnR5CiAKK1Rlc3QgYXJpYUZsb3dUb0VsZW1lbnRzIDwgLSA+IGFyaWEtZmxvd3RvCitQ
QVNTIGVsZW1lbnRbY3VycmVudFByb3BlcnR5XSBpcyBudWxsCitQQVNTIGVsZW1lbnQuZ2V0QXR0
cmlidXRlKGN1cnJlbnRBdHRyaWJ1dGUpIGlzIG51bGwKK1BBU1MgZWxlbWVudC5nZXRBdHRyaWJ1
dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgZGF0YUF0dHJpYnV0ZQorZWxlbWVudC5zZXRBdHRyaWJ1
dGUoImFyaWEtZmxvd3RvIiwgb3RoZXJEYXRhKTsKK1BBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVy
dHldIGlzIG90aGVyRGF0YVByb3BlcnR5CisKIFRlc3QgYXJpYUhhc1BvcHVwIDwgLSA+IGFyaWEt
aGFzcG9wdXAKIFBBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG51bGwKIFBBU1MgZWxl
bWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgbnVsbApAQCAtMTMwLDYgKzE1
OCwxMyBAQCBQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGN1cnJlbnRBdHRyaWJ1dGUpIGlzIGRh
dGFBdHRyaWJ1dGUKIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgb3RoZXJEYXRh
KTsKIFBBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG90aGVyRGF0YVByb3BlcnR5CiAK
K1Rlc3QgYXJpYUxhYmVsbGVkQnlFbGVtZW50cyA8IC0gPiBhcmlhLWxhYmVsbGVkYnkKK1BBU1Mg
ZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG51bGwKK1BBU1MgZWxlbWVudC5nZXRBdHRyaWJ1
dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgbnVsbAorUEFTUyBlbGVtZW50LmdldEF0dHJpYnV0ZShj
dXJyZW50QXR0cmlidXRlKSBpcyBkYXRhQXR0cmlidXRlCitlbGVtZW50LnNldEF0dHJpYnV0ZSgi
YXJpYS1sYWJlbGxlZGJ5Iiwgb3RoZXJEYXRhKTsKK1BBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVy
dHldIGlzIG90aGVyRGF0YVByb3BlcnR5CisKIFRlc3QgYXJpYUxldmVsIDwgLSA+IGFyaWEtbGV2
ZWwKIFBBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG51bGwKIFBBU1MgZWxlbWVudC5n
ZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgbnVsbApAQCAtMTcyLDYgKzIwNywxMyBA
QCBQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGN1cnJlbnRBdHRyaWJ1dGUpIGlzIGRhdGFBdHRy
aWJ1dGUKIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLW9yaWVudGF0aW9uIiwgb3RoZXJEYXRh
KTsKIFBBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG90aGVyRGF0YVByb3BlcnR5CiAK
K1Rlc3QgYXJpYU93bnNFbGVtZW50cyA8IC0gPiBhcmlhLW93bnMKK1BBU1MgZWxlbWVudFtjdXJy
ZW50UHJvcGVydHldIGlzIG51bGwKK1BBU1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0
dHJpYnV0ZSkgaXMgbnVsbAorUEFTUyBlbGVtZW50LmdldEF0dHJpYnV0ZShjdXJyZW50QXR0cmli
dXRlKSBpcyBkYXRhQXR0cmlidXRlCitlbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1vd25zIiwg
b3RoZXJEYXRhKTsKK1BBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG90aGVyRGF0YVBy
b3BlcnR5CisKIFRlc3QgYXJpYVBsYWNlaG9sZGVyIDwgLSA+IGFyaWEtcGxhY2Vob2xkZXIKIFBB
U1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG51bGwKIFBBU1MgZWxlbWVudC5nZXRBdHRy
aWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgbnVsbApAQCAtMjkyLDcgKzMzNCw3IEBAIGVsZW1l
bnQuc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVldGV4dCIsIG90aGVyRGF0YSk7CiBQQVNTIGVsZW1l
bnRbY3VycmVudFByb3BlcnR5XSBpcyBvdGhlckRhdGFQcm9wZXJ0eQogCiAKLVBBU1MgY291bnQg
aXMgNDAKK1BBU1MgY291bnQgaXMgNDYKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9B
UklBLXJlZmxlY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvQVJJQS1yZWZs
ZWN0aW9uLmh0bWwKaW5kZXggOTNhOWI3YTE3ZjlhNDRlNGNkMTFiZWNhOTY5ZjBjZTU3NzY5Y2Vl
ZS4uNjQyOGNlZjVhMmViOTBhZGJjMmZjMzIzZjllZTY3ZjY4YWRjNWEyYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9BUklBLXJlZmxlY3Rpb24uaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L0FSSUEtcmVmbGVjdGlvbi5odG1sCkBAIC03LDYgKzcsNyBA
QAogPGRpdiBpZD0idGVzdCIgZGF0YT0ic29tZSBkYXRhIj4KICAgPGRpdiBpZD0iZmlyc3RDaGls
ZCI+PC9kaXY+CiAgIDxkaXYgaWQ9InNlY29uZENoaWxkIj48L2Rpdj4KKyAgPGRpdiBpZD0idGhp
cmRDaGlsZCI+PC9kaXY+CiA8L2Rpdj4KIAogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CkBAIC0z
MSwxMiArMzIsNTkgQEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGZ1bmN0
aW9uIGlzRWxlbWVudHNBcnJheVJlZmxlY3Rpb25Qcm9wZXJ0eShwcm9wZXJ0eSkgeworICAgICAg
ICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgICAgICAgICBjYXNlICJhcmlhQ29udHJvbHNFbGVt
ZW50cyI6CisgICAgICAgICAgICBjYXNlICJhcmlhRGVzY3JpYmVkQnlFbGVtZW50cyI6CisgICAg
ICAgICAgICBjYXNlICJhcmlhRGV0YWlsc0VsZW1lbnRzIjoKKyAgICAgICAgICAgIGNhc2UgImFy
aWFGbG93VG9FbGVtZW50cyI6CisgICAgICAgICAgICBjYXNlICJhcmlhTGFiZWxsZWRCeUVsZW1l
bnRzIjoKKyAgICAgICAgICAgIGNhc2UgImFyaWFPd25zRWxlbWVudHMiOgorICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKICAgICBmdW5jdGlvbiBjb252ZXJ0UHJvcGVydHlUb0F0dHJpYnV0ZShwcm9wZXJ0eSkgewog
ICAgICAgICBpZiAoaXNFbGVtZW50UmVmbGVjdGlvblByb3BlcnR5KHByb3BlcnR5KSkKICAgICAg
ICAgICBwcm9wZXJ0eSA9IHByb3BlcnR5LnJlcGxhY2UoIkVsZW1lbnQiLCAiIik7CisgICAgICAg
IGVsc2UgaWYgKGlzRWxlbWVudHNBcnJheVJlZmxlY3Rpb25Qcm9wZXJ0eShwcm9wZXJ0eSkpCisg
ICAgICAgICAgcHJvcGVydHkgPSBwcm9wZXJ0eS5yZXBsYWNlKCJFbGVtZW50cyIsICIiKTsKICAg
ICAgICAgcmV0dXJuIHByb3BlcnR5LnJlcGxhY2UoImFyaWEiLCAiYXJpYS0iKS50b0xvd2VyQ2Fz
ZSgpOwogICAgIH0KIAorICAgIGZ1bmN0aW9uIGdldERhdGFQcm9wZXJ0eShwcm9wZXJ0eSkgewor
ICAgICAgICBpZiAoaXNFbGVtZW50UmVmbGVjdGlvblByb3BlcnR5KHByb3BlcnR5KSkKKyAgICAg
ICAgICByZXR1cm4gZmlyc3RDaGlsZDsKKyAgICAgICAgZWxzZSBpZiAoaXNFbGVtZW50c0FycmF5
UmVmbGVjdGlvblByb3BlcnR5KHByb3BlcnR5KSkKKyAgICAgICAgICByZXR1cm4gW2ZpcnN0Q2hp
bGQsIHNlY29uZENoaWxkXTsKKyAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gZ2V0RGF0YUF0dHJpYnV0ZShwcm9wZXJ0eSkgeworICAgICAgICBpZiAoaXNFbGVtZW50
UmVmbGVjdGlvblByb3BlcnR5KHByb3BlcnR5KSkKKyAgICAgICAgICByZXR1cm4gZmlyc3RDaGls
ZC5pZDsKKyAgICAgICAgZWxzZSBpZiAoaXNFbGVtZW50c0FycmF5UmVmbGVjdGlvblByb3BlcnR5
KHByb3BlcnR5KSkKKyAgICAgICAgICByZXR1cm4gZmlyc3RDaGlsZC5pZCArICIgIiArIHNlY29u
ZENoaWxkLmlkOworICAgICAgICByZXR1cm4gZGF0YTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBn
ZXRPdGhlckRhdGFQcm9wZXJ0eShwcm9wZXJ0eSkgeworICAgICAgICBpZiAoaXNFbGVtZW50UmVm
bGVjdGlvblByb3BlcnR5KHByb3BlcnR5KSkKKyAgICAgICAgICByZXR1cm4gc2Vjb25kQ2hpbGQ7
CisgICAgICAgIGVsc2UgaWYgKGlzRWxlbWVudHNBcnJheVJlZmxlY3Rpb25Qcm9wZXJ0eShwcm9w
ZXJ0eSkpCisgICAgICAgICAgcmV0dXJuIFt0aGlyZENoaWxkXTsKKyAgICAgICAgcmV0dXJuIG90
aGVyRGF0YTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRPdGhlckRhdGFBdHRyaWJ1dGUocHJv
cGVydHkpIHsKKyAgICAgICAgaWYgKGlzRWxlbWVudFJlZmxlY3Rpb25Qcm9wZXJ0eShwcm9wZXJ0
eSkpCisgICAgICAgICAgcmV0dXJuIHNlY29uZENoaWxkLmlkOworICAgICAgICBlbHNlIGlmIChp
c0VsZW1lbnRzQXJyYXlSZWZsZWN0aW9uUHJvcGVydHkocHJvcGVydHkpKQorICAgICAgICAgIHJl
dHVybiB0aGlyZENoaWxkLmlkOworICAgICAgICByZXR1cm4gb3RoZXJEYXRhOworICAgIH0KKwog
ICAgIGZ1bmN0aW9uIHRlc3RFbGVtZW50KCkgewogICAgICAgICBjdXJyZW50QXR0cmlidXRlID0g
Y29udmVydFByb3BlcnR5VG9BdHRyaWJ1dGUoY3VycmVudFByb3BlcnR5KTsKIApAQCAtNDUsMTQg
KzkzLDE0IEBACiAgICAgICAgIHNob3VsZEJlTnVsbCgiZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3Vy
cmVudEF0dHJpYnV0ZSkiKTsKIAogICAgICAgICAvLyBTZXQgdGhlIHByb3BlcnR5IHZhbHVlCi0g
ICAgICAgIGRhdGFQcm9wZXJ0eSA9IGlzRWxlbWVudFJlZmxlY3Rpb25Qcm9wZXJ0eShjdXJyZW50
UHJvcGVydHkpID8gZmlyc3RDaGlsZCA6IGRhdGE7Ci0gICAgICAgIGRhdGFBdHRyaWJ1dGUgPSBp
c0VsZW1lbnRSZWZsZWN0aW9uUHJvcGVydHkoY3VycmVudFByb3BlcnR5KSA/IGZpcnN0Q2hpbGQu
aWQgOiBkYXRhOworICAgICAgICBkYXRhUHJvcGVydHkgPSBnZXREYXRhUHJvcGVydHkoY3VycmVu
dFByb3BlcnR5KTsKKyAgICAgICAgZGF0YUF0dHJpYnV0ZSA9IGdldERhdGFBdHRyaWJ1dGUoY3Vy
cmVudFByb3BlcnR5KTsKICAgICAgICAgZWxlbWVudFtjdXJyZW50UHJvcGVydHldID0gZGF0YVBy
b3BlcnR5OwogICAgICAgICBzaG91bGRCZSgiZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0
dHJpYnV0ZSkiLCAiZGF0YUF0dHJpYnV0ZSIpOwogCiAgICAgICAgIC8vIFNldCB0aGUgYXR0cmli
dXRlIHZhbHVlCi0gICAgICAgIG90aGVyRGF0YVByb3BlcnR5ID0gaXNFbGVtZW50UmVmbGVjdGlv
blByb3BlcnR5KGN1cnJlbnRQcm9wZXJ0eSkgPyBzZWNvbmRDaGlsZCA6IG90aGVyRGF0YTsKLSAg
ICAgICAgb3RoZXJEYXRhQXR0cmlidXRlID0gaXNFbGVtZW50UmVmbGVjdGlvblByb3BlcnR5KGN1
cnJlbnRQcm9wZXJ0eSkgPyBzZWNvbmRDaGlsZC5pZCA6IG90aGVyRGF0YTsKKyAgICAgICAgb3Ro
ZXJEYXRhUHJvcGVydHkgPSBnZXRPdGhlckRhdGFQcm9wZXJ0eShjdXJyZW50UHJvcGVydHkpOwor
ICAgICAgICBvdGhlckRhdGFBdHRyaWJ1dGUgPSBnZXRPdGhlckRhdGFBdHRyaWJ1dGUoY3VycmVu
dFByb3BlcnR5KTsKICAgICAgICAgZGVidWcoImVsZW1lbnQuc2V0QXR0cmlidXRlKFwiIiArIGN1
cnJlbnRBdHRyaWJ1dGUgKyAiXCIsIG90aGVyRGF0YSk7Iik7CiAgICAgICAgIGVsZW1lbnQuc2V0
QXR0cmlidXRlKGN1cnJlbnRBdHRyaWJ1dGUsIG90aGVyRGF0YUF0dHJpYnV0ZSk7CiAgICAgICAg
IHNob3VsZEJlKCJlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0iLCAib3RoZXJEYXRhUHJvcGVydHki
KTsKQEAgLTc4LDcgKzEyNiw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBkZWJ1ZygiXG4iKTsK
LSAgICAgICAgc2hvdWxkQmUoImNvdW50IiwgIjQwIik7CisgICAgICAgIHNob3VsZEJlKCJjb3Vu
dCIsICI0NiIpOwogCiAgICAgfSBlbHNlIHsKICAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90
IGxvYWQgYWNjZXNzaWJpbGl0eSBjb250cm9sbGVyIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ub2Rlcy9hcmlhLWVsZW1lbnQt
cmVmbGVjdGlvbi50ZW50YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvYXJpYS1lbGVtZW50LXJlZmxlY3Rpb24u
dGVudGF0aXZlLWV4cGVjdGVkLnR4dAppbmRleCAxNjc4MDY0NzE2N2Y0NmFhNWQwY2MxNDYzYTkz
ZTIwMGEyY2RkY2MxLi42OTY3ZDcwNjY3ZTM4NTdmZGM3MmIwOWE4M2JjMDk2YjgwZjlkNWRlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Rv
bS9ub2Rlcy9hcmlhLWVsZW1lbnQtcmVmbGVjdGlvbi50ZW50YXRpdmUtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVz
L2FyaWEtZWxlbWVudC1yZWZsZWN0aW9uLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKQEAgLTM2LDEy
ICszNiw3IEBAIExpZ2h0IERPTSB0ZXh0CiAKIExpZ2h0IERPTSB0ZXh0CiAKLURlbGljaW91cwot
TnV0cml0aW91cwotCiBNaXNzcGVsbGluZwotV29uZGVyZnVsCi1GYW50YXN0aWMKIAogCiBQQVNT
IGFyaWEtYWN0aXZlZGVzY2VuZGFudCBlbGVtZW50IHJlZmxlY3Rpb24KQEAgLTQ5LDIwICs0NCwy
MCBAQCBQQVNTIElmIHRoZSBjb250ZW50IGF0dHJpYnV0ZSBpcyBzZXQgZGlyZWN0bHksIHRoZSBJ
REwgYXR0cmlidXRlIGdldHRlciBhbHdheXMgcgogUEFTUyBTZXR0aW5nIHRoZSBJREwgYXR0cmli
dXRlIHRvIGFuIGVsZW1lbnQgd2hpY2ggaXMgbm90IHRoZSBmaXJzdCBlbGVtZW50IGluIERPTSBv
cmRlciB3aXRoIGl0cyBJRCBjYXVzZXMgdGhlIGNvbnRlbnQgYXR0cmlidXRlIHRvIGJlIGFuIGVt
cHR5IHN0cmluZwogUEFTUyBTZXR0aW5nIGFuIGVsZW1lbnQgcmVmZXJlbmNlIHRoYXQgY3Jvc3Nl
cyBpbnRvIGEgc2hhZG93IHRyZWUgaXMgZGlzYWxsb3dlZCwgYnV0IHNldHRpbmcgb25lIHRoYXQg
aXMgaW4gYSBzaGFkb3cgaW5jbHVzaXZlIGFuY2VzdG9yIGlzIGFsbG93ZWQuCiBQQVNTIGFyaWEt
ZXJyb3JtZXNzYWdlCi1GQUlMIGFyaWEtZGV0YWlscyBhc3NlcnRfYXJyYXlfZXF1YWxzOiB2YWx1
ZSBpcyB1bmRlZmluZWQsIGV4cGVjdGVkIGFycmF5CitQQVNTIGFyaWEtZGV0YWlscwogUEFTUyBE
ZWxldGluZyBhIHJlZmxlY3RlZCBlbGVtZW50IHNob3VsZCByZXR1cm4gbnVsbCBmb3IgdGhlIElE
TCBhdHRyaWJ1dGUgYW5kIGNhdXNlIHRoZSBjb250ZW50IGF0dHJpYnV0ZSB0byBiZWNvbWUgc3Rh
bGUuCiBQQVNTIENoYW5naW5nIHRoZSBJRCBvZiBhbiBlbGVtZW50IGNhdXNlcyB0aGUgY29udGVu
dCBhdHRyaWJ1dGUgdG8gYmVjb21lIG91dCBvZiBzeW5jLgogUEFTUyBSZXBhcmVudGluZyBhbiBl
bGVtZW50IGludG8gYSBkZXNjZW5kYW50IHNoYWRvdyBzY29wZSBoaWRlcyB0aGUgZWxlbWVudCBy
ZWZlcmVuY2UuCiBQQVNTIFJlcGFyZW50aW5nIHJlZmVyZW5jZWQgZWxlbWVudCBjYW5ub3QgY2F1
c2UgcmV0YXJnZXRpbmcgb2YgcmVmZXJlbmNlLgogUEFTUyBFbGVtZW50IHJlZmVyZW5jZSBzZXQg
aW4gaW52YWxpZCBzY29wZSByZW1haW5zIGludGFjdCB0aHJvdWdob3V0IG1vdmUgdG8gdmFsaWQg
c2NvcGUuCi1GQUlMIGFyaWEtbGFiZWxsZWRieS4gYXNzZXJ0X2FycmF5X2VxdWFsczogcGFyc2Vk
IGNvbnRlbnQgYXR0cmlidXRlIHNldHMgZWxlbWVudCByZWZlcmVuY2VzLiB2YWx1ZSBpcyB1bmRl
ZmluZWQsIGV4cGVjdGVkIGFycmF5Ci1GQUlMIGFyaWEtY29udHJvbHMuIGFzc2VydF9hcnJheV9l
cXVhbHM6IHZhbHVlIGlzIHVuZGVmaW5lZCwgZXhwZWN0ZWQgYXJyYXkKLUZBSUwgYXJpYS1kZXNj
cmliZWRieS4gYXNzZXJ0X2FycmF5X2VxdWFsczogdmFsdWUgaXMgdW5kZWZpbmVkLCBleHBlY3Rl
ZCBhcnJheQotRkFJTCBhcmlhLWZsb3d0by4gYXNzZXJ0X2FycmF5X2VxdWFsczogdmFsdWUgaXMg
dW5kZWZpbmVkLCBleHBlY3RlZCBhcnJheQotRkFJTCBhcmlhLW93bnMuIGFzc2VydF9hcnJheV9l
cXVhbHM6IHZhbHVlIGlzIHVuZGVmaW5lZCwgZXhwZWN0ZWQgYXJyYXkKLUZBSUwgc2hhZG93IERP
TSBiZWhhdmlvdXIgZm9yIEZyb3plbkFycmF5IGVsZW1lbnQgcmVmbGVjdGlvbi4gYXNzZXJ0X2Fy
cmF5X2VxdWFsczogdmFsdWUgaXMgdW5kZWZpbmVkLCBleHBlY3RlZCBhcnJheQotRkFJTCBNb3Zp
bmcgZXhwbGljaXRseSBzZXQgZWxlbWVudHMgYWNyb3NzIHNoYWRvdyBET00gYm91bmRhcmllcy4g
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgKHN0cmluZykgImJ1dHRvbkRlc2NyaXB0aW9uMSBidXR0
b25EZXNjcmlwdGlvbjIiIGJ1dCBnb3QgKG9iamVjdCkgbnVsbAotRkFJTCBNb3ZpbmcgZXhwbGlj
aXRseSBzZXQgZWxlbWVudHMgYXJvdW5kIHdpdGhpbiB0aGUgc2FtZSBzY29wZSwgYW5kIHJlbW92
aW5nIGZyb20gdGhlIERPTS4gYXNzZXJ0X2FycmF5X2VxdWFsczogYXJpYS1sYWJlbGVkIGJ5IGlz
IHN1cHBvcnRlZCBieSBJREwgZ2V0dGVyLiB2YWx1ZSBpcyB1bmRlZmluZWQsIGV4cGVjdGVkIGFy
cmF5CitQQVNTIGFyaWEtbGFiZWxsZWRieS4KK1BBU1MgYXJpYS1jb250cm9scy4KK1BBU1MgYXJp
YS1kZXNjcmliZWRieS4KK1BBU1MgYXJpYS1mbG93dG8uCitQQVNTIGFyaWEtb3ducy4KK1BBU1Mg
c2hhZG93IERPTSBiZWhhdmlvdXIgZm9yIEZyb3plbkFycmF5IGVsZW1lbnQgcmVmbGVjdGlvbi4K
K1BBU1MgTW92aW5nIGV4cGxpY2l0bHkgc2V0IGVsZW1lbnRzIGFjcm9zcyBzaGFkb3cgRE9NIGJv
dW5kYXJpZXMuCitQQVNTIE1vdmluZyBleHBsaWNpdGx5IHNldCBlbGVtZW50cyBhcm91bmQgd2l0
aGluIHRoZSBzYW1lIHNjb3BlLCBhbmQgcmVtb3ZpbmcgZnJvbSB0aGUgRE9NLgogUEFTUyBSZXBh
cmVudGluZy4KIFBBU1MgQXR0YWNoaW5nIGVsZW1lbnQgcmVmZXJlbmNlIGJlZm9yZSBpdCdzIGlu
c2VydGVkIGludG8gdGhlIERPTS4KIFBBU1MgQ3Jvc3MtZG9jdW1lbnQgcmVmZXJlbmNlcyBhbmQg
bW92ZXMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459219</attachid>
            <date>2022-05-12 03:57:20 -0700</date>
            <delta_ts>2022-05-12 10:14:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239853-20220512125719.patch</filename>
            <type>text/plain</type>
            <size>31483</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjk0MDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTZjZWJhMDRiNWNiYzdj
MzA5ZmZmM2U4YzJiZTU1ZjY3YTVkNzM3YS4uZGI4ZDg4NjgwNTcyYThkY2I0ZTE5MmY4YTUyYTZk
MDg1N2MwYzY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIyLTA1LTEyICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIEFSSUEgcmVm
bGVjdGlvbiBmb3IgRnJvemVuQXJyYXk8RWxlbWVudD4gYXR0cmlidXRlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODUzCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS85Mjc5NzgzNj4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4K
KworICAgICAgICBJbXBsZW1lbnQgQVJJQSByZWZsZWN0aW9uIGZvciBhdHRyaWJ1dGVzIHRoYXQg
cmVmZXIgdG8gYSBsaXN0IG9mIEVsZW1lbnRzOgorICAgICAgICBhcmlhLWNvbnRyb2xzLCBhcmlh
LWRlc2NyaWJlZGJ5LCBhcmlhLWRldGFpbHMsIGFyaWEtZmxvd3RvLAorICAgICAgICBhcmlhLWxh
YmVsbGVkYnkgYW5kIGFyaWEtb3ducy4KKyAgICAgICAgRm9yIHRoZSBwcm9wZXJ0aWVzIG5hbWVz
IHRoaXMgcGF0Y2ggdXNlcyAiRWxlbWVudHMiIHN1ZmZpeDoKKyAgICAgICAgYXJpYUNvbnRyb2xz
RWxlbWVudHMsIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzLCBhcmlhRGVzY3JpYmVkQnlFbGVtZW50
cywKKyAgICAgICAgYXJpYUZsb3dUb0VsZW1lbnRzLCBhcmlhTGFiZWxsZWRCeUVsZW1lbnRzLCBh
cmlhT3duc0VsZW1lbnRzCisgICAgICAgIHRoaXMgbWF0Y2hlcyBDaHJvbWl1bSBpbXBsZW1lbnRh
dGlvbiBhbmQgQU9NIGV4cGxhaW5lciwgYnV0IG5vdCBBT00gc3BlYzoKKyAgICAgICAgaHR0cHM6
Ly9naXRodWIuY29tL3czYy9hcmlhL2lzc3Vlcy8xNzMyCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FyaWFBdHRyaWJ1dGVzLmlkbDogQWRkIHRoZSBuZXcgcHJvcGVydGllcyB1bmRlcgorICAg
ICAgICBBcmlhUmVmbGVjdGlvbkZvckVsZW1lbnRSZWZlcmVuY2VzRW5hYmxlZCBydW50aW1lIGZs
YWcuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtOgorICAgICAg
ICAoR2V0dGVyRXhwcmVzc2lvbik6IEFkZCBmdW5jdGlvbiBmb3IgRnJvemVuQXJyYXk8RWxlbWVu
dD4gcHJvcGVydGllcy4KKyAgICAgICAgKFNldHRlckV4cHJlc3Npb24pOiBEaXR0by4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDogQWRkIHRlc3RzLgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqRE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHJHZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ial9yZWZsZWN0ZWRFbGVtZW50c0FycmF5QXR0clNldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDogQWRkIGV4YW1wbGUgYXR0cmli
dXRlLgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRWxl
bWVudHNBcnJheVJlZmxlY3Rpb25BdHRyaWJ1dGUpOiBOZXcgdXRpbGl0eSBtZXRob2QgdG8KKyAg
ICAgICAgaWRlbnRpZnkgdGhlIGF0dHJpYnV0ZXMgdGhhdCByZWZlciB0byBhIGxpc3Qgb2YgRWxl
bWVudHMuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKTogSW5j
bHVkZSBjaGVjayBmb3IgZWxlbWVudHMKKyAgICAgICAgYXJyYXkuCisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpnZXRFbGVtZW50c0FycmF5QXR0cmlidXRlIGNvbnN0KTogSW1wbGVtZW50IGdl
dHRlci4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEVsZW1lbnRzQXJyYXlBdHRyaWJ1
dGUpOiBJbXBsZW1lbnQgc2V0dGVyLgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6IFJlbW92ZSBG
SVhNRSBpbiBFeHBsaWNpdGx5U2V0QXR0ckVsZW1lbnRzTWFwIGFzIG5vdworICAgICAgICBpdCBz
dG9yZXMgbW9yZSB0aGFuIG9uZSBlbGVtZW50LiBBZGQgaGVhZGVycyBmb3IgZ2V0dGVyIGFuZCBz
ZXR0ZXIuCisKIDIwMjItMDUtMTEgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV1BFXSBVbnJldmlld2VkLCBidWlsZCBmaXggYWZ0ZXIgcjI5MzgxNgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BcmlhQXR0cmlidXRlcy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FyaWFBdHRyaWJ1dGVzLmlkbAppbmRl
eCAxMmExNjg1ZTFhMzExMmQ1OWFmMmVmMmNiYzM3OTNkZGEwZTU3OGIxLi41NDAyNmVhZjc2MjQ5
MDA0NTliMGY4MTQwM2RiNDg2YzAwMzJmZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FyaWFBdHRyaWJ1dGVzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FyaWFBdHRyaWJ1dGVzLmlkbApAQCAtMzMsMjEgKzMzLDI3IEBAIGludGVyZmFj
ZSBtaXhpbiBBcmlhQXR0cmlidXRlcyB7CiAgICAgW1JlZmxlY3Q9YXJpYV9jb2xjb3VudF0gICAg
ICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhQ29sQ291bnQ7CiAgICAgW1JlZmxlY3Q9YXJp
YV9jb2xpbmRleF0gICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhQ29sSW5kZXg7CiAg
ICAgW1JlZmxlY3Q9YXJpYV9jb2xzcGFuXSAgICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBh
cmlhQ29sU3BhbjsKKyAgICBbUmVmbGVjdD1hcmlhX2NvbnRyb2xzLCBFbmFibGVkQnlTZXR0aW5n
PUFyaWFSZWZsZWN0aW9uRm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVkXSBhdHRyaWJ1dGUgRnJv
emVuQXJyYXk8RWxlbWVudD4/IGFyaWFDb250cm9sc0VsZW1lbnRzOwogICAgIFtSZWZsZWN0PWFy
aWFfY3VycmVudF0gICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYUN1cnJlbnQ7Cisg
ICAgW1JlZmxlY3Q9YXJpYV9kZXNjcmliZWRieSwgRW5hYmxlZEJ5U2V0dGluZz1BcmlhUmVmbGVj
dGlvbkZvckVsZW1lbnRSZWZlcmVuY2VzRW5hYmxlZF0gYXR0cmlidXRlIEZyb3plbkFycmF5PEVs
ZW1lbnQ+PyBhcmlhRGVzY3JpYmVkQnlFbGVtZW50czsKKyAgICBbUmVmbGVjdD1hcmlhX2RldGFp
bHMsIEVuYWJsZWRCeVNldHRpbmc9QXJpYVJlZmxlY3Rpb25Gb3JFbGVtZW50UmVmZXJlbmNlc0Vu
YWJsZWRdIGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxFbGVtZW50Pj8gYXJpYURldGFpbHNFbGVtZW50
czsKICAgICBbUmVmbGVjdD1hcmlhX2Rpc2FibGVkXSAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJp
bmc/IGFyaWFEaXNhYmxlZDsKICAgICBbUmVmbGVjdD1hcmlhX2Vycm9ybWVzc2FnZSwgRW5hYmxl
ZEJ5U2V0dGluZz1BcmlhUmVmbGVjdGlvbkZvckVsZW1lbnRSZWZlcmVuY2VzRW5hYmxlZF0gYXR0
cmlidXRlIEVsZW1lbnQ/IGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50OwogICAgIFtSZWZsZWN0PWFy
aWFfZXhwYW5kZWRdICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYUV4cGFuZGVkOwor
ICAgIFtSZWZsZWN0PWFyaWFfZmxvd3RvLCBFbmFibGVkQnlTZXR0aW5nPUFyaWFSZWZsZWN0aW9u
Rm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVkXSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8RWxlbWVu
dD4/IGFyaWFGbG93VG9FbGVtZW50czsKICAgICBbUmVmbGVjdD1hcmlhX2hhc3BvcHVwXSAgICAg
ICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IGFyaWFIYXNQb3B1cDsKICAgICBbUmVmbGVjdD1hcmlh
X2hpZGRlbl0gICAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IGFyaWFIaWRkZW47CiAgICAg
W1JlZmxlY3Q9YXJpYV9pbnZhbGlkXSAgICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlh
SW52YWxpZDsKICAgICBbUmVmbGVjdD1hcmlhX2tleXNob3J0Y3V0c10gICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmc/IGFyaWFLZXlTaG9ydGN1dHM7CiAgICAgW1JlZmxlY3Q9YXJpYV9sYWJlbF0gICAg
ICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhTGFiZWw7CisgICAgW1JlZmxlY3Q9YXJp
YV9sYWJlbGxlZGJ5LCBFbmFibGVkQnlTZXR0aW5nPUFyaWFSZWZsZWN0aW9uRm9yRWxlbWVudFJl
ZmVyZW5jZXNFbmFibGVkXSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8RWxlbWVudD4/IGFyaWFMYWJl
bGxlZEJ5RWxlbWVudHM7CiAgICAgW1JlZmxlY3Q9YXJpYV9sZXZlbF0gICAgICAgICAgICBhdHRy
aWJ1dGUgRE9NU3RyaW5nPyBhcmlhTGV2ZWw7CiAgICAgW1JlZmxlY3Q9YXJpYV9saXZlXSAgICAg
ICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhTGl2ZTsKICAgICBbUmVmbGVjdD1hcmlh
X21vZGFsXSAgICAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IGFyaWFNb2RhbDsKICAgICBb
UmVmbGVjdD1hcmlhX211bHRpbGluZV0gICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IGFyaWFN
dWx0aUxpbmU7CiAgICAgW1JlZmxlY3Q9YXJpYV9tdWx0aXNlbGVjdGFibGVdICBhdHRyaWJ1dGUg
RE9NU3RyaW5nPyBhcmlhTXVsdGlTZWxlY3RhYmxlOwogICAgIFtSZWZsZWN0PWFyaWFfb3JpZW50
YXRpb25dICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYU9yaWVudGF0aW9uOworICAgIFtS
ZWZsZWN0PWFyaWFfb3ducywgRW5hYmxlZEJ5U2V0dGluZz1BcmlhUmVmbGVjdGlvbkZvckVsZW1l
bnRSZWZlcmVuY2VzRW5hYmxlZF0gYXR0cmlidXRlIEZyb3plbkFycmF5PEVsZW1lbnQ+PyBhcmlh
T3duc0VsZW1lbnRzOwogICAgIFtSZWZsZWN0PWFyaWFfcGxhY2Vob2xkZXJdICAgICAgYXR0cmli
dXRlIERPTVN0cmluZz8gYXJpYVBsYWNlaG9sZGVyOwogICAgIFtSZWZsZWN0PWFyaWFfcG9zaW5z
ZXRdICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYVBvc0luU2V0OwogICAgIFtSZWZs
ZWN0PWFyaWFfcHJlc3NlZF0gICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYVByZXNz
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3IucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Iu
cG0KaW5kZXggYjhkN2E0ZjBiYmZmOWQ4MWU0NTFmYTUyNTVmNGQzMDZjNzZjYzZlYi4uOWQ3ZTAx
YzU3OWUxNzE1NTFiYmNiOTkyNmE2Njc5ZWZmNGVlMTIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtMTExMCw2ICsxMTEwLDgg
QEAgc3ViIEdldHRlckV4cHJlc3Npb24KICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJnZXRVbnNp
Z25lZEludGVncmFsQXR0cmlidXRlIjsKICAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlwZS0+bmFt
ZSBlcSAiRWxlbWVudCIpIHsKICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJnZXRFbGVtZW50QXR0
cmlidXRlIjsKKyAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlwZS0+bmFtZSBlcSAiRnJvemVuQXJy
YXkiICYmIHNjYWxhciBAeyRhdHRyaWJ1dGVUeXBlLT5zdWJ0eXBlc30gPT0gMSAmJiBAeyRhdHRy
aWJ1dGVUeXBlLT5zdWJ0eXBlc31bMF0tPm5hbWUgZXEgIkVsZW1lbnQiKSB7CisgICAgICAgICRm
dW5jdGlvbk5hbWUgPSAiZ2V0RWxlbWVudHNBcnJheUF0dHJpYnV0ZSI7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgaWYgKCRjb250ZW50QXR0cmlidXRlTmFtZSBlcSAiV2ViQ29yZTo6SFRNTE5hbWVz
OjppZEF0dHIiKSB7CiAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gImdldElkQXR0cmlidXRl
IjsKQEAgLTExNDksNiArMTE1MSw4IEBAIHN1YiBTZXR0ZXJFeHByZXNzaW9uCiAgICAgICAgICRm
dW5jdGlvbk5hbWUgPSAic2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZSI7CiAgICAgfSBlbHNp
ZiAoJGF0dHJpYnV0ZVR5cGUtPm5hbWUgZXEgIkVsZW1lbnQiKSB7CiAgICAgICAgICRmdW5jdGlv
bk5hbWUgPSAic2V0RWxlbWVudEF0dHJpYnV0ZSI7CisgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZVR5
cGUtPm5hbWUgZXEgIkZyb3plbkFycmF5IiAmJiBzY2FsYXIgQHskYXR0cmlidXRlVHlwZS0+c3Vi
dHlwZXN9ID09IDEgJiYgQHskYXR0cmlidXRlVHlwZS0+c3VidHlwZXN9WzBdLT5uYW1lIGVxICJF
bGVtZW50IikgeworICAgICAgICAkZnVuY3Rpb25OYW1lID0gInNldEVsZW1lbnRzQXJyYXlBdHRy
aWJ1dGUiOwogICAgIH0gZWxzaWYgKCRnZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCRhdHRy
aWJ1dGVUeXBlKSkgewogICAgICAgICAkZnVuY3Rpb25OYW1lID0gInNldEF0dHJpYnV0ZSI7CiAg
ICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggMjViNWVhYzYwZDMxM2U4Mjk2OWZhNTYxOTIzODk0
MzJjYjc2M2VhMS4uYmIwYjAzNmE0NzYxOGY3NTMzNGYwZGQ3ZTk3OWMzYTU5ZDMzNDIxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAKQEAgLTE4MDUsNiArMTgwNSw4IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzVGVzdE9ial9yZWZsZWN0ZWRCb29sZWFuQXR0cik7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkQm9vbGVhbkF0dHIpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3JlZmxlY3RlZEVsZW1lbnRB
dHRyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial9yZWZs
ZWN0ZWRFbGVtZW50QXR0cik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHIpOworc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3JlZmxlY3RlZEVsZW1lbnRzQXJyYXlBdHRyKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial9yZWZsZWN0ZWRVUkxBdHRy
KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial9yZWZsZWN0
ZWRVUkxBdHRyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial9y
ZWZsZWN0ZWRVU1ZVUkxBdHRyKTsKQEAgLTIxNzgsNiArMjE4MCw3IEBAIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJy
ZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3JlZmxlY3RlZFVuc2lnbmVkSW50
ZWdyYWxBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0T2JqX3JlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKSB9IH0s
CiAgICAgeyAicmVmbGVjdGVkQm9vbGVhbkF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9yZWZsZWN0ZWRCb29sZWFuQXR0
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdE9ial9yZWZsZWN0ZWRCb29sZWFuQXR0cikgfSB9LAogICAgIHsgInJlZmxlY3Rl
ZEVsZW1lbnRBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVudEF0dHIpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcmVm
bGVjdGVkRWxlbWVudEF0dHIpIH0gfSwKKyAgICB7ICJyZWZsZWN0ZWRFbGVtZW50c0FycmF5QXR0
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0T2JqX3JlZmxlY3RlZEVsZW1lbnRzQXJyYXlBdHRyKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3JlZmxlY3Rl
ZEVsZW1lbnRzQXJyYXlBdHRyKSB9IH0sCiAgICAgeyAicmVmbGVjdGVkVVJMQXR0ciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2Jq
X3JlZmxlY3RlZFVSTEF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkVVJMQXR0cikgfSB9LAogICAg
IHsgInJlZmxlY3RlZFVTVlVSTEF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9yZWZsZWN0ZWRVU1ZVUkxBdHRyKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0T2JqX3JlZmxlY3RlZFVTVlVSTEF0dHIpIH0gfSwKICAgICB7ICJyZWZsZWN0ZWRTdHJpbmdB
dHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RPYmpfcmVmbGVjdGVkU3RyaW5nQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9yZWZsZWN0ZWRTdHJp
bmdBdHRyKSB9IH0sCkBAIC0zOTUyLDYgKzM5NTUsMzcgQEAgSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdE9ial9yZWZsZWN0ZWRFbGVtZW50QXR0ciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXgKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpf
cmVmbGVjdGVkRWxlbWVudEF0dHJTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHJHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09iamVjdCkKK3sKKyAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMRnJvemVuQXJyYXk8SURMSW50ZXJmYWNlPEVsZW1lbnQ+Pj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuZ2V0
RWxlbWVudHNBcnJheUF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGVsZW1l
bnRzYXJyYXlhdHRyQXR0cikpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0
cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8
anNUZXN0T2JqX3JlZmxlY3RlZEVsZW1lbnRzQXJyYXlBdHRyR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRy
aWJ1dGVOYW1lKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ial9yZWZsZWN0
ZWRFbGVtZW50c0FycmF5QXR0clNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEZyb3plbkFy
cmF5PElETEludGVyZmFjZTxFbGVtZW50Pj4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKKyAgICBpbnZva2VG
dW5jdG9yUHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeShsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRFbGVtZW50c0FycmF5
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkZWxlbWVudHNhcnJheWF0dHJB
dHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK0pTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVu
dHNBcnJheUF0dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3BlcnR5
TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9i
aj46OnNldDxzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHJTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgYXR0cmlidXRlTmFt
ZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpfcmVmbGVjdGVkVVJMQXR0
ckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0
aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGwKaW5kZXggN2U5ODJkNTE2MjRiNGNmZDhiODZlZDUxNDc3ZjcxN2IxYmJmZTVjNy4uMjgw
NzkyOThhMDI1YzFiMjMwMTUxYTM2ZDkzNTdjZjg4ZGNiNTc3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMTA1LDYgKzEwNSw3
IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3ciIH07CiAgICAgW1Jl
ZmxlY3RdIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxB
dHRyOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgYm9vbGVhbiByZWZsZWN0ZWRCb29sZWFuQXR0
cjsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIEVsZW1lbnQgcmVmbGVjdGVkRWxlbWVudEF0dHI7
CisgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxFbGVtZW50PiByZWZsZWN0ZWRF
bGVtZW50c0FycmF5QXR0cjsKICAgICBbUmVmbGVjdCwgVVJMXSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHJlZmxlY3RlZFVSTEF0dHI7CiAgICAgW1JlZmxlY3QsIFVSTF0gYXR0cmlidXRlIFVTVlN0cmlu
ZyByZWZsZWN0ZWRVU1ZVUkxBdHRyOwogICAgIFtSZWZsZWN0PWN1c3RvbUNvbnRlbnRTdHJpbmdB
dHRyXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJlZmxlY3RlZFN0cmluZ0F0dHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKaW5kZXggNjZhM2Q4NmQ2OWNhZjdjNzM2NTA2NDMwMWU1OTExYzA0Mzg2NmM4NS4u
ZTU0OWVmYmNmZGYzMTZhMWQ4MGM2ZWM5ZDI5MWM3YzZkMWM3OTI5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtMTkwNiw2ICsxOTA2LDE2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0VsZW1l
bnRSZWZsZWN0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAgICAgcmV0
dXJuIG5hbWUgPT0gSFRNTE5hbWVzOjphcmlhX2FjdGl2ZWRlc2NlbmRhbnRBdHRyIHx8IG5hbWUg
PT0gSFRNTE5hbWVzOjphcmlhX2Vycm9ybWVzc2FnZUF0dHI7CiB9CiAKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBpc0VsZW1lbnRzQXJyYXlSZWZsZWN0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUpCit7CisgICAgcmV0dXJuIG5hbWUgPT0gSFRNTE5hbWVzOjphcmlhX2NvbnRyb2xz
QXR0cgorICAgICAgICB8fCBuYW1lID09IEhUTUxOYW1lczo6YXJpYV9kZXNjcmliZWRieUF0dHIK
KyAgICAgICAgfHwgbmFtZSA9PSBIVE1MTmFtZXM6OmFyaWFfZGV0YWlsc0F0dHIKKyAgICAgICAg
fHwgbmFtZSA9PSBIVE1MTmFtZXM6OmFyaWFfZmxvd3RvQXR0cgorICAgICAgICB8fCBuYW1lID09
IEhUTUxOYW1lczo6YXJpYV9sYWJlbGxlZGJ5QXR0cgorICAgICAgICB8fCBuYW1lID09IEhUTUxO
YW1lczo6YXJpYV9vd25zQXR0cjsKK30KKwogdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVlLCBj
b25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uKQog
ewogICAgIGJvb2wgdmFsdWVJc1NhbWVBc0JlZm9yZSA9IG9sZFZhbHVlID09IG5ld1ZhbHVlOwpA
QCAtMTk0Miw3ICsxOTUyLDcgQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFYKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIGlmIChuYW1lID09IEhUTUxOYW1lczo6cGFydEF0dHIpCiAgICAg
ICAgICAgICBwYXJ0QXR0cmlidXRlQ2hhbmdlZChuZXdWYWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYg
KGRvY3VtZW50KCkuc2V0dGluZ3MoKS5hcmlhUmVmbGVjdGlvbkZvckVsZW1lbnRSZWZlcmVuY2Vz
RW5hYmxlZCgpICYmIGlzRWxlbWVudFJlZmxlY3Rpb25BdHRyaWJ1dGUobmFtZSkpIHsKKyAgICAg
ICAgZWxzZSBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmFyaWFSZWZsZWN0aW9uRm9yRWxlbWVu
dFJlZmVyZW5jZXNFbmFibGVkKCkgJiYgKGlzRWxlbWVudFJlZmxlY3Rpb25BdHRyaWJ1dGUobmFt
ZSkgfHwgaXNFbGVtZW50c0FycmF5UmVmbGVjdGlvbkF0dHJpYnV0ZShuYW1lKSkpIHsKICAgICAg
ICAgICAgIGlmIChhdXRvKiBtYXAgPSBleHBsaWNpdGx5U2V0QXR0ckVsZW1lbnRzTWFwSWZFeGlz
dHMoKSkKICAgICAgICAgICAgICAgICBtYXAtPnJlbW92ZShuYW1lKTsKICAgICAgICAgfSBlbHNl
IGlmIChuYW1lID09IEhUTUxOYW1lczo6ZXhwb3J0cGFydHNBdHRyKSB7CkBAIC0yMDIzLDYgKzIw
MzMsNzAgQEAgdm9pZCBFbGVtZW50OjpzZXRFbGVtZW50QXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEVsZW1lbnQqIGUKICAgICBleHBsaWNpdGx5U2V0QXR0ckVs
ZW1lbnRzTWFwKCkuc2V0KGF0dHJpYnV0ZU5hbWUsIFZlY3RvcjxXZWFrUHRyPEVsZW1lbnQ+PiB7
IGVsZW1lbnQgfSk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4+
IEVsZW1lbnQ6OmdldEVsZW1lbnRzQXJyYXlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoZG9jdW1lbnQoKS5zZXR0aW5ncygp
LmFyaWFSZWZsZWN0aW9uRm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVkKCkpOworICAgIEFTU0VS
VChpc0VsZW1lbnRzQXJyYXlSZWZsZWN0aW9uQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKTsKKwor
ICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+IGVsZW1lbnRzOworICAgIGlmIChhdXRvKiBtYXAg
PSBleHBsaWNpdGx5U2V0QXR0ckVsZW1lbnRzTWFwSWZFeGlzdHMoKSkgeworICAgICAgICBpZiAo
YXV0byBpdCA9IG1hcC0+ZmluZChhdHRyaWJ1dGVOYW1lKTsgaXQgIT0gbWFwLT5lbmQoKSkgewor
ICAgICAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogaXQtPnZhbHVlKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQgJiYgaXNEZXNjZW5kYW50T3JTaGFkb3dEZXNjZW5kYW50T2YoZWxl
bWVudC0+cm9vdE5vZGUoKSkpCisgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZChl
bGVtZW50LmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50
czsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gYXR0ciA9IGF0dHJpYnV0ZU5hbWU7Cisg
ICAgaWYgKGF0dHIgPT0gSFRNTE5hbWVzOjphcmlhX2xhYmVsbGVkYnlBdHRyICYmICFoYXNBdHRy
aWJ1dGUoSFRNTE5hbWVzOjphcmlhX2xhYmVsbGVkYnlBdHRyKSAmJiBoYXNBdHRyaWJ1dGUoSFRN
TE5hbWVzOjphcmlhX2xhYmVsZWRieUF0dHIpKQorICAgICAgICBhdHRyID0gSFRNTE5hbWVzOjph
cmlhX2xhYmVsZWRieUF0dHI7CisKKyAgICBpZiAoIWhhc0F0dHJpYnV0ZShhdHRyKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFNwYWNlU3BsaXRTdHJpbmcgaWRzKGdldEF0
dHJpYnV0ZShhdHRyKSwgU3BhY2VTcGxpdFN0cmluZzo6U2hvdWxkRm9sZENhc2U6Ok5vKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaWRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlm
IChhdXRvKiBlbGVtZW50ID0gdHJlZVNjb3BlKCkuZ2V0RWxlbWVudEJ5SWQoaWRzW2ldKSkKKyAg
ICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKKyAgICB9CisgICAgcmV0dXJuIGVs
ZW1lbnRzOworfQorCit2b2lkIEVsZW1lbnQ6OnNldEVsZW1lbnRzQXJyYXlBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
UHRyPEVsZW1lbnQ+Pj4mJiBlbGVtZW50cykKK3sKKyAgICBBU1NFUlQoZG9jdW1lbnQoKS5zZXR0
aW5ncygpLmFyaWFSZWZsZWN0aW9uRm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVkKCkpOworICAg
IEFTU0VSVChpc0VsZW1lbnRzQXJyYXlSZWZsZWN0aW9uQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUp
KTsKKworICAgIGlmICghZWxlbWVudHMpIHsKKyAgICAgICAgaWYgKGF1dG8qIG1hcCA9IGV4cGxp
Y2l0bHlTZXRBdHRyRWxlbWVudHNNYXBJZkV4aXN0cygpKQorICAgICAgICAgICAgbWFwLT5yZW1v
dmUoYXR0cmlidXRlTmFtZSk7CisgICAgICAgIHJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1l
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZlY3RvcjxXZWFrUHRyPEVsZW1lbnQ+
PiBuZXdFbGVtZW50czsKKyAgICBuZXdFbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGVs
ZW1lbnRzLT5zaXplKCkpOworICAgIFN0cmluZ0J1aWxkZXIgdmFsdWU7CisgICAgZm9yIChhdXRv
IGVsZW1lbnQgOiBlbGVtZW50cy52YWx1ZSgpKSB7CisgICAgICAgIG5ld0VsZW1lbnRzLnVuY2hl
Y2tlZEFwcGVuZChlbGVtZW50KTsKKyAgICAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSAmJiBuZXdF
bGVtZW50cy5zaXplKCkgPiAxKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0
byBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7CisgICAgICAgIGlmICghaWQuaXNOdWxs
KCkgJiYgJnJvb3ROb2RlKCkgPT0gJmVsZW1lbnQtPnJvb3ROb2RlKCkgJiYgdHJlZVNjb3BlKCku
Z2V0RWxlbWVudEJ5SWQoaWQpID09IGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGlmICghdmFsdWUu
aXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHZhbHVlLmFwcGVuZCgnICcpOworICAgICAgICAg
ICAgdmFsdWUuYXBwZW5kKGlkKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB2YWx1ZS5j
bGVhcigpOworICAgIH0KKyAgICBzZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgdmFsdWUudG9B
dG9tU3RyaW5nKCkpOworCisgICAgZXhwbGljaXRseVNldEF0dHJFbGVtZW50c01hcCgpLnNldChh
dHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKG5ld0VsZW1lbnRzKSk7Cit9CisKIHRlbXBsYXRlIDx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPgogc3RhdGljIGlubGluZSBib29sIGlzTm9uRW1wdHlUb2tlbkxp
c3QoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKaW5kZXggYjI3ZGU4ZDg3MmVjNTgwOTk0NGU4MWI2NTBiMWM5ZTQ5YzYz
NzE4Yi4uOTMyMDU3NzRiOTU2NGM3MTE3OWM0YzljZDM3YzVlZWYwZTg2Njg0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCkBAIC05Myw4ICs5Myw2IEBAIHN0cnVjdCBTY3JvbGxUb09wdGlvbnM7CiBzdHJ1
Y3QgU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudEluaXQ7CiBzdHJ1Y3QgU2hhZG93Um9vdElu
aXQ7CiAKLS8vIEZJWE1FOiBUaGlzIG9ubHkgc3RvcmVzIG9uZSBFbGVtZW50IGluIHRoZSBWZWN0
b3IgcmlnaHQgbm93LCB0aG91Z2ggdGhpcyB3aWxsIGNoYW5nZQotLy8gb25jZSByZWZsZWN0aW9u
IGZvciBGcm96ZW5BcnJheTxFbGVtZW50PiBpcyBpbXBsZW1lbnRlZCBpbiBodHRwczovL3dlYmtp
dC5vcmcvYi8yMzk4NTMuCiB1c2luZyBFeHBsaWNpdGx5U2V0QXR0ckVsZW1lbnRzTWFwID0gSGFz
aE1hcDxRdWFsaWZpZWROYW1lLCBWZWN0b3I8V2Vha1B0cjxFbGVtZW50Pj4+OwogCiBuYW1lc3Bh
Y2UgU3R5bGUgewpAQCAtMTI3LDYgKzEyNSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSwgdW5zaWduZWQgdmFsdWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIEVsZW1l
bnQqIGdldEVsZW1lbnRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFbGVtZW50QXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEVsZW1lbnQqIHZhbHVlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+PiBnZXRF
bGVtZW50c0FycmF5QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RWxlbWVudHNBcnJheUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWZQdHI8RWxlbWVudD4+PiYmIHZhbHVlKTsKIAogICAgIC8vIENhbGwgdGhpcyB0byBnZXQg
dGhlIHZhbHVlIG9mIGFuIGF0dHJpYnV0ZSB0aGF0IGlzIGtub3duIG5vdCB0byBiZSB0aGUgc3R5
bGUKICAgICAvLyBhdHRyaWJ1dGUgb3Igb25lIG9mIHRoZSBTVkcgYW5pbWF0YWJsZSBhdHRyaWJ1
dGVzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDA5YWRjY2VmNWFmNWZmMjMxMDY1MWFmNmI1ZmRkY2M4YTgxZmQ0ZGQuLmIy
MWM0YTg2ZjU2ZjMyMDBlY2QxNzRlZGRhZjM0NzVlMTQ5MGY2YTIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAyMi0wNS0xMiAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNv
bT4KKworICAgICAgICBBUklBIHJlZmxlY3Rpb24gZm9yIEZyb3plbkFycmF5PEVsZW1lbnQ+IGF0
dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTg1MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTI3OTc4MzY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgVXBkYXRlIHRlc3Qgc28gaXQgaWRlbnRp
ZmllcyB0aGUgRnJvemVuQXJyYXk8RWxlbWVudD4gYXR0cmlidXRlcy4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQVJJQS1yZWZsZWN0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FSSUEtcmVmbGVjdGlvbi5odG1sOgorCiAyMDIyLTA1LTExICBKb2huIEN1bm5p
bmdoYW0gIDxqb2huY3VubmluZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNz
XSB3ZWJydGMvdnA4LXRoZW4taDI2NC1ncHUtcHJvY2Vzcy1jcmFzaC5odG1sIGZsYWt5IGZhaWxz
IGFmdGVyIHR1cm5pbmcgRE9NIGluIEdQVVAgb24gYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKaW5kZXggMjkzM2VmM2JiMTkyNGQ1ZDc3ZmY3ZjkyNmFkOTY2MDgwN2NlY2U4
NS4uZTk1MDk2YjdjY2QyNTM2ZDRjZGQ5NmJkZTM4OTFkOGE1ZTMyZjg3OSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDUtMTIgIE1hbnVlbCBS
ZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxpYS5jb20+CisKKyAgICAgICAgQVJJQSByZWZsZWN0
aW9uIGZvciBGcm96ZW5BcnJheTxFbGVtZW50PiBhdHRyaWJ1dGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk4NTMKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzkyNzk3ODM2PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisg
ICAgICAgIFVwZGF0ZSBleHBlY3RhdGlvbnMgd2l0aCB0aGUgbmV3IFBBU1MgbGluZXMuCisKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL2FyaWEtZWxlbWVudC1yZWZsZWN0
aW9uLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQ6CisKIDIwMjItMDUtMTIgIFRpbSBOZ3V5ZW4gIDxu
dGltQGFwcGxlLmNvbT4KIAogICAgICAgICBSZS1pbXBvcnQgY3NzL3NlbGVjdG9ycyBXUFQgZnJv
bSByZXZpc2lvbiA0NjUzZTkxMjg3NDJlMmMyNjA5ZTc2ZjA0ZjQwODRjZGMxMGZmZWFkCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L0FSSUEtcmVmbGVjdGlvbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L0FSSUEtcmVmbGVjdGlvbi1leHBlY3Rl
ZC50eHQKaW5kZXggZTNmZWVjMzBjNGM3YTllYWZhZDFhOTRkZWRlZWM2M2Y4OGJiODBlNy4uM2M4
NGExNjA3MTQwM2IwOGVmMjg3MzdjN2NjMTJkZjRmYmU0OWQ2MSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9BUklBLXJlZmxlY3Rpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvQVJJQS1yZWZsZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAt
NjcsNiArNjcsMTMgQEAgUEFTUyBlbGVtZW50LmdldEF0dHJpYnV0ZShjdXJyZW50QXR0cmlidXRl
KSBpcyBkYXRhQXR0cmlidXRlCiBlbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1jb2xzcGFuIiwg
b3RoZXJEYXRhKTsKIFBBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG90aGVyRGF0YVBy
b3BlcnR5CiAKK1Rlc3QgYXJpYUNvbnRyb2xzRWxlbWVudHMgPCAtID4gYXJpYS1jb250cm9scwor
UEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgbnVsbAorUEFTUyBlbGVtZW50LmdldEF0
dHJpYnV0ZShjdXJyZW50QXR0cmlidXRlKSBpcyBudWxsCitQQVNTIGVsZW1lbnQuZ2V0QXR0cmli
dXRlKGN1cnJlbnRBdHRyaWJ1dGUpIGlzIGRhdGFBdHRyaWJ1dGUKK2VsZW1lbnQuc2V0QXR0cmli
dXRlKCJhcmlhLWNvbnRyb2xzIiwgb3RoZXJEYXRhKTsKK1BBU1MgZWxlbWVudFtjdXJyZW50UHJv
cGVydHldIGlzIG90aGVyRGF0YVByb3BlcnR5CisKIFRlc3QgYXJpYUN1cnJlbnQgPCAtID4gYXJp
YS1jdXJyZW50CiBQQVNTIGVsZW1lbnRbY3VycmVudFByb3BlcnR5XSBpcyBudWxsCiBQQVNTIGVs
ZW1lbnQuZ2V0QXR0cmlidXRlKGN1cnJlbnRBdHRyaWJ1dGUpIGlzIG51bGwKQEAgLTc0LDYgKzgx
LDIwIEBAIFBBU1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgZGF0
YUF0dHJpYnV0ZQogZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtY3VycmVudCIsIG90aGVyRGF0
YSk7CiBQQVNTIGVsZW1lbnRbY3VycmVudFByb3BlcnR5XSBpcyBvdGhlckRhdGFQcm9wZXJ0eQog
CitUZXN0IGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzIDwgLSA+IGFyaWEtZGVzY3JpYmVkYnkKK1BB
U1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG51bGwKK1BBU1MgZWxlbWVudC5nZXRBdHRy
aWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgbnVsbAorUEFTUyBlbGVtZW50LmdldEF0dHJpYnV0
ZShjdXJyZW50QXR0cmlidXRlKSBpcyBkYXRhQXR0cmlidXRlCitlbGVtZW50LnNldEF0dHJpYnV0
ZSgiYXJpYS1kZXNjcmliZWRieSIsIG90aGVyRGF0YSk7CitQQVNTIGVsZW1lbnRbY3VycmVudFBy
b3BlcnR5XSBpcyBvdGhlckRhdGFQcm9wZXJ0eQorCitUZXN0IGFyaWFEZXRhaWxzRWxlbWVudHMg
PCAtID4gYXJpYS1kZXRhaWxzCitQQVNTIGVsZW1lbnRbY3VycmVudFByb3BlcnR5XSBpcyBudWxs
CitQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGN1cnJlbnRBdHRyaWJ1dGUpIGlzIG51bGwKK1BB
U1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgZGF0YUF0dHJpYnV0
ZQorZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtZGV0YWlscyIsIG90aGVyRGF0YSk7CitQQVNT
IGVsZW1lbnRbY3VycmVudFByb3BlcnR5XSBpcyBvdGhlckRhdGFQcm9wZXJ0eQorCiBUZXN0IGFy
aWFEaXNhYmxlZCA8IC0gPiBhcmlhLWRpc2FibGVkCiBQQVNTIGVsZW1lbnRbY3VycmVudFByb3Bl
cnR5XSBpcyBudWxsCiBQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGN1cnJlbnRBdHRyaWJ1dGUp
IGlzIG51bGwKQEAgLTk1LDYgKzExNiwxMyBAQCBQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGN1
cnJlbnRBdHRyaWJ1dGUpIGlzIGRhdGFBdHRyaWJ1dGUKIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJh
cmlhLWV4cGFuZGVkIiwgb3RoZXJEYXRhKTsKIFBBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHld
IGlzIG90aGVyRGF0YVByb3BlcnR5CiAKK1Rlc3QgYXJpYUZsb3dUb0VsZW1lbnRzIDwgLSA+IGFy
aWEtZmxvd3RvCitQQVNTIGVsZW1lbnRbY3VycmVudFByb3BlcnR5XSBpcyBudWxsCitQQVNTIGVs
ZW1lbnQuZ2V0QXR0cmlidXRlKGN1cnJlbnRBdHRyaWJ1dGUpIGlzIG51bGwKK1BBU1MgZWxlbWVu
dC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgZGF0YUF0dHJpYnV0ZQorZWxlbWVu
dC5zZXRBdHRyaWJ1dGUoImFyaWEtZmxvd3RvIiwgb3RoZXJEYXRhKTsKK1BBU1MgZWxlbWVudFtj
dXJyZW50UHJvcGVydHldIGlzIG90aGVyRGF0YVByb3BlcnR5CisKIFRlc3QgYXJpYUhhc1BvcHVw
IDwgLSA+IGFyaWEtaGFzcG9wdXAKIFBBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG51
bGwKIFBBU1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgbnVsbApA
QCAtMTMwLDYgKzE1OCwxMyBAQCBQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGN1cnJlbnRBdHRy
aWJ1dGUpIGlzIGRhdGFBdHRyaWJ1dGUKIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVs
Iiwgb3RoZXJEYXRhKTsKIFBBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG90aGVyRGF0
YVByb3BlcnR5CiAKK1Rlc3QgYXJpYUxhYmVsbGVkQnlFbGVtZW50cyA8IC0gPiBhcmlhLWxhYmVs
bGVkYnkKK1BBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG51bGwKK1BBU1MgZWxlbWVu
dC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgbnVsbAorUEFTUyBlbGVtZW50Lmdl
dEF0dHJpYnV0ZShjdXJyZW50QXR0cmlidXRlKSBpcyBkYXRhQXR0cmlidXRlCitlbGVtZW50LnNl
dEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5Iiwgb3RoZXJEYXRhKTsKK1BBU1MgZWxlbWVudFtj
dXJyZW50UHJvcGVydHldIGlzIG90aGVyRGF0YVByb3BlcnR5CisKIFRlc3QgYXJpYUxldmVsIDwg
LSA+IGFyaWEtbGV2ZWwKIFBBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG51bGwKIFBB
U1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgbnVsbApAQCAtMTcy
LDYgKzIwNywxMyBAQCBQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGN1cnJlbnRBdHRyaWJ1dGUp
IGlzIGRhdGFBdHRyaWJ1dGUKIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLW9yaWVudGF0aW9u
Iiwgb3RoZXJEYXRhKTsKIFBBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG90aGVyRGF0
YVByb3BlcnR5CiAKK1Rlc3QgYXJpYU93bnNFbGVtZW50cyA8IC0gPiBhcmlhLW93bnMKK1BBU1Mg
ZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG51bGwKK1BBU1MgZWxlbWVudC5nZXRBdHRyaWJ1
dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgbnVsbAorUEFTUyBlbGVtZW50LmdldEF0dHJpYnV0ZShj
dXJyZW50QXR0cmlidXRlKSBpcyBkYXRhQXR0cmlidXRlCitlbGVtZW50LnNldEF0dHJpYnV0ZSgi
YXJpYS1vd25zIiwgb3RoZXJEYXRhKTsKK1BBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlz
IG90aGVyRGF0YVByb3BlcnR5CisKIFRlc3QgYXJpYVBsYWNlaG9sZGVyIDwgLSA+IGFyaWEtcGxh
Y2Vob2xkZXIKIFBBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG51bGwKIFBBU1MgZWxl
bWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgbnVsbApAQCAtMjkyLDcgKzMz
NCw3IEBAIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVldGV4dCIsIG90aGVyRGF0YSk7
CiBQQVNTIGVsZW1lbnRbY3VycmVudFByb3BlcnR5XSBpcyBvdGhlckRhdGFQcm9wZXJ0eQogCiAK
LVBBU1MgY291bnQgaXMgNDAKK1BBU1MgY291bnQgaXMgNDYKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9BUklBLXJlZmxlY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvQVJJQS1yZWZsZWN0aW9uLmh0bWwKaW5kZXggOTNhOWI3YTE3ZjlhNDRlNGNkMTFiZWNhOTY5
ZjBjZTU3NzY5Y2VlZS4uNjQyOGNlZjVhMmViOTBhZGJjMmZjMzIzZjllZTY3ZjY4YWRjNWEyYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9BUklBLXJlZmxlY3Rpb24uaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L0FSSUEtcmVmbGVjdGlvbi5odG1sCkBA
IC03LDYgKzcsNyBAQAogPGRpdiBpZD0idGVzdCIgZGF0YT0ic29tZSBkYXRhIj4KICAgPGRpdiBp
ZD0iZmlyc3RDaGlsZCI+PC9kaXY+CiAgIDxkaXYgaWQ9InNlY29uZENoaWxkIj48L2Rpdj4KKyAg
PGRpdiBpZD0idGhpcmRDaGlsZCI+PC9kaXY+CiA8L2Rpdj4KIAogPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+CkBAIC0zMSwxMiArMzIsNTkgQEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAorICAgIGZ1bmN0aW9uIGlzRWxlbWVudHNBcnJheVJlZmxlY3Rpb25Qcm9wZXJ0eShwcm9wZXJ0
eSkgeworICAgICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgICAgICAgICBjYXNlICJhcmlh
Q29udHJvbHNFbGVtZW50cyI6CisgICAgICAgICAgICBjYXNlICJhcmlhRGVzY3JpYmVkQnlFbGVt
ZW50cyI6CisgICAgICAgICAgICBjYXNlICJhcmlhRGV0YWlsc0VsZW1lbnRzIjoKKyAgICAgICAg
ICAgIGNhc2UgImFyaWFGbG93VG9FbGVtZW50cyI6CisgICAgICAgICAgICBjYXNlICJhcmlhTGFi
ZWxsZWRCeUVsZW1lbnRzIjoKKyAgICAgICAgICAgIGNhc2UgImFyaWFPd25zRWxlbWVudHMiOgor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKICAgICBmdW5jdGlvbiBjb252ZXJ0UHJvcGVydHlUb0F0dHJpYnV0ZShw
cm9wZXJ0eSkgewogICAgICAgICBpZiAoaXNFbGVtZW50UmVmbGVjdGlvblByb3BlcnR5KHByb3Bl
cnR5KSkKICAgICAgICAgICBwcm9wZXJ0eSA9IHByb3BlcnR5LnJlcGxhY2UoIkVsZW1lbnQiLCAi
Iik7CisgICAgICAgIGVsc2UgaWYgKGlzRWxlbWVudHNBcnJheVJlZmxlY3Rpb25Qcm9wZXJ0eShw
cm9wZXJ0eSkpCisgICAgICAgICAgcHJvcGVydHkgPSBwcm9wZXJ0eS5yZXBsYWNlKCJFbGVtZW50
cyIsICIiKTsKICAgICAgICAgcmV0dXJuIHByb3BlcnR5LnJlcGxhY2UoImFyaWEiLCAiYXJpYS0i
KS50b0xvd2VyQ2FzZSgpOwogICAgIH0KIAorICAgIGZ1bmN0aW9uIGdldERhdGFQcm9wZXJ0eShw
cm9wZXJ0eSkgeworICAgICAgICBpZiAoaXNFbGVtZW50UmVmbGVjdGlvblByb3BlcnR5KHByb3Bl
cnR5KSkKKyAgICAgICAgICByZXR1cm4gZmlyc3RDaGlsZDsKKyAgICAgICAgZWxzZSBpZiAoaXNF
bGVtZW50c0FycmF5UmVmbGVjdGlvblByb3BlcnR5KHByb3BlcnR5KSkKKyAgICAgICAgICByZXR1
cm4gW2ZpcnN0Q2hpbGQsIHNlY29uZENoaWxkXTsKKyAgICAgICAgcmV0dXJuIGRhdGE7CisgICAg
fQorCisgICAgZnVuY3Rpb24gZ2V0RGF0YUF0dHJpYnV0ZShwcm9wZXJ0eSkgeworICAgICAgICBp
ZiAoaXNFbGVtZW50UmVmbGVjdGlvblByb3BlcnR5KHByb3BlcnR5KSkKKyAgICAgICAgICByZXR1
cm4gZmlyc3RDaGlsZC5pZDsKKyAgICAgICAgZWxzZSBpZiAoaXNFbGVtZW50c0FycmF5UmVmbGVj
dGlvblByb3BlcnR5KHByb3BlcnR5KSkKKyAgICAgICAgICByZXR1cm4gZmlyc3RDaGlsZC5pZCAr
ICIgIiArIHNlY29uZENoaWxkLmlkOworICAgICAgICByZXR1cm4gZGF0YTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBnZXRPdGhlckRhdGFQcm9wZXJ0eShwcm9wZXJ0eSkgeworICAgICAgICBpZiAo
aXNFbGVtZW50UmVmbGVjdGlvblByb3BlcnR5KHByb3BlcnR5KSkKKyAgICAgICAgICByZXR1cm4g
c2Vjb25kQ2hpbGQ7CisgICAgICAgIGVsc2UgaWYgKGlzRWxlbWVudHNBcnJheVJlZmxlY3Rpb25Q
cm9wZXJ0eShwcm9wZXJ0eSkpCisgICAgICAgICAgcmV0dXJuIFt0aGlyZENoaWxkXTsKKyAgICAg
ICAgcmV0dXJuIG90aGVyRGF0YTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRPdGhlckRhdGFB
dHRyaWJ1dGUocHJvcGVydHkpIHsKKyAgICAgICAgaWYgKGlzRWxlbWVudFJlZmxlY3Rpb25Qcm9w
ZXJ0eShwcm9wZXJ0eSkpCisgICAgICAgICAgcmV0dXJuIHNlY29uZENoaWxkLmlkOworICAgICAg
ICBlbHNlIGlmIChpc0VsZW1lbnRzQXJyYXlSZWZsZWN0aW9uUHJvcGVydHkocHJvcGVydHkpKQor
ICAgICAgICAgIHJldHVybiB0aGlyZENoaWxkLmlkOworICAgICAgICByZXR1cm4gb3RoZXJEYXRh
OworICAgIH0KKwogICAgIGZ1bmN0aW9uIHRlc3RFbGVtZW50KCkgewogICAgICAgICBjdXJyZW50
QXR0cmlidXRlID0gY29udmVydFByb3BlcnR5VG9BdHRyaWJ1dGUoY3VycmVudFByb3BlcnR5KTsK
IApAQCAtNDUsMTQgKzkzLDE0IEBACiAgICAgICAgIHNob3VsZEJlTnVsbCgiZWxlbWVudC5nZXRB
dHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkiKTsKIAogICAgICAgICAvLyBTZXQgdGhlIHByb3Bl
cnR5IHZhbHVlCi0gICAgICAgIGRhdGFQcm9wZXJ0eSA9IGlzRWxlbWVudFJlZmxlY3Rpb25Qcm9w
ZXJ0eShjdXJyZW50UHJvcGVydHkpID8gZmlyc3RDaGlsZCA6IGRhdGE7Ci0gICAgICAgIGRhdGFB
dHRyaWJ1dGUgPSBpc0VsZW1lbnRSZWZsZWN0aW9uUHJvcGVydHkoY3VycmVudFByb3BlcnR5KSA/
IGZpcnN0Q2hpbGQuaWQgOiBkYXRhOworICAgICAgICBkYXRhUHJvcGVydHkgPSBnZXREYXRhUHJv
cGVydHkoY3VycmVudFByb3BlcnR5KTsKKyAgICAgICAgZGF0YUF0dHJpYnV0ZSA9IGdldERhdGFB
dHRyaWJ1dGUoY3VycmVudFByb3BlcnR5KTsKICAgICAgICAgZWxlbWVudFtjdXJyZW50UHJvcGVy
dHldID0gZGF0YVByb3BlcnR5OwogICAgICAgICBzaG91bGRCZSgiZWxlbWVudC5nZXRBdHRyaWJ1
dGUoY3VycmVudEF0dHJpYnV0ZSkiLCAiZGF0YUF0dHJpYnV0ZSIpOwogCiAgICAgICAgIC8vIFNl
dCB0aGUgYXR0cmlidXRlIHZhbHVlCi0gICAgICAgIG90aGVyRGF0YVByb3BlcnR5ID0gaXNFbGVt
ZW50UmVmbGVjdGlvblByb3BlcnR5KGN1cnJlbnRQcm9wZXJ0eSkgPyBzZWNvbmRDaGlsZCA6IG90
aGVyRGF0YTsKLSAgICAgICAgb3RoZXJEYXRhQXR0cmlidXRlID0gaXNFbGVtZW50UmVmbGVjdGlv
blByb3BlcnR5KGN1cnJlbnRQcm9wZXJ0eSkgPyBzZWNvbmRDaGlsZC5pZCA6IG90aGVyRGF0YTsK
KyAgICAgICAgb3RoZXJEYXRhUHJvcGVydHkgPSBnZXRPdGhlckRhdGFQcm9wZXJ0eShjdXJyZW50
UHJvcGVydHkpOworICAgICAgICBvdGhlckRhdGFBdHRyaWJ1dGUgPSBnZXRPdGhlckRhdGFBdHRy
aWJ1dGUoY3VycmVudFByb3BlcnR5KTsKICAgICAgICAgZGVidWcoImVsZW1lbnQuc2V0QXR0cmli
dXRlKFwiIiArIGN1cnJlbnRBdHRyaWJ1dGUgKyAiXCIsIG90aGVyRGF0YSk7Iik7CiAgICAgICAg
IGVsZW1lbnQuc2V0QXR0cmlidXRlKGN1cnJlbnRBdHRyaWJ1dGUsIG90aGVyRGF0YUF0dHJpYnV0
ZSk7CiAgICAgICAgIHNob3VsZEJlKCJlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0iLCAib3RoZXJE
YXRhUHJvcGVydHkiKTsKQEAgLTc4LDcgKzEyNiw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBk
ZWJ1ZygiXG4iKTsKLSAgICAgICAgc2hvdWxkQmUoImNvdW50IiwgIjQwIik7CisgICAgICAgIHNo
b3VsZEJlKCJjb3VudCIsICI0NiIpOwogCiAgICAgfSBlbHNlIHsKICAgICAgICAgdGVzdEZhaWxl
ZCgiQ291bGQgbm90IGxvYWQgYWNjZXNzaWJpbGl0eSBjb250cm9sbGVyIik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ub2Rlcy9h
cmlhLWVsZW1lbnQtcmVmbGVjdGlvbi50ZW50YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvYXJpYS1lbGVtZW50
LXJlZmxlY3Rpb24udGVudGF0aXZlLWV4cGVjdGVkLnR4dAppbmRleCAxNjc4MDY0NzE2N2Y0NmFh
NWQwY2MxNDYzYTkzZTIwMGEyY2RkY2MxLi42OTY3ZDcwNjY3ZTM4NTdmZGM3MmIwOWE4M2JjMDk2
YjgwZjlkNWRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2RvbS9ub2Rlcy9hcmlhLWVsZW1lbnQtcmVmbGVjdGlvbi50ZW50YXRpdmUtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZG9tL25vZGVzL2FyaWEtZWxlbWVudC1yZWZsZWN0aW9uLnRlbnRhdGl2ZS1leHBlY3RlZC50
eHQKQEAgLTM2LDEyICszNiw3IEBAIExpZ2h0IERPTSB0ZXh0CiAKIExpZ2h0IERPTSB0ZXh0CiAK
LURlbGljaW91cwotTnV0cml0aW91cwotCiBNaXNzcGVsbGluZwotV29uZGVyZnVsCi1GYW50YXN0
aWMKIAogCiBQQVNTIGFyaWEtYWN0aXZlZGVzY2VuZGFudCBlbGVtZW50IHJlZmxlY3Rpb24KQEAg
LTQ5LDIwICs0NCwyMCBAQCBQQVNTIElmIHRoZSBjb250ZW50IGF0dHJpYnV0ZSBpcyBzZXQgZGly
ZWN0bHksIHRoZSBJREwgYXR0cmlidXRlIGdldHRlciBhbHdheXMgcgogUEFTUyBTZXR0aW5nIHRo
ZSBJREwgYXR0cmlidXRlIHRvIGFuIGVsZW1lbnQgd2hpY2ggaXMgbm90IHRoZSBmaXJzdCBlbGVt
ZW50IGluIERPTSBvcmRlciB3aXRoIGl0cyBJRCBjYXVzZXMgdGhlIGNvbnRlbnQgYXR0cmlidXRl
IHRvIGJlIGFuIGVtcHR5IHN0cmluZwogUEFTUyBTZXR0aW5nIGFuIGVsZW1lbnQgcmVmZXJlbmNl
IHRoYXQgY3Jvc3NlcyBpbnRvIGEgc2hhZG93IHRyZWUgaXMgZGlzYWxsb3dlZCwgYnV0IHNldHRp
bmcgb25lIHRoYXQgaXMgaW4gYSBzaGFkb3cgaW5jbHVzaXZlIGFuY2VzdG9yIGlzIGFsbG93ZWQu
CiBQQVNTIGFyaWEtZXJyb3JtZXNzYWdlCi1GQUlMIGFyaWEtZGV0YWlscyBhc3NlcnRfYXJyYXlf
ZXF1YWxzOiB2YWx1ZSBpcyB1bmRlZmluZWQsIGV4cGVjdGVkIGFycmF5CitQQVNTIGFyaWEtZGV0
YWlscwogUEFTUyBEZWxldGluZyBhIHJlZmxlY3RlZCBlbGVtZW50IHNob3VsZCByZXR1cm4gbnVs
bCBmb3IgdGhlIElETCBhdHRyaWJ1dGUgYW5kIGNhdXNlIHRoZSBjb250ZW50IGF0dHJpYnV0ZSB0
byBiZWNvbWUgc3RhbGUuCiBQQVNTIENoYW5naW5nIHRoZSBJRCBvZiBhbiBlbGVtZW50IGNhdXNl
cyB0aGUgY29udGVudCBhdHRyaWJ1dGUgdG8gYmVjb21lIG91dCBvZiBzeW5jLgogUEFTUyBSZXBh
cmVudGluZyBhbiBlbGVtZW50IGludG8gYSBkZXNjZW5kYW50IHNoYWRvdyBzY29wZSBoaWRlcyB0
aGUgZWxlbWVudCByZWZlcmVuY2UuCiBQQVNTIFJlcGFyZW50aW5nIHJlZmVyZW5jZWQgZWxlbWVu
dCBjYW5ub3QgY2F1c2UgcmV0YXJnZXRpbmcgb2YgcmVmZXJlbmNlLgogUEFTUyBFbGVtZW50IHJl
ZmVyZW5jZSBzZXQgaW4gaW52YWxpZCBzY29wZSByZW1haW5zIGludGFjdCB0aHJvdWdob3V0IG1v
dmUgdG8gdmFsaWQgc2NvcGUuCi1GQUlMIGFyaWEtbGFiZWxsZWRieS4gYXNzZXJ0X2FycmF5X2Vx
dWFsczogcGFyc2VkIGNvbnRlbnQgYXR0cmlidXRlIHNldHMgZWxlbWVudCByZWZlcmVuY2VzLiB2
YWx1ZSBpcyB1bmRlZmluZWQsIGV4cGVjdGVkIGFycmF5Ci1GQUlMIGFyaWEtY29udHJvbHMuIGFz
c2VydF9hcnJheV9lcXVhbHM6IHZhbHVlIGlzIHVuZGVmaW5lZCwgZXhwZWN0ZWQgYXJyYXkKLUZB
SUwgYXJpYS1kZXNjcmliZWRieS4gYXNzZXJ0X2FycmF5X2VxdWFsczogdmFsdWUgaXMgdW5kZWZp
bmVkLCBleHBlY3RlZCBhcnJheQotRkFJTCBhcmlhLWZsb3d0by4gYXNzZXJ0X2FycmF5X2VxdWFs
czogdmFsdWUgaXMgdW5kZWZpbmVkLCBleHBlY3RlZCBhcnJheQotRkFJTCBhcmlhLW93bnMuIGFz
c2VydF9hcnJheV9lcXVhbHM6IHZhbHVlIGlzIHVuZGVmaW5lZCwgZXhwZWN0ZWQgYXJyYXkKLUZB
SUwgc2hhZG93IERPTSBiZWhhdmlvdXIgZm9yIEZyb3plbkFycmF5IGVsZW1lbnQgcmVmbGVjdGlv
bi4gYXNzZXJ0X2FycmF5X2VxdWFsczogdmFsdWUgaXMgdW5kZWZpbmVkLCBleHBlY3RlZCBhcnJh
eQotRkFJTCBNb3ZpbmcgZXhwbGljaXRseSBzZXQgZWxlbWVudHMgYWNyb3NzIHNoYWRvdyBET00g
Ym91bmRhcmllcy4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgKHN0cmluZykgImJ1dHRvbkRlc2Ny
aXB0aW9uMSBidXR0b25EZXNjcmlwdGlvbjIiIGJ1dCBnb3QgKG9iamVjdCkgbnVsbAotRkFJTCBN
b3ZpbmcgZXhwbGljaXRseSBzZXQgZWxlbWVudHMgYXJvdW5kIHdpdGhpbiB0aGUgc2FtZSBzY29w
ZSwgYW5kIHJlbW92aW5nIGZyb20gdGhlIERPTS4gYXNzZXJ0X2FycmF5X2VxdWFsczogYXJpYS1s
YWJlbGVkIGJ5IGlzIHN1cHBvcnRlZCBieSBJREwgZ2V0dGVyLiB2YWx1ZSBpcyB1bmRlZmluZWQs
IGV4cGVjdGVkIGFycmF5CitQQVNTIGFyaWEtbGFiZWxsZWRieS4KK1BBU1MgYXJpYS1jb250cm9s
cy4KK1BBU1MgYXJpYS1kZXNjcmliZWRieS4KK1BBU1MgYXJpYS1mbG93dG8uCitQQVNTIGFyaWEt
b3ducy4KK1BBU1Mgc2hhZG93IERPTSBiZWhhdmlvdXIgZm9yIEZyb3plbkFycmF5IGVsZW1lbnQg
cmVmbGVjdGlvbi4KK1BBU1MgTW92aW5nIGV4cGxpY2l0bHkgc2V0IGVsZW1lbnRzIGFjcm9zcyBz
aGFkb3cgRE9NIGJvdW5kYXJpZXMuCitQQVNTIE1vdmluZyBleHBsaWNpdGx5IHNldCBlbGVtZW50
cyBhcm91bmQgd2l0aGluIHRoZSBzYW1lIHNjb3BlLCBhbmQgcmVtb3ZpbmcgZnJvbSB0aGUgRE9N
LgogUEFTUyBSZXBhcmVudGluZy4KIFBBU1MgQXR0YWNoaW5nIGVsZW1lbnQgcmVmZXJlbmNlIGJl
Zm9yZSBpdCdzIGluc2VydGVkIGludG8gdGhlIERPTS4KIFBBU1MgQ3Jvc3MtZG9jdW1lbnQgcmVm
ZXJlbmNlcyBhbmQgbW92ZXMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459237</attachid>
            <date>2022-05-12 10:14:16 -0700</date>
            <delta_ts>2022-05-12 10:20:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239853-20220512191415.patch</filename>
            <type>text/plain</type>
            <size>31533</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjk0MDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTZjZWJhMDRiNWNiYzdj
MzA5ZmZmM2U4YzJiZTU1ZjY3YTVkNzM3YS4uZGI4ZDg4NjgwNTcyYThkY2I0ZTE5MmY4YTUyYTZk
MDg1N2MwYzY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIyLTA1LTEyICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIEFSSUEgcmVm
bGVjdGlvbiBmb3IgRnJvemVuQXJyYXk8RWxlbWVudD4gYXR0cmlidXRlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODUzCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS85Mjc5NzgzNj4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4K
KworICAgICAgICBJbXBsZW1lbnQgQVJJQSByZWZsZWN0aW9uIGZvciBhdHRyaWJ1dGVzIHRoYXQg
cmVmZXIgdG8gYSBsaXN0IG9mIEVsZW1lbnRzOgorICAgICAgICBhcmlhLWNvbnRyb2xzLCBhcmlh
LWRlc2NyaWJlZGJ5LCBhcmlhLWRldGFpbHMsIGFyaWEtZmxvd3RvLAorICAgICAgICBhcmlhLWxh
YmVsbGVkYnkgYW5kIGFyaWEtb3ducy4KKyAgICAgICAgRm9yIHRoZSBwcm9wZXJ0aWVzIG5hbWVz
IHRoaXMgcGF0Y2ggdXNlcyAiRWxlbWVudHMiIHN1ZmZpeDoKKyAgICAgICAgYXJpYUNvbnRyb2xz
RWxlbWVudHMsIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzLCBhcmlhRGVzY3JpYmVkQnlFbGVtZW50
cywKKyAgICAgICAgYXJpYUZsb3dUb0VsZW1lbnRzLCBhcmlhTGFiZWxsZWRCeUVsZW1lbnRzLCBh
cmlhT3duc0VsZW1lbnRzCisgICAgICAgIHRoaXMgbWF0Y2hlcyBDaHJvbWl1bSBpbXBsZW1lbnRh
dGlvbiBhbmQgQU9NIGV4cGxhaW5lciwgYnV0IG5vdCBBT00gc3BlYzoKKyAgICAgICAgaHR0cHM6
Ly9naXRodWIuY29tL3czYy9hcmlhL2lzc3Vlcy8xNzMyCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FyaWFBdHRyaWJ1dGVzLmlkbDogQWRkIHRoZSBuZXcgcHJvcGVydGllcyB1bmRlcgorICAg
ICAgICBBcmlhUmVmbGVjdGlvbkZvckVsZW1lbnRSZWZlcmVuY2VzRW5hYmxlZCBydW50aW1lIGZs
YWcuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtOgorICAgICAg
ICAoR2V0dGVyRXhwcmVzc2lvbik6IEFkZCBmdW5jdGlvbiBmb3IgRnJvemVuQXJyYXk8RWxlbWVu
dD4gcHJvcGVydGllcy4KKyAgICAgICAgKFNldHRlckV4cHJlc3Npb24pOiBEaXR0by4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDogQWRkIHRlc3RzLgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqRE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHJHZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ial9yZWZsZWN0ZWRFbGVtZW50c0FycmF5QXR0clNldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDogQWRkIGV4YW1wbGUgYXR0cmli
dXRlLgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRWxl
bWVudHNBcnJheVJlZmxlY3Rpb25BdHRyaWJ1dGUpOiBOZXcgdXRpbGl0eSBtZXRob2QgdG8KKyAg
ICAgICAgaWRlbnRpZnkgdGhlIGF0dHJpYnV0ZXMgdGhhdCByZWZlciB0byBhIGxpc3Qgb2YgRWxl
bWVudHMuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKTogSW5j
bHVkZSBjaGVjayBmb3IgZWxlbWVudHMKKyAgICAgICAgYXJyYXkuCisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpnZXRFbGVtZW50c0FycmF5QXR0cmlidXRlIGNvbnN0KTogSW1wbGVtZW50IGdl
dHRlci4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEVsZW1lbnRzQXJyYXlBdHRyaWJ1
dGUpOiBJbXBsZW1lbnQgc2V0dGVyLgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6IFJlbW92ZSBG
SVhNRSBpbiBFeHBsaWNpdGx5U2V0QXR0ckVsZW1lbnRzTWFwIGFzIG5vdworICAgICAgICBpdCBz
dG9yZXMgbW9yZSB0aGFuIG9uZSBlbGVtZW50LiBBZGQgaGVhZGVycyBmb3IgZ2V0dGVyIGFuZCBz
ZXR0ZXIuCisKIDIwMjItMDUtMTEgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV1BFXSBVbnJldmlld2VkLCBidWlsZCBmaXggYWZ0ZXIgcjI5MzgxNgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BcmlhQXR0cmlidXRlcy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FyaWFBdHRyaWJ1dGVzLmlkbAppbmRl
eCAxMmExNjg1ZTFhMzExMmQ1OWFmMmVmMmNiYzM3OTNkZGEwZTU3OGIxLi41NDAyNmVhZjc2MjQ5
MDA0NTliMGY4MTQwM2RiNDg2YzAwMzJmZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FyaWFBdHRyaWJ1dGVzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FyaWFBdHRyaWJ1dGVzLmlkbApAQCAtMzMsMjEgKzMzLDI3IEBAIGludGVyZmFj
ZSBtaXhpbiBBcmlhQXR0cmlidXRlcyB7CiAgICAgW1JlZmxlY3Q9YXJpYV9jb2xjb3VudF0gICAg
ICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhQ29sQ291bnQ7CiAgICAgW1JlZmxlY3Q9YXJp
YV9jb2xpbmRleF0gICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhQ29sSW5kZXg7CiAg
ICAgW1JlZmxlY3Q9YXJpYV9jb2xzcGFuXSAgICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBh
cmlhQ29sU3BhbjsKKyAgICBbUmVmbGVjdD1hcmlhX2NvbnRyb2xzLCBFbmFibGVkQnlTZXR0aW5n
PUFyaWFSZWZsZWN0aW9uRm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVkXSBhdHRyaWJ1dGUgRnJv
emVuQXJyYXk8RWxlbWVudD4/IGFyaWFDb250cm9sc0VsZW1lbnRzOwogICAgIFtSZWZsZWN0PWFy
aWFfY3VycmVudF0gICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYUN1cnJlbnQ7Cisg
ICAgW1JlZmxlY3Q9YXJpYV9kZXNjcmliZWRieSwgRW5hYmxlZEJ5U2V0dGluZz1BcmlhUmVmbGVj
dGlvbkZvckVsZW1lbnRSZWZlcmVuY2VzRW5hYmxlZF0gYXR0cmlidXRlIEZyb3plbkFycmF5PEVs
ZW1lbnQ+PyBhcmlhRGVzY3JpYmVkQnlFbGVtZW50czsKKyAgICBbUmVmbGVjdD1hcmlhX2RldGFp
bHMsIEVuYWJsZWRCeVNldHRpbmc9QXJpYVJlZmxlY3Rpb25Gb3JFbGVtZW50UmVmZXJlbmNlc0Vu
YWJsZWRdIGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxFbGVtZW50Pj8gYXJpYURldGFpbHNFbGVtZW50
czsKICAgICBbUmVmbGVjdD1hcmlhX2Rpc2FibGVkXSAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJp
bmc/IGFyaWFEaXNhYmxlZDsKICAgICBbUmVmbGVjdD1hcmlhX2Vycm9ybWVzc2FnZSwgRW5hYmxl
ZEJ5U2V0dGluZz1BcmlhUmVmbGVjdGlvbkZvckVsZW1lbnRSZWZlcmVuY2VzRW5hYmxlZF0gYXR0
cmlidXRlIEVsZW1lbnQ/IGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50OwogICAgIFtSZWZsZWN0PWFy
aWFfZXhwYW5kZWRdICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYUV4cGFuZGVkOwor
ICAgIFtSZWZsZWN0PWFyaWFfZmxvd3RvLCBFbmFibGVkQnlTZXR0aW5nPUFyaWFSZWZsZWN0aW9u
Rm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVkXSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8RWxlbWVu
dD4/IGFyaWFGbG93VG9FbGVtZW50czsKICAgICBbUmVmbGVjdD1hcmlhX2hhc3BvcHVwXSAgICAg
ICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IGFyaWFIYXNQb3B1cDsKICAgICBbUmVmbGVjdD1hcmlh
X2hpZGRlbl0gICAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IGFyaWFIaWRkZW47CiAgICAg
W1JlZmxlY3Q9YXJpYV9pbnZhbGlkXSAgICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlh
SW52YWxpZDsKICAgICBbUmVmbGVjdD1hcmlhX2tleXNob3J0Y3V0c10gICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmc/IGFyaWFLZXlTaG9ydGN1dHM7CiAgICAgW1JlZmxlY3Q9YXJpYV9sYWJlbF0gICAg
ICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhTGFiZWw7CisgICAgW1JlZmxlY3Q9YXJp
YV9sYWJlbGxlZGJ5LCBFbmFibGVkQnlTZXR0aW5nPUFyaWFSZWZsZWN0aW9uRm9yRWxlbWVudFJl
ZmVyZW5jZXNFbmFibGVkXSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8RWxlbWVudD4/IGFyaWFMYWJl
bGxlZEJ5RWxlbWVudHM7CiAgICAgW1JlZmxlY3Q9YXJpYV9sZXZlbF0gICAgICAgICAgICBhdHRy
aWJ1dGUgRE9NU3RyaW5nPyBhcmlhTGV2ZWw7CiAgICAgW1JlZmxlY3Q9YXJpYV9saXZlXSAgICAg
ICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhTGl2ZTsKICAgICBbUmVmbGVjdD1hcmlh
X21vZGFsXSAgICAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IGFyaWFNb2RhbDsKICAgICBb
UmVmbGVjdD1hcmlhX211bHRpbGluZV0gICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IGFyaWFN
dWx0aUxpbmU7CiAgICAgW1JlZmxlY3Q9YXJpYV9tdWx0aXNlbGVjdGFibGVdICBhdHRyaWJ1dGUg
RE9NU3RyaW5nPyBhcmlhTXVsdGlTZWxlY3RhYmxlOwogICAgIFtSZWZsZWN0PWFyaWFfb3JpZW50
YXRpb25dICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYU9yaWVudGF0aW9uOworICAgIFtS
ZWZsZWN0PWFyaWFfb3ducywgRW5hYmxlZEJ5U2V0dGluZz1BcmlhUmVmbGVjdGlvbkZvckVsZW1l
bnRSZWZlcmVuY2VzRW5hYmxlZF0gYXR0cmlidXRlIEZyb3plbkFycmF5PEVsZW1lbnQ+PyBhcmlh
T3duc0VsZW1lbnRzOwogICAgIFtSZWZsZWN0PWFyaWFfcGxhY2Vob2xkZXJdICAgICAgYXR0cmli
dXRlIERPTVN0cmluZz8gYXJpYVBsYWNlaG9sZGVyOwogICAgIFtSZWZsZWN0PWFyaWFfcG9zaW5z
ZXRdICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYVBvc0luU2V0OwogICAgIFtSZWZs
ZWN0PWFyaWFfcHJlc3NlZF0gICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYVByZXNz
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3IucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Iu
cG0KaW5kZXggYjhkN2E0ZjBiYmZmOWQ4MWU0NTFmYTUyNTVmNGQzMDZjNzZjYzZlYi4uOWQ3ZTAx
YzU3OWUxNzE1NTFiYmNiOTkyNmE2Njc5ZWZmNGVlMTIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtMTExMCw2ICsxMTEwLDgg
QEAgc3ViIEdldHRlckV4cHJlc3Npb24KICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJnZXRVbnNp
Z25lZEludGVncmFsQXR0cmlidXRlIjsKICAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlwZS0+bmFt
ZSBlcSAiRWxlbWVudCIpIHsKICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJnZXRFbGVtZW50QXR0
cmlidXRlIjsKKyAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlwZS0+bmFtZSBlcSAiRnJvemVuQXJy
YXkiICYmIHNjYWxhciBAeyRhdHRyaWJ1dGVUeXBlLT5zdWJ0eXBlc30gPT0gMSAmJiBAeyRhdHRy
aWJ1dGVUeXBlLT5zdWJ0eXBlc31bMF0tPm5hbWUgZXEgIkVsZW1lbnQiKSB7CisgICAgICAgICRm
dW5jdGlvbk5hbWUgPSAiZ2V0RWxlbWVudHNBcnJheUF0dHJpYnV0ZSI7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgaWYgKCRjb250ZW50QXR0cmlidXRlTmFtZSBlcSAiV2ViQ29yZTo6SFRNTE5hbWVz
OjppZEF0dHIiKSB7CiAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gImdldElkQXR0cmlidXRl
IjsKQEAgLTExNDksNiArMTE1MSw4IEBAIHN1YiBTZXR0ZXJFeHByZXNzaW9uCiAgICAgICAgICRm
dW5jdGlvbk5hbWUgPSAic2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZSI7CiAgICAgfSBlbHNp
ZiAoJGF0dHJpYnV0ZVR5cGUtPm5hbWUgZXEgIkVsZW1lbnQiKSB7CiAgICAgICAgICRmdW5jdGlv
bk5hbWUgPSAic2V0RWxlbWVudEF0dHJpYnV0ZSI7CisgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZVR5
cGUtPm5hbWUgZXEgIkZyb3plbkFycmF5IiAmJiBzY2FsYXIgQHskYXR0cmlidXRlVHlwZS0+c3Vi
dHlwZXN9ID09IDEgJiYgQHskYXR0cmlidXRlVHlwZS0+c3VidHlwZXN9WzBdLT5uYW1lIGVxICJF
bGVtZW50IikgeworICAgICAgICAkZnVuY3Rpb25OYW1lID0gInNldEVsZW1lbnRzQXJyYXlBdHRy
aWJ1dGUiOwogICAgIH0gZWxzaWYgKCRnZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCRhdHRy
aWJ1dGVUeXBlKSkgewogICAgICAgICAkZnVuY3Rpb25OYW1lID0gInNldEF0dHJpYnV0ZSI7CiAg
ICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggMjViNWVhYzYwZDMxM2U4Mjk2OWZhNTYxOTIzODk0
MzJjYjc2M2VhMS4uYmIwYjAzNmE0NzYxOGY3NTMzNGYwZGQ3ZTk3OWMzYTU5ZDMzNDIxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAKQEAgLTE4MDUsNiArMTgwNSw4IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzVGVzdE9ial9yZWZsZWN0ZWRCb29sZWFuQXR0cik7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkQm9vbGVhbkF0dHIpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3JlZmxlY3RlZEVsZW1lbnRB
dHRyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial9yZWZs
ZWN0ZWRFbGVtZW50QXR0cik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHIpOworc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3JlZmxlY3RlZEVsZW1lbnRzQXJyYXlBdHRyKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial9yZWZsZWN0ZWRVUkxBdHRy
KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial9yZWZsZWN0
ZWRVUkxBdHRyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial9y
ZWZsZWN0ZWRVU1ZVUkxBdHRyKTsKQEAgLTIxNzgsNiArMjE4MCw3IEBAIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJy
ZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3JlZmxlY3RlZFVuc2lnbmVkSW50
ZWdyYWxBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0T2JqX3JlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKSB9IH0s
CiAgICAgeyAicmVmbGVjdGVkQm9vbGVhbkF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9yZWZsZWN0ZWRCb29sZWFuQXR0
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdE9ial9yZWZsZWN0ZWRCb29sZWFuQXR0cikgfSB9LAogICAgIHsgInJlZmxlY3Rl
ZEVsZW1lbnRBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVudEF0dHIpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcmVm
bGVjdGVkRWxlbWVudEF0dHIpIH0gfSwKKyAgICB7ICJyZWZsZWN0ZWRFbGVtZW50c0FycmF5QXR0
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0T2JqX3JlZmxlY3RlZEVsZW1lbnRzQXJyYXlBdHRyKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3JlZmxlY3Rl
ZEVsZW1lbnRzQXJyYXlBdHRyKSB9IH0sCiAgICAgeyAicmVmbGVjdGVkVVJMQXR0ciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2Jq
X3JlZmxlY3RlZFVSTEF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkVVJMQXR0cikgfSB9LAogICAg
IHsgInJlZmxlY3RlZFVTVlVSTEF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9yZWZsZWN0ZWRVU1ZVUkxBdHRyKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0T2JqX3JlZmxlY3RlZFVTVlVSTEF0dHIpIH0gfSwKICAgICB7ICJyZWZsZWN0ZWRTdHJpbmdB
dHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RPYmpfcmVmbGVjdGVkU3RyaW5nQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9yZWZsZWN0ZWRTdHJp
bmdBdHRyKSB9IH0sCkBAIC0zOTUyLDYgKzM5NTUsMzcgQEAgSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdE9ial9yZWZsZWN0ZWRFbGVtZW50QXR0ciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXgKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpf
cmVmbGVjdGVkRWxlbWVudEF0dHJTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHJHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09iamVjdCkKK3sKKyAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMRnJvemVuQXJyYXk8SURMSW50ZXJmYWNlPEVsZW1lbnQ+Pj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuZ2V0
RWxlbWVudHNBcnJheUF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGVsZW1l
bnRzYXJyYXlhdHRyQXR0cikpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0
cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8
anNUZXN0T2JqX3JlZmxlY3RlZEVsZW1lbnRzQXJyYXlBdHRyR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRy
aWJ1dGVOYW1lKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ial9yZWZsZWN0
ZWRFbGVtZW50c0FycmF5QXR0clNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEZyb3plbkFy
cmF5PElETEludGVyZmFjZTxFbGVtZW50Pj4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKKyAgICBpbnZva2VG
dW5jdG9yUHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeShsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRFbGVtZW50c0FycmF5
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkZWxlbWVudHNhcnJheWF0dHJB
dHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK0pTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVu
dHNBcnJheUF0dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3BlcnR5
TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9i
aj46OnNldDxzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHJTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgYXR0cmlidXRlTmFt
ZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpfcmVmbGVjdGVkVVJMQXR0
ckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0
aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGwKaW5kZXggN2U5ODJkNTE2MjRiNGNmZDhiODZlZDUxNDc3ZjcxN2IxYmJmZTVjNy4uMjgw
NzkyOThhMDI1YzFiMjMwMTUxYTM2ZDkzNTdjZjg4ZGNiNTc3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMTA1LDYgKzEwNSw3
IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3ciIH07CiAgICAgW1Jl
ZmxlY3RdIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxB
dHRyOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgYm9vbGVhbiByZWZsZWN0ZWRCb29sZWFuQXR0
cjsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIEVsZW1lbnQgcmVmbGVjdGVkRWxlbWVudEF0dHI7
CisgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxFbGVtZW50PiByZWZsZWN0ZWRF
bGVtZW50c0FycmF5QXR0cjsKICAgICBbUmVmbGVjdCwgVVJMXSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHJlZmxlY3RlZFVSTEF0dHI7CiAgICAgW1JlZmxlY3QsIFVSTF0gYXR0cmlidXRlIFVTVlN0cmlu
ZyByZWZsZWN0ZWRVU1ZVUkxBdHRyOwogICAgIFtSZWZsZWN0PWN1c3RvbUNvbnRlbnRTdHJpbmdB
dHRyXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJlZmxlY3RlZFN0cmluZ0F0dHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKaW5kZXggNjZhM2Q4NmQ2OWNhZjdjNzM2NTA2NDMwMWU1OTExYzA0Mzg2NmM4NS4u
NGU2MzQ4NTk1ZGQ5MTMwNWQwNTE4ZTk2ZGJiZDQyODc4MmJhMDdjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtMTkwNiw2ICsxOTA2LDE2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0VsZW1l
bnRSZWZsZWN0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAgICAgcmV0
dXJuIG5hbWUgPT0gSFRNTE5hbWVzOjphcmlhX2FjdGl2ZWRlc2NlbmRhbnRBdHRyIHx8IG5hbWUg
PT0gSFRNTE5hbWVzOjphcmlhX2Vycm9ybWVzc2FnZUF0dHI7CiB9CiAKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBpc0VsZW1lbnRzQXJyYXlSZWZsZWN0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUpCit7CisgICAgcmV0dXJuIG5hbWUgPT0gSFRNTE5hbWVzOjphcmlhX2NvbnRyb2xz
QXR0cgorICAgICAgICB8fCBuYW1lID09IEhUTUxOYW1lczo6YXJpYV9kZXNjcmliZWRieUF0dHIK
KyAgICAgICAgfHwgbmFtZSA9PSBIVE1MTmFtZXM6OmFyaWFfZGV0YWlsc0F0dHIKKyAgICAgICAg
fHwgbmFtZSA9PSBIVE1MTmFtZXM6OmFyaWFfZmxvd3RvQXR0cgorICAgICAgICB8fCBuYW1lID09
IEhUTUxOYW1lczo6YXJpYV9sYWJlbGxlZGJ5QXR0cgorICAgICAgICB8fCBuYW1lID09IEhUTUxO
YW1lczo6YXJpYV9vd25zQXR0cjsKK30KKwogdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVlLCBj
b25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uKQog
ewogICAgIGJvb2wgdmFsdWVJc1NhbWVBc0JlZm9yZSA9IG9sZFZhbHVlID09IG5ld1ZhbHVlOwpA
QCAtMTk0Miw3ICsxOTUyLDcgQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFYKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIGlmIChuYW1lID09IEhUTUxOYW1lczo6cGFydEF0dHIpCiAgICAg
ICAgICAgICBwYXJ0QXR0cmlidXRlQ2hhbmdlZChuZXdWYWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYg
KGRvY3VtZW50KCkuc2V0dGluZ3MoKS5hcmlhUmVmbGVjdGlvbkZvckVsZW1lbnRSZWZlcmVuY2Vz
RW5hYmxlZCgpICYmIGlzRWxlbWVudFJlZmxlY3Rpb25BdHRyaWJ1dGUobmFtZSkpIHsKKyAgICAg
ICAgZWxzZSBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmFyaWFSZWZsZWN0aW9uRm9yRWxlbWVu
dFJlZmVyZW5jZXNFbmFibGVkKCkgJiYgKGlzRWxlbWVudFJlZmxlY3Rpb25BdHRyaWJ1dGUobmFt
ZSkgfHwgaXNFbGVtZW50c0FycmF5UmVmbGVjdGlvbkF0dHJpYnV0ZShuYW1lKSkpIHsKICAgICAg
ICAgICAgIGlmIChhdXRvKiBtYXAgPSBleHBsaWNpdGx5U2V0QXR0ckVsZW1lbnRzTWFwSWZFeGlz
dHMoKSkKICAgICAgICAgICAgICAgICBtYXAtPnJlbW92ZShuYW1lKTsKICAgICAgICAgfSBlbHNl
IGlmIChuYW1lID09IEhUTUxOYW1lczo6ZXhwb3J0cGFydHNBdHRyKSB7CkBAIC0yMDIzLDYgKzIw
MzMsNzAgQEAgdm9pZCBFbGVtZW50OjpzZXRFbGVtZW50QXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEVsZW1lbnQqIGUKICAgICBleHBsaWNpdGx5U2V0QXR0ckVs
ZW1lbnRzTWFwKCkuc2V0KGF0dHJpYnV0ZU5hbWUsIFZlY3RvcjxXZWFrUHRyPEVsZW1lbnQ+PiB7
IGVsZW1lbnQgfSk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4+
IEVsZW1lbnQ6OmdldEVsZW1lbnRzQXJyYXlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoZG9jdW1lbnQoKS5zZXR0aW5ncygp
LmFyaWFSZWZsZWN0aW9uRm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVkKCkpOworICAgIEFTU0VS
VChpc0VsZW1lbnRzQXJyYXlSZWZsZWN0aW9uQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKTsKKwor
ICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+IGVsZW1lbnRzOworICAgIGlmIChhdXRvKiBtYXAg
PSBleHBsaWNpdGx5U2V0QXR0ckVsZW1lbnRzTWFwSWZFeGlzdHMoKSkgeworICAgICAgICBpZiAo
YXV0byBpdCA9IG1hcC0+ZmluZChhdHRyaWJ1dGVOYW1lKTsgaXQgIT0gbWFwLT5lbmQoKSkgewor
ICAgICAgICAgICAgcmV0dXJuIGNvbXBhY3RNYXAoaXQtPnZhbHVlLCBbJl0oYXV0byYgZWxlbWVu
dCkgLT4gc3RkOjpvcHRpb25hbDxSZWZQdHI8RWxlbWVudD4+IHsKKyAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudCAmJiBpc0Rlc2NlbmRhbnRPclNoYWRvd0Rlc2NlbmRhbnRPZihlbGVtZW50LT5y
b290Tm9kZSgpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisgICAgfQorCisgICAgYXV0byBhdHRyID0gYXR0cmlidXRlTmFtZTsKKyAgICBpZiAo
YXR0ciA9PSBIVE1MTmFtZXM6OmFyaWFfbGFiZWxsZWRieUF0dHIgJiYgIWhhc0F0dHJpYnV0ZShI
VE1MTmFtZXM6OmFyaWFfbGFiZWxsZWRieUF0dHIpICYmIGhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6
OmFyaWFfbGFiZWxlZGJ5QXR0cikpCisgICAgICAgIGF0dHIgPSBIVE1MTmFtZXM6OmFyaWFfbGFi
ZWxlZGJ5QXR0cjsKKworICAgIGlmICghaGFzQXR0cmlidXRlKGF0dHIpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgU3BhY2VTcGxpdFN0cmluZyBpZHMoZ2V0QXR0cmlidXRl
KGF0dHIpLCBTcGFjZVNwbGl0U3RyaW5nOjpTaG91bGRGb2xkQ2FzZTo6Tm8pOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBpZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGF1dG8q
IGVsZW1lbnQgPSB0cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChpZHNbaV0pKQorICAgICAgICAg
ICAgZWxlbWVudHMuYXBwZW5kKGVsZW1lbnQpOworICAgIH0KKyAgICByZXR1cm4gZWxlbWVudHM7
Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0RWxlbWVudHNBcnJheUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8RWxl
bWVudD4+PiYmIGVsZW1lbnRzKQoreworICAgIEFTU0VSVChkb2N1bWVudCgpLnNldHRpbmdzKCku
YXJpYVJlZmxlY3Rpb25Gb3JFbGVtZW50UmVmZXJlbmNlc0VuYWJsZWQoKSk7CisgICAgQVNTRVJU
KGlzRWxlbWVudHNBcnJheVJlZmxlY3Rpb25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkpOworCisg
ICAgaWYgKCFlbGVtZW50cykgeworICAgICAgICBpZiAoYXV0byogbWFwID0gZXhwbGljaXRseVNl
dEF0dHJFbGVtZW50c01hcElmRXhpc3RzKCkpCisgICAgICAgICAgICBtYXAtPnJlbW92ZShhdHRy
aWJ1dGVOYW1lKTsKKyAgICAgICAgcmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9yPFdlYWtQdHI8RWxlbWVudD4+IG5ld0Vs
ZW1lbnRzOworICAgIG5ld0VsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZWxlbWVudHMt
PnNpemUoKSk7CisgICAgU3RyaW5nQnVpbGRlciB2YWx1ZTsKKyAgICBmb3IgKGF1dG8gZWxlbWVu
dCA6IGVsZW1lbnRzLnZhbHVlKCkpIHsKKyAgICAgICAgbmV3RWxlbWVudHMudW5jaGVja2VkQXBw
ZW5kKGVsZW1lbnQpOworICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpICYmIG5ld0VsZW1lbnRz
LnNpemUoKSA+IDEpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIGlkID0g
ZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsKKyAgICAgICAgaWYgKCFpZC5pc051bGwoKSAmJiAm
cm9vdE5vZGUoKSA9PSAmZWxlbWVudC0+cm9vdE5vZGUoKSAmJiB0cmVlU2NvcGUoKS5nZXRFbGVt
ZW50QnlJZChpZCkgPT0gZWxlbWVudCkgeworICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0VtcHR5
KCkpCisgICAgICAgICAgICAgICAgdmFsdWUuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICB2YWx1
ZS5hcHBlbmQoaWQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHZhbHVlLmNsZWFyKCk7
CisgICAgfQorICAgIHNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCB2YWx1ZS50b0F0b21TdHJp
bmcoKSk7CisKKyAgICBleHBsaWNpdGx5U2V0QXR0ckVsZW1lbnRzTWFwKCkuc2V0KGF0dHJpYnV0
ZU5hbWUsIFdURk1vdmUobmV3RWxlbWVudHMpKTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+CiBzdGF0aWMgaW5saW5lIGJvb2wgaXNOb25FbXB0eVRva2VuTGlzdChjb25z
dCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAppbmRleCBiMjdkZThkODcyZWM1ODA5OTQ0ZTgxYjY1MGIxYzllNDljNjM3MThiLi45
MzIwNTc3NGI5NTY0YzcxMTc5YzRjOWNkMzdjNWVlZjBlODY2ODQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKQEAgLTkzLDggKzkzLDYgQEAgc3RydWN0IFNjcm9sbFRvT3B0aW9uczsKIHN0cnVjdCBTZWN1
cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50SW5pdDsKIHN0cnVjdCBTaGFkb3dSb290SW5pdDsKIAot
Ly8gRklYTUU6IFRoaXMgb25seSBzdG9yZXMgb25lIEVsZW1lbnQgaW4gdGhlIFZlY3RvciByaWdo
dCBub3csIHRob3VnaCB0aGlzIHdpbGwgY2hhbmdlCi0vLyBvbmNlIHJlZmxlY3Rpb24gZm9yIEZy
b3plbkFycmF5PEVsZW1lbnQ+IGlzIGltcGxlbWVudGVkIGluIGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzIzOTg1My4KIHVzaW5nIEV4cGxpY2l0bHlTZXRBdHRyRWxlbWVudHNNYXAgPSBIYXNoTWFwPFF1
YWxpZmllZE5hbWUsIFZlY3RvcjxXZWFrUHRyPEVsZW1lbnQ+Pj47CiAKIG5hbWVzcGFjZSBTdHls
ZSB7CkBAIC0xMjcsNiArMTI1LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCB1bnNpZ25lZCB2YWx1ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRWxlbWVudCogZ2V0
RWxlbWVudEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEVsZW1lbnRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgRWxlbWVudCogdmFsdWUpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4+IGdldEVsZW1lbnRz
QXJyYXlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFbGVtZW50c0FycmF5QXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZlB0
cjxFbGVtZW50Pj4+JiYgdmFsdWUpOwogCiAgICAgLy8gQ2FsbCB0aGlzIHRvIGdldCB0aGUgdmFs
dWUgb2YgYW4gYXR0cmlidXRlIHRoYXQgaXMga25vd24gbm90IHRvIGJlIHRoZSBzdHlsZQogICAg
IC8vIGF0dHJpYnV0ZSBvciBvbmUgb2YgdGhlIFNWRyBhbmltYXRhYmxlIGF0dHJpYnV0ZXMuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMDlhZGNjZWY1YWY1ZmYyMzEwNjUxYWY2YjVmZGRjYzhhODFmZDRkZC4uYjIxYzRhODZm
NTZmMzIwMGVjZDE3NGVkZGFmMzQ3NWUxNDkwZjZhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDIyLTA1LTEyICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisg
ICAgICAgIEFSSUEgcmVmbGVjdGlvbiBmb3IgRnJvemVuQXJyYXk8RWxlbWVudD4gYXR0cmlidXRl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODUz
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85Mjc5NzgzNj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBDaHJpcyBEdW1lei4KKworICAgICAgICBVcGRhdGUgdGVzdCBzbyBpdCBpZGVudGlmaWVzIHRo
ZSBGcm96ZW5BcnJheTxFbGVtZW50PiBhdHRyaWJ1dGVzLgorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BUklBLXJlZmxlY3Rpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQVJJQS1yZWZsZWN0aW9uLmh0bWw6CisKIDIwMjItMDUtMTEgIEpvaG4gQ3VubmluZ2hhbSAg
PGpvaG5jdW5uaW5naGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIHdlYnJ0
Yy92cDgtdGhlbi1oMjY0LWdwdS1wcm9jZXNzLWNyYXNoLmh0bWwgZmxha3kgZmFpbHMgYWZ0ZXIg
dHVybmluZyBET00gaW4gR1BVUCBvbiBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZwppbmRleCAyOTMzZWYzYmIxOTI0ZDVkNzdmZjdmOTI2YWQ5NjYwODA3Y2VjZTg1Li5lOTUw
OTZiN2NjZDI1MzZkNGNkZDk2YmRlMzg5MWQ4YTVlMzJmODc5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wNS0xMiAgTWFudWVsIFJlZ28gQ2Fz
YXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KKworICAgICAgICBBUklBIHJlZmxlY3Rpb24gZm9y
IEZyb3plbkFycmF5PEVsZW1lbnQ+IGF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTg1MworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
OTI3OTc4MzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAg
VXBkYXRlIGV4cGVjdGF0aW9ucyB3aXRoIHRoZSBuZXcgUEFTUyBsaW5lcy4KKworICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvYXJpYS1lbGVtZW50LXJlZmxlY3Rpb24udGVu
dGF0aXZlLWV4cGVjdGVkLnR4dDoKKwogMjAyMi0wNS0xMiAgVGltIE5ndXllbiAgPG50aW1AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlLWltcG9ydCBjc3Mvc2VsZWN0b3JzIFdQVCBmcm9tIHJldmlz
aW9uIDQ2NTNlOTEyODc0MmUyYzI2MDllNzZmMDRmNDA4NGNkYzEwZmZlYWQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvQVJJQS1yZWZsZWN0aW9uLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvQVJJQS1yZWZsZWN0aW9uLWV4cGVjdGVkLnR4dApp
bmRleCBlM2ZlZWMzMGM0YzdhOWVhZmFkMWE5NGRlZGVlYzYzZjg4YmI4MGU3Li4zYzg0YTE2MDcx
NDAzYjA4ZWYyODczN2M3Y2MxMmRmNGZiZTQ5ZDYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L0FSSUEtcmVmbGVjdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9BUklBLXJlZmxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC02Nyw2ICs2
NywxMyBAQCBQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGN1cnJlbnRBdHRyaWJ1dGUpIGlzIGRh
dGFBdHRyaWJ1dGUKIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWNvbHNwYW4iLCBvdGhlckRh
dGEpOwogUEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgb3RoZXJEYXRhUHJvcGVydHkK
IAorVGVzdCBhcmlhQ29udHJvbHNFbGVtZW50cyA8IC0gPiBhcmlhLWNvbnRyb2xzCitQQVNTIGVs
ZW1lbnRbY3VycmVudFByb3BlcnR5XSBpcyBudWxsCitQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRl
KGN1cnJlbnRBdHRyaWJ1dGUpIGlzIG51bGwKK1BBU1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3Vy
cmVudEF0dHJpYnV0ZSkgaXMgZGF0YUF0dHJpYnV0ZQorZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFy
aWEtY29udHJvbHMiLCBvdGhlckRhdGEpOworUEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0g
aXMgb3RoZXJEYXRhUHJvcGVydHkKKwogVGVzdCBhcmlhQ3VycmVudCA8IC0gPiBhcmlhLWN1cnJl
bnQKIFBBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG51bGwKIFBBU1MgZWxlbWVudC5n
ZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgbnVsbApAQCAtNzQsNiArODEsMjAgQEAg
UEFTUyBlbGVtZW50LmdldEF0dHJpYnV0ZShjdXJyZW50QXR0cmlidXRlKSBpcyBkYXRhQXR0cmli
dXRlCiBlbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1jdXJyZW50Iiwgb3RoZXJEYXRhKTsKIFBB
U1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG90aGVyRGF0YVByb3BlcnR5CiAKK1Rlc3Qg
YXJpYURlc2NyaWJlZEJ5RWxlbWVudHMgPCAtID4gYXJpYS1kZXNjcmliZWRieQorUEFTUyBlbGVt
ZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgbnVsbAorUEFTUyBlbGVtZW50LmdldEF0dHJpYnV0ZShj
dXJyZW50QXR0cmlidXRlKSBpcyBudWxsCitQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGN1cnJl
bnRBdHRyaWJ1dGUpIGlzIGRhdGFBdHRyaWJ1dGUKK2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlh
LWRlc2NyaWJlZGJ5Iiwgb3RoZXJEYXRhKTsKK1BBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHld
IGlzIG90aGVyRGF0YVByb3BlcnR5CisKK1Rlc3QgYXJpYURldGFpbHNFbGVtZW50cyA8IC0gPiBh
cmlhLWRldGFpbHMKK1BBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG51bGwKK1BBU1Mg
ZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgbnVsbAorUEFTUyBlbGVt
ZW50LmdldEF0dHJpYnV0ZShjdXJyZW50QXR0cmlidXRlKSBpcyBkYXRhQXR0cmlidXRlCitlbGVt
ZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1kZXRhaWxzIiwgb3RoZXJEYXRhKTsKK1BBU1MgZWxlbWVu
dFtjdXJyZW50UHJvcGVydHldIGlzIG90aGVyRGF0YVByb3BlcnR5CisKIFRlc3QgYXJpYURpc2Fi
bGVkIDwgLSA+IGFyaWEtZGlzYWJsZWQKIFBBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlz
IG51bGwKIFBBU1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgbnVs
bApAQCAtOTUsNiArMTE2LDEzIEBAIFBBU1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0
dHJpYnV0ZSkgaXMgZGF0YUF0dHJpYnV0ZQogZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtZXhw
YW5kZWQiLCBvdGhlckRhdGEpOwogUEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgb3Ro
ZXJEYXRhUHJvcGVydHkKIAorVGVzdCBhcmlhRmxvd1RvRWxlbWVudHMgPCAtID4gYXJpYS1mbG93
dG8KK1BBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG51bGwKK1BBU1MgZWxlbWVudC5n
ZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgbnVsbAorUEFTUyBlbGVtZW50LmdldEF0
dHJpYnV0ZShjdXJyZW50QXR0cmlidXRlKSBpcyBkYXRhQXR0cmlidXRlCitlbGVtZW50LnNldEF0
dHJpYnV0ZSgiYXJpYS1mbG93dG8iLCBvdGhlckRhdGEpOworUEFTUyBlbGVtZW50W2N1cnJlbnRQ
cm9wZXJ0eV0gaXMgb3RoZXJEYXRhUHJvcGVydHkKKwogVGVzdCBhcmlhSGFzUG9wdXAgPCAtID4g
YXJpYS1oYXNwb3B1cAogUEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgbnVsbAogUEFT
UyBlbGVtZW50LmdldEF0dHJpYnV0ZShjdXJyZW50QXR0cmlidXRlKSBpcyBudWxsCkBAIC0xMzAs
NiArMTU4LDEzIEBAIFBBU1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkg
aXMgZGF0YUF0dHJpYnV0ZQogZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBvdGhl
ckRhdGEpOwogUEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgb3RoZXJEYXRhUHJvcGVy
dHkKIAorVGVzdCBhcmlhTGFiZWxsZWRCeUVsZW1lbnRzIDwgLSA+IGFyaWEtbGFiZWxsZWRieQor
UEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgbnVsbAorUEFTUyBlbGVtZW50LmdldEF0
dHJpYnV0ZShjdXJyZW50QXR0cmlidXRlKSBpcyBudWxsCitQQVNTIGVsZW1lbnQuZ2V0QXR0cmli
dXRlKGN1cnJlbnRBdHRyaWJ1dGUpIGlzIGRhdGFBdHRyaWJ1dGUKK2VsZW1lbnQuc2V0QXR0cmli
dXRlKCJhcmlhLWxhYmVsbGVkYnkiLCBvdGhlckRhdGEpOworUEFTUyBlbGVtZW50W2N1cnJlbnRQ
cm9wZXJ0eV0gaXMgb3RoZXJEYXRhUHJvcGVydHkKKwogVGVzdCBhcmlhTGV2ZWwgPCAtID4gYXJp
YS1sZXZlbAogUEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgbnVsbAogUEFTUyBlbGVt
ZW50LmdldEF0dHJpYnV0ZShjdXJyZW50QXR0cmlidXRlKSBpcyBudWxsCkBAIC0xNzIsNiArMjA3
LDEzIEBAIFBBU1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgZGF0
YUF0dHJpYnV0ZQogZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtb3JpZW50YXRpb24iLCBvdGhl
ckRhdGEpOwogUEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgb3RoZXJEYXRhUHJvcGVy
dHkKIAorVGVzdCBhcmlhT3duc0VsZW1lbnRzIDwgLSA+IGFyaWEtb3ducworUEFTUyBlbGVtZW50
W2N1cnJlbnRQcm9wZXJ0eV0gaXMgbnVsbAorUEFTUyBlbGVtZW50LmdldEF0dHJpYnV0ZShjdXJy
ZW50QXR0cmlidXRlKSBpcyBudWxsCitQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGN1cnJlbnRB
dHRyaWJ1dGUpIGlzIGRhdGFBdHRyaWJ1dGUKK2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLW93
bnMiLCBvdGhlckRhdGEpOworUEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgb3RoZXJE
YXRhUHJvcGVydHkKKwogVGVzdCBhcmlhUGxhY2Vob2xkZXIgPCAtID4gYXJpYS1wbGFjZWhvbGRl
cgogUEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgbnVsbAogUEFTUyBlbGVtZW50Lmdl
dEF0dHJpYnV0ZShjdXJyZW50QXR0cmlidXRlKSBpcyBudWxsCkBAIC0yOTIsNyArMzM0LDcgQEAg
ZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWV0ZXh0Iiwgb3RoZXJEYXRhKTsKIFBBU1Mg
ZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG90aGVyRGF0YVByb3BlcnR5CiAKIAotUEFTUyBj
b3VudCBpcyA0MAorUEFTUyBjb3VudCBpcyA0NgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L0FSSUEtcmVmbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9BUklB
LXJlZmxlY3Rpb24uaHRtbAppbmRleCA5M2E5YjdhMTdmOWE0NGU0Y2QxMWJlY2E5NjlmMGNlNTc3
NjljZWVlLi42NDI4Y2VmNWEyZWI5MGFkYmMyZmMzMjNmOWVlNjdmNjhhZGM1YTJiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L0FSSUEtcmVmbGVjdGlvbi5odG1sCisrKyBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvQVJJQS1yZWZsZWN0aW9uLmh0bWwKQEAgLTcsNiAr
Nyw3IEBACiA8ZGl2IGlkPSJ0ZXN0IiBkYXRhPSJzb21lIGRhdGEiPgogICA8ZGl2IGlkPSJmaXJz
dENoaWxkIj48L2Rpdj4KICAgPGRpdiBpZD0ic2Vjb25kQ2hpbGQiPjwvZGl2PgorICA8ZGl2IGlk
PSJ0aGlyZENoaWxkIj48L2Rpdj4KIDwvZGl2PgogCiA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
QEAgLTMxLDEyICszMiw1OSBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAg
ZnVuY3Rpb24gaXNFbGVtZW50c0FycmF5UmVmbGVjdGlvblByb3BlcnR5KHByb3BlcnR5KSB7Cisg
ICAgICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICAgICAgICAgIGNhc2UgImFyaWFDb250cm9s
c0VsZW1lbnRzIjoKKyAgICAgICAgICAgIGNhc2UgImFyaWFEZXNjcmliZWRCeUVsZW1lbnRzIjoK
KyAgICAgICAgICAgIGNhc2UgImFyaWFEZXRhaWxzRWxlbWVudHMiOgorICAgICAgICAgICAgY2Fz
ZSAiYXJpYUZsb3dUb0VsZW1lbnRzIjoKKyAgICAgICAgICAgIGNhc2UgImFyaWFMYWJlbGxlZEJ5
RWxlbWVudHMiOgorICAgICAgICAgICAgY2FzZSAiYXJpYU93bnNFbGVtZW50cyI6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKwogICAgIGZ1bmN0aW9uIGNvbnZlcnRQcm9wZXJ0eVRvQXR0cmlidXRlKHByb3BlcnR5
KSB7CiAgICAgICAgIGlmIChpc0VsZW1lbnRSZWZsZWN0aW9uUHJvcGVydHkocHJvcGVydHkpKQog
ICAgICAgICAgIHByb3BlcnR5ID0gcHJvcGVydHkucmVwbGFjZSgiRWxlbWVudCIsICIiKTsKKyAg
ICAgICAgZWxzZSBpZiAoaXNFbGVtZW50c0FycmF5UmVmbGVjdGlvblByb3BlcnR5KHByb3BlcnR5
KSkKKyAgICAgICAgICBwcm9wZXJ0eSA9IHByb3BlcnR5LnJlcGxhY2UoIkVsZW1lbnRzIiwgIiIp
OwogICAgICAgICByZXR1cm4gcHJvcGVydHkucmVwbGFjZSgiYXJpYSIsICJhcmlhLSIpLnRvTG93
ZXJDYXNlKCk7CiAgICAgfQogCisgICAgZnVuY3Rpb24gZ2V0RGF0YVByb3BlcnR5KHByb3BlcnR5
KSB7CisgICAgICAgIGlmIChpc0VsZW1lbnRSZWZsZWN0aW9uUHJvcGVydHkocHJvcGVydHkpKQor
ICAgICAgICAgIHJldHVybiBmaXJzdENoaWxkOworICAgICAgICBlbHNlIGlmIChpc0VsZW1lbnRz
QXJyYXlSZWZsZWN0aW9uUHJvcGVydHkocHJvcGVydHkpKQorICAgICAgICAgIHJldHVybiBbZmly
c3RDaGlsZCwgc2Vjb25kQ2hpbGRdOworICAgICAgICByZXR1cm4gZGF0YTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBnZXREYXRhQXR0cmlidXRlKHByb3BlcnR5KSB7CisgICAgICAgIGlmIChpc0Vs
ZW1lbnRSZWZsZWN0aW9uUHJvcGVydHkocHJvcGVydHkpKQorICAgICAgICAgIHJldHVybiBmaXJz
dENoaWxkLmlkOworICAgICAgICBlbHNlIGlmIChpc0VsZW1lbnRzQXJyYXlSZWZsZWN0aW9uUHJv
cGVydHkocHJvcGVydHkpKQorICAgICAgICAgIHJldHVybiBmaXJzdENoaWxkLmlkICsgIiAiICsg
c2Vjb25kQ2hpbGQuaWQ7CisgICAgICAgIHJldHVybiBkYXRhOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGdldE90aGVyRGF0YVByb3BlcnR5KHByb3BlcnR5KSB7CisgICAgICAgIGlmIChpc0VsZW1l
bnRSZWZsZWN0aW9uUHJvcGVydHkocHJvcGVydHkpKQorICAgICAgICAgIHJldHVybiBzZWNvbmRD
aGlsZDsKKyAgICAgICAgZWxzZSBpZiAoaXNFbGVtZW50c0FycmF5UmVmbGVjdGlvblByb3BlcnR5
KHByb3BlcnR5KSkKKyAgICAgICAgICByZXR1cm4gW3RoaXJkQ2hpbGRdOworICAgICAgICByZXR1
cm4gb3RoZXJEYXRhOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldE90aGVyRGF0YUF0dHJpYnV0
ZShwcm9wZXJ0eSkgeworICAgICAgICBpZiAoaXNFbGVtZW50UmVmbGVjdGlvblByb3BlcnR5KHBy
b3BlcnR5KSkKKyAgICAgICAgICByZXR1cm4gc2Vjb25kQ2hpbGQuaWQ7CisgICAgICAgIGVsc2Ug
aWYgKGlzRWxlbWVudHNBcnJheVJlZmxlY3Rpb25Qcm9wZXJ0eShwcm9wZXJ0eSkpCisgICAgICAg
ICAgcmV0dXJuIHRoaXJkQ2hpbGQuaWQ7CisgICAgICAgIHJldHVybiBvdGhlckRhdGE7CisgICAg
fQorCiAgICAgZnVuY3Rpb24gdGVzdEVsZW1lbnQoKSB7CiAgICAgICAgIGN1cnJlbnRBdHRyaWJ1
dGUgPSBjb252ZXJ0UHJvcGVydHlUb0F0dHJpYnV0ZShjdXJyZW50UHJvcGVydHkpOwogCkBAIC00
NSwxNCArOTMsMTQgQEAKICAgICAgICAgc2hvdWxkQmVOdWxsKCJlbGVtZW50LmdldEF0dHJpYnV0
ZShjdXJyZW50QXR0cmlidXRlKSIpOwogCiAgICAgICAgIC8vIFNldCB0aGUgcHJvcGVydHkgdmFs
dWUKLSAgICAgICAgZGF0YVByb3BlcnR5ID0gaXNFbGVtZW50UmVmbGVjdGlvblByb3BlcnR5KGN1
cnJlbnRQcm9wZXJ0eSkgPyBmaXJzdENoaWxkIDogZGF0YTsKLSAgICAgICAgZGF0YUF0dHJpYnV0
ZSA9IGlzRWxlbWVudFJlZmxlY3Rpb25Qcm9wZXJ0eShjdXJyZW50UHJvcGVydHkpID8gZmlyc3RD
aGlsZC5pZCA6IGRhdGE7CisgICAgICAgIGRhdGFQcm9wZXJ0eSA9IGdldERhdGFQcm9wZXJ0eShj
dXJyZW50UHJvcGVydHkpOworICAgICAgICBkYXRhQXR0cmlidXRlID0gZ2V0RGF0YUF0dHJpYnV0
ZShjdXJyZW50UHJvcGVydHkpOwogICAgICAgICBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gPSBk
YXRhUHJvcGVydHk7CiAgICAgICAgIHNob3VsZEJlKCJlbGVtZW50LmdldEF0dHJpYnV0ZShjdXJy
ZW50QXR0cmlidXRlKSIsICJkYXRhQXR0cmlidXRlIik7CiAKICAgICAgICAgLy8gU2V0IHRoZSBh
dHRyaWJ1dGUgdmFsdWUKLSAgICAgICAgb3RoZXJEYXRhUHJvcGVydHkgPSBpc0VsZW1lbnRSZWZs
ZWN0aW9uUHJvcGVydHkoY3VycmVudFByb3BlcnR5KSA/IHNlY29uZENoaWxkIDogb3RoZXJEYXRh
OwotICAgICAgICBvdGhlckRhdGFBdHRyaWJ1dGUgPSBpc0VsZW1lbnRSZWZsZWN0aW9uUHJvcGVy
dHkoY3VycmVudFByb3BlcnR5KSA/IHNlY29uZENoaWxkLmlkIDogb3RoZXJEYXRhOworICAgICAg
ICBvdGhlckRhdGFQcm9wZXJ0eSA9IGdldE90aGVyRGF0YVByb3BlcnR5KGN1cnJlbnRQcm9wZXJ0
eSk7CisgICAgICAgIG90aGVyRGF0YUF0dHJpYnV0ZSA9IGdldE90aGVyRGF0YUF0dHJpYnV0ZShj
dXJyZW50UHJvcGVydHkpOwogICAgICAgICBkZWJ1ZygiZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCIi
ICsgY3VycmVudEF0dHJpYnV0ZSArICJcIiwgb3RoZXJEYXRhKTsiKTsKICAgICAgICAgZWxlbWVu
dC5zZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSwgb3RoZXJEYXRhQXR0cmlidXRlKTsKICAg
ICAgICAgc2hvdWxkQmUoImVsZW1lbnRbY3VycmVudFByb3BlcnR5XSIsICJvdGhlckRhdGFQcm9w
ZXJ0eSIpOwpAQCAtNzgsNyArMTI2LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIGRlYnVnKCJc
biIpOwotICAgICAgICBzaG91bGRCZSgiY291bnQiLCAiNDAiKTsKKyAgICAgICAgc2hvdWxkQmUo
ImNvdW50IiwgIjQ2Iik7CiAKICAgICB9IGVsc2UgewogICAgICAgICB0ZXN0RmFpbGVkKCJDb3Vs
ZCBub3QgbG9hZCBhY2Nlc3NpYmlsaXR5IGNvbnRyb2xsZXIiKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL2FyaWEtZWxl
bWVudC1yZWZsZWN0aW9uLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ub2Rlcy9hcmlhLWVsZW1lbnQtcmVmbGVj
dGlvbi50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CmluZGV4IDE2NzgwNjQ3MTY3ZjQ2YWE1ZDBjYzE0
NjNhOTNlMjAwYTJjZGRjYzEuLjY5NjdkNzA2NjdlMzg1N2ZkYzcyYjA5YTgzYmMwOTZiODBmOWQ1
ZGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZG9tL25vZGVzL2FyaWEtZWxlbWVudC1yZWZsZWN0aW9uLnRlbnRhdGl2ZS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20v
bm9kZXMvYXJpYS1lbGVtZW50LXJlZmxlY3Rpb24udGVudGF0aXZlLWV4cGVjdGVkLnR4dApAQCAt
MzYsMTIgKzM2LDcgQEAgTGlnaHQgRE9NIHRleHQKIAogTGlnaHQgRE9NIHRleHQKIAotRGVsaWNp
b3VzCi1OdXRyaXRpb3VzCi0KIE1pc3NwZWxsaW5nCi1Xb25kZXJmdWwKLUZhbnRhc3RpYwogCiAK
IFBBU1MgYXJpYS1hY3RpdmVkZXNjZW5kYW50IGVsZW1lbnQgcmVmbGVjdGlvbgpAQCAtNDksMjAg
KzQ0LDIwIEBAIFBBU1MgSWYgdGhlIGNvbnRlbnQgYXR0cmlidXRlIGlzIHNldCBkaXJlY3RseSwg
dGhlIElETCBhdHRyaWJ1dGUgZ2V0dGVyIGFsd2F5cyByCiBQQVNTIFNldHRpbmcgdGhlIElETCBh
dHRyaWJ1dGUgdG8gYW4gZWxlbWVudCB3aGljaCBpcyBub3QgdGhlIGZpcnN0IGVsZW1lbnQgaW4g
RE9NIG9yZGVyIHdpdGggaXRzIElEIGNhdXNlcyB0aGUgY29udGVudCBhdHRyaWJ1dGUgdG8gYmUg
YW4gZW1wdHkgc3RyaW5nCiBQQVNTIFNldHRpbmcgYW4gZWxlbWVudCByZWZlcmVuY2UgdGhhdCBj
cm9zc2VzIGludG8gYSBzaGFkb3cgdHJlZSBpcyBkaXNhbGxvd2VkLCBidXQgc2V0dGluZyBvbmUg
dGhhdCBpcyBpbiBhIHNoYWRvdyBpbmNsdXNpdmUgYW5jZXN0b3IgaXMgYWxsb3dlZC4KIFBBU1Mg
YXJpYS1lcnJvcm1lc3NhZ2UKLUZBSUwgYXJpYS1kZXRhaWxzIGFzc2VydF9hcnJheV9lcXVhbHM6
IHZhbHVlIGlzIHVuZGVmaW5lZCwgZXhwZWN0ZWQgYXJyYXkKK1BBU1MgYXJpYS1kZXRhaWxzCiBQ
QVNTIERlbGV0aW5nIGEgcmVmbGVjdGVkIGVsZW1lbnQgc2hvdWxkIHJldHVybiBudWxsIGZvciB0
aGUgSURMIGF0dHJpYnV0ZSBhbmQgY2F1c2UgdGhlIGNvbnRlbnQgYXR0cmlidXRlIHRvIGJlY29t
ZSBzdGFsZS4KIFBBU1MgQ2hhbmdpbmcgdGhlIElEIG9mIGFuIGVsZW1lbnQgY2F1c2VzIHRoZSBj
b250ZW50IGF0dHJpYnV0ZSB0byBiZWNvbWUgb3V0IG9mIHN5bmMuCiBQQVNTIFJlcGFyZW50aW5n
IGFuIGVsZW1lbnQgaW50byBhIGRlc2NlbmRhbnQgc2hhZG93IHNjb3BlIGhpZGVzIHRoZSBlbGVt
ZW50IHJlZmVyZW5jZS4KIFBBU1MgUmVwYXJlbnRpbmcgcmVmZXJlbmNlZCBlbGVtZW50IGNhbm5v
dCBjYXVzZSByZXRhcmdldGluZyBvZiByZWZlcmVuY2UuCiBQQVNTIEVsZW1lbnQgcmVmZXJlbmNl
IHNldCBpbiBpbnZhbGlkIHNjb3BlIHJlbWFpbnMgaW50YWN0IHRocm91Z2hvdXQgbW92ZSB0byB2
YWxpZCBzY29wZS4KLUZBSUwgYXJpYS1sYWJlbGxlZGJ5LiBhc3NlcnRfYXJyYXlfZXF1YWxzOiBw
YXJzZWQgY29udGVudCBhdHRyaWJ1dGUgc2V0cyBlbGVtZW50IHJlZmVyZW5jZXMuIHZhbHVlIGlz
IHVuZGVmaW5lZCwgZXhwZWN0ZWQgYXJyYXkKLUZBSUwgYXJpYS1jb250cm9scy4gYXNzZXJ0X2Fy
cmF5X2VxdWFsczogdmFsdWUgaXMgdW5kZWZpbmVkLCBleHBlY3RlZCBhcnJheQotRkFJTCBhcmlh
LWRlc2NyaWJlZGJ5LiBhc3NlcnRfYXJyYXlfZXF1YWxzOiB2YWx1ZSBpcyB1bmRlZmluZWQsIGV4
cGVjdGVkIGFycmF5Ci1GQUlMIGFyaWEtZmxvd3RvLiBhc3NlcnRfYXJyYXlfZXF1YWxzOiB2YWx1
ZSBpcyB1bmRlZmluZWQsIGV4cGVjdGVkIGFycmF5Ci1GQUlMIGFyaWEtb3ducy4gYXNzZXJ0X2Fy
cmF5X2VxdWFsczogdmFsdWUgaXMgdW5kZWZpbmVkLCBleHBlY3RlZCBhcnJheQotRkFJTCBzaGFk
b3cgRE9NIGJlaGF2aW91ciBmb3IgRnJvemVuQXJyYXkgZWxlbWVudCByZWZsZWN0aW9uLiBhc3Nl
cnRfYXJyYXlfZXF1YWxzOiB2YWx1ZSBpcyB1bmRlZmluZWQsIGV4cGVjdGVkIGFycmF5Ci1GQUlM
IE1vdmluZyBleHBsaWNpdGx5IHNldCBlbGVtZW50cyBhY3Jvc3Mgc2hhZG93IERPTSBib3VuZGFy
aWVzLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAiYnV0dG9uRGVzY3JpcHRpb24x
IGJ1dHRvbkRlc2NyaXB0aW9uMiIgYnV0IGdvdCAob2JqZWN0KSBudWxsCi1GQUlMIE1vdmluZyBl
eHBsaWNpdGx5IHNldCBlbGVtZW50cyBhcm91bmQgd2l0aGluIHRoZSBzYW1lIHNjb3BlLCBhbmQg
cmVtb3ZpbmcgZnJvbSB0aGUgRE9NLiBhc3NlcnRfYXJyYXlfZXF1YWxzOiBhcmlhLWxhYmVsZWQg
YnkgaXMgc3VwcG9ydGVkIGJ5IElETCBnZXR0ZXIuIHZhbHVlIGlzIHVuZGVmaW5lZCwgZXhwZWN0
ZWQgYXJyYXkKK1BBU1MgYXJpYS1sYWJlbGxlZGJ5LgorUEFTUyBhcmlhLWNvbnRyb2xzLgorUEFT
UyBhcmlhLWRlc2NyaWJlZGJ5LgorUEFTUyBhcmlhLWZsb3d0by4KK1BBU1MgYXJpYS1vd25zLgor
UEFTUyBzaGFkb3cgRE9NIGJlaGF2aW91ciBmb3IgRnJvemVuQXJyYXkgZWxlbWVudCByZWZsZWN0
aW9uLgorUEFTUyBNb3ZpbmcgZXhwbGljaXRseSBzZXQgZWxlbWVudHMgYWNyb3NzIHNoYWRvdyBE
T00gYm91bmRhcmllcy4KK1BBU1MgTW92aW5nIGV4cGxpY2l0bHkgc2V0IGVsZW1lbnRzIGFyb3Vu
ZCB3aXRoaW4gdGhlIHNhbWUgc2NvcGUsIGFuZCByZW1vdmluZyBmcm9tIHRoZSBET00uCiBQQVNT
IFJlcGFyZW50aW5nLgogUEFTUyBBdHRhY2hpbmcgZWxlbWVudCByZWZlcmVuY2UgYmVmb3JlIGl0
J3MgaW5zZXJ0ZWQgaW50byB0aGUgRE9NLgogUEFTUyBDcm9zcy1kb2N1bWVudCByZWZlcmVuY2Vz
IGFuZCBtb3Zlcy4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459238</attachid>
            <date>2022-05-12 10:20:42 -0700</date>
            <delta_ts>2022-05-12 22:05:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239853-20220512192040.patch</filename>
            <type>text/plain</type>
            <size>31533</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjk0MDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTZjZWJhMDRiNWNiYzdj
MzA5ZmZmM2U4YzJiZTU1ZjY3YTVkNzM3YS4uZGI4ZDg4NjgwNTcyYThkY2I0ZTE5MmY4YTUyYTZk
MDg1N2MwYzY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIyLTA1LTEyICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIEFSSUEgcmVm
bGVjdGlvbiBmb3IgRnJvemVuQXJyYXk8RWxlbWVudD4gYXR0cmlidXRlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODUzCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS85Mjc5NzgzNj4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4K
KworICAgICAgICBJbXBsZW1lbnQgQVJJQSByZWZsZWN0aW9uIGZvciBhdHRyaWJ1dGVzIHRoYXQg
cmVmZXIgdG8gYSBsaXN0IG9mIEVsZW1lbnRzOgorICAgICAgICBhcmlhLWNvbnRyb2xzLCBhcmlh
LWRlc2NyaWJlZGJ5LCBhcmlhLWRldGFpbHMsIGFyaWEtZmxvd3RvLAorICAgICAgICBhcmlhLWxh
YmVsbGVkYnkgYW5kIGFyaWEtb3ducy4KKyAgICAgICAgRm9yIHRoZSBwcm9wZXJ0aWVzIG5hbWVz
IHRoaXMgcGF0Y2ggdXNlcyAiRWxlbWVudHMiIHN1ZmZpeDoKKyAgICAgICAgYXJpYUNvbnRyb2xz
RWxlbWVudHMsIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzLCBhcmlhRGVzY3JpYmVkQnlFbGVtZW50
cywKKyAgICAgICAgYXJpYUZsb3dUb0VsZW1lbnRzLCBhcmlhTGFiZWxsZWRCeUVsZW1lbnRzLCBh
cmlhT3duc0VsZW1lbnRzCisgICAgICAgIHRoaXMgbWF0Y2hlcyBDaHJvbWl1bSBpbXBsZW1lbnRh
dGlvbiBhbmQgQU9NIGV4cGxhaW5lciwgYnV0IG5vdCBBT00gc3BlYzoKKyAgICAgICAgaHR0cHM6
Ly9naXRodWIuY29tL3czYy9hcmlhL2lzc3Vlcy8xNzMyCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FyaWFBdHRyaWJ1dGVzLmlkbDogQWRkIHRoZSBuZXcgcHJvcGVydGllcyB1bmRlcgorICAg
ICAgICBBcmlhUmVmbGVjdGlvbkZvckVsZW1lbnRSZWZlcmVuY2VzRW5hYmxlZCBydW50aW1lIGZs
YWcuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtOgorICAgICAg
ICAoR2V0dGVyRXhwcmVzc2lvbik6IEFkZCBmdW5jdGlvbiBmb3IgRnJvemVuQXJyYXk8RWxlbWVu
dD4gcHJvcGVydGllcy4KKyAgICAgICAgKFNldHRlckV4cHJlc3Npb24pOiBEaXR0by4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDogQWRkIHRlc3RzLgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqRE9NQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHJHZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ial9yZWZsZWN0ZWRFbGVtZW50c0FycmF5QXR0clNldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDogQWRkIGV4YW1wbGUgYXR0cmli
dXRlLgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRWxl
bWVudHNBcnJheVJlZmxlY3Rpb25BdHRyaWJ1dGUpOiBOZXcgdXRpbGl0eSBtZXRob2QgdG8KKyAg
ICAgICAgaWRlbnRpZnkgdGhlIGF0dHJpYnV0ZXMgdGhhdCByZWZlciB0byBhIGxpc3Qgb2YgRWxl
bWVudHMuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKTogSW5j
bHVkZSBjaGVjayBmb3IgZWxlbWVudHMKKyAgICAgICAgYXJyYXkuCisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpnZXRFbGVtZW50c0FycmF5QXR0cmlidXRlIGNvbnN0KTogSW1wbGVtZW50IGdl
dHRlci4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEVsZW1lbnRzQXJyYXlBdHRyaWJ1
dGUpOiBJbXBsZW1lbnQgc2V0dGVyLgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6IFJlbW92ZSBG
SVhNRSBpbiBFeHBsaWNpdGx5U2V0QXR0ckVsZW1lbnRzTWFwIGFzIG5vdworICAgICAgICBpdCBz
dG9yZXMgbW9yZSB0aGFuIG9uZSBlbGVtZW50LiBBZGQgaGVhZGVycyBmb3IgZ2V0dGVyIGFuZCBz
ZXR0ZXIuCisKIDIwMjItMDUtMTEgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV1BFXSBVbnJldmlld2VkLCBidWlsZCBmaXggYWZ0ZXIgcjI5MzgxNgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BcmlhQXR0cmlidXRlcy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FyaWFBdHRyaWJ1dGVzLmlkbAppbmRl
eCAxMmExNjg1ZTFhMzExMmQ1OWFmMmVmMmNiYzM3OTNkZGEwZTU3OGIxLi41NDAyNmVhZjc2MjQ5
MDA0NTliMGY4MTQwM2RiNDg2YzAwMzJmZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FyaWFBdHRyaWJ1dGVzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FyaWFBdHRyaWJ1dGVzLmlkbApAQCAtMzMsMjEgKzMzLDI3IEBAIGludGVyZmFj
ZSBtaXhpbiBBcmlhQXR0cmlidXRlcyB7CiAgICAgW1JlZmxlY3Q9YXJpYV9jb2xjb3VudF0gICAg
ICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhQ29sQ291bnQ7CiAgICAgW1JlZmxlY3Q9YXJp
YV9jb2xpbmRleF0gICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhQ29sSW5kZXg7CiAg
ICAgW1JlZmxlY3Q9YXJpYV9jb2xzcGFuXSAgICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBh
cmlhQ29sU3BhbjsKKyAgICBbUmVmbGVjdD1hcmlhX2NvbnRyb2xzLCBFbmFibGVkQnlTZXR0aW5n
PUFyaWFSZWZsZWN0aW9uRm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVkXSBhdHRyaWJ1dGUgRnJv
emVuQXJyYXk8RWxlbWVudD4/IGFyaWFDb250cm9sc0VsZW1lbnRzOwogICAgIFtSZWZsZWN0PWFy
aWFfY3VycmVudF0gICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYUN1cnJlbnQ7Cisg
ICAgW1JlZmxlY3Q9YXJpYV9kZXNjcmliZWRieSwgRW5hYmxlZEJ5U2V0dGluZz1BcmlhUmVmbGVj
dGlvbkZvckVsZW1lbnRSZWZlcmVuY2VzRW5hYmxlZF0gYXR0cmlidXRlIEZyb3plbkFycmF5PEVs
ZW1lbnQ+PyBhcmlhRGVzY3JpYmVkQnlFbGVtZW50czsKKyAgICBbUmVmbGVjdD1hcmlhX2RldGFp
bHMsIEVuYWJsZWRCeVNldHRpbmc9QXJpYVJlZmxlY3Rpb25Gb3JFbGVtZW50UmVmZXJlbmNlc0Vu
YWJsZWRdIGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxFbGVtZW50Pj8gYXJpYURldGFpbHNFbGVtZW50
czsKICAgICBbUmVmbGVjdD1hcmlhX2Rpc2FibGVkXSAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJp
bmc/IGFyaWFEaXNhYmxlZDsKICAgICBbUmVmbGVjdD1hcmlhX2Vycm9ybWVzc2FnZSwgRW5hYmxl
ZEJ5U2V0dGluZz1BcmlhUmVmbGVjdGlvbkZvckVsZW1lbnRSZWZlcmVuY2VzRW5hYmxlZF0gYXR0
cmlidXRlIEVsZW1lbnQ/IGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50OwogICAgIFtSZWZsZWN0PWFy
aWFfZXhwYW5kZWRdICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYUV4cGFuZGVkOwor
ICAgIFtSZWZsZWN0PWFyaWFfZmxvd3RvLCBFbmFibGVkQnlTZXR0aW5nPUFyaWFSZWZsZWN0aW9u
Rm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVkXSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8RWxlbWVu
dD4/IGFyaWFGbG93VG9FbGVtZW50czsKICAgICBbUmVmbGVjdD1hcmlhX2hhc3BvcHVwXSAgICAg
ICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IGFyaWFIYXNQb3B1cDsKICAgICBbUmVmbGVjdD1hcmlh
X2hpZGRlbl0gICAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IGFyaWFIaWRkZW47CiAgICAg
W1JlZmxlY3Q9YXJpYV9pbnZhbGlkXSAgICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlh
SW52YWxpZDsKICAgICBbUmVmbGVjdD1hcmlhX2tleXNob3J0Y3V0c10gICAgIGF0dHJpYnV0ZSBE
T01TdHJpbmc/IGFyaWFLZXlTaG9ydGN1dHM7CiAgICAgW1JlZmxlY3Q9YXJpYV9sYWJlbF0gICAg
ICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhTGFiZWw7CisgICAgW1JlZmxlY3Q9YXJp
YV9sYWJlbGxlZGJ5LCBFbmFibGVkQnlTZXR0aW5nPUFyaWFSZWZsZWN0aW9uRm9yRWxlbWVudFJl
ZmVyZW5jZXNFbmFibGVkXSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8RWxlbWVudD4/IGFyaWFMYWJl
bGxlZEJ5RWxlbWVudHM7CiAgICAgW1JlZmxlY3Q9YXJpYV9sZXZlbF0gICAgICAgICAgICBhdHRy
aWJ1dGUgRE9NU3RyaW5nPyBhcmlhTGV2ZWw7CiAgICAgW1JlZmxlY3Q9YXJpYV9saXZlXSAgICAg
ICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBhcmlhTGl2ZTsKICAgICBbUmVmbGVjdD1hcmlh
X21vZGFsXSAgICAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IGFyaWFNb2RhbDsKICAgICBb
UmVmbGVjdD1hcmlhX211bHRpbGluZV0gICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmc/IGFyaWFN
dWx0aUxpbmU7CiAgICAgW1JlZmxlY3Q9YXJpYV9tdWx0aXNlbGVjdGFibGVdICBhdHRyaWJ1dGUg
RE9NU3RyaW5nPyBhcmlhTXVsdGlTZWxlY3RhYmxlOwogICAgIFtSZWZsZWN0PWFyaWFfb3JpZW50
YXRpb25dICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYU9yaWVudGF0aW9uOworICAgIFtS
ZWZsZWN0PWFyaWFfb3ducywgRW5hYmxlZEJ5U2V0dGluZz1BcmlhUmVmbGVjdGlvbkZvckVsZW1l
bnRSZWZlcmVuY2VzRW5hYmxlZF0gYXR0cmlidXRlIEZyb3plbkFycmF5PEVsZW1lbnQ+PyBhcmlh
T3duc0VsZW1lbnRzOwogICAgIFtSZWZsZWN0PWFyaWFfcGxhY2Vob2xkZXJdICAgICAgYXR0cmli
dXRlIERPTVN0cmluZz8gYXJpYVBsYWNlaG9sZGVyOwogICAgIFtSZWZsZWN0PWFyaWFfcG9zaW5z
ZXRdICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYVBvc0luU2V0OwogICAgIFtSZWZs
ZWN0PWFyaWFfcHJlc3NlZF0gICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZz8gYXJpYVByZXNz
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3IucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Iu
cG0KaW5kZXggYjhkN2E0ZjBiYmZmOWQ4MWU0NTFmYTUyNTVmNGQzMDZjNzZjYzZlYi4uOWQ3ZTAx
YzU3OWUxNzE1NTFiYmNiOTkyNmE2Njc5ZWZmNGVlMTIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtMTExMCw2ICsxMTEwLDgg
QEAgc3ViIEdldHRlckV4cHJlc3Npb24KICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJnZXRVbnNp
Z25lZEludGVncmFsQXR0cmlidXRlIjsKICAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlwZS0+bmFt
ZSBlcSAiRWxlbWVudCIpIHsKICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJnZXRFbGVtZW50QXR0
cmlidXRlIjsKKyAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlwZS0+bmFtZSBlcSAiRnJvemVuQXJy
YXkiICYmIHNjYWxhciBAeyRhdHRyaWJ1dGVUeXBlLT5zdWJ0eXBlc30gPT0gMSAmJiBAeyRhdHRy
aWJ1dGVUeXBlLT5zdWJ0eXBlc31bMF0tPm5hbWUgZXEgIkVsZW1lbnQiKSB7CisgICAgICAgICRm
dW5jdGlvbk5hbWUgPSAiZ2V0RWxlbWVudHNBcnJheUF0dHJpYnV0ZSI7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgaWYgKCRjb250ZW50QXR0cmlidXRlTmFtZSBlcSAiV2ViQ29yZTo6SFRNTE5hbWVz
OjppZEF0dHIiKSB7CiAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gImdldElkQXR0cmlidXRl
IjsKQEAgLTExNDksNiArMTE1MSw4IEBAIHN1YiBTZXR0ZXJFeHByZXNzaW9uCiAgICAgICAgICRm
dW5jdGlvbk5hbWUgPSAic2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZSI7CiAgICAgfSBlbHNp
ZiAoJGF0dHJpYnV0ZVR5cGUtPm5hbWUgZXEgIkVsZW1lbnQiKSB7CiAgICAgICAgICRmdW5jdGlv
bk5hbWUgPSAic2V0RWxlbWVudEF0dHJpYnV0ZSI7CisgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZVR5
cGUtPm5hbWUgZXEgIkZyb3plbkFycmF5IiAmJiBzY2FsYXIgQHskYXR0cmlidXRlVHlwZS0+c3Vi
dHlwZXN9ID09IDEgJiYgQHskYXR0cmlidXRlVHlwZS0+c3VidHlwZXN9WzBdLT5uYW1lIGVxICJF
bGVtZW50IikgeworICAgICAgICAkZnVuY3Rpb25OYW1lID0gInNldEVsZW1lbnRzQXJyYXlBdHRy
aWJ1dGUiOwogICAgIH0gZWxzaWYgKCRnZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCRhdHRy
aWJ1dGVUeXBlKSkgewogICAgICAgICAkZnVuY3Rpb25OYW1lID0gInNldEF0dHJpYnV0ZSI7CiAg
ICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggMjViNWVhYzYwZDMxM2U4Mjk2OWZhNTYxOTIzODk0
MzJjYjc2M2VhMS4uYmIwYjAzNmE0NzYxOGY3NTMzNGYwZGQ3ZTk3OWMzYTU5ZDMzNDIxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAKQEAgLTE4MDUsNiArMTgwNSw4IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzVGVzdE9ial9yZWZsZWN0ZWRCb29sZWFuQXR0cik7CiBzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkQm9vbGVhbkF0dHIpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3JlZmxlY3RlZEVsZW1lbnRB
dHRyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial9yZWZs
ZWN0ZWRFbGVtZW50QXR0cik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHIpOworc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX3JlZmxlY3RlZEVsZW1lbnRzQXJyYXlBdHRyKTsKIHN0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial9yZWZsZWN0ZWRVUkxBdHRy
KTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial9yZWZsZWN0
ZWRVUkxBdHRyKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial9y
ZWZsZWN0ZWRVU1ZVUkxBdHRyKTsKQEAgLTIxNzgsNiArMjE4MCw3IEBAIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJy
ZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqX3JlZmxlY3RlZFVuc2lnbmVkSW50
ZWdyYWxBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0T2JqX3JlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKSB9IH0s
CiAgICAgeyAicmVmbGVjdGVkQm9vbGVhbkF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9yZWZsZWN0ZWRCb29sZWFuQXR0
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdE9ial9yZWZsZWN0ZWRCb29sZWFuQXR0cikgfSB9LAogICAgIHsgInJlZmxlY3Rl
ZEVsZW1lbnRBdHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRl
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVudEF0dHIpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcmVm
bGVjdGVkRWxlbWVudEF0dHIpIH0gfSwKKyAgICB7ICJyZWZsZWN0ZWRFbGVtZW50c0FycmF5QXR0
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0T2JqX3JlZmxlY3RlZEVsZW1lbnRzQXJyYXlBdHRyKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX3JlZmxlY3Rl
ZEVsZW1lbnRzQXJyYXlBdHRyKSB9IH0sCiAgICAgeyAicmVmbGVjdGVkVVJMQXR0ciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2Jq
X3JlZmxlY3RlZFVSTEF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkVVJMQXR0cikgfSB9LAogICAg
IHsgInJlZmxlY3RlZFVTVlVSTEF0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
T01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9yZWZsZWN0ZWRVU1ZVUkxBdHRyKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0T2JqX3JlZmxlY3RlZFVTVlVSTEF0dHIpIH0gfSwKICAgICB7ICJyZWZsZWN0ZWRTdHJpbmdB
dHRyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3Rv
bUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RPYmpfcmVmbGVjdGVkU3RyaW5nQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9yZWZsZWN0ZWRTdHJp
bmdBdHRyKSB9IH0sCkBAIC0zOTUyLDYgKzM5NTUsMzcgQEAgSlNDX0RFRklORV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdE9ial9yZWZsZWN0ZWRFbGVtZW50QXR0ciwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXgKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpf
cmVmbGVjdGVkRWxlbWVudEF0dHJTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHJHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09iamVjdCkKK3sKKyAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMRnJvemVuQXJyYXk8SURMSW50ZXJmYWNlPEVsZW1lbnQ+Pj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuZ2V0
RWxlbWVudHNBcnJheUF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGVsZW1l
bnRzYXJyYXlhdHRyQXR0cikpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0
cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8
anNUZXN0T2JqX3JlZmxlY3RlZEVsZW1lbnRzQXJyYXlBdHRyR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRy
aWJ1dGVOYW1lKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ial9yZWZsZWN0
ZWRFbGVtZW50c0FycmF5QXR0clNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEZyb3plbkFy
cmF5PElETEludGVyZmFjZTxFbGVtZW50Pj4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKKyAgICBpbnZva2VG
dW5jdG9yUHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeShsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRFbGVtZW50c0FycmF5
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkZWxlbWVudHNhcnJheWF0dHJB
dHRyLCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK0pTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVu
dHNBcnJheUF0dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFByb3BlcnR5
TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9i
aj46OnNldDxzZXRKU1Rlc3RPYmpfcmVmbGVjdGVkRWxlbWVudHNBcnJheUF0dHJTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgYXR0cmlidXRlTmFt
ZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpfcmVmbGVjdGVkVVJMQXR0
ckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0
aGlzT2JqZWN0KQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGwKaW5kZXggN2U5ODJkNTE2MjRiNGNmZDhiODZlZDUxNDc3ZjcxN2IxYmJmZTVjNy4uMjgw
NzkyOThhMDI1YzFiMjMwMTUxYTM2ZDkzNTdjZjg4ZGNiNTc3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMTA1LDYgKzEwNSw3
IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3ciIH07CiAgICAgW1Jl
ZmxlY3RdIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxB
dHRyOwogICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgYm9vbGVhbiByZWZsZWN0ZWRCb29sZWFuQXR0
cjsKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIEVsZW1lbnQgcmVmbGVjdGVkRWxlbWVudEF0dHI7
CisgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBGcm96ZW5BcnJheTxFbGVtZW50PiByZWZsZWN0ZWRF
bGVtZW50c0FycmF5QXR0cjsKICAgICBbUmVmbGVjdCwgVVJMXSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHJlZmxlY3RlZFVSTEF0dHI7CiAgICAgW1JlZmxlY3QsIFVSTF0gYXR0cmlidXRlIFVTVlN0cmlu
ZyByZWZsZWN0ZWRVU1ZVUkxBdHRyOwogICAgIFtSZWZsZWN0PWN1c3RvbUNvbnRlbnRTdHJpbmdB
dHRyXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJlZmxlY3RlZFN0cmluZ0F0dHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKaW5kZXggNjZhM2Q4NmQ2OWNhZjdjNzM2NTA2NDMwMWU1OTExYzA0Mzg2NmM4NS4u
YzM3ODhmMTE2OGQxOGU1NjQxOWZiZTg3N2MyNDYyNjQ2OGE3OGM1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtMTkwNiw2ICsxOTA2LDE2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0VsZW1l
bnRSZWZsZWN0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAgICAgcmV0
dXJuIG5hbWUgPT0gSFRNTE5hbWVzOjphcmlhX2FjdGl2ZWRlc2NlbmRhbnRBdHRyIHx8IG5hbWUg
PT0gSFRNTE5hbWVzOjphcmlhX2Vycm9ybWVzc2FnZUF0dHI7CiB9CiAKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBpc0VsZW1lbnRzQXJyYXlSZWZsZWN0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUpCit7CisgICAgcmV0dXJuIG5hbWUgPT0gSFRNTE5hbWVzOjphcmlhX2NvbnRyb2xz
QXR0cgorICAgICAgICB8fCBuYW1lID09IEhUTUxOYW1lczo6YXJpYV9kZXNjcmliZWRieUF0dHIK
KyAgICAgICAgfHwgbmFtZSA9PSBIVE1MTmFtZXM6OmFyaWFfZGV0YWlsc0F0dHIKKyAgICAgICAg
fHwgbmFtZSA9PSBIVE1MTmFtZXM6OmFyaWFfZmxvd3RvQXR0cgorICAgICAgICB8fCBuYW1lID09
IEhUTUxOYW1lczo6YXJpYV9sYWJlbGxlZGJ5QXR0cgorICAgICAgICB8fCBuYW1lID09IEhUTUxO
YW1lczo6YXJpYV9vd25zQXR0cjsKK30KKwogdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVlLCBj
b25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uKQog
ewogICAgIGJvb2wgdmFsdWVJc1NhbWVBc0JlZm9yZSA9IG9sZFZhbHVlID09IG5ld1ZhbHVlOwpA
QCAtMTk0Miw3ICsxOTUyLDcgQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFYKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIGlmIChuYW1lID09IEhUTUxOYW1lczo6cGFydEF0dHIpCiAgICAg
ICAgICAgICBwYXJ0QXR0cmlidXRlQ2hhbmdlZChuZXdWYWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYg
KGRvY3VtZW50KCkuc2V0dGluZ3MoKS5hcmlhUmVmbGVjdGlvbkZvckVsZW1lbnRSZWZlcmVuY2Vz
RW5hYmxlZCgpICYmIGlzRWxlbWVudFJlZmxlY3Rpb25BdHRyaWJ1dGUobmFtZSkpIHsKKyAgICAg
ICAgZWxzZSBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmFyaWFSZWZsZWN0aW9uRm9yRWxlbWVu
dFJlZmVyZW5jZXNFbmFibGVkKCkgJiYgKGlzRWxlbWVudFJlZmxlY3Rpb25BdHRyaWJ1dGUobmFt
ZSkgfHwgaXNFbGVtZW50c0FycmF5UmVmbGVjdGlvbkF0dHJpYnV0ZShuYW1lKSkpIHsKICAgICAg
ICAgICAgIGlmIChhdXRvKiBtYXAgPSBleHBsaWNpdGx5U2V0QXR0ckVsZW1lbnRzTWFwSWZFeGlz
dHMoKSkKICAgICAgICAgICAgICAgICBtYXAtPnJlbW92ZShuYW1lKTsKICAgICAgICAgfSBlbHNl
IGlmIChuYW1lID09IEhUTUxOYW1lczo6ZXhwb3J0cGFydHNBdHRyKSB7CkBAIC0yMDIzLDYgKzIw
MzMsNzAgQEAgdm9pZCBFbGVtZW50OjpzZXRFbGVtZW50QXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEVsZW1lbnQqIGUKICAgICBleHBsaWNpdGx5U2V0QXR0ckVs
ZW1lbnRzTWFwKCkuc2V0KGF0dHJpYnV0ZU5hbWUsIFZlY3RvcjxXZWFrUHRyPEVsZW1lbnQ+PiB7
IGVsZW1lbnQgfSk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4+
IEVsZW1lbnQ6OmdldEVsZW1lbnRzQXJyYXlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoZG9jdW1lbnQoKS5zZXR0aW5ncygp
LmFyaWFSZWZsZWN0aW9uRm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVkKCkpOworICAgIEFTU0VS
VChpc0VsZW1lbnRzQXJyYXlSZWZsZWN0aW9uQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKTsKKwor
ICAgIGlmIChhdXRvKiBtYXAgPSBleHBsaWNpdGx5U2V0QXR0ckVsZW1lbnRzTWFwSWZFeGlzdHMo
KSkgeworICAgICAgICBpZiAoYXV0byBpdCA9IG1hcC0+ZmluZChhdHRyaWJ1dGVOYW1lKTsgaXQg
IT0gbWFwLT5lbmQoKSkgeworICAgICAgICAgICAgcmV0dXJuIGNvbXBhY3RNYXAoaXQtPnZhbHVl
LCBbJl0oYXV0byYgZWxlbWVudCkgLT4gc3RkOjpvcHRpb25hbDxSZWZQdHI8RWxlbWVudD4+IHsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCAmJiBpc0Rlc2NlbmRhbnRPclNoYWRvd0Rlc2Nl
bmRhbnRPZihlbGVtZW50LT5yb290Tm9kZSgpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGVsZW1lbnQuZ2V0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorCisgICAgYXV0byBhdHRyID0gYXR0cmli
dXRlTmFtZTsKKyAgICBpZiAoYXR0ciA9PSBIVE1MTmFtZXM6OmFyaWFfbGFiZWxsZWRieUF0dHIg
JiYgIWhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OmFyaWFfbGFiZWxsZWRieUF0dHIpICYmIGhhc0F0
dHJpYnV0ZShIVE1MTmFtZXM6OmFyaWFfbGFiZWxlZGJ5QXR0cikpCisgICAgICAgIGF0dHIgPSBI
VE1MTmFtZXM6OmFyaWFfbGFiZWxlZGJ5QXR0cjsKKworICAgIGlmICghaGFzQXR0cmlidXRlKGF0
dHIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgU3BhY2VTcGxpdFN0cmlu
ZyBpZHMoZ2V0QXR0cmlidXRlKGF0dHIpLCBTcGFjZVNwbGl0U3RyaW5nOjpTaG91bGRGb2xkQ2Fz
ZTo6Tm8pOworICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+IGVsZW1lbnRzOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBpZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGF1dG8q
IGVsZW1lbnQgPSB0cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChpZHNbaV0pKQorICAgICAgICAg
ICAgZWxlbWVudHMuYXBwZW5kKGVsZW1lbnQpOworICAgIH0KKyAgICByZXR1cm4gZWxlbWVudHM7
Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0RWxlbWVudHNBcnJheUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8RWxl
bWVudD4+PiYmIGVsZW1lbnRzKQoreworICAgIEFTU0VSVChkb2N1bWVudCgpLnNldHRpbmdzKCku
YXJpYVJlZmxlY3Rpb25Gb3JFbGVtZW50UmVmZXJlbmNlc0VuYWJsZWQoKSk7CisgICAgQVNTRVJU
KGlzRWxlbWVudHNBcnJheVJlZmxlY3Rpb25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkpOworCisg
ICAgaWYgKCFlbGVtZW50cykgeworICAgICAgICBpZiAoYXV0byogbWFwID0gZXhwbGljaXRseVNl
dEF0dHJFbGVtZW50c01hcElmRXhpc3RzKCkpCisgICAgICAgICAgICBtYXAtPnJlbW92ZShhdHRy
aWJ1dGVOYW1lKTsKKyAgICAgICAgcmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9yPFdlYWtQdHI8RWxlbWVudD4+IG5ld0Vs
ZW1lbnRzOworICAgIG5ld0VsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZWxlbWVudHMt
PnNpemUoKSk7CisgICAgU3RyaW5nQnVpbGRlciB2YWx1ZTsKKyAgICBmb3IgKGF1dG8gZWxlbWVu
dCA6IGVsZW1lbnRzLnZhbHVlKCkpIHsKKyAgICAgICAgbmV3RWxlbWVudHMudW5jaGVja2VkQXBw
ZW5kKGVsZW1lbnQpOworICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpICYmIG5ld0VsZW1lbnRz
LnNpemUoKSA+IDEpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIGlkID0g
ZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsKKyAgICAgICAgaWYgKCFpZC5pc051bGwoKSAmJiAm
cm9vdE5vZGUoKSA9PSAmZWxlbWVudC0+cm9vdE5vZGUoKSAmJiB0cmVlU2NvcGUoKS5nZXRFbGVt
ZW50QnlJZChpZCkgPT0gZWxlbWVudCkgeworICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0VtcHR5
KCkpCisgICAgICAgICAgICAgICAgdmFsdWUuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICB2YWx1
ZS5hcHBlbmQoaWQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHZhbHVlLmNsZWFyKCk7
CisgICAgfQorICAgIHNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCB2YWx1ZS50b0F0b21TdHJp
bmcoKSk7CisKKyAgICBleHBsaWNpdGx5U2V0QXR0ckVsZW1lbnRzTWFwKCkuc2V0KGF0dHJpYnV0
ZU5hbWUsIFdURk1vdmUobmV3RWxlbWVudHMpKTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+CiBzdGF0aWMgaW5saW5lIGJvb2wgaXNOb25FbXB0eVRva2VuTGlzdChjb25z
dCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAppbmRleCBiMjdkZThkODcyZWM1ODA5OTQ0ZTgxYjY1MGIxYzllNDljNjM3MThiLi45
MzIwNTc3NGI5NTY0YzcxMTc5YzRjOWNkMzdjNWVlZjBlODY2ODQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKQEAgLTkzLDggKzkzLDYgQEAgc3RydWN0IFNjcm9sbFRvT3B0aW9uczsKIHN0cnVjdCBTZWN1
cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50SW5pdDsKIHN0cnVjdCBTaGFkb3dSb290SW5pdDsKIAot
Ly8gRklYTUU6IFRoaXMgb25seSBzdG9yZXMgb25lIEVsZW1lbnQgaW4gdGhlIFZlY3RvciByaWdo
dCBub3csIHRob3VnaCB0aGlzIHdpbGwgY2hhbmdlCi0vLyBvbmNlIHJlZmxlY3Rpb24gZm9yIEZy
b3plbkFycmF5PEVsZW1lbnQ+IGlzIGltcGxlbWVudGVkIGluIGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzIzOTg1My4KIHVzaW5nIEV4cGxpY2l0bHlTZXRBdHRyRWxlbWVudHNNYXAgPSBIYXNoTWFwPFF1
YWxpZmllZE5hbWUsIFZlY3RvcjxXZWFrUHRyPEVsZW1lbnQ+Pj47CiAKIG5hbWVzcGFjZSBTdHls
ZSB7CkBAIC0xMjcsNiArMTI1LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCB1bnNpZ25lZCB2YWx1ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRWxlbWVudCogZ2V0
RWxlbWVudEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEVsZW1lbnRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgRWxlbWVudCogdmFsdWUpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4+IGdldEVsZW1lbnRz
QXJyYXlBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFbGVtZW50c0FycmF5QXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZlB0
cjxFbGVtZW50Pj4+JiYgdmFsdWUpOwogCiAgICAgLy8gQ2FsbCB0aGlzIHRvIGdldCB0aGUgdmFs
dWUgb2YgYW4gYXR0cmlidXRlIHRoYXQgaXMga25vd24gbm90IHRvIGJlIHRoZSBzdHlsZQogICAg
IC8vIGF0dHJpYnV0ZSBvciBvbmUgb2YgdGhlIFNWRyBhbmltYXRhYmxlIGF0dHJpYnV0ZXMuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMDlhZGNjZWY1YWY1ZmYyMzEwNjUxYWY2YjVmZGRjYzhhODFmZDRkZC4uYjIxYzRhODZm
NTZmMzIwMGVjZDE3NGVkZGFmMzQ3NWUxNDkwZjZhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDIyLTA1LTEyICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisg
ICAgICAgIEFSSUEgcmVmbGVjdGlvbiBmb3IgRnJvemVuQXJyYXk8RWxlbWVudD4gYXR0cmlidXRl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODUz
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85Mjc5NzgzNj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBDaHJpcyBEdW1lei4KKworICAgICAgICBVcGRhdGUgdGVzdCBzbyBpdCBpZGVudGlmaWVzIHRo
ZSBGcm96ZW5BcnJheTxFbGVtZW50PiBhdHRyaWJ1dGVzLgorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BUklBLXJlZmxlY3Rpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQVJJQS1yZWZsZWN0aW9uLmh0bWw6CisKIDIwMjItMDUtMTEgIEpvaG4gQ3VubmluZ2hhbSAg
PGpvaG5jdW5uaW5naGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIHdlYnJ0
Yy92cDgtdGhlbi1oMjY0LWdwdS1wcm9jZXNzLWNyYXNoLmh0bWwgZmxha3kgZmFpbHMgYWZ0ZXIg
dHVybmluZyBET00gaW4gR1BVUCBvbiBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZwppbmRleCAyOTMzZWYzYmIxOTI0ZDVkNzdmZjdmOTI2YWQ5NjYwODA3Y2VjZTg1Li5lOTUw
OTZiN2NjZDI1MzZkNGNkZDk2YmRlMzg5MWQ4YTVlMzJmODc5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wNS0xMiAgTWFudWVsIFJlZ28gQ2Fz
YXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KKworICAgICAgICBBUklBIHJlZmxlY3Rpb24gZm9y
IEZyb3plbkFycmF5PEVsZW1lbnQ+IGF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTg1MworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
OTI3OTc4MzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAg
VXBkYXRlIGV4cGVjdGF0aW9ucyB3aXRoIHRoZSBuZXcgUEFTUyBsaW5lcy4KKworICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvYXJpYS1lbGVtZW50LXJlZmxlY3Rpb24udGVu
dGF0aXZlLWV4cGVjdGVkLnR4dDoKKwogMjAyMi0wNS0xMiAgVGltIE5ndXllbiAgPG50aW1AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlLWltcG9ydCBjc3Mvc2VsZWN0b3JzIFdQVCBmcm9tIHJldmlz
aW9uIDQ2NTNlOTEyODc0MmUyYzI2MDllNzZmMDRmNDA4NGNkYzEwZmZlYWQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvQVJJQS1yZWZsZWN0aW9uLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvQVJJQS1yZWZsZWN0aW9uLWV4cGVjdGVkLnR4dApp
bmRleCBlM2ZlZWMzMGM0YzdhOWVhZmFkMWE5NGRlZGVlYzYzZjg4YmI4MGU3Li4zYzg0YTE2MDcx
NDAzYjA4ZWYyODczN2M3Y2MxMmRmNGZiZTQ5ZDYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L0FSSUEtcmVmbGVjdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9BUklBLXJlZmxlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC02Nyw2ICs2
NywxMyBAQCBQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGN1cnJlbnRBdHRyaWJ1dGUpIGlzIGRh
dGFBdHRyaWJ1dGUKIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWNvbHNwYW4iLCBvdGhlckRh
dGEpOwogUEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgb3RoZXJEYXRhUHJvcGVydHkK
IAorVGVzdCBhcmlhQ29udHJvbHNFbGVtZW50cyA8IC0gPiBhcmlhLWNvbnRyb2xzCitQQVNTIGVs
ZW1lbnRbY3VycmVudFByb3BlcnR5XSBpcyBudWxsCitQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRl
KGN1cnJlbnRBdHRyaWJ1dGUpIGlzIG51bGwKK1BBU1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3Vy
cmVudEF0dHJpYnV0ZSkgaXMgZGF0YUF0dHJpYnV0ZQorZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFy
aWEtY29udHJvbHMiLCBvdGhlckRhdGEpOworUEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0g
aXMgb3RoZXJEYXRhUHJvcGVydHkKKwogVGVzdCBhcmlhQ3VycmVudCA8IC0gPiBhcmlhLWN1cnJl
bnQKIFBBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG51bGwKIFBBU1MgZWxlbWVudC5n
ZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgbnVsbApAQCAtNzQsNiArODEsMjAgQEAg
UEFTUyBlbGVtZW50LmdldEF0dHJpYnV0ZShjdXJyZW50QXR0cmlidXRlKSBpcyBkYXRhQXR0cmli
dXRlCiBlbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1jdXJyZW50Iiwgb3RoZXJEYXRhKTsKIFBB
U1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG90aGVyRGF0YVByb3BlcnR5CiAKK1Rlc3Qg
YXJpYURlc2NyaWJlZEJ5RWxlbWVudHMgPCAtID4gYXJpYS1kZXNjcmliZWRieQorUEFTUyBlbGVt
ZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgbnVsbAorUEFTUyBlbGVtZW50LmdldEF0dHJpYnV0ZShj
dXJyZW50QXR0cmlidXRlKSBpcyBudWxsCitQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGN1cnJl
bnRBdHRyaWJ1dGUpIGlzIGRhdGFBdHRyaWJ1dGUKK2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlh
LWRlc2NyaWJlZGJ5Iiwgb3RoZXJEYXRhKTsKK1BBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHld
IGlzIG90aGVyRGF0YVByb3BlcnR5CisKK1Rlc3QgYXJpYURldGFpbHNFbGVtZW50cyA8IC0gPiBh
cmlhLWRldGFpbHMKK1BBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG51bGwKK1BBU1Mg
ZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgbnVsbAorUEFTUyBlbGVt
ZW50LmdldEF0dHJpYnV0ZShjdXJyZW50QXR0cmlidXRlKSBpcyBkYXRhQXR0cmlidXRlCitlbGVt
ZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1kZXRhaWxzIiwgb3RoZXJEYXRhKTsKK1BBU1MgZWxlbWVu
dFtjdXJyZW50UHJvcGVydHldIGlzIG90aGVyRGF0YVByb3BlcnR5CisKIFRlc3QgYXJpYURpc2Fi
bGVkIDwgLSA+IGFyaWEtZGlzYWJsZWQKIFBBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlz
IG51bGwKIFBBU1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgbnVs
bApAQCAtOTUsNiArMTE2LDEzIEBAIFBBU1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0
dHJpYnV0ZSkgaXMgZGF0YUF0dHJpYnV0ZQogZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtZXhw
YW5kZWQiLCBvdGhlckRhdGEpOwogUEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgb3Ro
ZXJEYXRhUHJvcGVydHkKIAorVGVzdCBhcmlhRmxvd1RvRWxlbWVudHMgPCAtID4gYXJpYS1mbG93
dG8KK1BBU1MgZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG51bGwKK1BBU1MgZWxlbWVudC5n
ZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgbnVsbAorUEFTUyBlbGVtZW50LmdldEF0
dHJpYnV0ZShjdXJyZW50QXR0cmlidXRlKSBpcyBkYXRhQXR0cmlidXRlCitlbGVtZW50LnNldEF0
dHJpYnV0ZSgiYXJpYS1mbG93dG8iLCBvdGhlckRhdGEpOworUEFTUyBlbGVtZW50W2N1cnJlbnRQ
cm9wZXJ0eV0gaXMgb3RoZXJEYXRhUHJvcGVydHkKKwogVGVzdCBhcmlhSGFzUG9wdXAgPCAtID4g
YXJpYS1oYXNwb3B1cAogUEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgbnVsbAogUEFT
UyBlbGVtZW50LmdldEF0dHJpYnV0ZShjdXJyZW50QXR0cmlidXRlKSBpcyBudWxsCkBAIC0xMzAs
NiArMTU4LDEzIEBAIFBBU1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkg
aXMgZGF0YUF0dHJpYnV0ZQogZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBvdGhl
ckRhdGEpOwogUEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgb3RoZXJEYXRhUHJvcGVy
dHkKIAorVGVzdCBhcmlhTGFiZWxsZWRCeUVsZW1lbnRzIDwgLSA+IGFyaWEtbGFiZWxsZWRieQor
UEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgbnVsbAorUEFTUyBlbGVtZW50LmdldEF0
dHJpYnV0ZShjdXJyZW50QXR0cmlidXRlKSBpcyBudWxsCitQQVNTIGVsZW1lbnQuZ2V0QXR0cmli
dXRlKGN1cnJlbnRBdHRyaWJ1dGUpIGlzIGRhdGFBdHRyaWJ1dGUKK2VsZW1lbnQuc2V0QXR0cmli
dXRlKCJhcmlhLWxhYmVsbGVkYnkiLCBvdGhlckRhdGEpOworUEFTUyBlbGVtZW50W2N1cnJlbnRQ
cm9wZXJ0eV0gaXMgb3RoZXJEYXRhUHJvcGVydHkKKwogVGVzdCBhcmlhTGV2ZWwgPCAtID4gYXJp
YS1sZXZlbAogUEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgbnVsbAogUEFTUyBlbGVt
ZW50LmdldEF0dHJpYnV0ZShjdXJyZW50QXR0cmlidXRlKSBpcyBudWxsCkBAIC0xNzIsNiArMjA3
LDEzIEBAIFBBU1MgZWxlbWVudC5nZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSkgaXMgZGF0
YUF0dHJpYnV0ZQogZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtb3JpZW50YXRpb24iLCBvdGhl
ckRhdGEpOwogUEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgb3RoZXJEYXRhUHJvcGVy
dHkKIAorVGVzdCBhcmlhT3duc0VsZW1lbnRzIDwgLSA+IGFyaWEtb3ducworUEFTUyBlbGVtZW50
W2N1cnJlbnRQcm9wZXJ0eV0gaXMgbnVsbAorUEFTUyBlbGVtZW50LmdldEF0dHJpYnV0ZShjdXJy
ZW50QXR0cmlidXRlKSBpcyBudWxsCitQQVNTIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGN1cnJlbnRB
dHRyaWJ1dGUpIGlzIGRhdGFBdHRyaWJ1dGUKK2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLW93
bnMiLCBvdGhlckRhdGEpOworUEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgb3RoZXJE
YXRhUHJvcGVydHkKKwogVGVzdCBhcmlhUGxhY2Vob2xkZXIgPCAtID4gYXJpYS1wbGFjZWhvbGRl
cgogUEFTUyBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gaXMgbnVsbAogUEFTUyBlbGVtZW50Lmdl
dEF0dHJpYnV0ZShjdXJyZW50QXR0cmlidXRlKSBpcyBudWxsCkBAIC0yOTIsNyArMzM0LDcgQEAg
ZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWV0ZXh0Iiwgb3RoZXJEYXRhKTsKIFBBU1Mg
ZWxlbWVudFtjdXJyZW50UHJvcGVydHldIGlzIG90aGVyRGF0YVByb3BlcnR5CiAKIAotUEFTUyBj
b3VudCBpcyA0MAorUEFTUyBjb3VudCBpcyA0NgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L0FSSUEtcmVmbGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9BUklB
LXJlZmxlY3Rpb24uaHRtbAppbmRleCA5M2E5YjdhMTdmOWE0NGU0Y2QxMWJlY2E5NjlmMGNlNTc3
NjljZWVlLi42NDI4Y2VmNWEyZWI5MGFkYmMyZmMzMjNmOWVlNjdmNjhhZGM1YTJiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L0FSSUEtcmVmbGVjdGlvbi5odG1sCisrKyBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvQVJJQS1yZWZsZWN0aW9uLmh0bWwKQEAgLTcsNiAr
Nyw3IEBACiA8ZGl2IGlkPSJ0ZXN0IiBkYXRhPSJzb21lIGRhdGEiPgogICA8ZGl2IGlkPSJmaXJz
dENoaWxkIj48L2Rpdj4KICAgPGRpdiBpZD0ic2Vjb25kQ2hpbGQiPjwvZGl2PgorICA8ZGl2IGlk
PSJ0aGlyZENoaWxkIj48L2Rpdj4KIDwvZGl2PgogCiA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
QEAgLTMxLDEyICszMiw1OSBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAg
ZnVuY3Rpb24gaXNFbGVtZW50c0FycmF5UmVmbGVjdGlvblByb3BlcnR5KHByb3BlcnR5KSB7Cisg
ICAgICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICAgICAgICAgIGNhc2UgImFyaWFDb250cm9s
c0VsZW1lbnRzIjoKKyAgICAgICAgICAgIGNhc2UgImFyaWFEZXNjcmliZWRCeUVsZW1lbnRzIjoK
KyAgICAgICAgICAgIGNhc2UgImFyaWFEZXRhaWxzRWxlbWVudHMiOgorICAgICAgICAgICAgY2Fz
ZSAiYXJpYUZsb3dUb0VsZW1lbnRzIjoKKyAgICAgICAgICAgIGNhc2UgImFyaWFMYWJlbGxlZEJ5
RWxlbWVudHMiOgorICAgICAgICAgICAgY2FzZSAiYXJpYU93bnNFbGVtZW50cyI6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKwogICAgIGZ1bmN0aW9uIGNvbnZlcnRQcm9wZXJ0eVRvQXR0cmlidXRlKHByb3BlcnR5
KSB7CiAgICAgICAgIGlmIChpc0VsZW1lbnRSZWZsZWN0aW9uUHJvcGVydHkocHJvcGVydHkpKQog
ICAgICAgICAgIHByb3BlcnR5ID0gcHJvcGVydHkucmVwbGFjZSgiRWxlbWVudCIsICIiKTsKKyAg
ICAgICAgZWxzZSBpZiAoaXNFbGVtZW50c0FycmF5UmVmbGVjdGlvblByb3BlcnR5KHByb3BlcnR5
KSkKKyAgICAgICAgICBwcm9wZXJ0eSA9IHByb3BlcnR5LnJlcGxhY2UoIkVsZW1lbnRzIiwgIiIp
OwogICAgICAgICByZXR1cm4gcHJvcGVydHkucmVwbGFjZSgiYXJpYSIsICJhcmlhLSIpLnRvTG93
ZXJDYXNlKCk7CiAgICAgfQogCisgICAgZnVuY3Rpb24gZ2V0RGF0YVByb3BlcnR5KHByb3BlcnR5
KSB7CisgICAgICAgIGlmIChpc0VsZW1lbnRSZWZsZWN0aW9uUHJvcGVydHkocHJvcGVydHkpKQor
ICAgICAgICAgIHJldHVybiBmaXJzdENoaWxkOworICAgICAgICBlbHNlIGlmIChpc0VsZW1lbnRz
QXJyYXlSZWZsZWN0aW9uUHJvcGVydHkocHJvcGVydHkpKQorICAgICAgICAgIHJldHVybiBbZmly
c3RDaGlsZCwgc2Vjb25kQ2hpbGRdOworICAgICAgICByZXR1cm4gZGF0YTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBnZXREYXRhQXR0cmlidXRlKHByb3BlcnR5KSB7CisgICAgICAgIGlmIChpc0Vs
ZW1lbnRSZWZsZWN0aW9uUHJvcGVydHkocHJvcGVydHkpKQorICAgICAgICAgIHJldHVybiBmaXJz
dENoaWxkLmlkOworICAgICAgICBlbHNlIGlmIChpc0VsZW1lbnRzQXJyYXlSZWZsZWN0aW9uUHJv
cGVydHkocHJvcGVydHkpKQorICAgICAgICAgIHJldHVybiBmaXJzdENoaWxkLmlkICsgIiAiICsg
c2Vjb25kQ2hpbGQuaWQ7CisgICAgICAgIHJldHVybiBkYXRhOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGdldE90aGVyRGF0YVByb3BlcnR5KHByb3BlcnR5KSB7CisgICAgICAgIGlmIChpc0VsZW1l
bnRSZWZsZWN0aW9uUHJvcGVydHkocHJvcGVydHkpKQorICAgICAgICAgIHJldHVybiBzZWNvbmRD
aGlsZDsKKyAgICAgICAgZWxzZSBpZiAoaXNFbGVtZW50c0FycmF5UmVmbGVjdGlvblByb3BlcnR5
KHByb3BlcnR5KSkKKyAgICAgICAgICByZXR1cm4gW3RoaXJkQ2hpbGRdOworICAgICAgICByZXR1
cm4gb3RoZXJEYXRhOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldE90aGVyRGF0YUF0dHJpYnV0
ZShwcm9wZXJ0eSkgeworICAgICAgICBpZiAoaXNFbGVtZW50UmVmbGVjdGlvblByb3BlcnR5KHBy
b3BlcnR5KSkKKyAgICAgICAgICByZXR1cm4gc2Vjb25kQ2hpbGQuaWQ7CisgICAgICAgIGVsc2Ug
aWYgKGlzRWxlbWVudHNBcnJheVJlZmxlY3Rpb25Qcm9wZXJ0eShwcm9wZXJ0eSkpCisgICAgICAg
ICAgcmV0dXJuIHRoaXJkQ2hpbGQuaWQ7CisgICAgICAgIHJldHVybiBvdGhlckRhdGE7CisgICAg
fQorCiAgICAgZnVuY3Rpb24gdGVzdEVsZW1lbnQoKSB7CiAgICAgICAgIGN1cnJlbnRBdHRyaWJ1
dGUgPSBjb252ZXJ0UHJvcGVydHlUb0F0dHJpYnV0ZShjdXJyZW50UHJvcGVydHkpOwogCkBAIC00
NSwxNCArOTMsMTQgQEAKICAgICAgICAgc2hvdWxkQmVOdWxsKCJlbGVtZW50LmdldEF0dHJpYnV0
ZShjdXJyZW50QXR0cmlidXRlKSIpOwogCiAgICAgICAgIC8vIFNldCB0aGUgcHJvcGVydHkgdmFs
dWUKLSAgICAgICAgZGF0YVByb3BlcnR5ID0gaXNFbGVtZW50UmVmbGVjdGlvblByb3BlcnR5KGN1
cnJlbnRQcm9wZXJ0eSkgPyBmaXJzdENoaWxkIDogZGF0YTsKLSAgICAgICAgZGF0YUF0dHJpYnV0
ZSA9IGlzRWxlbWVudFJlZmxlY3Rpb25Qcm9wZXJ0eShjdXJyZW50UHJvcGVydHkpID8gZmlyc3RD
aGlsZC5pZCA6IGRhdGE7CisgICAgICAgIGRhdGFQcm9wZXJ0eSA9IGdldERhdGFQcm9wZXJ0eShj
dXJyZW50UHJvcGVydHkpOworICAgICAgICBkYXRhQXR0cmlidXRlID0gZ2V0RGF0YUF0dHJpYnV0
ZShjdXJyZW50UHJvcGVydHkpOwogICAgICAgICBlbGVtZW50W2N1cnJlbnRQcm9wZXJ0eV0gPSBk
YXRhUHJvcGVydHk7CiAgICAgICAgIHNob3VsZEJlKCJlbGVtZW50LmdldEF0dHJpYnV0ZShjdXJy
ZW50QXR0cmlidXRlKSIsICJkYXRhQXR0cmlidXRlIik7CiAKICAgICAgICAgLy8gU2V0IHRoZSBh
dHRyaWJ1dGUgdmFsdWUKLSAgICAgICAgb3RoZXJEYXRhUHJvcGVydHkgPSBpc0VsZW1lbnRSZWZs
ZWN0aW9uUHJvcGVydHkoY3VycmVudFByb3BlcnR5KSA/IHNlY29uZENoaWxkIDogb3RoZXJEYXRh
OwotICAgICAgICBvdGhlckRhdGFBdHRyaWJ1dGUgPSBpc0VsZW1lbnRSZWZsZWN0aW9uUHJvcGVy
dHkoY3VycmVudFByb3BlcnR5KSA/IHNlY29uZENoaWxkLmlkIDogb3RoZXJEYXRhOworICAgICAg
ICBvdGhlckRhdGFQcm9wZXJ0eSA9IGdldE90aGVyRGF0YVByb3BlcnR5KGN1cnJlbnRQcm9wZXJ0
eSk7CisgICAgICAgIG90aGVyRGF0YUF0dHJpYnV0ZSA9IGdldE90aGVyRGF0YUF0dHJpYnV0ZShj
dXJyZW50UHJvcGVydHkpOwogICAgICAgICBkZWJ1ZygiZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCIi
ICsgY3VycmVudEF0dHJpYnV0ZSArICJcIiwgb3RoZXJEYXRhKTsiKTsKICAgICAgICAgZWxlbWVu
dC5zZXRBdHRyaWJ1dGUoY3VycmVudEF0dHJpYnV0ZSwgb3RoZXJEYXRhQXR0cmlidXRlKTsKICAg
ICAgICAgc2hvdWxkQmUoImVsZW1lbnRbY3VycmVudFByb3BlcnR5XSIsICJvdGhlckRhdGFQcm9w
ZXJ0eSIpOwpAQCAtNzgsNyArMTI2LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIGRlYnVnKCJc
biIpOwotICAgICAgICBzaG91bGRCZSgiY291bnQiLCAiNDAiKTsKKyAgICAgICAgc2hvdWxkQmUo
ImNvdW50IiwgIjQ2Iik7CiAKICAgICB9IGVsc2UgewogICAgICAgICB0ZXN0RmFpbGVkKCJDb3Vs
ZCBub3QgbG9hZCBhY2Nlc3NpYmlsaXR5IGNvbnRyb2xsZXIiKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL2FyaWEtZWxl
bWVudC1yZWZsZWN0aW9uLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ub2Rlcy9hcmlhLWVsZW1lbnQtcmVmbGVj
dGlvbi50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CmluZGV4IDE2NzgwNjQ3MTY3ZjQ2YWE1ZDBjYzE0
NjNhOTNlMjAwYTJjZGRjYzEuLjY5NjdkNzA2NjdlMzg1N2ZkYzcyYjA5YTgzYmMwOTZiODBmOWQ1
ZGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZG9tL25vZGVzL2FyaWEtZWxlbWVudC1yZWZsZWN0aW9uLnRlbnRhdGl2ZS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20v
bm9kZXMvYXJpYS1lbGVtZW50LXJlZmxlY3Rpb24udGVudGF0aXZlLWV4cGVjdGVkLnR4dApAQCAt
MzYsMTIgKzM2LDcgQEAgTGlnaHQgRE9NIHRleHQKIAogTGlnaHQgRE9NIHRleHQKIAotRGVsaWNp
b3VzCi1OdXRyaXRpb3VzCi0KIE1pc3NwZWxsaW5nCi1Xb25kZXJmdWwKLUZhbnRhc3RpYwogCiAK
IFBBU1MgYXJpYS1hY3RpdmVkZXNjZW5kYW50IGVsZW1lbnQgcmVmbGVjdGlvbgpAQCAtNDksMjAg
KzQ0LDIwIEBAIFBBU1MgSWYgdGhlIGNvbnRlbnQgYXR0cmlidXRlIGlzIHNldCBkaXJlY3RseSwg
dGhlIElETCBhdHRyaWJ1dGUgZ2V0dGVyIGFsd2F5cyByCiBQQVNTIFNldHRpbmcgdGhlIElETCBh
dHRyaWJ1dGUgdG8gYW4gZWxlbWVudCB3aGljaCBpcyBub3QgdGhlIGZpcnN0IGVsZW1lbnQgaW4g
RE9NIG9yZGVyIHdpdGggaXRzIElEIGNhdXNlcyB0aGUgY29udGVudCBhdHRyaWJ1dGUgdG8gYmUg
YW4gZW1wdHkgc3RyaW5nCiBQQVNTIFNldHRpbmcgYW4gZWxlbWVudCByZWZlcmVuY2UgdGhhdCBj
cm9zc2VzIGludG8gYSBzaGFkb3cgdHJlZSBpcyBkaXNhbGxvd2VkLCBidXQgc2V0dGluZyBvbmUg
dGhhdCBpcyBpbiBhIHNoYWRvdyBpbmNsdXNpdmUgYW5jZXN0b3IgaXMgYWxsb3dlZC4KIFBBU1Mg
YXJpYS1lcnJvcm1lc3NhZ2UKLUZBSUwgYXJpYS1kZXRhaWxzIGFzc2VydF9hcnJheV9lcXVhbHM6
IHZhbHVlIGlzIHVuZGVmaW5lZCwgZXhwZWN0ZWQgYXJyYXkKK1BBU1MgYXJpYS1kZXRhaWxzCiBQ
QVNTIERlbGV0aW5nIGEgcmVmbGVjdGVkIGVsZW1lbnQgc2hvdWxkIHJldHVybiBudWxsIGZvciB0
aGUgSURMIGF0dHJpYnV0ZSBhbmQgY2F1c2UgdGhlIGNvbnRlbnQgYXR0cmlidXRlIHRvIGJlY29t
ZSBzdGFsZS4KIFBBU1MgQ2hhbmdpbmcgdGhlIElEIG9mIGFuIGVsZW1lbnQgY2F1c2VzIHRoZSBj
b250ZW50IGF0dHJpYnV0ZSB0byBiZWNvbWUgb3V0IG9mIHN5bmMuCiBQQVNTIFJlcGFyZW50aW5n
IGFuIGVsZW1lbnQgaW50byBhIGRlc2NlbmRhbnQgc2hhZG93IHNjb3BlIGhpZGVzIHRoZSBlbGVt
ZW50IHJlZmVyZW5jZS4KIFBBU1MgUmVwYXJlbnRpbmcgcmVmZXJlbmNlZCBlbGVtZW50IGNhbm5v
dCBjYXVzZSByZXRhcmdldGluZyBvZiByZWZlcmVuY2UuCiBQQVNTIEVsZW1lbnQgcmVmZXJlbmNl
IHNldCBpbiBpbnZhbGlkIHNjb3BlIHJlbWFpbnMgaW50YWN0IHRocm91Z2hvdXQgbW92ZSB0byB2
YWxpZCBzY29wZS4KLUZBSUwgYXJpYS1sYWJlbGxlZGJ5LiBhc3NlcnRfYXJyYXlfZXF1YWxzOiBw
YXJzZWQgY29udGVudCBhdHRyaWJ1dGUgc2V0cyBlbGVtZW50IHJlZmVyZW5jZXMuIHZhbHVlIGlz
IHVuZGVmaW5lZCwgZXhwZWN0ZWQgYXJyYXkKLUZBSUwgYXJpYS1jb250cm9scy4gYXNzZXJ0X2Fy
cmF5X2VxdWFsczogdmFsdWUgaXMgdW5kZWZpbmVkLCBleHBlY3RlZCBhcnJheQotRkFJTCBhcmlh
LWRlc2NyaWJlZGJ5LiBhc3NlcnRfYXJyYXlfZXF1YWxzOiB2YWx1ZSBpcyB1bmRlZmluZWQsIGV4
cGVjdGVkIGFycmF5Ci1GQUlMIGFyaWEtZmxvd3RvLiBhc3NlcnRfYXJyYXlfZXF1YWxzOiB2YWx1
ZSBpcyB1bmRlZmluZWQsIGV4cGVjdGVkIGFycmF5Ci1GQUlMIGFyaWEtb3ducy4gYXNzZXJ0X2Fy
cmF5X2VxdWFsczogdmFsdWUgaXMgdW5kZWZpbmVkLCBleHBlY3RlZCBhcnJheQotRkFJTCBzaGFk
b3cgRE9NIGJlaGF2aW91ciBmb3IgRnJvemVuQXJyYXkgZWxlbWVudCByZWZsZWN0aW9uLiBhc3Nl
cnRfYXJyYXlfZXF1YWxzOiB2YWx1ZSBpcyB1bmRlZmluZWQsIGV4cGVjdGVkIGFycmF5Ci1GQUlM
IE1vdmluZyBleHBsaWNpdGx5IHNldCBlbGVtZW50cyBhY3Jvc3Mgc2hhZG93IERPTSBib3VuZGFy
aWVzLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAiYnV0dG9uRGVzY3JpcHRpb24x
IGJ1dHRvbkRlc2NyaXB0aW9uMiIgYnV0IGdvdCAob2JqZWN0KSBudWxsCi1GQUlMIE1vdmluZyBl
eHBsaWNpdGx5IHNldCBlbGVtZW50cyBhcm91bmQgd2l0aGluIHRoZSBzYW1lIHNjb3BlLCBhbmQg
cmVtb3ZpbmcgZnJvbSB0aGUgRE9NLiBhc3NlcnRfYXJyYXlfZXF1YWxzOiBhcmlhLWxhYmVsZWQg
YnkgaXMgc3VwcG9ydGVkIGJ5IElETCBnZXR0ZXIuIHZhbHVlIGlzIHVuZGVmaW5lZCwgZXhwZWN0
ZWQgYXJyYXkKK1BBU1MgYXJpYS1sYWJlbGxlZGJ5LgorUEFTUyBhcmlhLWNvbnRyb2xzLgorUEFT
UyBhcmlhLWRlc2NyaWJlZGJ5LgorUEFTUyBhcmlhLWZsb3d0by4KK1BBU1MgYXJpYS1vd25zLgor
UEFTUyBzaGFkb3cgRE9NIGJlaGF2aW91ciBmb3IgRnJvemVuQXJyYXkgZWxlbWVudCByZWZsZWN0
aW9uLgorUEFTUyBNb3ZpbmcgZXhwbGljaXRseSBzZXQgZWxlbWVudHMgYWNyb3NzIHNoYWRvdyBE
T00gYm91bmRhcmllcy4KK1BBU1MgTW92aW5nIGV4cGxpY2l0bHkgc2V0IGVsZW1lbnRzIGFyb3Vu
ZCB3aXRoaW4gdGhlIHNhbWUgc2NvcGUsIGFuZCByZW1vdmluZyBmcm9tIHRoZSBET00uCiBQQVNT
IFJlcGFyZW50aW5nLgogUEFTUyBBdHRhY2hpbmcgZWxlbWVudCByZWZlcmVuY2UgYmVmb3JlIGl0
J3MgaW5zZXJ0ZWQgaW50byB0aGUgRE9NLgogUEFTUyBDcm9zcy1kb2N1bWVudCByZWZlcmVuY2Vz
IGFuZCBtb3Zlcy4K
</data>

          </attachment>
      

    </bug>

</bugzilla>