<?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>224582</bug_id>
          
          <creation_ts>2021-04-14 15:57:41 -0700</creation_ts>
          <short_desc>AX: `aria-activedescendant` doesn&apos;t work with a standard &quot;listbox&quot; pattern</short_desc>
          <delta_ts>2023-01-04 23:09:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>Safari 14</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ben Cronin">bcronin</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dkote</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>tyler_w</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1750386</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Cronin">bcronin</who>
    <bug_when>2021-04-14 15:57:41 -0700</bug_when>
    <thetext>With VoiceOver running, go to the example at https://jsfiddle.net/upy3m6n7/3/ and place the cursor inside the &quot;Editable text&quot; field. Use the arrow keys to move through the options (the selected option will get a &quot;selected&quot; class and become `aria-activedescendant` of the &quot;editor&quot; textbox element).

Expected: VoiceOver will identify each option as it is selected and becomes the `aria-activedescendant` of the &quot;editor&quot; element (this happens in Chrome and Firefox).

Observed: VoiceOver reads out nothing as each option becomes selected; there is no indication that there is an active descendant. 

The spec clearly indicates that elements with &quot;textbox&quot; role and correct markup should roles should accommodate `aria-activedescendant` (see https://www.w3.org/TR/wai-aria/#aria-activedescendant, particularly item 2). FWIW, though, as far as I can tell, the above behavior occurs with any role applied to the &quot;editor&quot; node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750387</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-14 15:57:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/76670072&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860626</commentid>
    <comment_count>2</comment_count>
    <who name="Dhawal">dkote</who>
    <bug_when>2022-04-12 02:25:47 -0700</bug_when>
    <thetext>Same issue here. Here&apos;s our implementation https://jsfiddle.net/f5Larbnk/19/

Click on button and hover on the options. Note that voiceover in the above fiddle works fine in Firefox, Chrome when active-descendant is updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1921864</commentid>
    <comment_count>3</comment_count>
      <attachid>464203</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-12-25 00:08:15 -0800</bug_when>
    <thetext>Created attachment 464203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1921887</commentid>
    <comment_count>4</comment_count>
      <attachid>464203</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-12-25 10:55:12 -0800</bug_when>
    <thetext>Comment on attachment 464203
Patch

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

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:1898
&gt; +    if (!element.document().frame()-&gt;selection().isFocusedAndActive())

Do you think it would be useful to have a comment stating why it&apos;s important to use the element document and not the cache document? Perhaps that will help prevent us from making the same mistake again.

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:1932
&gt; +        target = Accessibility::findAncestor(*activeDescendant, true, [&amp;object] (const auto&amp; ancestor) {
&gt; +            return object-&gt;relatedObjects(AXRelationType::ControllerFor).contains(&amp;ancestor);
&gt; +        });

Could you explain what the intention of this loop is? It&apos;s confusing to me because:

  1. In the first iteration of the loop, `const auto&amp; ancestor` is actually not an ancestor, it&apos;s a descendant (*activeDescendant)
  2. Because we start iterating from a descendant, eventually we will iterate to `object`, and then above `object`, checking to see if it aria-controls itself, and then any of its ancestors. Does this make sense?

I think this code works for the simple listbox example in this bug because we return true in the first iteration. But I don&apos;t understand what this loop accomplishes generally, which might just be my lack of understanding. Can you explain what the intention is here?

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:4104
&gt; +        if (is&lt;HTMLFrameOwnerElement&gt;(element))
&gt; +            updateRelationsForTree(*downcast&lt;HTMLFrameOwnerElement&gt;(element).contentDocument());

Nit: this could arguably be simpler with dynamicDowncast.

if (auto* frameOwnerElement = dynamicDowncast&lt;HTMLFrameOwnerElement&gt;(element))
    updateRelationsForTree(frameOwnerElement-&gt;contentDocument());

&gt; LayoutTests/accessibility/mac/relationships-in-frames.html:35
&gt; +	    debug(output);

The indentation level of this debug doesn&apos;t match its siblings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1921901</commentid>
    <comment_count>5</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-12-25 14:24:05 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #4)
&gt; Comment on attachment 464203 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=464203&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:1898
&gt; &gt; +    if (!element.document().frame()-&gt;selection().isFocusedAndActive())
&gt; 
&gt; Do you think it would be useful to have a comment stating why it&apos;s important
&gt; to use the element document and not the cache document? Perhaps that will
&gt; help prevent us from making the same mistake again.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:1932
&gt; &gt; +        target = Accessibility::findAncestor(*activeDescendant, true, [&amp;object] (const auto&amp; ancestor) {
&gt; &gt; +            return object-&gt;relatedObjects(AXRelationType::ControllerFor).contains(&amp;ancestor);
&gt; &gt; +        });
&gt; 
&gt; Could you explain what the intention of this loop is? It&apos;s confusing to me
&gt; because:
&gt; 
&gt;   1. In the first iteration of the loop, `const auto&amp; ancestor` is actually
&gt; not an ancestor, it&apos;s a descendant (*activeDescendant)
&gt;   2. Because we start iterating from a descendant, eventually we will
&gt; iterate to `object`, and then above `object`, checking to see if it
&gt; aria-controls itself, and then any of its ancestors. Does this make sense?
&gt; 
&gt; I think this code works for the simple listbox example in this bug because
&gt; we return true in the first iteration. But I don&apos;t understand what this loop
&gt; accomplishes generally, which might just be my lack of understanding. Can
&gt; you explain what the intention is here?
&gt; 
Added better comments in the code.
Basically, the target needs to be thing we send out the notification for. The active descendant needs to be a descendant of that, but the one generating the notification is the controller.

So we go up the active-descendant hierarchy to see if we find the object that is being controlled by the &quot;controller&quot;. If we find that object than we use it as the target.

&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:4104
&gt; &gt; +        if (is&lt;HTMLFrameOwnerElement&gt;(element))
&gt; &gt; +            updateRelationsForTree(*downcast&lt;HTMLFrameOwnerElement&gt;(element).contentDocument());
&gt; 
&gt; Nit: this could arguably be simpler with dynamicDowncast.
&gt; 
&gt; if (auto* frameOwnerElement =
&gt; dynamicDowncast&lt;HTMLFrameOwnerElement&gt;(element))
&gt;     updateRelationsForTree(frameOwnerElement-&gt;contentDocument());
&gt; 
&gt; &gt; LayoutTests/accessibility/mac/relationships-in-frames.html:35
&gt; &gt; +	    debug(output);
&gt; 
&gt; The indentation level of this debug doesn&apos;t match its siblings.

Will make these changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1921903</commentid>
    <comment_count>6</comment_count>
      <attachid>464211</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-12-25 14:27:02 -0800</bug_when>
    <thetext>Created attachment 464211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1921904</commentid>
    <comment_count>7</comment_count>
      <attachid>464211</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-12-25 14:32:43 -0800</bug_when>
    <thetext>Comment on attachment 464211
Patch

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

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:1935
&gt; +        target = Accessibility::findAncestor(*activeDescendant, false, [&amp;object] (const auto&amp; activeDescendantAncestor) {
&gt; +            return object-&gt;relatedObjects(AXRelationType::ControllerFor).contains(&amp;activeDescendantAncestor);
&gt; +        });

Thanks for clarifying. One last question: rather than re-computing object-&gt;relatedObjects(AXRelationType::ControllerFor) every iteration, can we extract it into a local variable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1921985</commentid>
    <comment_count>8</comment_count>
      <attachid>464221</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-12-27 00:06:09 -0800</bug_when>
    <thetext>Created attachment 464221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1922844</commentid>
    <comment_count>9</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-01-04 05:12:02 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #8)
&gt; Created attachment 464221 [details]
&gt; Patch

--- /dev/null
+++ b/LayoutTests/accessibility/mac/active-descendant-with-aria-controls.html

+var output = &quot;This test ensures objects that control objects with active descendants generate the correct notifications, while also being inside frames.\n\n&quot;;

No iframe involved in this test.

Not sure that this isn&apos;t flaky because the order of the calls to debug() in the notificationCallback and main is not deterministic. There may be differences in timing between ITM on and off. I would run it with --iterations=100 to ensure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1922860</commentid>
    <comment_count>10</comment_count>
      <attachid>464329</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2023-01-04 08:45:59 -0800</bug_when>
    <thetext>Created attachment 464329
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1922872</commentid>
    <comment_count>11</comment_count>
      <attachid>464330</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2023-01-04 09:20:08 -0800</bug_when>
    <thetext>Created attachment 464330
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1923103</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-01-04 23:09:13 -0800</bug_when>
    <thetext>Committed 258478@main (f78fd4847fdb): &lt;https://commits.webkit.org/258478@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 464330.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464203</attachid>
            <date>2022-12-25 00:08:15 -0800</date>
            <delta_ts>2022-12-25 14:27:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224582-20221225000814.patch</filename>
            <type>text/plain</type>
            <size>11227</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSAzMDYwNzI1ZTFiZWNhMWY2MDJkNDRjNTRjZDdjMzUwOGQ3NDllZmE3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogU3VuLCAyNSBEZWMgMjAyMiAwMDowNDoyOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBgYXJpYS1hY3RpdmVkZXNjZW5kYW50YCBkb2Vzbid0IHdvcmsgd2l0aCBhIHN0YW5kYXJkCiAi
bGlzdGJveCIgcGF0dGVybiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI0NTgyCiByZGFyOi8vNzY2NzAwNzIKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhl
cmUgd2VyZSBhIGZldyB0aGluZ3MgcHJldmVudGluZyB0aGlzIGZyb20gd29ya2luZy4KMSkgUmVs
YXRpb25zaGlwcyBpbiBmcmFtZXMgd2VyZSBicm9rZW4gYWZ0ZXIgdGhlIGNoYW5nZSB0byBjYWNo
ZSByZWxhdGlvbnNoaXBzIGluIGEgY2VudHJhbCBtYXAuCjIpIGFjdGl2ZURlc2NlbmRhbnQgd2Fz
bid0IGNoZWNraW5nIGlmIHRoZSByaWdodCBmcmFtZSB3YXMgZm9jdXNlZC4KMykgYWN0aXZlRGVz
Y2VuZGFudCBuZWVkZWQgdG8gaGFuZGxlIHRoZSBhcmlhLWNvbnRyb2xzIGNhc2UgaW4gb3JkZXIg
dG8gcGljayB0aGUgcmlnaHQgdGFyZ2V0IGZvciBhIG5vdGlmaWNhdGlvbi4KNCkgQSBWb2ljZU92
ZXIgc2lkZSBmaXggYWxzbyB3YXMgcmVxdWlyZWQ6IHJkYXI6Ly8xMDM2MDkyODAKCiogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvYWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1hcmlhLWNvbnRy
b2xzLWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
YWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1hcmlhLWNvbnRyb2xzLmh0bWw6IEFkZGVkLgoqIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3JlbGF0aW9uc2hpcHMtaW4tZnJhbWVzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVsYXRpb25zaGlw
cy1pbi1mcmFtZXMuaHRtbDogQWRkZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcDoKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFjdGl2ZURl
c2NlbmRhbnRDaGFuZ2VkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnVwZGF0ZVJlbGF0aW9u
c0ZvclRyZWUpOgotLS0KIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAgICB8IDM3ICsrKysrKysrKy0tLS0KIC4uLmRlc2NlbmRhbnQtd2l0aC1hcmlhLWNvbnRyb2xz
LWV4cGVjdGVkLnR4dCB8IDEyICsrKysKIC4uLi9hY3RpdmUtZGVzY2VuZGFudC13aXRoLWFyaWEt
Y29udHJvbHMuaHRtbCB8IDQ4ICsrKysrKysrKysrKysrKysKIC4uLi9tYWMvcmVsYXRpb25zaGlw
cy1pbi1mcmFtZXMtZXhwZWN0ZWQudHh0ICB8IDEwICsrKysKIC4uLi9tYWMvcmVsYXRpb25zaGlw
cy1pbi1mcmFtZXMuaHRtbCAgICAgICAgICB8IDU1ICsrKysrKysrKysrKysrKysrKysKIDUgZmls
ZXMgY2hhbmdlZCwgMTUwIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2FjdGl2ZS1kZXNjZW5kYW50
LXdpdGgtYXJpYS1jb250cm9scy1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9hY3RpdmUtZGVzY2VuZGFudC13aXRoLWFyaWEtY29u
dHJvbHMuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL3JlbGF0aW9uc2hpcHMtaW4tZnJhbWVzLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3JlbGF0aW9uc2hpcHMtaW4tZnJhbWVz
Lmh0bWwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAppbmRleCBhOWJhYzA1NDZiZTMuLmE5YmI1M2I3ZGM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xODk1LDcgKzE4OTUsNyBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZShOb2RlKiBub2RlKQog
CiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKEVsZW1l
bnQmIGVsZW1lbnQpCiB7Ci0gICAgaWYgKCFkb2N1bWVudCgpLmZyYW1lKCktPnNlbGVjdGlvbigp
LmlzRm9jdXNlZEFuZEFjdGl2ZSgpKQorICAgIGlmICghZWxlbWVudC5kb2N1bWVudCgpLmZyYW1l
KCktPnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBhdXRvKiBvYmplY3QgPSBnZXRPckNyZWF0ZSgmZWxlbWVudCk7CkBAIC0xOTA3LDI1ICsx
OTA3LDMyIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5n
ZWQoRWxlbWVudCYgZWxlbWVudCkKICNlbmRpZgogCiAgICAgLy8gTm90aWZ5IGFjdGl2ZSBkZXNj
ZW5kYW50IGNoYW5nZXMgb25seSBmb3IgdGhlIGZvY3VzZWQgZWxlbWVudC4KLSAgICBpZiAoZG9j
dW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpICE9ICZlbGVtZW50KQorICAgIGlmIChlbGVtZW50LmRv
Y3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSAhPSAmZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgYXV0byogYWN0aXZlRGVzY2VuZGFudCA9IG9iamVjdC0+YWN0aXZlRGVzY2VuZGFudCgp
OwotICAgIC8vIFdlIHdhbnQgdG8gbm90aWZ5IHRoYXQgdGhlIGNvbWJvIGJveCBoYXMgY2hhbmdl
ZCBpdHMgYWN0aXZlIGRlc2NlbmRhbnQsCi0gICAgLy8gYnV0IHdlIGRvIG5vdCB3YW50IHRvIGNo
YW5nZSB0aGUgZm9jdXMsIGJlY2F1c2UgZm9jdXMgc2hvdWxkIHJlbWFpbiB3aXRoIHRoZSBjb21i
byBib3guCi0gICAgaWYgKGFjdGl2ZURlc2NlbmRhbnQgJiYgKG9iamVjdC0+aXNDb21ib0JveCgp
IHx8IG9iamVjdC0+c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkpKSB7Ci0gICAgICAgIGF1
dG8qIHRhcmdldCA9IG9iamVjdDsKKyAgICBpZiAoIWFjdGl2ZURlc2NlbmRhbnQpCisgICAgICAg
IHJldHVybjsKIAorICAgIC8vIEhhbmRsZSBhY3RpdmUtZGVzY2VuZGFudCBjaGFuZ2VzIHdoZW4g
dGhlIHRhcmdldCBhbGxvd3MgZm9yIGl0LCBvciB0aGUgY29udHJvbGxlZCBvYmplY3QgYWxsb3dz
IGZvciBpdC4KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0YXJnZXQgPSBudWxscHRyOworICAg
IGlmIChvYmplY3QtPnNob3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCgpKQorICAgICAgICB0YXJn
ZXQgPSBvYmplY3Q7CisgICAgZWxzZSBpZiAob2JqZWN0LT5pc0NvbWJvQm94KCkpIHsKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICAgICAgLy8gSWYgdGhlIGNvbWJvYm94J3MgYWN0aXZlRGVzY2Vu
ZGFudCBpcyBpbnNpZGUgYSBkZXNjZW5kYW50IG93bmVkIG9yIGNvbnRyb2xsZWQgYnkgdGhlIGNv
bWJvYm94LCB0aGF0IGRlc2NlbmRhbnQgc2hvdWxkIGJlIHRoZSB0YXJnZXQgb2YgdGhlIG5vdGlm
aWNhdGlvbiBhbmQgbm90IHRoZSBjb21ib2JveCBpdHNlbGYuCi0gICAgICAgIGlmIChvYmplY3Qt
PmlzQ29tYm9Cb3goKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIG93bmVkT2JqZWN0ID0gQWNj
ZXNzaWJpbGl0eTo6ZmluZFJlbGF0ZWRPYmplY3RJbkFuY2VzdHJ5KCpvYmplY3QsIEFYUmVsYXRp
b25UeXBlOjpPd25lckZvciwgKmFjdGl2ZURlc2NlbmRhbnQpKQotICAgICAgICAgICAgICAgIHRh
cmdldCA9IG93bmVkT2JqZWN0OwotICAgICAgICAgICAgZWxzZSBpZiAoYXV0byogY29udHJvbGxl
ZE9iamVjdCA9IEFjY2Vzc2liaWxpdHk6OmZpbmRSZWxhdGVkT2JqZWN0SW5BbmNlc3RyeSgqb2Jq
ZWN0LCBBWFJlbGF0aW9uVHlwZTo6Q29udHJvbGxlckZvciwgKmFjdGl2ZURlc2NlbmRhbnQpKQot
ICAgICAgICAgICAgICAgIHRhcmdldCA9IGNvbnRyb2xsZWRPYmplY3Q7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKGF1dG8qIG93bmVkT2JqZWN0ID0gQWNjZXNzaWJpbGl0eTo6ZmluZFJlbGF0ZWRP
YmplY3RJbkFuY2VzdHJ5KCpvYmplY3QsIEFYUmVsYXRpb25UeXBlOjpPd25lckZvciwgKmFjdGl2
ZURlc2NlbmRhbnQpKQorICAgICAgICAgICAgdGFyZ2V0ID0gb3duZWRPYmplY3Q7CisgICAgICAg
IGVsc2UgaWYgKGF1dG8qIGNvbnRyb2xsZWRPYmplY3QgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kUmVs
YXRlZE9iamVjdEluQW5jZXN0cnkoKm9iamVjdCwgQVhSZWxhdGlvblR5cGU6OkNvbnRyb2xsZXJG
b3IsICphY3RpdmVEZXNjZW5kYW50KSkKKyAgICAgICAgICAgIHRhcmdldCA9IGNvbnRyb2xsZWRP
YmplY3Q7CiAjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICB0YXJnZXQgPSBBY2Nlc3NpYmls
aXR5OjpmaW5kQW5jZXN0b3IoKmFjdGl2ZURlc2NlbmRhbnQsIHRydWUsIFsmb2JqZWN0XSAoY29u
c3QgYXV0byYgYW5jZXN0b3IpIHsKKyAgICAgICAgICAgIHJldHVybiBvYmplY3QtPnJlbGF0ZWRP
YmplY3RzKEFYUmVsYXRpb25UeXBlOjpDb250cm9sbGVyRm9yKS5jb250YWlucygmYW5jZXN0b3Ip
OworICAgICAgICB9KTsKKyAgICB9CiAKKyAgICBpZiAodGFyZ2V0KSB7CiAjaWYgRU5BQkxFKEFD
Q0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICAgICAgaWYgKHRhcmdldCAhPSBvYmplY3Qp
CiAgICAgICAgICAgICB1cGRhdGVJc29sYXRlZFRyZWUodGFyZ2V0LCBBWE5vdGlmaWNhdGlvbjo6
QVhBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCk7CkBAIC00MDg4LDggKzQwOTUsMTQgQEAgdm9pZCBB
WE9iamVjdENhY2hlOjp1cGRhdGVSZWxhdGlvbnNGb3JUcmVlKENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlKQogICAgIFZlY3RvcjxSZWxhdGlvbk9yaWdpbj4gb3JpZ2luczsKICAgICBWZWN0b3I8UmVs
YXRpb25UYXJnZXQ+IHRhcmdldHM7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFu
dHNPZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpKSB7CisgICAgICAgIGlmIChlbGVtZW50Lmhhc1Rh
Z05hbWUobWV0YVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGhlYWRUYWcpIHx8IGVsZW1lbnQu
aGFzVGFnTmFtZShzY3JpcHRUYWcpKQorICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAg
aWYgKFJlZlB0ciBzaGFkb3dSb290ID0gZWxlbWVudC5zaGFkb3dSb290KCk7IHNoYWRvd1Jvb3Qg
JiYgc2hhZG93Um9vdC0+bW9kZSgpICE9IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCiAgICAg
ICAgICAgICB1cGRhdGVSZWxhdGlvbnNGb3JUcmVlKCpzaGFkb3dSb290KTsKKyAgICAgICAgaWYg
KGlzPEhUTUxGcmFtZU93bmVyRWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAgICB1cGRhdGVS
ZWxhdGlvbnNGb3JUcmVlKCpkb3duY2FzdDxIVE1MRnJhbWVPd25lckVsZW1lbnQ+KGVsZW1lbnQp
LmNvbnRlbnREb2N1bWVudCgpKTsKKwogICAgICAgICAvLyBDb2xsZWN0IGFsbCBwb3NzaWJsZSBv
cmlnaW5zLCBpLmUuLCBlbGVtZW50cyB3aXRoIG5vbi1lbXB0eSByZWxhdGlvbiBhdHRyaWJ1dGVz
LgogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGF0dHJpYnV0ZSA6IHJlbGF0aW9uQXR0cmlidXRl
cygpKSB7CiAgICAgICAgICAgICBpZiAobV9kb2N1bWVudC5zZXR0aW5ncygpLmFyaWFSZWZsZWN0
aW9uRm9yRWxlbWVudFJlZmVyZW5jZXNFbmFibGVkKCkpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL2FjdGl2ZS1kZXNjZW5kYW50LXdpdGgtYXJpYS1jb250cm9s
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9hY3RpdmUtZGVz
Y2VuZGFudC13aXRoLWFyaWEtY29udHJvbHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWRhZjAwNTFjMjQ3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvYWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1hcmlh
LWNvbnRyb2xzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitSZWNlaXZlZCBzZWxlY3Rl
ZCBjaGlsZHJlbiBub3RpZmljYXRpb24gQVhSb2xlOiBBWExpc3QKK1RoaXMgdGVzdCBlbnN1cmVz
IG9iamVjdHMgdGhhdCBjb250cm9sIG9iamVjdHMgd2l0aCBhY3RpdmUgZGVzY2VuZGFudHMgZ2Vu
ZXJhdGUgdGhlIGNvcnJlY3Qgbm90aWZpY2F0aW9ucywgd2hpbGUgYWxzbyBiZWluZyBpbnNpZGUg
ZnJhbWVzLgorCithZGRlZE5vdGlmaWNhdGlvbjogdHJ1ZQorQ29udHJvbGxlciByb2xlOiBBWFJv
bGU6IEFYVGV4dEZpZWxkCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorY29udHJvbGxlcgorMQorMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvYWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1hcmlhLWNvbnRyb2xzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9hY3RpdmUtZGVzY2VuZGFudC13aXRoLWFy
aWEtY29udHJvbHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmJiZThjMTA4OTVkMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL2FjdGl2ZS1kZXNjZW5kYW50LXdpdGgtYXJpYS1jb250cm9scy5odG1sCkBAIC0wLDAg
KzEsNDggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxp
dHktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCis8ZGl2IHJvbGU9InRleHRi
b3giIGNvbnRlbnRlZGl0YWJsZSB0YWJpbmRleD0iMCIgYXJpYS1jb250cm9scz0ibGlzdGJveCIg
aWQ9ImNvbnRyb2xsZXIiIGFyaWEtZXhwYW5kZWQ9InRydWUiPgorICAgY29udHJvbGxlcgorPC9k
aXY+CisKKzxkaXYgcm9sZT0ibGlzdGJveCIgaWQ9Imxpc3Rib3giPgorICAgIDxkaXYgcm9sZT0i
b3B0aW9uIiBpZD0ib3B0aW9uMSI+MTwvZGl2PgorICAgIDxkaXYgcm9sZT0ib3B0aW9uIiBpZD0i
b3B0aW9uMiI+MjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Cit2YXIgb3V0cHV0ID0gIlRoaXMg
dGVzdCBlbnN1cmVzIG9iamVjdHMgdGhhdCBjb250cm9sIG9iamVjdHMgd2l0aCBhY3RpdmUgZGVz
Y2VuZGFudHMgZ2VuZXJhdGUgdGhlIGNvcnJlY3Qgbm90aWZpY2F0aW9ucywgd2hpbGUgYWxzbyBi
ZWluZyBpbnNpZGUgZnJhbWVzLlxuXG4iOworCitmdW5jdGlvbiBub3RpZnlDYWxsYmFjayhlbGVt
ZW50LCBub3RpZmljYXRpb24pIHsKKyAgICBpZiAobm90aWZpY2F0aW9uID09ICJBWFNlbGVjdGVk
Q2hpbGRyZW5DaGFuZ2VkIikgeworICAgICAgICBkZWJ1ZygiUmVjZWl2ZWQgc2VsZWN0ZWQgY2hp
bGRyZW4gbm90aWZpY2F0aW9uICIgKyBlbGVtZW50LnJvbGUpOworICAgICAgICBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5yZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOworICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICB2YXIgYWRkZWRO
b3RpZmljYXRpb24gPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hZGROb3RpZmljYXRpb25MaXN0
ZW5lcihub3RpZnlDYWxsYmFjayk7CisgICAgb3V0cHV0ICs9IGBhZGRlZE5vdGlmaWNhdGlvbjog
JHthZGRlZE5vdGlmaWNhdGlvbn1cbmA7CisgICAgdmFyIGNvbnRyb2xsZXIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY29udHJvbGxlciIpOworICAgIHZhciBheENvbnRyb2xsZXIgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNvbnRyb2xsZXIiKTsK
KyAgICBvdXRwdXQgKz0gYENvbnRyb2xsZXIgcm9sZTogJHtheENvbnRyb2xsZXIucm9sZX1cbmA7
CisgICAgCisgICAgY29udHJvbGxlci5mb2N1cygpOworICAgIGNvbnRyb2xsZXIuc2V0QXR0cmli
dXRlKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiLCAib3B0aW9uMSIpOworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJvcHRpb24xIikuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIiwgInRy
dWUiKTsKKyAgICBkZWJ1ZyhvdXRwdXQpOworfQorCis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVsYXRpb25z
aGlwcy1pbi1mcmFtZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvcmVsYXRpb25zaGlwcy1pbi1mcmFtZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDZjNDA0YjZmNDRlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVsYXRpb25zaGlwcy1pbi1mcmFtZXMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK2NvbnRyb2xsZXIgcm9sZTogQVhSb2xlOiBBWFRl
eHRGaWVsZAorY29udHJvbGxlciBjb250cm9scyByb2xlOiBsaXN0Ym94CitsaXN0Ym94IHJvbGU6
IEFYUm9sZTogQVhMaXN0CithcmlhLWNvbnRyb2xzIHRleHRib3gtPmxpc3Rib3ggOiB0cnVlCitj
b250cm9sbGVyIGNvbnRyb2xzIHJvbGUgYWZ0ZXIgY2hhbmdlOiBsaXN0Ym94MgorCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVsYXRpb25zaGlwcy1pbi1mcmFtZXMuaHRt
bCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3JlbGF0aW9uc2hpcHMtaW4tZnJhbWVz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42ZjkxODBmNjY3
MjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZWxh
dGlvbnNoaXBzLWluLWZyYW1lcy5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKworPGlmcmFtZSB3aWR0aD01MDAgaGVpZ2h0PTUwMCBpZD0iZnJhbWUxIiB0
aXRsZT0iZnJhbWUxIj48L2lmcmFtZT4KKworPHNjcmlwdD4KK3ZhciBvdXRwdXQgPSAiVGhpcyB0
ZXN0IGVuc3VyZXMgdGhhdCBvYmplY3RzIHdpdGggcmVsYXRpb25zaGlwcyBpbiBmcmFtZXMgd29y
ay5cblxuIjsKKworaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIHZhciBmcmFtZTEgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZnJhbWUxIik7CisgICAgZnJhbWUxLm9ubG9hZCA9IGZ1bmN0aW9uKGUp
IHsKKyAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7CisgICAgICAgICAgICB0b3VjaEFj
Y2Vzc2liaWxpdHlUcmVlKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLnJvb3RFbGVtZW50KTsKKyAg
ICAgICAgICAgIHZhciBjb250cm9sbGVyID0gYXdhaXQgd2FpdEZvckVsZW1lbnRCeUlkKCJjb250
cm9sbGVyIik7CisgICAgICAgICAgICB2YXIgb3V0cHV0ID0gYGNvbnRyb2xsZXIgcm9sZTogJHtj
b250cm9sbGVyLnJvbGV9XG5gOworICAgICAgICAgICAgdmFyIGNvbnRyb2xsZWQgPSBjb250cm9s
bGVyLmFyaWFDb250cm9sc0VsZW1lbnRBdEluZGV4KDApOworICAgICAgICAgICAgb3V0cHV0ICs9
IGBjb250cm9sbGVyIGNvbnRyb2xzIHJvbGU6ICR7Y29udHJvbGxlZC5kb21JZGVudGlmaWVyfVxu
YDsKKyAgIAorICAgICAgICAgICAgdmFyIGxpc3Rib3ggPSBhd2FpdCB3YWl0Rm9yRWxlbWVudEJ5
SWQoImxpc3Rib3giKTsKKyAgICAgICAgICAgIG91dHB1dCArPSBgbGlzdGJveCByb2xlOiAke2xp
c3Rib3gucm9sZX1cbmA7CisgICAgICAgICAgICBvdXRwdXQgKz0gYGFyaWEtY29udHJvbHMgdGV4
dGJveC0+bGlzdGJveCA6ICR7Y29udHJvbGxlZC5pc0VxdWFsKGxpc3Rib3gpfVxuYDsKKworICAg
ICAgICAgICAgZnJhbWUxLmNvbnRlbnREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udHJvbGxl
ciIpLnNldEF0dHJpYnV0ZSgiYXJpYS1jb250cm9scyIsICJsaXN0Ym94MiIpOworICAgICAgICAg
ICAgY29udHJvbGxlZCA9IGNvbnRyb2xsZXIuYXJpYUNvbnRyb2xzRWxlbWVudEF0SW5kZXgoMCk7
CisgICAgICAgICAgICBvdXRwdXQgKz0gYGNvbnRyb2xsZXIgY29udHJvbHMgcm9sZSBhZnRlciBj
aGFuZ2U6ICR7Y29udHJvbGxlZC5kb21JZGVudGlmaWVyfVxuYDsKKyAgICAgICAgIAorCisJICAg
IGRlYnVnKG91dHB1dCk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsgCisgICAgICAgfSwg
MCk7CisgICAgfTsKKworICAgIHZhciBodG1sID0gYDxkaXYgcm9sZT0idGV4dGJveCIgY29udGVu
dGVkaXRhYmxlIHRhYmluZGV4PSIwIiBhcmlhLWNvbnRyb2xzPSJsaXN0Ym94IiBpZD0iY29udHJv
bGxlciI+CisgICAgICAgIGNvbnRyb2xsZXIKKyAgICA8L2Rpdj4KKyAgICA8ZGl2IHJvbGU9Imxp
c3Rib3giIGlkPSJsaXN0Ym94Ij4KKyAgICAgICAgPGRpdiByb2xlPSJvcHRpb24iIGlkPSJvcHRp
b24xIj4xPC9kaXY+CisgICAgICAgIDxkaXYgcm9sZT0ib3B0aW9uIiBpZD0ib3B0aW9uMiI+Mjwv
ZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgcm9sZT0ibGlzdGJveCIgaWQ9Imxpc3Rib3gyIj4K
KyAgICA8L2Rpdj5gOworCisgICAgZnJhbWUxLnNyYyA9ICJkYXRhOnRleHQvaHRtbCw8Ym9keT4i
ICsgaHRtbCArICI8L2JvZHk+IjsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464211</attachid>
            <date>2022-12-25 14:27:02 -0800</date>
            <delta_ts>2022-12-27 00:06:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224582-20221225142701.patch</filename>
            <type>text/plain</type>
            <size>11574</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSAzNjFiYjJlY2VlODc2ZDFiMTBkZjhkNzJlYTRmM2RjNzI5NzAwYTFhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogU3VuLCAyNSBEZWMgMjAyMiAwMDowNDoyOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBgYXJpYS1hY3RpdmVkZXNjZW5kYW50YCBkb2Vzbid0IHdvcmsgd2l0aCBhIHN0YW5kYXJkCiAi
bGlzdGJveCIgcGF0dGVybiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI0NTgyCiByZGFyOi8vNzY2NzAwNzIKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhl
cmUgd2VyZSBhIGZldyB0aGluZ3MgcHJldmVudGluZyB0aGlzIGZyb20gd29ya2luZy4KMSkgUmVs
YXRpb25zaGlwcyBpbiBmcmFtZXMgd2VyZSBicm9rZW4gYWZ0ZXIgdGhlIGNoYW5nZSB0byBjYWNo
ZSByZWxhdGlvbnNoaXBzIGluIGEgY2VudHJhbCBtYXAuCjIpIGFjdGl2ZURlc2NlbmRhbnQgd2Fz
bid0IGNoZWNraW5nIGlmIHRoZSByaWdodCBmcmFtZSB3YXMgZm9jdXNlZC4KMykgYWN0aXZlRGVz
Y2VuZGFudCBuZWVkZWQgdG8gaGFuZGxlIHRoZSBhcmlhLWNvbnRyb2xzIGNhc2UgaW4gb3JkZXIg
dG8gcGljayB0aGUgcmlnaHQgdGFyZ2V0IGZvciBhIG5vdGlmaWNhdGlvbi4KNCkgQSBWb2ljZU92
ZXIgc2lkZSBmaXggYWxzbyB3YXMgcmVxdWlyZWQ6IHJkYXI6Ly8xMDM2MDkyODAKCiogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvYWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1hcmlhLWNvbnRy
b2xzLWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
YWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1hcmlhLWNvbnRyb2xzLmh0bWw6IEFkZGVkLgoqIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3JlbGF0aW9uc2hpcHMtaW4tZnJhbWVzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVsYXRpb25zaGlw
cy1pbi1mcmFtZXMuaHRtbDogQWRkZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcDoKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFjdGl2ZURl
c2NlbmRhbnRDaGFuZ2VkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnVwZGF0ZVJlbGF0aW9u
c0ZvclRyZWUpOgotLS0KIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAgICB8IDQwICsrKysrKysrKy0tLS0tCiAuLi5kZXNjZW5kYW50LXdpdGgtYXJpYS1jb250cm9s
cy1leHBlY3RlZC50eHQgfCAxMiArKysrKwogLi4uL2FjdGl2ZS1kZXNjZW5kYW50LXdpdGgtYXJp
YS1jb250cm9scy5odG1sIHwgNDggKysrKysrKysrKysrKysrKysKIC4uLi9tYWMvcmVsYXRpb25z
aGlwcy1pbi1mcmFtZXMtZXhwZWN0ZWQudHh0ICB8IDEwICsrKysKIC4uLi9tYWMvcmVsYXRpb25z
aGlwcy1pbi1mcmFtZXMuaHRtbCAgICAgICAgICB8IDUzICsrKysrKysrKysrKysrKysrKysKIDUg
ZmlsZXMgY2hhbmdlZCwgMTUxIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2FjdGl2ZS1kZXNjZW5k
YW50LXdpdGgtYXJpYS1jb250cm9scy1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9hY3RpdmUtZGVzY2VuZGFudC13aXRoLWFyaWEt
Y29udHJvbHMuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3JlbGF0aW9uc2hpcHMtaW4tZnJhbWVzLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUg
MTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3JlbGF0aW9uc2hpcHMtaW4tZnJh
bWVzLmh0bWwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAppbmRleCBhOWJhYzA1NDZiZTMuLjI5YmQyNzlkMTBjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xODk1LDcgKzE4OTUsOCBA
QCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZShOb2RlKiBub2Rl
KQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKEVs
ZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgaWYgKCFkb2N1bWVudCgpLmZyYW1lKCktPnNlbGVjdGlv
bigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpKQorICAgIC8vIFVzZSB0aGUgZWxlbWVudCdzIGRvY3Vt
ZW50IGluc3RlYWQgb2YgdGhlIGNhY2hlJ3MgZG9jdW1lbnQgaW4gY2FzZSB3ZSdyZSBpbnNpZGUg
YSBmcmFtZSB0aGF0J3MgbWFuYWdpbmcgZm9jdXMuCisgICAgaWYgKCFlbGVtZW50LmRvY3VtZW50
KCkuZnJhbWUoKS0+c2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGF1dG8qIG9iamVjdCA9IGdldE9yQ3JlYXRlKCZlbGVtZW50KTsKQEAgLTE5
MDcsMjUgKzE5MDgsMzQgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBY3RpdmVEZXNjZW5k
YW50Q2hhbmdlZChFbGVtZW50JiBlbGVtZW50KQogI2VuZGlmCiAKICAgICAvLyBOb3RpZnkgYWN0
aXZlIGRlc2NlbmRhbnQgY2hhbmdlcyBvbmx5IGZvciB0aGUgZm9jdXNlZCBlbGVtZW50LgotICAg
IGlmIChkb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCkgIT0gJmVsZW1lbnQpCisgICAgaWYgKGVs
ZW1lbnQuZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpICE9ICZlbGVtZW50KQogICAgICAgICBy
ZXR1cm47CiAKICAgICBhdXRvKiBhY3RpdmVEZXNjZW5kYW50ID0gb2JqZWN0LT5hY3RpdmVEZXNj
ZW5kYW50KCk7Ci0gICAgLy8gV2Ugd2FudCB0byBub3RpZnkgdGhhdCB0aGUgY29tYm8gYm94IGhh
cyBjaGFuZ2VkIGl0cyBhY3RpdmUgZGVzY2VuZGFudCwKLSAgICAvLyBidXQgd2UgZG8gbm90IHdh
bnQgdG8gY2hhbmdlIHRoZSBmb2N1cywgYmVjYXVzZSBmb2N1cyBzaG91bGQgcmVtYWluIHdpdGgg
dGhlIGNvbWJvIGJveC4KLSAgICBpZiAoYWN0aXZlRGVzY2VuZGFudCAmJiAob2JqZWN0LT5pc0Nv
bWJvQm94KCkgfHwgb2JqZWN0LT5zaG91bGRGb2N1c0FjdGl2ZURlc2NlbmRhbnQoKSkpIHsKLSAg
ICAgICAgYXV0byogdGFyZ2V0ID0gb2JqZWN0OworICAgIGlmICghYWN0aXZlRGVzY2VuZGFudCkK
KyAgICAgICAgcmV0dXJuOwogCisgICAgLy8gSGFuZGxlIGFjdGl2ZS1kZXNjZW5kYW50IGNoYW5n
ZXMgd2hlbiB0aGUgdGFyZ2V0IGFsbG93cyBmb3IgaXQsIG9yIHRoZSBjb250cm9sbGVkIG9iamVj
dCBhbGxvd3MgZm9yIGl0LgorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRhcmdldCA9IG51bGxw
dHI7CisgICAgaWYgKG9iamVjdC0+c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkpCisgICAg
ICAgIHRhcmdldCA9IG9iamVjdDsKKyAgICBlbHNlIGlmIChvYmplY3QtPmlzQ29tYm9Cb3goKSkg
ewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICAvLyBJZiB0aGUgY29tYm9ib3gncyBhY3Rp
dmVEZXNjZW5kYW50IGlzIGluc2lkZSBhIGRlc2NlbmRhbnQgb3duZWQgb3IgY29udHJvbGxlZCBi
eSB0aGUgY29tYm9ib3gsIHRoYXQgZGVzY2VuZGFudCBzaG91bGQgYmUgdGhlIHRhcmdldCBvZiB0
aGUgbm90aWZpY2F0aW9uIGFuZCBub3QgdGhlIGNvbWJvYm94IGl0c2VsZi4KLSAgICAgICAgaWYg
KG9iamVjdC0+aXNDb21ib0JveCgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogb3duZWRPYmpl
Y3QgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kUmVsYXRlZE9iamVjdEluQW5jZXN0cnkoKm9iamVjdCwg
QVhSZWxhdGlvblR5cGU6Ok93bmVyRm9yLCAqYWN0aXZlRGVzY2VuZGFudCkpCi0gICAgICAgICAg
ICAgICAgdGFyZ2V0ID0gb3duZWRPYmplY3Q7Ci0gICAgICAgICAgICBlbHNlIGlmIChhdXRvKiBj
b250cm9sbGVkT2JqZWN0ID0gQWNjZXNzaWJpbGl0eTo6ZmluZFJlbGF0ZWRPYmplY3RJbkFuY2Vz
dHJ5KCpvYmplY3QsIEFYUmVsYXRpb25UeXBlOjpDb250cm9sbGVyRm9yLCAqYWN0aXZlRGVzY2Vu
ZGFudCkpCi0gICAgICAgICAgICAgICAgdGFyZ2V0ID0gY29udHJvbGxlZE9iamVjdDsKLSAgICAg
ICAgfQorICAgICAgICBpZiAoYXV0byogb3duZWRPYmplY3QgPSBBY2Nlc3NpYmlsaXR5OjpmaW5k
UmVsYXRlZE9iamVjdEluQW5jZXN0cnkoKm9iamVjdCwgQVhSZWxhdGlvblR5cGU6Ok93bmVyRm9y
LCAqYWN0aXZlRGVzY2VuZGFudCkpCisgICAgICAgICAgICB0YXJnZXQgPSBvd25lZE9iamVjdDsK
KyAgICAgICAgZWxzZSBpZiAoYXV0byogY29udHJvbGxlZE9iamVjdCA9IEFjY2Vzc2liaWxpdHk6
OmZpbmRSZWxhdGVkT2JqZWN0SW5BbmNlc3RyeSgqb2JqZWN0LCBBWFJlbGF0aW9uVHlwZTo6Q29u
dHJvbGxlckZvciwgKmFjdGl2ZURlc2NlbmRhbnQpKQorICAgICAgICAgICAgdGFyZ2V0ID0gY29u
dHJvbGxlZE9iamVjdDsKICNlbmRpZgorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIENoZWNrIHRv
IHNlZSBpZiB0aGUgYWN0aXZlIGRlc2NlbmRhbnQgaXMgYSBjaGlsZCBvZiB0aGUgY29udHJvbGxl
ZCBvYmplY3QuIFRoZW4gd2UgaGF2ZSB0byB1c2UgdGhhdAorICAgICAgICAvLyBjb250cm9sbGVk
IG9iamVjdCBhcyB0aGUgdGFyZ2V0IHdlIHVzZSBpbiBub3RpZmljYXRpb25zLgorICAgICAgICB0
YXJnZXQgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3IoKmFjdGl2ZURlc2NlbmRhbnQsIGZh
bHNlLCBbJm9iamVjdF0gKGNvbnN0IGF1dG8mIGFjdGl2ZURlc2NlbmRhbnRBbmNlc3Rvcikgewor
ICAgICAgICAgICAgcmV0dXJuIG9iamVjdC0+cmVsYXRlZE9iamVjdHMoQVhSZWxhdGlvblR5cGU6
OkNvbnRyb2xsZXJGb3IpLmNvbnRhaW5zKCZhY3RpdmVEZXNjZW5kYW50QW5jZXN0b3IpOworICAg
ICAgICB9KTsKKyAgICB9CiAKKyAgICBpZiAodGFyZ2V0KSB7CiAjaWYgRU5BQkxFKEFDQ0VTU0lC
SUxJVFlfSVNPTEFURURfVFJFRSkKICAgICAgICAgaWYgKHRhcmdldCAhPSBvYmplY3QpCiAgICAg
ICAgICAgICB1cGRhdGVJc29sYXRlZFRyZWUodGFyZ2V0LCBBWE5vdGlmaWNhdGlvbjo6QVhBY3Rp
dmVEZXNjZW5kYW50Q2hhbmdlZCk7CkBAIC00MDg4LDggKzQwOTgsMTQgQEAgdm9pZCBBWE9iamVj
dENhY2hlOjp1cGRhdGVSZWxhdGlvbnNGb3JUcmVlKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKQog
ICAgIFZlY3RvcjxSZWxhdGlvbk9yaWdpbj4gb3JpZ2luczsKICAgICBWZWN0b3I8UmVsYXRpb25U
YXJnZXQ+IHRhcmdldHM7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5
cGU8RWxlbWVudD4ocm9vdE5vZGUpKSB7CisgICAgICAgIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUo
bWV0YVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGhlYWRUYWcpIHx8IGVsZW1lbnQuaGFzVGFn
TmFtZShzY3JpcHRUYWcpKQorICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgaWYgKFJl
ZlB0ciBzaGFkb3dSb290ID0gZWxlbWVudC5zaGFkb3dSb290KCk7IHNoYWRvd1Jvb3QgJiYgc2hh
ZG93Um9vdC0+bW9kZSgpICE9IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCiAgICAgICAgICAg
ICB1cGRhdGVSZWxhdGlvbnNGb3JUcmVlKCpzaGFkb3dSb290KTsKKyAgICAgICAgaWYgKGF1dG8q
IGZyYW1lT3duZXJFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxGcmFtZU93bmVyRWxlbWVu
dD4oZWxlbWVudCkpCisgICAgICAgICAgICB1cGRhdGVSZWxhdGlvbnNGb3JUcmVlKCpmcmFtZU93
bmVyRWxlbWVudC0+Y29udGVudERvY3VtZW50KCkpOworCiAgICAgICAgIC8vIENvbGxlY3QgYWxs
IHBvc3NpYmxlIG9yaWdpbnMsIGkuZS4sIGVsZW1lbnRzIHdpdGggbm9uLWVtcHR5IHJlbGF0aW9u
IGF0dHJpYnV0ZXMuCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgYXR0cmlidXRlIDogcmVsYXRp
b25BdHRyaWJ1dGVzKCkpIHsKICAgICAgICAgICAgIGlmIChtX2RvY3VtZW50LnNldHRpbmdzKCku
YXJpYVJlZmxlY3Rpb25Gb3JFbGVtZW50UmVmZXJlbmNlc0VuYWJsZWQoKSkgewpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvYWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1h
cmlhLWNvbnRyb2xzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L2FjdGl2ZS1kZXNjZW5kYW50LXdpdGgtYXJpYS1jb250cm9scy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45ZGFmMDA1MWMyNDcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9hY3RpdmUtZGVzY2VuZGFu
dC13aXRoLWFyaWEtY29udHJvbHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1JlY2Vp
dmVkIHNlbGVjdGVkIGNoaWxkcmVuIG5vdGlmaWNhdGlvbiBBWFJvbGU6IEFYTGlzdAorVGhpcyB0
ZXN0IGVuc3VyZXMgb2JqZWN0cyB0aGF0IGNvbnRyb2wgb2JqZWN0cyB3aXRoIGFjdGl2ZSBkZXNj
ZW5kYW50cyBnZW5lcmF0ZSB0aGUgY29ycmVjdCBub3RpZmljYXRpb25zLCB3aGlsZSBhbHNvIGJl
aW5nIGluc2lkZSBmcmFtZXMuCisKK2FkZGVkTm90aWZpY2F0aW9uOiB0cnVlCitDb250cm9sbGVy
IHJvbGU6IEFYUm9sZTogQVhUZXh0RmllbGQKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCitjb250cm9sbGVyCisxCisyCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9hY3RpdmUtZGVzY2VuZGFudC13aXRoLWFyaWEtY29u
dHJvbHMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2FjdGl2ZS1kZXNjZW5k
YW50LXdpdGgtYXJpYS1jb250cm9scy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uYmJlOGMxMDg5NWQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvYWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1hcmlhLWNvbnRyb2xzLmh0
bWwKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
YWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisKKzxkaXYg
cm9sZT0idGV4dGJveCIgY29udGVudGVkaXRhYmxlIHRhYmluZGV4PSIwIiBhcmlhLWNvbnRyb2xz
PSJsaXN0Ym94IiBpZD0iY29udHJvbGxlciIgYXJpYS1leHBhbmRlZD0idHJ1ZSI+CisgICBjb250
cm9sbGVyCis8L2Rpdj4KKworPGRpdiByb2xlPSJsaXN0Ym94IiBpZD0ibGlzdGJveCI+CisgICAg
PGRpdiByb2xlPSJvcHRpb24iIGlkPSJvcHRpb24xIj4xPC9kaXY+CisgICAgPGRpdiByb2xlPSJv
cHRpb24iIGlkPSJvcHRpb24yIj4yPC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK3ZhciBvdXRw
dXQgPSAiVGhpcyB0ZXN0IGVuc3VyZXMgb2JqZWN0cyB0aGF0IGNvbnRyb2wgb2JqZWN0cyB3aXRo
IGFjdGl2ZSBkZXNjZW5kYW50cyBnZW5lcmF0ZSB0aGUgY29ycmVjdCBub3RpZmljYXRpb25zLCB3
aGlsZSBhbHNvIGJlaW5nIGluc2lkZSBmcmFtZXMuXG5cbiI7CisKK2Z1bmN0aW9uIG5vdGlmeUNh
bGxiYWNrKGVsZW1lbnQsIG5vdGlmaWNhdGlvbikgeworICAgIGlmIChub3RpZmljYXRpb24gPT0g
IkFYU2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQiKSB7CisgICAgICAgIGRlYnVnKCJSZWNlaXZlZCBz
ZWxlY3RlZCBjaGlsZHJlbiBub3RpZmljYXRpb24gIiArIGVsZW1lbnQucm9sZSk7CisgICAgICAg
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCk7Cisg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KK30KKworaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
IHZhciBhZGRlZE5vdGlmaWNhdGlvbiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFkZE5vdGlm
aWNhdGlvbkxpc3RlbmVyKG5vdGlmeUNhbGxiYWNrKTsKKyAgICBvdXRwdXQgKz0gYGFkZGVkTm90
aWZpY2F0aW9uOiAke2FkZGVkTm90aWZpY2F0aW9ufVxuYDsKKyAgICB2YXIgY29udHJvbGxlciA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250cm9sbGVyIik7CisgICAgdmFyIGF4Q29udHJv
bGxlciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY29u
dHJvbGxlciIpOworICAgIG91dHB1dCArPSBgQ29udHJvbGxlciByb2xlOiAke2F4Q29udHJvbGxl
ci5yb2xlfVxuYDsKKyAgICAKKyAgICBjb250cm9sbGVyLmZvY3VzKCk7CisgICAgY29udHJvbGxl
ci5zZXRBdHRyaWJ1dGUoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsICJvcHRpb24xIik7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9wdGlvbjEiKS5zZXRBdHRyaWJ1dGUoImFyaWEtc2Vs
ZWN0ZWQiLCAidHJ1ZSIpOworICAgIGRlYnVnKG91dHB1dCk7Cit9CisKKzwvc2NyaXB0PgorCis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy9yZWxhdGlvbnNoaXBzLWluLWZyYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9yZWxhdGlvbnNoaXBzLWluLWZyYW1lcy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNmM0MDRiNmY0NGUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZWxhdGlvbnNoaXBzLWlu
LWZyYW1lcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorY29udHJvbGxlciByb2xlOiBB
WFJvbGU6IEFYVGV4dEZpZWxkCitjb250cm9sbGVyIGNvbnRyb2xzIHJvbGU6IGxpc3Rib3gKK2xp
c3Rib3ggcm9sZTogQVhSb2xlOiBBWExpc3QKK2FyaWEtY29udHJvbHMgdGV4dGJveC0+bGlzdGJv
eCA6IHRydWUKK2NvbnRyb2xsZXIgY29udHJvbHMgcm9sZSBhZnRlciBjaGFuZ2U6IGxpc3Rib3gy
CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZWxhdGlvbnNoaXBzLWlu
LWZyYW1lcy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVsYXRpb25zaGlw
cy1pbi1mcmFtZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjViMDNiNzU0NmQ4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3JlbGF0aW9uc2hpcHMtaW4tZnJhbWVzLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8aWZyYW1lIHdpZHRoPTUwMCBoZWlnaHQ9NTAwIGlk
PSJmcmFtZTEiIHRpdGxlPSJmcmFtZTEiPjwvaWZyYW1lPgorCis8c2NyaXB0PgordmFyIG91dHB1
dCA9ICJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IG9iamVjdHMgd2l0aCByZWxhdGlvbnNoaXBzIGlu
IGZyYW1lcyB3b3JrLlxuXG4iOworCitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgdmFyIGZyYW1lMSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZTEiKTsKKyAgICBmcmFtZTEub25sb2FkID0g
ZnVuY3Rpb24oZSkgeworICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHsKKyAgICAgICAg
ICAgIHRvdWNoQWNjZXNzaWJpbGl0eVRyZWUoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucm9vdEVs
ZW1lbnQpOworICAgICAgICAgICAgdmFyIGNvbnRyb2xsZXIgPSBhd2FpdCB3YWl0Rm9yRWxlbWVu
dEJ5SWQoImNvbnRyb2xsZXIiKTsKKyAgICAgICAgICAgIHZhciBvdXRwdXQgPSBgY29udHJvbGxl
ciByb2xlOiAke2NvbnRyb2xsZXIucm9sZX1cbmA7CisgICAgICAgICAgICB2YXIgY29udHJvbGxl
ZCA9IGNvbnRyb2xsZXIuYXJpYUNvbnRyb2xzRWxlbWVudEF0SW5kZXgoMCk7CisgICAgICAgICAg
ICBvdXRwdXQgKz0gYGNvbnRyb2xsZXIgY29udHJvbHMgcm9sZTogJHtjb250cm9sbGVkLmRvbUlk
ZW50aWZpZXJ9XG5gOworICAgCisgICAgICAgICAgICB2YXIgbGlzdGJveCA9IGF3YWl0IHdhaXRG
b3JFbGVtZW50QnlJZCgibGlzdGJveCIpOworICAgICAgICAgICAgb3V0cHV0ICs9IGBsaXN0Ym94
IHJvbGU6ICR7bGlzdGJveC5yb2xlfVxuYDsKKyAgICAgICAgICAgIG91dHB1dCArPSBgYXJpYS1j
b250cm9scyB0ZXh0Ym94LT5saXN0Ym94IDogJHtjb250cm9sbGVkLmlzRXF1YWwobGlzdGJveCl9
XG5gOworCisgICAgICAgICAgICBmcmFtZTEuY29udGVudERvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb250cm9sbGVyIikuc2V0QXR0cmlidXRlKCJhcmlhLWNvbnRyb2xzIiwgImxpc3Rib3gyIik7
CisgICAgICAgICAgICBjb250cm9sbGVkID0gY29udHJvbGxlci5hcmlhQ29udHJvbHNFbGVtZW50
QXRJbmRleCgwKTsKKyAgICAgICAgICAgIG91dHB1dCArPSBgY29udHJvbGxlciBjb250cm9scyBy
b2xlIGFmdGVyIGNoYW5nZTogJHtjb250cm9sbGVkLmRvbUlkZW50aWZpZXJ9XG5gOworICAgICAg
ICAgICAgZGVidWcob3V0cHV0KTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOyAKKyAgICAg
ICB9LCAwKTsKKyAgICB9OworCisgICAgdmFyIGh0bWwgPSBgPGRpdiByb2xlPSJ0ZXh0Ym94IiBj
b250ZW50ZWRpdGFibGUgdGFiaW5kZXg9IjAiIGFyaWEtY29udHJvbHM9Imxpc3Rib3giIGlkPSJj
b250cm9sbGVyIj4KKyAgICAgICAgY29udHJvbGxlcgorICAgIDwvZGl2PgorICAgIDxkaXYgcm9s
ZT0ibGlzdGJveCIgaWQ9Imxpc3Rib3giPgorICAgICAgICA8ZGl2IHJvbGU9Im9wdGlvbiIgaWQ9
Im9wdGlvbjEiPjE8L2Rpdj4KKyAgICAgICAgPGRpdiByb2xlPSJvcHRpb24iIGlkPSJvcHRpb24y
Ij4yPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiByb2xlPSJsaXN0Ym94IiBpZD0ibGlzdGJv
eDIiPgorICAgIDwvZGl2PmA7CisKKyAgICBmcmFtZTEuc3JjID0gImRhdGE6dGV4dC9odG1sLDxi
b2R5PiIgKyBodG1sICsgIjwvYm9keT4iOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464221</attachid>
            <date>2022-12-27 00:06:09 -0800</date>
            <delta_ts>2023-01-04 08:45:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224582-20221227000609.patch</filename>
            <type>text/plain</type>
            <size>11703</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSAyZGI2YzY3MmNiYjJiNTFkNTc4NWQ3N2RkNTVhMGUyNjdmM2EzY2Q4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogU3VuLCAyNSBEZWMgMjAyMiAwMDowNDoyOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBgYXJpYS1hY3RpdmVkZXNjZW5kYW50YCBkb2Vzbid0IHdvcmsgd2l0aCBhIHN0YW5kYXJkCiAi
bGlzdGJveCIgcGF0dGVybiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI0NTgyCiByZGFyOi8vNzY2NzAwNzIKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhl
cmUgd2VyZSBhIGZldyB0aGluZ3MgcHJldmVudGluZyB0aGlzIGZyb20gd29ya2luZy4KMSkgUmVs
YXRpb25zaGlwcyBpbiBmcmFtZXMgd2VyZSBicm9rZW4gYWZ0ZXIgdGhlIGNoYW5nZSB0byBjYWNo
ZSByZWxhdGlvbnNoaXBzIGluIGEgY2VudHJhbCBtYXAuCjIpIGFjdGl2ZURlc2NlbmRhbnQgd2Fz
bid0IGNoZWNraW5nIGlmIHRoZSByaWdodCBmcmFtZSB3YXMgZm9jdXNlZC4KMykgYWN0aXZlRGVz
Y2VuZGFudCBuZWVkZWQgdG8gaGFuZGxlIHRoZSBhcmlhLWNvbnRyb2xzIGNhc2UgaW4gb3JkZXIg
dG8gcGljayB0aGUgcmlnaHQgdGFyZ2V0IGZvciBhIG5vdGlmaWNhdGlvbi4KNCkgQSBWb2ljZU92
ZXIgc2lkZSBmaXggYWxzbyB3YXMgcmVxdWlyZWQ6IHJkYXI6Ly8xMDM2MDkyODAKCiogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvYWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1hcmlhLWNvbnRy
b2xzLWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
YWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1hcmlhLWNvbnRyb2xzLmh0bWw6IEFkZGVkLgoqIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3JlbGF0aW9uc2hpcHMtaW4tZnJhbWVzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVsYXRpb25zaGlw
cy1pbi1mcmFtZXMuaHRtbDogQWRkZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcDoKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFjdGl2ZURl
c2NlbmRhbnRDaGFuZ2VkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnVwZGF0ZVJlbGF0aW9u
c0ZvclRyZWUpOgotLS0KIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAgICB8IDQzICsrKysrKysrKystLS0tLQogLi4uZGVzY2VuZGFudC13aXRoLWFyaWEtY29udHJv
bHMtZXhwZWN0ZWQudHh0IHwgMTIgKysrKysKIC4uLi9hY3RpdmUtZGVzY2VuZGFudC13aXRoLWFy
aWEtY29udHJvbHMuaHRtbCB8IDQ4ICsrKysrKysrKysrKysrKysrCiAuLi4vbWFjL3JlbGF0aW9u
c2hpcHMtaW4tZnJhbWVzLWV4cGVjdGVkLnR4dCAgfCAxMCArKysrCiAuLi4vbWFjL3JlbGF0aW9u
c2hpcHMtaW4tZnJhbWVzLmh0bWwgICAgICAgICAgfCA1MyArKysrKysrKysrKysrKysrKysrCiA1
IGZpbGVzIGNoYW5nZWQsIDE1NCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9hY3RpdmUtZGVzY2Vu
ZGFudC13aXRoLWFyaWEtY29udHJvbHMtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvYWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1hcmlh
LWNvbnRyb2xzLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9yZWxhdGlvbnNoaXBzLWluLWZyYW1lcy1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZWxhdGlvbnNoaXBzLWluLWZy
YW1lcy5odG1sCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAKaW5kZXggYTliYWMwNTQ2YmUzLi5lOTlkNDI3NTIwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTg5NSw3ICsxODk1LDgg
QEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2UoTm9kZSogbm9k
ZSkKIAogdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZChF
bGVtZW50JiBlbGVtZW50KQogewotICAgIGlmICghZG9jdW1lbnQoKS5mcmFtZSgpLT5zZWxlY3Rp
b24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKKyAgICAvLyBVc2UgdGhlIGVsZW1lbnQncyBkb2N1
bWVudCBpbnN0ZWFkIG9mIHRoZSBjYWNoZSdzIGRvY3VtZW50IGluIGNhc2Ugd2UncmUgaW5zaWRl
IGEgZnJhbWUgdGhhdCdzIG1hbmFnaW5nIGZvY3VzLgorICAgIGlmICghZWxlbWVudC5kb2N1bWVu
dCgpLmZyYW1lKCktPnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBhdXRvKiBvYmplY3QgPSBnZXRPckNyZWF0ZSgmZWxlbWVudCk7CkBAIC0x
OTA3LDI1ICsxOTA4LDM3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQWN0aXZlRGVzY2Vu
ZGFudENoYW5nZWQoRWxlbWVudCYgZWxlbWVudCkKICNlbmRpZgogCiAgICAgLy8gTm90aWZ5IGFj
dGl2ZSBkZXNjZW5kYW50IGNoYW5nZXMgb25seSBmb3IgdGhlIGZvY3VzZWQgZWxlbWVudC4KLSAg
ICBpZiAoZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpICE9ICZlbGVtZW50KQorICAgIGlmIChl
bGVtZW50LmRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSAhPSAmZWxlbWVudCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYXV0byogYWN0aXZlRGVzY2VuZGFudCA9IG9iamVjdC0+YWN0aXZlRGVz
Y2VuZGFudCgpOwotICAgIC8vIFdlIHdhbnQgdG8gbm90aWZ5IHRoYXQgdGhlIGNvbWJvIGJveCBo
YXMgY2hhbmdlZCBpdHMgYWN0aXZlIGRlc2NlbmRhbnQsCi0gICAgLy8gYnV0IHdlIGRvIG5vdCB3
YW50IHRvIGNoYW5nZSB0aGUgZm9jdXMsIGJlY2F1c2UgZm9jdXMgc2hvdWxkIHJlbWFpbiB3aXRo
IHRoZSBjb21ibyBib3guCi0gICAgaWYgKGFjdGl2ZURlc2NlbmRhbnQgJiYgKG9iamVjdC0+aXND
b21ib0JveCgpIHx8IG9iamVjdC0+c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkpKSB7Ci0g
ICAgICAgIGF1dG8qIHRhcmdldCA9IG9iamVjdDsKKyAgICBpZiAoIWFjdGl2ZURlc2NlbmRhbnQp
CisgICAgICAgIHJldHVybjsKIAorICAgIC8vIEhhbmRsZSBhY3RpdmUtZGVzY2VuZGFudCBjaGFu
Z2VzIHdoZW4gdGhlIHRhcmdldCBhbGxvd3MgZm9yIGl0LCBvciB0aGUgY29udHJvbGxlZCBvYmpl
Y3QgYWxsb3dzIGZvciBpdC4KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0YXJnZXQgPSBudWxs
cHRyOworICAgIGlmIChvYmplY3QtPnNob3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCgpKQorICAg
ICAgICB0YXJnZXQgPSBvYmplY3Q7CisgICAgZWxzZSBpZiAob2JqZWN0LT5pc0NvbWJvQm94KCkp
IHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgLy8gSWYgdGhlIGNvbWJvYm94J3MgYWN0
aXZlRGVzY2VuZGFudCBpcyBpbnNpZGUgYSBkZXNjZW5kYW50IG93bmVkIG9yIGNvbnRyb2xsZWQg
YnkgdGhlIGNvbWJvYm94LCB0aGF0IGRlc2NlbmRhbnQgc2hvdWxkIGJlIHRoZSB0YXJnZXQgb2Yg
dGhlIG5vdGlmaWNhdGlvbiBhbmQgbm90IHRoZSBjb21ib2JveCBpdHNlbGYuCi0gICAgICAgIGlm
IChvYmplY3QtPmlzQ29tYm9Cb3goKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIG93bmVkT2Jq
ZWN0ID0gQWNjZXNzaWJpbGl0eTo6ZmluZFJlbGF0ZWRPYmplY3RJbkFuY2VzdHJ5KCpvYmplY3Qs
IEFYUmVsYXRpb25UeXBlOjpPd25lckZvciwgKmFjdGl2ZURlc2NlbmRhbnQpKQotICAgICAgICAg
ICAgICAgIHRhcmdldCA9IG93bmVkT2JqZWN0OwotICAgICAgICAgICAgZWxzZSBpZiAoYXV0byog
Y29udHJvbGxlZE9iamVjdCA9IEFjY2Vzc2liaWxpdHk6OmZpbmRSZWxhdGVkT2JqZWN0SW5BbmNl
c3RyeSgqb2JqZWN0LCBBWFJlbGF0aW9uVHlwZTo6Q29udHJvbGxlckZvciwgKmFjdGl2ZURlc2Nl
bmRhbnQpKQotICAgICAgICAgICAgICAgIHRhcmdldCA9IGNvbnRyb2xsZWRPYmplY3Q7Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKGF1dG8qIG93bmVkT2JqZWN0ID0gQWNjZXNzaWJpbGl0eTo6Zmlu
ZFJlbGF0ZWRPYmplY3RJbkFuY2VzdHJ5KCpvYmplY3QsIEFYUmVsYXRpb25UeXBlOjpPd25lckZv
ciwgKmFjdGl2ZURlc2NlbmRhbnQpKQorICAgICAgICAgICAgdGFyZ2V0ID0gb3duZWRPYmplY3Q7
CisgICAgICAgIGVsc2UgaWYgKGF1dG8qIGNvbnRyb2xsZWRPYmplY3QgPSBBY2Nlc3NpYmlsaXR5
OjpmaW5kUmVsYXRlZE9iamVjdEluQW5jZXN0cnkoKm9iamVjdCwgQVhSZWxhdGlvblR5cGU6OkNv
bnRyb2xsZXJGb3IsICphY3RpdmVEZXNjZW5kYW50KSkKKyAgICAgICAgICAgIHRhcmdldCA9IGNv
bnRyb2xsZWRPYmplY3Q7CiAjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBDaGVjayB0
byBzZWUgaWYgdGhlIGFjdGl2ZSBkZXNjZW5kYW50IGlzIGEgY2hpbGQgb2YgdGhlIGNvbnRyb2xs
ZWQgb2JqZWN0LiBUaGVuIHdlIGhhdmUgdG8gdXNlIHRoYXQKKyAgICAgICAgLy8gY29udHJvbGxl
ZCBvYmplY3QgYXMgdGhlIHRhcmdldCB3ZSB1c2UgaW4gbm90aWZpY2F0aW9ucy4KKyAgICAgICAg
YXV0byBjb250cm9sbGVkT2JqZWN0cyA9IG9iamVjdC0+cmVsYXRlZE9iamVjdHMoQVhSZWxhdGlv
blR5cGU6OkNvbnRyb2xsZXJGb3IpOworICAgICAgICBpZiAoY29udHJvbGxlZE9iamVjdHMuc2l6
ZSgpKSB7CisgICAgICAgICAgICB0YXJnZXQgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3Io
KmFjdGl2ZURlc2NlbmRhbnQsIGZhbHNlLCBbJmNvbnRyb2xsZWRPYmplY3RzXSAoY29uc3QgYXV0
byYgYWN0aXZlRGVzY2VuZGFudEFuY2VzdG9yKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNv
bnRyb2xsZWRPYmplY3RzLmNvbnRhaW5zKCZhY3RpdmVEZXNjZW5kYW50QW5jZXN0b3IpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CiAKKyAgICBpZiAodGFyZ2V0KSB7CiAjaWYg
RU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICAgICAgaWYgKHRhcmdldCAh
PSBvYmplY3QpCiAgICAgICAgICAgICB1cGRhdGVJc29sYXRlZFRyZWUodGFyZ2V0LCBBWE5vdGlm
aWNhdGlvbjo6QVhBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCk7CkBAIC00MDg4LDggKzQxMDEsMTQg
QEAgdm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVSZWxhdGlvbnNGb3JUcmVlKENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlKQogICAgIFZlY3RvcjxSZWxhdGlvbk9yaWdpbj4gb3JpZ2luczsKICAgICBW
ZWN0b3I8UmVsYXRpb25UYXJnZXQ+IHRhcmdldHM7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDog
ZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpKSB7CisgICAgICAgIGlmIChlbGVt
ZW50Lmhhc1RhZ05hbWUobWV0YVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGhlYWRUYWcpIHx8
IGVsZW1lbnQuaGFzVGFnTmFtZShzY3JpcHRUYWcpKQorICAgICAgICAgICAgY29udGludWU7CisK
ICAgICAgICAgaWYgKFJlZlB0ciBzaGFkb3dSb290ID0gZWxlbWVudC5zaGFkb3dSb290KCk7IHNo
YWRvd1Jvb3QgJiYgc2hhZG93Um9vdC0+bW9kZSgpICE9IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdl
bnQpCiAgICAgICAgICAgICB1cGRhdGVSZWxhdGlvbnNGb3JUcmVlKCpzaGFkb3dSb290KTsKKyAg
ICAgICAgaWYgKGF1dG8qIGZyYW1lT3duZXJFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxG
cmFtZU93bmVyRWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAgICB1cGRhdGVSZWxhdGlvbnNG
b3JUcmVlKCpmcmFtZU93bmVyRWxlbWVudC0+Y29udGVudERvY3VtZW50KCkpOworCiAgICAgICAg
IC8vIENvbGxlY3QgYWxsIHBvc3NpYmxlIG9yaWdpbnMsIGkuZS4sIGVsZW1lbnRzIHdpdGggbm9u
LWVtcHR5IHJlbGF0aW9uIGF0dHJpYnV0ZXMuCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgYXR0
cmlidXRlIDogcmVsYXRpb25BdHRyaWJ1dGVzKCkpIHsKICAgICAgICAgICAgIGlmIChtX2RvY3Vt
ZW50LnNldHRpbmdzKCkuYXJpYVJlZmxlY3Rpb25Gb3JFbGVtZW50UmVmZXJlbmNlc0VuYWJsZWQo
KSkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvYWN0aXZlLWRl
c2NlbmRhbnQtd2l0aC1hcmlhLWNvbnRyb2xzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL2FjdGl2ZS1kZXNjZW5kYW50LXdpdGgtYXJpYS1jb250cm9scy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45ZGFmMDA1
MWMyNDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9h
Y3RpdmUtZGVzY2VuZGFudC13aXRoLWFyaWEtY29udHJvbHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTIgQEAKK1JlY2VpdmVkIHNlbGVjdGVkIGNoaWxkcmVuIG5vdGlmaWNhdGlvbiBBWFJvbGU6
IEFYTGlzdAorVGhpcyB0ZXN0IGVuc3VyZXMgb2JqZWN0cyB0aGF0IGNvbnRyb2wgb2JqZWN0cyB3
aXRoIGFjdGl2ZSBkZXNjZW5kYW50cyBnZW5lcmF0ZSB0aGUgY29ycmVjdCBub3RpZmljYXRpb25z
LCB3aGlsZSBhbHNvIGJlaW5nIGluc2lkZSBmcmFtZXMuCisKK2FkZGVkTm90aWZpY2F0aW9uOiB0
cnVlCitDb250cm9sbGVyIHJvbGU6IEFYUm9sZTogQVhUZXh0RmllbGQKKworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitjb250cm9sbGVyCisxCisyCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9hY3RpdmUtZGVzY2VuZGFu
dC13aXRoLWFyaWEtY29udHJvbHMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L2FjdGl2ZS1kZXNjZW5kYW50LXdpdGgtYXJpYS1jb250cm9scy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmJlOGMxMDg5NWQxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvYWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1h
cmlhLWNvbnRyb2xzLmh0bWwKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKwor
PGJvZHk+CisKKzxkaXYgcm9sZT0idGV4dGJveCIgY29udGVudGVkaXRhYmxlIHRhYmluZGV4PSIw
IiBhcmlhLWNvbnRyb2xzPSJsaXN0Ym94IiBpZD0iY29udHJvbGxlciIgYXJpYS1leHBhbmRlZD0i
dHJ1ZSI+CisgICBjb250cm9sbGVyCis8L2Rpdj4KKworPGRpdiByb2xlPSJsaXN0Ym94IiBpZD0i
bGlzdGJveCI+CisgICAgPGRpdiByb2xlPSJvcHRpb24iIGlkPSJvcHRpb24xIj4xPC9kaXY+Cisg
ICAgPGRpdiByb2xlPSJvcHRpb24iIGlkPSJvcHRpb24yIj4yPC9kaXY+Cis8L2Rpdj4KKworPHNj
cmlwdD4KK3ZhciBvdXRwdXQgPSAiVGhpcyB0ZXN0IGVuc3VyZXMgb2JqZWN0cyB0aGF0IGNvbnRy
b2wgb2JqZWN0cyB3aXRoIGFjdGl2ZSBkZXNjZW5kYW50cyBnZW5lcmF0ZSB0aGUgY29ycmVjdCBu
b3RpZmljYXRpb25zLCB3aGlsZSBhbHNvIGJlaW5nIGluc2lkZSBmcmFtZXMuXG5cbiI7CisKK2Z1
bmN0aW9uIG5vdGlmeUNhbGxiYWNrKGVsZW1lbnQsIG5vdGlmaWNhdGlvbikgeworICAgIGlmIChu
b3RpZmljYXRpb24gPT0gIkFYU2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQiKSB7CisgICAgICAgIGRl
YnVnKCJSZWNlaXZlZCBzZWxlY3RlZCBjaGlsZHJlbiBub3RpZmljYXRpb24gIiArIGVsZW1lbnQu
cm9sZSk7CisgICAgICAgIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLnJlbW92ZU5vdGlmaWNhdGlv
bkxpc3RlbmVyKCk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KK30KKworaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgIHZhciBhZGRlZE5vdGlmaWNhdGlvbiA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKG5vdGlmeUNhbGxiYWNrKTsKKyAgICBvdXRw
dXQgKz0gYGFkZGVkTm90aWZpY2F0aW9uOiAke2FkZGVkTm90aWZpY2F0aW9ufVxuYDsKKyAgICB2
YXIgY29udHJvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250cm9sbGVyIik7Cisg
ICAgdmFyIGF4Q29udHJvbGxlciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgiY29udHJvbGxlciIpOworICAgIG91dHB1dCArPSBgQ29udHJvbGxlciByb2xl
OiAke2F4Q29udHJvbGxlci5yb2xlfVxuYDsKKyAgICAKKyAgICBjb250cm9sbGVyLmZvY3VzKCk7
CisgICAgY29udHJvbGxlci5zZXRBdHRyaWJ1dGUoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsICJv
cHRpb24xIik7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9wdGlvbjEiKS5zZXRBdHRy
aWJ1dGUoImFyaWEtc2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgIGRlYnVnKG91dHB1dCk7Cit9CisK
Kzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy9yZWxhdGlvbnNoaXBzLWluLWZyYW1lcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZWxhdGlvbnNoaXBzLWluLWZyYW1lcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNmM0MDRi
NmY0NGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9y
ZWxhdGlvbnNoaXBzLWluLWZyYW1lcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorY29u
dHJvbGxlciByb2xlOiBBWFJvbGU6IEFYVGV4dEZpZWxkCitjb250cm9sbGVyIGNvbnRyb2xzIHJv
bGU6IGxpc3Rib3gKK2xpc3Rib3ggcm9sZTogQVhSb2xlOiBBWExpc3QKK2FyaWEtY29udHJvbHMg
dGV4dGJveC0+bGlzdGJveCA6IHRydWUKK2NvbnRyb2xsZXIgY29udHJvbHMgcm9sZSBhZnRlciBj
aGFuZ2U6IGxpc3Rib3gyCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9y
ZWxhdGlvbnNoaXBzLWluLWZyYW1lcy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvcmVsYXRpb25zaGlwcy1pbi1mcmFtZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjViMDNiNzU0NmQ4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL3JlbGF0aW9uc2hpcHMtaW4tZnJhbWVzLmh0bWwKQEAgLTAs
MCArMSw1MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJp
bGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8aWZyYW1lIHdpZHRoPTUw
MCBoZWlnaHQ9NTAwIGlkPSJmcmFtZTEiIHRpdGxlPSJmcmFtZTEiPjwvaWZyYW1lPgorCis8c2Ny
aXB0PgordmFyIG91dHB1dCA9ICJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IG9iamVjdHMgd2l0aCBy
ZWxhdGlvbnNoaXBzIGluIGZyYW1lcyB3b3JrLlxuXG4iOworCitpZiAod2luZG93LmFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKSB7CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgdmFyIGZyYW1lMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZTEiKTsKKyAgICBm
cmFtZTEub25sb2FkID0gZnVuY3Rpb24oZSkgeworICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgp
ID0+IHsKKyAgICAgICAgICAgIHRvdWNoQWNjZXNzaWJpbGl0eVRyZWUoYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIucm9vdEVsZW1lbnQpOworICAgICAgICAgICAgdmFyIGNvbnRyb2xsZXIgPSBhd2Fp
dCB3YWl0Rm9yRWxlbWVudEJ5SWQoImNvbnRyb2xsZXIiKTsKKyAgICAgICAgICAgIHZhciBvdXRw
dXQgPSBgY29udHJvbGxlciByb2xlOiAke2NvbnRyb2xsZXIucm9sZX1cbmA7CisgICAgICAgICAg
ICB2YXIgY29udHJvbGxlZCA9IGNvbnRyb2xsZXIuYXJpYUNvbnRyb2xzRWxlbWVudEF0SW5kZXgo
MCk7CisgICAgICAgICAgICBvdXRwdXQgKz0gYGNvbnRyb2xsZXIgY29udHJvbHMgcm9sZTogJHtj
b250cm9sbGVkLmRvbUlkZW50aWZpZXJ9XG5gOworICAgCisgICAgICAgICAgICB2YXIgbGlzdGJv
eCA9IGF3YWl0IHdhaXRGb3JFbGVtZW50QnlJZCgibGlzdGJveCIpOworICAgICAgICAgICAgb3V0
cHV0ICs9IGBsaXN0Ym94IHJvbGU6ICR7bGlzdGJveC5yb2xlfVxuYDsKKyAgICAgICAgICAgIG91
dHB1dCArPSBgYXJpYS1jb250cm9scyB0ZXh0Ym94LT5saXN0Ym94IDogJHtjb250cm9sbGVkLmlz
RXF1YWwobGlzdGJveCl9XG5gOworCisgICAgICAgICAgICBmcmFtZTEuY29udGVudERvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb250cm9sbGVyIikuc2V0QXR0cmlidXRlKCJhcmlhLWNvbnRyb2xz
IiwgImxpc3Rib3gyIik7CisgICAgICAgICAgICBjb250cm9sbGVkID0gY29udHJvbGxlci5hcmlh
Q29udHJvbHNFbGVtZW50QXRJbmRleCgwKTsKKyAgICAgICAgICAgIG91dHB1dCArPSBgY29udHJv
bGxlciBjb250cm9scyByb2xlIGFmdGVyIGNoYW5nZTogJHtjb250cm9sbGVkLmRvbUlkZW50aWZp
ZXJ9XG5gOworICAgICAgICAgICAgZGVidWcob3V0cHV0KTsKKyAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOyAKKyAgICAgICB9LCAwKTsKKyAgICB9OworCisgICAgdmFyIGh0bWwgPSBgPGRpdiBy
b2xlPSJ0ZXh0Ym94IiBjb250ZW50ZWRpdGFibGUgdGFiaW5kZXg9IjAiIGFyaWEtY29udHJvbHM9
Imxpc3Rib3giIGlkPSJjb250cm9sbGVyIj4KKyAgICAgICAgY29udHJvbGxlcgorICAgIDwvZGl2
PgorICAgIDxkaXYgcm9sZT0ibGlzdGJveCIgaWQ9Imxpc3Rib3giPgorICAgICAgICA8ZGl2IHJv
bGU9Im9wdGlvbiIgaWQ9Im9wdGlvbjEiPjE8L2Rpdj4KKyAgICAgICAgPGRpdiByb2xlPSJvcHRp
b24iIGlkPSJvcHRpb24yIj4yPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiByb2xlPSJsaXN0
Ym94IiBpZD0ibGlzdGJveDIiPgorICAgIDwvZGl2PmA7CisKKyAgICBmcmFtZTEuc3JjID0gImRh
dGE6dGV4dC9odG1sLDxib2R5PiIgKyBodG1sICsgIjwvYm9keT4iOworfQorCis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464329</attachid>
            <date>2023-01-04 08:45:59 -0800</date>
            <delta_ts>2023-01-04 09:20:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224582-20230104084559.patch</filename>
            <type>text/plain</type>
            <size>11646</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSBhYjhjMGVjM2MwYWE0OTg3N2FlNWNmMzg5ZTQyOWI5YTZmM2ViOGY1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogU3VuLCAyNSBEZWMgMjAyMiAwMDowNDoyOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBgYXJpYS1hY3RpdmVkZXNjZW5kYW50YCBkb2Vzbid0IHdvcmsgd2l0aCBhIHN0YW5kYXJkCiAi
bGlzdGJveCIgcGF0dGVybiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI0NTgyCiByZGFyOi8vNzY2NzAwNzIKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhl
cmUgd2VyZSBhIGZldyB0aGluZ3MgcHJldmVudGluZyB0aGlzIGZyb20gd29ya2luZy4KMSkgUmVs
YXRpb25zaGlwcyBpbiBmcmFtZXMgd2VyZSBicm9rZW4gYWZ0ZXIgdGhlIGNoYW5nZSB0byBjYWNo
ZSByZWxhdGlvbnNoaXBzIGluIGEgY2VudHJhbCBtYXAuCjIpIGFjdGl2ZURlc2NlbmRhbnQgd2Fz
bid0IGNoZWNraW5nIGlmIHRoZSByaWdodCBmcmFtZSB3YXMgZm9jdXNlZC4KMykgYWN0aXZlRGVz
Y2VuZGFudCBuZWVkZWQgdG8gaGFuZGxlIHRoZSBhcmlhLWNvbnRyb2xzIGNhc2UgaW4gb3JkZXIg
dG8gcGljayB0aGUgcmlnaHQgdGFyZ2V0IGZvciBhIG5vdGlmaWNhdGlvbi4KNCkgQSBWb2ljZU92
ZXIgc2lkZSBmaXggYWxzbyB3YXMgcmVxdWlyZWQ6IHJkYXI6Ly8xMDM2MDkyODAKCiogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvYWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1hcmlhLWNvbnRy
b2xzLWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
YWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1hcmlhLWNvbnRyb2xzLmh0bWw6IEFkZGVkLgoqIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3JlbGF0aW9uc2hpcHMtaW4tZnJhbWVzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVsYXRpb25zaGlw
cy1pbi1mcmFtZXMuaHRtbDogQWRkZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcDoKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFjdGl2ZURl
c2NlbmRhbnRDaGFuZ2VkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnVwZGF0ZVJlbGF0aW9u
c0ZvclRyZWUpOgotLS0KIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAgICB8IDQzICsrKysrKysrKystLS0tLQogLi4uZGVzY2VuZGFudC13aXRoLWFyaWEtY29udHJv
bHMtZXhwZWN0ZWQudHh0IHwgMTIgKysrKysKIC4uLi9hY3RpdmUtZGVzY2VuZGFudC13aXRoLWFy
aWEtY29udHJvbHMuaHRtbCB8IDQ4ICsrKysrKysrKysrKysrKysrCiAuLi4vbWFjL3JlbGF0aW9u
c2hpcHMtaW4tZnJhbWVzLWV4cGVjdGVkLnR4dCAgfCAxMCArKysrCiAuLi4vbWFjL3JlbGF0aW9u
c2hpcHMtaW4tZnJhbWVzLmh0bWwgICAgICAgICAgfCA1MyArKysrKysrKysrKysrKysrKysrCiA1
IGZpbGVzIGNoYW5nZWQsIDE1NCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9hY3RpdmUtZGVzY2Vu
ZGFudC13aXRoLWFyaWEtY29udHJvbHMtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvYWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1hcmlh
LWNvbnRyb2xzLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9yZWxhdGlvbnNoaXBzLWluLWZyYW1lcy1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZWxhdGlvbnNoaXBzLWluLWZy
YW1lcy5odG1sCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAKaW5kZXggYTliYWMwNTQ2YmUzLi5lOTlkNDI3NTIwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTg5NSw3ICsxODk1LDgg
QEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBcmlhRXhwYW5kZWRDaGFuZ2UoTm9kZSogbm9k
ZSkKIAogdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZChF
bGVtZW50JiBlbGVtZW50KQogewotICAgIGlmICghZG9jdW1lbnQoKS5mcmFtZSgpLT5zZWxlY3Rp
b24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKKyAgICAvLyBVc2UgdGhlIGVsZW1lbnQncyBkb2N1
bWVudCBpbnN0ZWFkIG9mIHRoZSBjYWNoZSdzIGRvY3VtZW50IGluIGNhc2Ugd2UncmUgaW5zaWRl
IGEgZnJhbWUgdGhhdCdzIG1hbmFnaW5nIGZvY3VzLgorICAgIGlmICghZWxlbWVudC5kb2N1bWVu
dCgpLmZyYW1lKCktPnNlbGVjdGlvbigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBhdXRvKiBvYmplY3QgPSBnZXRPckNyZWF0ZSgmZWxlbWVudCk7CkBAIC0x
OTA3LDI1ICsxOTA4LDM3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQWN0aXZlRGVzY2Vu
ZGFudENoYW5nZWQoRWxlbWVudCYgZWxlbWVudCkKICNlbmRpZgogCiAgICAgLy8gTm90aWZ5IGFj
dGl2ZSBkZXNjZW5kYW50IGNoYW5nZXMgb25seSBmb3IgdGhlIGZvY3VzZWQgZWxlbWVudC4KLSAg
ICBpZiAoZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpICE9ICZlbGVtZW50KQorICAgIGlmIChl
bGVtZW50LmRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSAhPSAmZWxlbWVudCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYXV0byogYWN0aXZlRGVzY2VuZGFudCA9IG9iamVjdC0+YWN0aXZlRGVz
Y2VuZGFudCgpOwotICAgIC8vIFdlIHdhbnQgdG8gbm90aWZ5IHRoYXQgdGhlIGNvbWJvIGJveCBo
YXMgY2hhbmdlZCBpdHMgYWN0aXZlIGRlc2NlbmRhbnQsCi0gICAgLy8gYnV0IHdlIGRvIG5vdCB3
YW50IHRvIGNoYW5nZSB0aGUgZm9jdXMsIGJlY2F1c2UgZm9jdXMgc2hvdWxkIHJlbWFpbiB3aXRo
IHRoZSBjb21ibyBib3guCi0gICAgaWYgKGFjdGl2ZURlc2NlbmRhbnQgJiYgKG9iamVjdC0+aXND
b21ib0JveCgpIHx8IG9iamVjdC0+c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkpKSB7Ci0g
ICAgICAgIGF1dG8qIHRhcmdldCA9IG9iamVjdDsKKyAgICBpZiAoIWFjdGl2ZURlc2NlbmRhbnQp
CisgICAgICAgIHJldHVybjsKIAorICAgIC8vIEhhbmRsZSBhY3RpdmUtZGVzY2VuZGFudCBjaGFu
Z2VzIHdoZW4gdGhlIHRhcmdldCBhbGxvd3MgZm9yIGl0LCBvciB0aGUgY29udHJvbGxlZCBvYmpl
Y3QgYWxsb3dzIGZvciBpdC4KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0YXJnZXQgPSBudWxs
cHRyOworICAgIGlmIChvYmplY3QtPnNob3VsZEZvY3VzQWN0aXZlRGVzY2VuZGFudCgpKQorICAg
ICAgICB0YXJnZXQgPSBvYmplY3Q7CisgICAgZWxzZSBpZiAob2JqZWN0LT5pc0NvbWJvQm94KCkp
IHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgLy8gSWYgdGhlIGNvbWJvYm94J3MgYWN0
aXZlRGVzY2VuZGFudCBpcyBpbnNpZGUgYSBkZXNjZW5kYW50IG93bmVkIG9yIGNvbnRyb2xsZWQg
YnkgdGhlIGNvbWJvYm94LCB0aGF0IGRlc2NlbmRhbnQgc2hvdWxkIGJlIHRoZSB0YXJnZXQgb2Yg
dGhlIG5vdGlmaWNhdGlvbiBhbmQgbm90IHRoZSBjb21ib2JveCBpdHNlbGYuCi0gICAgICAgIGlm
IChvYmplY3QtPmlzQ29tYm9Cb3goKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIG93bmVkT2Jq
ZWN0ID0gQWNjZXNzaWJpbGl0eTo6ZmluZFJlbGF0ZWRPYmplY3RJbkFuY2VzdHJ5KCpvYmplY3Qs
IEFYUmVsYXRpb25UeXBlOjpPd25lckZvciwgKmFjdGl2ZURlc2NlbmRhbnQpKQotICAgICAgICAg
ICAgICAgIHRhcmdldCA9IG93bmVkT2JqZWN0OwotICAgICAgICAgICAgZWxzZSBpZiAoYXV0byog
Y29udHJvbGxlZE9iamVjdCA9IEFjY2Vzc2liaWxpdHk6OmZpbmRSZWxhdGVkT2JqZWN0SW5BbmNl
c3RyeSgqb2JqZWN0LCBBWFJlbGF0aW9uVHlwZTo6Q29udHJvbGxlckZvciwgKmFjdGl2ZURlc2Nl
bmRhbnQpKQotICAgICAgICAgICAgICAgIHRhcmdldCA9IGNvbnRyb2xsZWRPYmplY3Q7Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKGF1dG8qIG93bmVkT2JqZWN0ID0gQWNjZXNzaWJpbGl0eTo6Zmlu
ZFJlbGF0ZWRPYmplY3RJbkFuY2VzdHJ5KCpvYmplY3QsIEFYUmVsYXRpb25UeXBlOjpPd25lckZv
ciwgKmFjdGl2ZURlc2NlbmRhbnQpKQorICAgICAgICAgICAgdGFyZ2V0ID0gb3duZWRPYmplY3Q7
CisgICAgICAgIGVsc2UgaWYgKGF1dG8qIGNvbnRyb2xsZWRPYmplY3QgPSBBY2Nlc3NpYmlsaXR5
OjpmaW5kUmVsYXRlZE9iamVjdEluQW5jZXN0cnkoKm9iamVjdCwgQVhSZWxhdGlvblR5cGU6OkNv
bnRyb2xsZXJGb3IsICphY3RpdmVEZXNjZW5kYW50KSkKKyAgICAgICAgICAgIHRhcmdldCA9IGNv
bnRyb2xsZWRPYmplY3Q7CiAjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBDaGVjayB0
byBzZWUgaWYgdGhlIGFjdGl2ZSBkZXNjZW5kYW50IGlzIGEgY2hpbGQgb2YgdGhlIGNvbnRyb2xs
ZWQgb2JqZWN0LiBUaGVuIHdlIGhhdmUgdG8gdXNlIHRoYXQKKyAgICAgICAgLy8gY29udHJvbGxl
ZCBvYmplY3QgYXMgdGhlIHRhcmdldCB3ZSB1c2UgaW4gbm90aWZpY2F0aW9ucy4KKyAgICAgICAg
YXV0byBjb250cm9sbGVkT2JqZWN0cyA9IG9iamVjdC0+cmVsYXRlZE9iamVjdHMoQVhSZWxhdGlv
blR5cGU6OkNvbnRyb2xsZXJGb3IpOworICAgICAgICBpZiAoY29udHJvbGxlZE9iamVjdHMuc2l6
ZSgpKSB7CisgICAgICAgICAgICB0YXJnZXQgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3Io
KmFjdGl2ZURlc2NlbmRhbnQsIGZhbHNlLCBbJmNvbnRyb2xsZWRPYmplY3RzXSAoY29uc3QgYXV0
byYgYWN0aXZlRGVzY2VuZGFudEFuY2VzdG9yKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNv
bnRyb2xsZWRPYmplY3RzLmNvbnRhaW5zKCZhY3RpdmVEZXNjZW5kYW50QW5jZXN0b3IpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CiAKKyAgICBpZiAodGFyZ2V0KSB7CiAjaWYg
RU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICAgICAgaWYgKHRhcmdldCAh
PSBvYmplY3QpCiAgICAgICAgICAgICB1cGRhdGVJc29sYXRlZFRyZWUodGFyZ2V0LCBBWE5vdGlm
aWNhdGlvbjo6QVhBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCk7CkBAIC00MDg4LDggKzQxMDEsMTQg
QEAgdm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVSZWxhdGlvbnNGb3JUcmVlKENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlKQogICAgIFZlY3RvcjxSZWxhdGlvbk9yaWdpbj4gb3JpZ2luczsKICAgICBW
ZWN0b3I8UmVsYXRpb25UYXJnZXQ+IHRhcmdldHM7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDog
ZGVzY2VuZGFudHNPZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpKSB7CisgICAgICAgIGlmIChlbGVt
ZW50Lmhhc1RhZ05hbWUobWV0YVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGhlYWRUYWcpIHx8
IGVsZW1lbnQuaGFzVGFnTmFtZShzY3JpcHRUYWcpKQorICAgICAgICAgICAgY29udGludWU7CisK
ICAgICAgICAgaWYgKFJlZlB0ciBzaGFkb3dSb290ID0gZWxlbWVudC5zaGFkb3dSb290KCk7IHNo
YWRvd1Jvb3QgJiYgc2hhZG93Um9vdC0+bW9kZSgpICE9IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdl
bnQpCiAgICAgICAgICAgICB1cGRhdGVSZWxhdGlvbnNGb3JUcmVlKCpzaGFkb3dSb290KTsKKyAg
ICAgICAgaWYgKGF1dG8qIGZyYW1lT3duZXJFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxG
cmFtZU93bmVyRWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAgICB1cGRhdGVSZWxhdGlvbnNG
b3JUcmVlKCpmcmFtZU93bmVyRWxlbWVudC0+Y29udGVudERvY3VtZW50KCkpOworCiAgICAgICAg
IC8vIENvbGxlY3QgYWxsIHBvc3NpYmxlIG9yaWdpbnMsIGkuZS4sIGVsZW1lbnRzIHdpdGggbm9u
LWVtcHR5IHJlbGF0aW9uIGF0dHJpYnV0ZXMuCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgYXR0
cmlidXRlIDogcmVsYXRpb25BdHRyaWJ1dGVzKCkpIHsKICAgICAgICAgICAgIGlmIChtX2RvY3Vt
ZW50LnNldHRpbmdzKCkuYXJpYVJlZmxlY3Rpb25Gb3JFbGVtZW50UmVmZXJlbmNlc0VuYWJsZWQo
KSkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvYWN0aXZlLWRl
c2NlbmRhbnQtd2l0aC1hcmlhLWNvbnRyb2xzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL2FjdGl2ZS1kZXNjZW5kYW50LXdpdGgtYXJpYS1jb250cm9scy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43MzlkYTZj
YTVmYmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9h
Y3RpdmUtZGVzY2VuZGFudC13aXRoLWFyaWEtY29udHJvbHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTIgQEAKK1JlY2VpdmVkIHNlbGVjdGVkIGNoaWxkcmVuIG5vdGlmaWNhdGlvbiBBWFJvbGU6
IEFYTGlzdAorVGhpcyB0ZXN0IGVuc3VyZXMgb2JqZWN0cyB0aGF0IGNvbnRyb2wgb2JqZWN0cyB3
aXRoIGFjdGl2ZSBkZXNjZW5kYW50cyBnZW5lcmF0ZSB0aGUgY29ycmVjdCBub3RpZmljYXRpb25z
LgorCithZGRlZE5vdGlmaWNhdGlvbjogdHJ1ZQorQ29udHJvbGxlciByb2xlOiBBWFJvbGU6IEFY
VGV4dEZpZWxkCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorY29udHJvbGxlcgorMQorMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvYWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1hcmlhLWNvbnRyb2xzLmh0bWwgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9hY3RpdmUtZGVzY2VuZGFudC13aXRoLWFyaWEtY29u
dHJvbHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNiZDk5
M2U5MGFhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L2FjdGl2ZS1kZXNjZW5kYW50LXdpdGgtYXJpYS1jb250cm9scy5odG1sCkBAIC0wLDAgKzEsNDgg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVs
cGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCis8ZGl2IHJvbGU9InRleHRib3giIGNv
bnRlbnRlZGl0YWJsZSB0YWJpbmRleD0iMCIgYXJpYS1jb250cm9scz0ibGlzdGJveCIgaWQ9ImNv
bnRyb2xsZXIiIGFyaWEtZXhwYW5kZWQ9InRydWUiPgorICAgY29udHJvbGxlcgorPC9kaXY+CisK
KzxkaXYgcm9sZT0ibGlzdGJveCIgaWQ9Imxpc3Rib3giPgorICAgIDxkaXYgcm9sZT0ib3B0aW9u
IiBpZD0ib3B0aW9uMSI+MTwvZGl2PgorICAgIDxkaXYgcm9sZT0ib3B0aW9uIiBpZD0ib3B0aW9u
MiI+MjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Cit2YXIgb3V0cHV0ID0gIlRoaXMgdGVzdCBl
bnN1cmVzIG9iamVjdHMgdGhhdCBjb250cm9sIG9iamVjdHMgd2l0aCBhY3RpdmUgZGVzY2VuZGFu
dHMgZ2VuZXJhdGUgdGhlIGNvcnJlY3Qgbm90aWZpY2F0aW9ucy5cblxuIjsKKworZnVuY3Rpb24g
bm90aWZ5Q2FsbGJhY2soZWxlbWVudCwgbm90aWZpY2F0aW9uKSB7CisgICAgaWYgKG5vdGlmaWNh
dGlvbiA9PSAiQVhTZWxlY3RlZENoaWxkcmVuQ2hhbmdlZCIpIHsKKyAgICAgICAgb3V0cHV0ICs9
IGBSZWNlaXZlZCBzZWxlY3RlZCBjaGlsZHJlbiBub3RpZmljYXRpb24gJHtlbGVtZW50LnJvbGV9
YDsKKyAgICAgICAgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucmVtb3ZlTm90aWZpY2F0aW9uTGlz
dGVuZXIoKTsKKyAgICAgICAgZGVidWcob3V0cHV0KTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgfQorfQorCitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgdmFyIGFkZGVkTm90aWZpY2F0aW9u
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIobm90aWZ5
Q2FsbGJhY2spOworICAgIG91dHB1dCArPSBgYWRkZWROb3RpZmljYXRpb246ICR7YWRkZWROb3Rp
ZmljYXRpb259XG5gOworICAgIHZhciBjb250cm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnRyb2xsZXIiKTsKKyAgICB2YXIgYXhDb250cm9sbGVyID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250cm9sbGVyIik7CisgICAgb3V0cHV0
ICs9IGBDb250cm9sbGVyIHJvbGU6ICR7YXhDb250cm9sbGVyLnJvbGV9XG5gOworICAgIAorICAg
IGNvbnRyb2xsZXIuZm9jdXMoKTsKKyAgICBjb250cm9sbGVyLnNldEF0dHJpYnV0ZSgiYXJpYS1h
Y3RpdmVkZXNjZW5kYW50IiwgIm9wdGlvbjEiKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgib3B0aW9uMSIpLnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsICJ0cnVlIik7Cit9CisK
Kzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy9yZWxhdGlvbnNoaXBzLWluLWZyYW1lcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZWxhdGlvbnNoaXBzLWluLWZyYW1lcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNmM0MDRi
NmY0NGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9y
ZWxhdGlvbnNoaXBzLWluLWZyYW1lcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorY29u
dHJvbGxlciByb2xlOiBBWFJvbGU6IEFYVGV4dEZpZWxkCitjb250cm9sbGVyIGNvbnRyb2xzIHJv
bGU6IGxpc3Rib3gKK2xpc3Rib3ggcm9sZTogQVhSb2xlOiBBWExpc3QKK2FyaWEtY29udHJvbHMg
dGV4dGJveC0+bGlzdGJveCA6IHRydWUKK2NvbnRyb2xsZXIgY29udHJvbHMgcm9sZSBhZnRlciBj
aGFuZ2U6IGxpc3Rib3gyCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9y
ZWxhdGlvbnNoaXBzLWluLWZyYW1lcy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvcmVsYXRpb25zaGlwcy1pbi1mcmFtZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjViMDNiNzU0NmQ4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL3JlbGF0aW9uc2hpcHMtaW4tZnJhbWVzLmh0bWwKQEAgLTAs
MCArMSw1MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJp
bGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8aWZyYW1lIHdpZHRoPTUw
MCBoZWlnaHQ9NTAwIGlkPSJmcmFtZTEiIHRpdGxlPSJmcmFtZTEiPjwvaWZyYW1lPgorCis8c2Ny
aXB0PgordmFyIG91dHB1dCA9ICJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IG9iamVjdHMgd2l0aCBy
ZWxhdGlvbnNoaXBzIGluIGZyYW1lcyB3b3JrLlxuXG4iOworCitpZiAod2luZG93LmFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKSB7CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgdmFyIGZyYW1lMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZTEiKTsKKyAgICBm
cmFtZTEub25sb2FkID0gZnVuY3Rpb24oZSkgeworICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgp
ID0+IHsKKyAgICAgICAgICAgIHRvdWNoQWNjZXNzaWJpbGl0eVRyZWUoYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIucm9vdEVsZW1lbnQpOworICAgICAgICAgICAgdmFyIGNvbnRyb2xsZXIgPSBhd2Fp
dCB3YWl0Rm9yRWxlbWVudEJ5SWQoImNvbnRyb2xsZXIiKTsKKyAgICAgICAgICAgIHZhciBvdXRw
dXQgPSBgY29udHJvbGxlciByb2xlOiAke2NvbnRyb2xsZXIucm9sZX1cbmA7CisgICAgICAgICAg
ICB2YXIgY29udHJvbGxlZCA9IGNvbnRyb2xsZXIuYXJpYUNvbnRyb2xzRWxlbWVudEF0SW5kZXgo
MCk7CisgICAgICAgICAgICBvdXRwdXQgKz0gYGNvbnRyb2xsZXIgY29udHJvbHMgcm9sZTogJHtj
b250cm9sbGVkLmRvbUlkZW50aWZpZXJ9XG5gOworICAgCisgICAgICAgICAgICB2YXIgbGlzdGJv
eCA9IGF3YWl0IHdhaXRGb3JFbGVtZW50QnlJZCgibGlzdGJveCIpOworICAgICAgICAgICAgb3V0
cHV0ICs9IGBsaXN0Ym94IHJvbGU6ICR7bGlzdGJveC5yb2xlfVxuYDsKKyAgICAgICAgICAgIG91
dHB1dCArPSBgYXJpYS1jb250cm9scyB0ZXh0Ym94LT5saXN0Ym94IDogJHtjb250cm9sbGVkLmlz
RXF1YWwobGlzdGJveCl9XG5gOworCisgICAgICAgICAgICBmcmFtZTEuY29udGVudERvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb250cm9sbGVyIikuc2V0QXR0cmlidXRlKCJhcmlhLWNvbnRyb2xz
IiwgImxpc3Rib3gyIik7CisgICAgICAgICAgICBjb250cm9sbGVkID0gY29udHJvbGxlci5hcmlh
Q29udHJvbHNFbGVtZW50QXRJbmRleCgwKTsKKyAgICAgICAgICAgIG91dHB1dCArPSBgY29udHJv
bGxlciBjb250cm9scyByb2xlIGFmdGVyIGNoYW5nZTogJHtjb250cm9sbGVkLmRvbUlkZW50aWZp
ZXJ9XG5gOworICAgICAgICAgICAgZGVidWcob3V0cHV0KTsKKyAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOyAKKyAgICAgICB9LCAwKTsKKyAgICB9OworCisgICAgdmFyIGh0bWwgPSBgPGRpdiBy
b2xlPSJ0ZXh0Ym94IiBjb250ZW50ZWRpdGFibGUgdGFiaW5kZXg9IjAiIGFyaWEtY29udHJvbHM9
Imxpc3Rib3giIGlkPSJjb250cm9sbGVyIj4KKyAgICAgICAgY29udHJvbGxlcgorICAgIDwvZGl2
PgorICAgIDxkaXYgcm9sZT0ibGlzdGJveCIgaWQ9Imxpc3Rib3giPgorICAgICAgICA8ZGl2IHJv
bGU9Im9wdGlvbiIgaWQ9Im9wdGlvbjEiPjE8L2Rpdj4KKyAgICAgICAgPGRpdiByb2xlPSJvcHRp
b24iIGlkPSJvcHRpb24yIj4yPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiByb2xlPSJsaXN0
Ym94IiBpZD0ibGlzdGJveDIiPgorICAgIDwvZGl2PmA7CisKKyAgICBmcmFtZTEuc3JjID0gImRh
dGE6dGV4dC9odG1sLDxib2R5PiIgKyBodG1sICsgIjwvYm9keT4iOworfQorCis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464330</attachid>
            <date>2023-01-04 09:20:08 -0800</date>
            <delta_ts>2023-01-04 23:09:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224582-20230104092007.patch</filename>
            <type>text/plain</type>
            <size>11643</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">RnJvbSA2N2JlZTM1NzhhMjU4OGFlMDU5MmU1OWRjYmZmNTA2NmM0NzY4MDdkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDaHJpcyBGbGVpemFjaCA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4K
RGF0ZTogU3VuLCAyNSBEZWMgMjAyMiAwMDowNDoyOCAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBgYXJpYS1hY3RpdmVkZXNjZW5kYW50YCBkb2Vzbid0IHdvcmsgd2l0aCBhIHN0YW5kYXJkCiAi
bGlzdGJveCIgcGF0dGVybiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI0NTgyCiByZGFyOi8vNzY2NzAwNzIKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhl
cmUgd2VyZSBhIGZldyB0aGluZ3MgcHJldmVudGluZyB0aGlzIGZyb20gd29ya2luZy4KMSkgUmVs
YXRpb25zaGlwcyBpbiBmcmFtZXMgd2VyZSBicm9rZW4gYWZ0ZXIgdGhlIGNoYW5nZSB0byBjYWNo
ZSByZWxhdGlvbnNoaXBzIGluIGEgY2VudHJhbCBtYXAuCjIpIGFjdGl2ZURlc2NlbmRhbnQgd2Fz
bid0IGNoZWNraW5nIGlmIHRoZSByaWdodCBmcmFtZSB3YXMgZm9jdXNlZC4KMykgYWN0aXZlRGVz
Y2VuZGFudCBuZWVkZWQgdG8gaGFuZGxlIHRoZSBhcmlhLWNvbnRyb2xzIGNhc2UgaW4gb3JkZXIg
dG8gcGljayB0aGUgcmlnaHQgdGFyZ2V0IGZvciBhIG5vdGlmaWNhdGlvbi4KNCkgQSBWb2ljZU92
ZXIgc2lkZSBmaXggYWxzbyB3YXMgcmVxdWlyZWQ6IHJkYXI6Ly8xMDM2MDkyODAKCiogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvYWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1hcmlhLWNvbnRy
b2xzLWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
YWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1hcmlhLWNvbnRyb2xzLmh0bWw6IEFkZGVkLgoqIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3JlbGF0aW9uc2hpcHMtaW4tZnJhbWVzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvcmVsYXRpb25zaGlw
cy1pbi1mcmFtZXMuaHRtbDogQWRkZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcDoKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFjdGl2ZURl
c2NlbmRhbnRDaGFuZ2VkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnVwZGF0ZVJlbGF0aW9u
c0ZvclRyZWUpOgotLS0KIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAgICB8IDQzICsrKysrKysrKystLS0tLQogLi4uZGVzY2VuZGFudC13aXRoLWFyaWEtY29udHJv
bHMtZXhwZWN0ZWQudHh0IHwgMTEgKysrKwogLi4uL2FjdGl2ZS1kZXNjZW5kYW50LXdpdGgtYXJp
YS1jb250cm9scy5odG1sIHwgNDggKysrKysrKysrKysrKysrKysKIC4uLi9tYWMvcmVsYXRpb25z
aGlwcy1pbi1mcmFtZXMtZXhwZWN0ZWQudHh0ICB8IDEwICsrKysKIC4uLi9tYWMvcmVsYXRpb25z
aGlwcy1pbi1mcmFtZXMuaHRtbCAgICAgICAgICB8IDUzICsrKysrKysrKysrKysrKysrKysKIDUg
ZmlsZXMgY2hhbmdlZCwgMTUzIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2FjdGl2ZS1kZXNjZW5k
YW50LXdpdGgtYXJpYS1jb250cm9scy1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9hY3RpdmUtZGVzY2VuZGFudC13aXRoLWFyaWEt
Y29udHJvbHMuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3JlbGF0aW9uc2hpcHMtaW4tZnJhbWVzLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUg
MTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3JlbGF0aW9uc2hpcHMtaW4tZnJh
bWVzLmh0bWwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAppbmRleCBhOWJhYzA1NDZiZTMuLmU5OWQ0Mjc1MjA2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xODk1LDcgKzE4OTUsOCBA
QCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZShOb2RlKiBub2Rl
KQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKEVs
ZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgaWYgKCFkb2N1bWVudCgpLmZyYW1lKCktPnNlbGVjdGlv
bigpLmlzRm9jdXNlZEFuZEFjdGl2ZSgpKQorICAgIC8vIFVzZSB0aGUgZWxlbWVudCdzIGRvY3Vt
ZW50IGluc3RlYWQgb2YgdGhlIGNhY2hlJ3MgZG9jdW1lbnQgaW4gY2FzZSB3ZSdyZSBpbnNpZGUg
YSBmcmFtZSB0aGF0J3MgbWFuYWdpbmcgZm9jdXMuCisgICAgaWYgKCFlbGVtZW50LmRvY3VtZW50
KCkuZnJhbWUoKS0+c2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGF1dG8qIG9iamVjdCA9IGdldE9yQ3JlYXRlKCZlbGVtZW50KTsKQEAgLTE5
MDcsMjUgKzE5MDgsMzcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBY3RpdmVEZXNjZW5k
YW50Q2hhbmdlZChFbGVtZW50JiBlbGVtZW50KQogI2VuZGlmCiAKICAgICAvLyBOb3RpZnkgYWN0
aXZlIGRlc2NlbmRhbnQgY2hhbmdlcyBvbmx5IGZvciB0aGUgZm9jdXNlZCBlbGVtZW50LgotICAg
IGlmIChkb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCkgIT0gJmVsZW1lbnQpCisgICAgaWYgKGVs
ZW1lbnQuZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpICE9ICZlbGVtZW50KQogICAgICAgICBy
ZXR1cm47CiAKICAgICBhdXRvKiBhY3RpdmVEZXNjZW5kYW50ID0gb2JqZWN0LT5hY3RpdmVEZXNj
ZW5kYW50KCk7Ci0gICAgLy8gV2Ugd2FudCB0byBub3RpZnkgdGhhdCB0aGUgY29tYm8gYm94IGhh
cyBjaGFuZ2VkIGl0cyBhY3RpdmUgZGVzY2VuZGFudCwKLSAgICAvLyBidXQgd2UgZG8gbm90IHdh
bnQgdG8gY2hhbmdlIHRoZSBmb2N1cywgYmVjYXVzZSBmb2N1cyBzaG91bGQgcmVtYWluIHdpdGgg
dGhlIGNvbWJvIGJveC4KLSAgICBpZiAoYWN0aXZlRGVzY2VuZGFudCAmJiAob2JqZWN0LT5pc0Nv
bWJvQm94KCkgfHwgb2JqZWN0LT5zaG91bGRGb2N1c0FjdGl2ZURlc2NlbmRhbnQoKSkpIHsKLSAg
ICAgICAgYXV0byogdGFyZ2V0ID0gb2JqZWN0OworICAgIGlmICghYWN0aXZlRGVzY2VuZGFudCkK
KyAgICAgICAgcmV0dXJuOwogCisgICAgLy8gSGFuZGxlIGFjdGl2ZS1kZXNjZW5kYW50IGNoYW5n
ZXMgd2hlbiB0aGUgdGFyZ2V0IGFsbG93cyBmb3IgaXQsIG9yIHRoZSBjb250cm9sbGVkIG9iamVj
dCBhbGxvd3MgZm9yIGl0LgorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRhcmdldCA9IG51bGxw
dHI7CisgICAgaWYgKG9iamVjdC0+c2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkpCisgICAg
ICAgIHRhcmdldCA9IG9iamVjdDsKKyAgICBlbHNlIGlmIChvYmplY3QtPmlzQ29tYm9Cb3goKSkg
ewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICAvLyBJZiB0aGUgY29tYm9ib3gncyBhY3Rp
dmVEZXNjZW5kYW50IGlzIGluc2lkZSBhIGRlc2NlbmRhbnQgb3duZWQgb3IgY29udHJvbGxlZCBi
eSB0aGUgY29tYm9ib3gsIHRoYXQgZGVzY2VuZGFudCBzaG91bGQgYmUgdGhlIHRhcmdldCBvZiB0
aGUgbm90aWZpY2F0aW9uIGFuZCBub3QgdGhlIGNvbWJvYm94IGl0c2VsZi4KLSAgICAgICAgaWYg
KG9iamVjdC0+aXNDb21ib0JveCgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogb3duZWRPYmpl
Y3QgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kUmVsYXRlZE9iamVjdEluQW5jZXN0cnkoKm9iamVjdCwg
QVhSZWxhdGlvblR5cGU6Ok93bmVyRm9yLCAqYWN0aXZlRGVzY2VuZGFudCkpCi0gICAgICAgICAg
ICAgICAgdGFyZ2V0ID0gb3duZWRPYmplY3Q7Ci0gICAgICAgICAgICBlbHNlIGlmIChhdXRvKiBj
b250cm9sbGVkT2JqZWN0ID0gQWNjZXNzaWJpbGl0eTo6ZmluZFJlbGF0ZWRPYmplY3RJbkFuY2Vz
dHJ5KCpvYmplY3QsIEFYUmVsYXRpb25UeXBlOjpDb250cm9sbGVyRm9yLCAqYWN0aXZlRGVzY2Vu
ZGFudCkpCi0gICAgICAgICAgICAgICAgdGFyZ2V0ID0gY29udHJvbGxlZE9iamVjdDsKLSAgICAg
ICAgfQorICAgICAgICBpZiAoYXV0byogb3duZWRPYmplY3QgPSBBY2Nlc3NpYmlsaXR5OjpmaW5k
UmVsYXRlZE9iamVjdEluQW5jZXN0cnkoKm9iamVjdCwgQVhSZWxhdGlvblR5cGU6Ok93bmVyRm9y
LCAqYWN0aXZlRGVzY2VuZGFudCkpCisgICAgICAgICAgICB0YXJnZXQgPSBvd25lZE9iamVjdDsK
KyAgICAgICAgZWxzZSBpZiAoYXV0byogY29udHJvbGxlZE9iamVjdCA9IEFjY2Vzc2liaWxpdHk6
OmZpbmRSZWxhdGVkT2JqZWN0SW5BbmNlc3RyeSgqb2JqZWN0LCBBWFJlbGF0aW9uVHlwZTo6Q29u
dHJvbGxlckZvciwgKmFjdGl2ZURlc2NlbmRhbnQpKQorICAgICAgICAgICAgdGFyZ2V0ID0gY29u
dHJvbGxlZE9iamVjdDsKICNlbmRpZgorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIENoZWNrIHRv
IHNlZSBpZiB0aGUgYWN0aXZlIGRlc2NlbmRhbnQgaXMgYSBjaGlsZCBvZiB0aGUgY29udHJvbGxl
ZCBvYmplY3QuIFRoZW4gd2UgaGF2ZSB0byB1c2UgdGhhdAorICAgICAgICAvLyBjb250cm9sbGVk
IG9iamVjdCBhcyB0aGUgdGFyZ2V0IHdlIHVzZSBpbiBub3RpZmljYXRpb25zLgorICAgICAgICBh
dXRvIGNvbnRyb2xsZWRPYmplY3RzID0gb2JqZWN0LT5yZWxhdGVkT2JqZWN0cyhBWFJlbGF0aW9u
VHlwZTo6Q29udHJvbGxlckZvcik7CisgICAgICAgIGlmIChjb250cm9sbGVkT2JqZWN0cy5zaXpl
KCkpIHsKKyAgICAgICAgICAgIHRhcmdldCA9IEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3Rvcigq
YWN0aXZlRGVzY2VuZGFudCwgZmFsc2UsIFsmY29udHJvbGxlZE9iamVjdHNdIChjb25zdCBhdXRv
JiBhY3RpdmVEZXNjZW5kYW50QW5jZXN0b3IpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29u
dHJvbGxlZE9iamVjdHMuY29udGFpbnMoJmFjdGl2ZURlc2NlbmRhbnRBbmNlc3Rvcik7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KIAorICAgIGlmICh0YXJnZXQpIHsKICNpZiBF
TkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgICAgICBpZiAodGFyZ2V0ICE9
IG9iamVjdCkKICAgICAgICAgICAgIHVwZGF0ZUlzb2xhdGVkVHJlZSh0YXJnZXQsIEFYTm90aWZp
Y2F0aW9uOjpBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKTsKQEAgLTQwODgsOCArNDEwMSwxNCBA
QCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnVwZGF0ZVJlbGF0aW9uc0ZvclRyZWUoQ29udGFpbmVyTm9k
ZSYgcm9vdE5vZGUpCiAgICAgVmVjdG9yPFJlbGF0aW9uT3JpZ2luPiBvcmlnaW5zOwogICAgIFZl
Y3RvcjxSZWxhdGlvblRhcmdldD4gdGFyZ2V0czsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBk
ZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihyb290Tm9kZSkpIHsKKyAgICAgICAgaWYgKGVsZW1l
bnQuaGFzVGFnTmFtZShtZXRhVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoaGVhZFRhZykgfHwg
ZWxlbWVudC5oYXNUYWdOYW1lKHNjcmlwdFRhZykpCisgICAgICAgICAgICBjb250aW51ZTsKKwog
ICAgICAgICBpZiAoUmVmUHRyIHNoYWRvd1Jvb3QgPSBlbGVtZW50LnNoYWRvd1Jvb3QoKTsgc2hh
ZG93Um9vdCAmJiBzaGFkb3dSb290LT5tb2RlKCkgIT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2Vu
dCkKICAgICAgICAgICAgIHVwZGF0ZVJlbGF0aW9uc0ZvclRyZWUoKnNoYWRvd1Jvb3QpOworICAg
ICAgICBpZiAoYXV0byogZnJhbWVPd25lckVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8SFRNTEZy
YW1lT3duZXJFbGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgICAgIHVwZGF0ZVJlbGF0aW9uc0Zv
clRyZWUoKmZyYW1lT3duZXJFbGVtZW50LT5jb250ZW50RG9jdW1lbnQoKSk7CisKICAgICAgICAg
Ly8gQ29sbGVjdCBhbGwgcG9zc2libGUgb3JpZ2lucywgaS5lLiwgZWxlbWVudHMgd2l0aCBub24t
ZW1wdHkgcmVsYXRpb24gYXR0cmlidXRlcy4KICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBhdHRy
aWJ1dGUgOiByZWxhdGlvbkF0dHJpYnV0ZXMoKSkgewogICAgICAgICAgICAgaWYgKG1fZG9jdW1l
bnQuc2V0dGluZ3MoKS5hcmlhUmVmbGVjdGlvbkZvckVsZW1lbnRSZWZlcmVuY2VzRW5hYmxlZCgp
KSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9hY3RpdmUtZGVz
Y2VuZGFudC13aXRoLWFyaWEtY29udHJvbHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvYWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1hcmlhLWNvbnRyb2xzLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmJmZTYyMjIw
OGRjNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Fj
dGl2ZS1kZXNjZW5kYW50LXdpdGgtYXJpYS1jb250cm9scy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMSBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgb2JqZWN0cyB0aGF0IGNvbnRyb2wgb2JqZWN0cyB3
aXRoIGFjdGl2ZSBkZXNjZW5kYW50cyBnZW5lcmF0ZSB0aGUgY29ycmVjdCBub3RpZmljYXRpb25z
LgorCithZGRlZE5vdGlmaWNhdGlvbjogdHJ1ZQorQ29udHJvbGxlciByb2xlOiBBWFJvbGU6IEFY
VGV4dEZpZWxkCitSZWNlaXZlZCBzZWxlY3RlZCBjaGlsZHJlbiBub3RpZmljYXRpb24gQVhSb2xl
OiBBWExpc3QKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorY29udHJvbGxlcgorMQorMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvYWN0aXZlLWRlc2NlbmRhbnQtd2l0aC1hcmlhLWNvbnRyb2xzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9hY3RpdmUtZGVzY2VuZGFudC13aXRoLWFyaWEtY29udHJv
bHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNiZDk5M2U5
MGFhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Fj
dGl2ZS1kZXNjZW5kYW50LXdpdGgtYXJpYS1jb250cm9scy5odG1sCkBAIC0wLDAgKzEsNDggQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVy
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCis8ZGl2IHJvbGU9InRleHRib3giIGNvbnRl
bnRlZGl0YWJsZSB0YWJpbmRleD0iMCIgYXJpYS1jb250cm9scz0ibGlzdGJveCIgaWQ9ImNvbnRy
b2xsZXIiIGFyaWEtZXhwYW5kZWQ9InRydWUiPgorICAgY29udHJvbGxlcgorPC9kaXY+CisKKzxk
aXYgcm9sZT0ibGlzdGJveCIgaWQ9Imxpc3Rib3giPgorICAgIDxkaXYgcm9sZT0ib3B0aW9uIiBp
ZD0ib3B0aW9uMSI+MTwvZGl2PgorICAgIDxkaXYgcm9sZT0ib3B0aW9uIiBpZD0ib3B0aW9uMiI+
MjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+Cit2YXIgb3V0cHV0ID0gIlRoaXMgdGVzdCBlbnN1
cmVzIG9iamVjdHMgdGhhdCBjb250cm9sIG9iamVjdHMgd2l0aCBhY3RpdmUgZGVzY2VuZGFudHMg
Z2VuZXJhdGUgdGhlIGNvcnJlY3Qgbm90aWZpY2F0aW9ucy5cblxuIjsKKworZnVuY3Rpb24gbm90
aWZ5Q2FsbGJhY2soZWxlbWVudCwgbm90aWZpY2F0aW9uKSB7CisgICAgaWYgKG5vdGlmaWNhdGlv
biA9PSAiQVhTZWxlY3RlZENoaWxkcmVuQ2hhbmdlZCIpIHsKKyAgICAgICAgb3V0cHV0ICs9IGBS
ZWNlaXZlZCBzZWxlY3RlZCBjaGlsZHJlbiBub3RpZmljYXRpb24gJHtlbGVtZW50LnJvbGV9YDsK
KyAgICAgICAgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVu
ZXIoKTsKKyAgICAgICAgZGVidWcob3V0cHV0KTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgfQorfQorCitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgdmFyIGFkZGVkTm90aWZpY2F0aW9uID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIobm90aWZ5Q2Fs
bGJhY2spOworICAgIG91dHB1dCArPSBgYWRkZWROb3RpZmljYXRpb246ICR7YWRkZWROb3RpZmlj
YXRpb259XG5gOworICAgIHZhciBjb250cm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnRyb2xsZXIiKTsKKyAgICB2YXIgYXhDb250cm9sbGVyID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250cm9sbGVyIik7CisgICAgb3V0cHV0ICs9
IGBDb250cm9sbGVyIHJvbGU6ICR7YXhDb250cm9sbGVyLnJvbGV9XG5gOworICAgIAorICAgIGNv
bnRyb2xsZXIuZm9jdXMoKTsKKyAgICBjb250cm9sbGVyLnNldEF0dHJpYnV0ZSgiYXJpYS1hY3Rp
dmVkZXNjZW5kYW50IiwgIm9wdGlvbjEiKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
b3B0aW9uMSIpLnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsICJ0cnVlIik7Cit9CisKKzwv
c2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9yZWxhdGlvbnNoaXBzLWluLWZyYW1lcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZWxhdGlvbnNoaXBzLWluLWZyYW1lcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNmM0MDRiNmY0
NGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZWxh
dGlvbnNoaXBzLWluLWZyYW1lcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorY29udHJv
bGxlciByb2xlOiBBWFJvbGU6IEFYVGV4dEZpZWxkCitjb250cm9sbGVyIGNvbnRyb2xzIHJvbGU6
IGxpc3Rib3gKK2xpc3Rib3ggcm9sZTogQVhSb2xlOiBBWExpc3QKK2FyaWEtY29udHJvbHMgdGV4
dGJveC0+bGlzdGJveCA6IHRydWUKK2NvbnRyb2xsZXIgY29udHJvbHMgcm9sZSBhZnRlciBjaGFu
Z2U6IGxpc3Rib3gyCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9yZWxh
dGlvbnNoaXBzLWluLWZyYW1lcy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
cmVsYXRpb25zaGlwcy1pbi1mcmFtZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjViMDNiNzU0NmQ4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbWFjL3JlbGF0aW9uc2hpcHMtaW4tZnJhbWVzLmh0bWwKQEAgLTAsMCAr
MSw1MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0
eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8aWZyYW1lIHdpZHRoPTUwMCBo
ZWlnaHQ9NTAwIGlkPSJmcmFtZTEiIHRpdGxlPSJmcmFtZTEiPjwvaWZyYW1lPgorCis8c2NyaXB0
PgordmFyIG91dHB1dCA9ICJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IG9iamVjdHMgd2l0aCByZWxh
dGlvbnNoaXBzIGluIGZyYW1lcyB3b3JrLlxuXG4iOworCitpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAg
dmFyIGZyYW1lMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZTEiKTsKKyAgICBmcmFt
ZTEub25sb2FkID0gZnVuY3Rpb24oZSkgeworICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+
IHsKKyAgICAgICAgICAgIHRvdWNoQWNjZXNzaWJpbGl0eVRyZWUoYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIucm9vdEVsZW1lbnQpOworICAgICAgICAgICAgdmFyIGNvbnRyb2xsZXIgPSBhd2FpdCB3
YWl0Rm9yRWxlbWVudEJ5SWQoImNvbnRyb2xsZXIiKTsKKyAgICAgICAgICAgIHZhciBvdXRwdXQg
PSBgY29udHJvbGxlciByb2xlOiAke2NvbnRyb2xsZXIucm9sZX1cbmA7CisgICAgICAgICAgICB2
YXIgY29udHJvbGxlZCA9IGNvbnRyb2xsZXIuYXJpYUNvbnRyb2xzRWxlbWVudEF0SW5kZXgoMCk7
CisgICAgICAgICAgICBvdXRwdXQgKz0gYGNvbnRyb2xsZXIgY29udHJvbHMgcm9sZTogJHtjb250
cm9sbGVkLmRvbUlkZW50aWZpZXJ9XG5gOworICAgCisgICAgICAgICAgICB2YXIgbGlzdGJveCA9
IGF3YWl0IHdhaXRGb3JFbGVtZW50QnlJZCgibGlzdGJveCIpOworICAgICAgICAgICAgb3V0cHV0
ICs9IGBsaXN0Ym94IHJvbGU6ICR7bGlzdGJveC5yb2xlfVxuYDsKKyAgICAgICAgICAgIG91dHB1
dCArPSBgYXJpYS1jb250cm9scyB0ZXh0Ym94LT5saXN0Ym94IDogJHtjb250cm9sbGVkLmlzRXF1
YWwobGlzdGJveCl9XG5gOworCisgICAgICAgICAgICBmcmFtZTEuY29udGVudERvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjb250cm9sbGVyIikuc2V0QXR0cmlidXRlKCJhcmlhLWNvbnRyb2xzIiwg
Imxpc3Rib3gyIik7CisgICAgICAgICAgICBjb250cm9sbGVkID0gY29udHJvbGxlci5hcmlhQ29u
dHJvbHNFbGVtZW50QXRJbmRleCgwKTsKKyAgICAgICAgICAgIG91dHB1dCArPSBgY29udHJvbGxl
ciBjb250cm9scyByb2xlIGFmdGVyIGNoYW5nZTogJHtjb250cm9sbGVkLmRvbUlkZW50aWZpZXJ9
XG5gOworICAgICAgICAgICAgZGVidWcob3V0cHV0KTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOyAKKyAgICAgICB9LCAwKTsKKyAgICB9OworCisgICAgdmFyIGh0bWwgPSBgPGRpdiByb2xl
PSJ0ZXh0Ym94IiBjb250ZW50ZWRpdGFibGUgdGFiaW5kZXg9IjAiIGFyaWEtY29udHJvbHM9Imxp
c3Rib3giIGlkPSJjb250cm9sbGVyIj4KKyAgICAgICAgY29udHJvbGxlcgorICAgIDwvZGl2Pgor
ICAgIDxkaXYgcm9sZT0ibGlzdGJveCIgaWQ9Imxpc3Rib3giPgorICAgICAgICA8ZGl2IHJvbGU9
Im9wdGlvbiIgaWQ9Im9wdGlvbjEiPjE8L2Rpdj4KKyAgICAgICAgPGRpdiByb2xlPSJvcHRpb24i
IGlkPSJvcHRpb24yIj4yPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdiByb2xlPSJsaXN0Ym94
IiBpZD0ibGlzdGJveDIiPgorICAgIDwvZGl2PmA7CisKKyAgICBmcmFtZTEuc3JjID0gImRhdGE6
dGV4dC9odG1sLDxib2R5PiIgKyBodG1sICsgIjwvYm9keT4iOworfQorCis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>