<?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>262941</bug_id>
          
          <creation_ts>2023-10-09 21:45:03 -0700</creation_ts>
          <short_desc>AX: -[WebAccessibilityObjectWrapper accessibilityIndexOfChild:] unnecessarily allocates an NSArray</short_desc>
          <delta_ts>2023-10-10 21:04:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1983920</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-10-09 21:45:03 -0700</bug_when>
    <thetext>This shows up on samples for some sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1983921</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-10-09 21:45:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/116717845&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1983922</commentid>
    <comment_count>2</comment_count>
      <attachid>468142</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-10-09 21:53:31 -0700</bug_when>
    <thetext>Created attachment 468142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1983978</commentid>
    <comment_count>3</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-10-10 06:21:45 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #2)
&gt; Created attachment 468142 [details]
&gt; Patch

diff --git a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
index f39430c64827..48916783a1f4 100644
--- a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
+++ b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
@@ -3596,7 +3596,7 @@ - (BOOL)accessibilityShouldUseUniqueId
 }

 // API that AppKit uses for faster access
-- (NSUInteger)accessibilityIndexOfChild:(id)child
+- (NSUInteger)accessibilityIndexOfChild:(id)targetChild
 {
     RefPtr&lt;AXCoreObject&gt; backingObject = self.updateObjectBackingStore;
     if (!backingObject)
@@ -3605,29 +3605,27 @@ - (NSUInteger)accessibilityIndexOfChild:(id)child
     // Tree objects return their rows as their children. We can use the original method
     // here, because we won&apos;t gain any speed up.
     if (backingObject-&gt;isTree())
-        return [super accessibilityIndexOfChild:child];
+        return [super accessibilityIndexOfChild:targetChild];

-    NSArray *children = self.childrenVectorArray;
-    if (!children.count) {
+    const auto&amp; children = backingObject-&gt;children();
+    if (!children.size()) {
         if (auto *renderWidgetChildren = [self renderWidgetChildren])
-            return [renderWidgetChildren indexOfObject:child];
+            return [renderWidgetChildren indexOfObject:targetChild];
 #if ENABLE(MODEL_ELEMENT)
         if (backingObject-&gt;isModel())
-            return backingObject-&gt;modelElementChildren().find(child);
+            return backingObject-&gt;modelElementChildren().find(targetChild);
 #endif
     }

-    NSUInteger count = [children count];
-    for (NSUInteger i = 0; i &lt; count; ++i) {
-        WebAccessibilityObjectWrapper *wrapper = children[i];
-        auto* object = wrapper.axBackingObject;
-        if (!object)
+    size_t childCount = children.size();
+    for (size_t i = 0; i &lt; childCount; i++) {
+        RefPtr child = children[i];

AG: you can use children[i] without this temp and the additional ref count. Also it wouldn&apos;t be needed to name the param targetChild and then keep the original child.

+        if (!child)
             continue;
-
-        if (wrapper == child || (object-&gt;isAttachment() &amp;&amp; [wrapper attachmentView] == child))
+        WebAccessibilityObjectWrapper *childWrapper = child-&gt;wrapper();
+        if (childWrapper == targetChild || (child-&gt;isAttachment() &amp;&amp; [childWrapper attachmentView] == targetChild))
             return i;
     }
-
     return NSNotFound;
 }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1984038</commentid>
    <comment_count>4</comment_count>
      <attachid>468152</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-10-10 10:30:25 -0700</bug_when>
    <thetext>Created attachment 468152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1984043</commentid>
    <comment_count>5</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-10-10 10:34:47 -0700</bug_when>
    <thetext>&gt; -    NSUInteger count = [children count];
&gt; -    for (NSUInteger i = 0; i &lt; count; ++i) {
&gt; -        WebAccessibilityObjectWrapper *wrapper = children[i];
&gt; -        auto* object = wrapper.axBackingObject;
&gt; -        if (!object)
&gt; +    size_t childCount = children.size();
&gt; +    for (size_t i = 0; i &lt; childCount; i++) {
&gt; +        RefPtr child = children[i];
&gt; 
&gt; AG: you can use children[i] without this temp and the additional ref count.
&gt; Also it wouldn&apos;t be needed to name the param targetChild and then keep the
&gt; original child.
Removed the unnecessary RefPtr as you mentioned. I decided to keep the targetChild rename because I think it makes reading the code easier (otherwise we&apos;d be comparing, e.g., childWrapper == child which doesn&apos;t read well in my opinion).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1984075</commentid>
    <comment_count>6</comment_count>
      <attachid>468152</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2023-10-10 11:30:58 -0700</bug_when>
    <thetext>Comment on attachment 468152
Patch

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

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3624
&gt; +        WebAccessibilityObjectWrapper *childWrapper = children[i]-&gt;wrapper();

won&apos;t this incur a function call into Vector::indexedObject (whatever) the method name is each time? is that faster than making a local variable?
feel like we should know the answer to that before deciding which is better</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1984076</commentid>
    <comment_count>7</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2023-10-10 11:31:05 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=468152&amp;action=review

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3624
&gt; +        WebAccessibilityObjectWrapper *childWrapper = children[i]-&gt;wrapper();

won&apos;t this incur a function call into Vector::indexedObject (whatever) the method name is each time? is that faster than making a local variable?
feel like we should know the answer to that before deciding which is better</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1984081</commentid>
    <comment_count>8</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-10-10 11:38:11 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #7)
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=468152&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3624
&gt; &gt; +        WebAccessibilityObjectWrapper *childWrapper = children[i]-&gt;wrapper();
&gt; 
&gt; won&apos;t this incur a function call into Vector::indexedObject (whatever) the
&gt; method name is each time? is that faster than making a local variable?
&gt; feel like we should know the answer to that before deciding which is better

Vector::operator[] is an inline, random access method, so I think this is better than creating a new RefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1984087</commentid>
    <comment_count>9</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-10-10 11:59:03 -0700</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #8)
&gt; (In reply to chris fleizach from comment #7)
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=468152&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3624
&gt; &gt; &gt; +        WebAccessibilityObjectWrapper *childWrapper = children[i]-&gt;wrapper();
&gt; &gt; 
&gt; &gt; won&apos;t this incur a function call into Vector::indexedObject (whatever) the
&gt; &gt; method name is each time? is that faster than making a local variable?
&gt; &gt; feel like we should know the answer to that before deciding which is better
&gt; 
&gt; Vector::operator[] is an inline, random access method, so I think this is
&gt; better than creating a new RefPtr.

we can also do 

+        auto&amp; child = children[i];

that doesn&apos;t creat a new RefPtr, and you don&apos;t have to write children[i] evetywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1984097</commentid>
    <comment_count>10</comment_count>
      <attachid>468157</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-10-10 13:14:14 -0700</bug_when>
    <thetext>Created attachment 468157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1984099</commentid>
    <comment_count>11</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-10-10 13:15:23 -0700</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #9)
&gt; (In reply to Andres Gonzalez from comment #8)
&gt; &gt; (In reply to chris fleizach from comment #7)
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=468152&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3624
&gt; &gt; &gt; &gt; +        WebAccessibilityObjectWrapper *childWrapper = children[i]-&gt;wrapper();
&gt; &gt; &gt; 
&gt; &gt; &gt; won&apos;t this incur a function call into Vector::indexedObject (whatever) the
&gt; &gt; &gt; method name is each time? is that faster than making a local variable?
&gt; &gt; &gt; feel like we should know the answer to that before deciding which is better
&gt; &gt; 
&gt; &gt; Vector::operator[] is an inline, random access method, so I think this is
&gt; &gt; better than creating a new RefPtr.
&gt; 
&gt; we can also do 
&gt; 
&gt; +        auto&amp; child = children[i];
&gt; 
&gt; that doesn&apos;t creat a new RefPtr, and you don&apos;t have to write children[i]
&gt; evetywhere.
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1984210</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-10-10 21:04:50 -0700</bug_when>
    <thetext>Committed 269187@main (f36f30e2e548): &lt;https://commits.webkit.org/269187@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 468157.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>468142</attachid>
            <date>2023-10-09 21:53:31 -0700</date>
            <delta_ts>2023-10-10 10:30:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-262941-20231009215330.patch</filename>
            <type>text/plain</type>
            <size>4271</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA5ZmM4NTg0NWE3MTYxYjFjZDljN2Y2MGQ5MTNkOGM2OGQ3M2NiNTIyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogTW9uLCA5IE9jdCAyMDIzIDIxOjQ2OjE1IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQVg6IC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIKIGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6
XSB1bm5lY2Vzc2FyaWx5IGFsbG9jYXRlcyBhbiBOU0FycmF5CiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYyOTQxIHJkYXI6Ly9wcm9ibGVtLzExNjcxNzg0NQoKUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpQcmlvciB0byB0aGlzIHBhdGNoLCBhY2Nlc3NpYmls
aXR5SW5kZXhPZkNoaWxkIGNhbGxzIGNoaWxkcmVuVmVjdG9yQXJyYXksIHdoaWNoIHR1cm5zIEFY
Q29yZU9iamVjdDo6Y2hpbGRyZW4oKQppbnRvIGFuIE5TQXJyYXkgb2YgdGhlIGNvcnJlc3BvbmRp
bmcgd3JhcHBlcnMuIFRoaXMgaXMgYmFkIHRvIHVzZSBpbiBhY2Nlc3NpYmlsaXR5SW5kZXhPZkNo
aWxkIGZvciB0d28gcmVhc29uczoKCiAgMS4gVGhpcyBOU0FycmF5IGFsbG9jYXRpb24gc2hvd3Mg
dXAgaW4gdGhlIHRob3VzYW5kcyBvZiBzYW1wbGVzIG9uIHNvbWUgc2l0ZXMKICAyLiBjaGlsZHJl
blZlY3RvckFycmF5IGVhZ2VybHkgcmVzb2x2ZXMgYXR0YWNobWVudHMsIHdoaWNoIChmb3Igbm93
KSByZXF1aXJlcyBhIG1haW4tdGhyZWFkIGhpdCwKICAgICBldmVuIGlmIGFjY2Vzc2liaWxpdHlJ
bmRleE9mQ2hpbGQgZG9lc24ndCB1c2UgdGhlIGF0dGFjaG1lbnQKCldpdGggdGhpcyBwYXRjaCwg
d2UgaXRlcmF0ZSBvdmVyIHRoZSBjaGlsZHJlbiBkaXJlY3RseSB3aXRob3V0IGFsbG9jYXRpbmcg
dGhlIE5TQXJyYXkuIFRoaXMgc2F2ZXMgN2sgc2FtcGxlcwpvbiBhbiBpbnRlcm5hbCB3ZWJwYWdl
LiBTbmlwcGV0IGZyb20gdGhlIHNhbXBsZToKCjY5NTIgLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6Zm9yUGFyYW1ldGVyOl0KISA2ODYx
IC1bTlNPYmplY3QoTlNPYmplY3RBY2Nlc3NpYmlsaXR5QXR0cmlidXRlQWNjZXNzQWRkaXRpb25z
KSBhY2Nlc3NpYmlsaXR5SW5kZXhGb3JDaGlsZFVJRWxlbWVudEF0dHJpYnV0ZUZvclBhcmFtZXRl
cjpdCiEgOiA2Njk4IC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0
eUluZGV4T2ZDaGlsZDpdCiEgOiB8IDUwMTYgbWFrZU5TQXJyYXkoV1RGOjpWZWN0b3I8Li4uPiBj
b25zdCYpCiEgOiB8ICsgNDAyMCBvYmpjX21zZ1NlbmQgIChpbiBsaWJvYmpjLkEuZHlsaWIpCiEg
OiB8ICsgNjg0IC1bX19OU0FycmF5TSBhZGRPYmplY3Q6XQohIDogfCArIDEzMyAtW19fTlNBcnJh
eU0gaW5zZXJ0T2JqZWN0OmF0SW5kZXg6XQohIDogfCArIDY2IG9iamNfbXNnU2VuZCRhZGRPYmpl
Y3Q6CiEgOiB8ICsgNjEgb2JqY19yZXRhaW4KISA6IHwgKyAyOCBvYmpjX21zZ1NlbmQkaW5zZXJ0
T2JqZWN0OmF0SW5kZXg6CiEgOiB8ICsgMjQgRFlMRC1TVFVCJCRvYmpjX3JldGFpbgohIDogfCAx
MTYzIG1ha2VOU0FycmF5KFdURjo6VmVjdG9yPC4uLj4gY29uc3QmKQoKKiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToK
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUluZGV4T2ZDaGls
ZDpdKToKLS0tCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tICAg
fCAyNiArKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygr
KSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bQppbmRleCBmMzk0MzBjNjQ4MjcuLjQ4OTE2NzgzYTFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTM1OTYsNyArMzU5Niw3IEBAIC0gKEJPT0wpYWNjZXNz
aWJpbGl0eVNob3VsZFVzZVVuaXF1ZUlkCiB9CiAKIC8vIEFQSSB0aGF0IEFwcEtpdCB1c2VzIGZv
ciBmYXN0ZXIgYWNjZXNzCi0tIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6
KGlkKWNoaWxkCistIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6KGlkKXRh
cmdldENoaWxkCiB7CiAgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNl
bGYudXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlOwogICAgIGlmICghYmFja2luZ09iamVjdCkKQEAg
LTM2MDUsMjkgKzM2MDUsMjcgQEAgLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5SW5kZXhPZkNo
aWxkOihpZCljaGlsZAogICAgIC8vIFRyZWUgb2JqZWN0cyByZXR1cm4gdGhlaXIgcm93cyBhcyB0
aGVpciBjaGlsZHJlbi4gV2UgY2FuIHVzZSB0aGUgb3JpZ2luYWwgbWV0aG9kCiAgICAgLy8gaGVy
ZSwgYmVjYXVzZSB3ZSB3b24ndCBnYWluIGFueSBzcGVlZCB1cC4KICAgICBpZiAoYmFja2luZ09i
amVjdC0+aXNUcmVlKCkpCi0gICAgICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUluZGV4
T2ZDaGlsZDpjaGlsZF07CisgICAgICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUluZGV4
T2ZDaGlsZDp0YXJnZXRDaGlsZF07CiAKLSAgICBOU0FycmF5ICpjaGlsZHJlbiA9IHNlbGYuY2hp
bGRyZW5WZWN0b3JBcnJheTsKLSAgICBpZiAoIWNoaWxkcmVuLmNvdW50KSB7CisgICAgY29uc3Qg
YXV0byYgY2hpbGRyZW4gPSBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpOworICAgIGlmICghY2hp
bGRyZW4uc2l6ZSgpKSB7CiAgICAgICAgIGlmIChhdXRvICpyZW5kZXJXaWRnZXRDaGlsZHJlbiA9
IFtzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXSkKLSAgICAgICAgICAgIHJldHVybiBbcmVuZGVy
V2lkZ2V0Q2hpbGRyZW4gaW5kZXhPZk9iamVjdDpjaGlsZF07CisgICAgICAgICAgICByZXR1cm4g
W3JlbmRlcldpZGdldENoaWxkcmVuIGluZGV4T2ZPYmplY3Q6dGFyZ2V0Q2hpbGRdOwogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNNb2RlbCgp
KQotICAgICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVu
KCkuZmluZChjaGlsZCk7CisgICAgICAgICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+bW9kZWxF
bGVtZW50Q2hpbGRyZW4oKS5maW5kKHRhcmdldENoaWxkKTsKICNlbmRpZgogICAgIH0KIAotICAg
IE5TVUludGVnZXIgY291bnQgPSBbY2hpbGRyZW4gY291bnRdOwotICAgIGZvciAoTlNVSW50ZWdl
ciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgKndyYXBwZXIgPSBjaGlsZHJlbltpXTsKLSAgICAgICAgYXV0byogb2JqZWN0ID0g
d3JhcHBlci5heEJhY2tpbmdPYmplY3Q7Ci0gICAgICAgIGlmICghb2JqZWN0KQorICAgIHNpemVf
dCBjaGlsZENvdW50ID0gY2hpbGRyZW4uc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY2hpbGRDb3VudDsgaSsrKSB7CisgICAgICAgIFJlZlB0ciBjaGlsZCA9IGNoaWxkcmVuW2ld
OworICAgICAgICBpZiAoIWNoaWxkKQogICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
aWYgKHdyYXBwZXIgPT0gY2hpbGQgfHwgKG9iamVjdC0+aXNBdHRhY2htZW50KCkgJiYgW3dyYXBw
ZXIgYXR0YWNobWVudFZpZXddID09IGNoaWxkKSkKKyAgICAgICAgV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgKmNoaWxkV3JhcHBlciA9IGNoaWxkLT53cmFwcGVyKCk7CisgICAgICAgIGlm
IChjaGlsZFdyYXBwZXIgPT0gdGFyZ2V0Q2hpbGQgfHwgKGNoaWxkLT5pc0F0dGFjaG1lbnQoKSAm
JiBbY2hpbGRXcmFwcGVyIGF0dGFjaG1lbnRWaWV3XSA9PSB0YXJnZXRDaGlsZCkpCiAgICAgICAg
ICAgICByZXR1cm4gaTsKICAgICB9Ci0KICAgICByZXR1cm4gTlNOb3RGb3VuZDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>468152</attachid>
            <date>2023-10-10 10:30:25 -0700</date>
            <delta_ts>2023-10-10 13:14:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-262941-20231010103025.patch</filename>
            <type>text/plain</type>
            <size>4252</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSAyMTk0OTNjYTdlZGZlMzRjOThmODYwODk4Nzg2MTZkMDA5ODJkZmIxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogTW9uLCA5IE9jdCAyMDIzIDIxOjQ2OjE1IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQVg6IC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIKIGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6
XSB1bm5lY2Vzc2FyaWx5IGFsbG9jYXRlcyBhbiBOU0FycmF5CiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYyOTQxIHJkYXI6Ly9wcm9ibGVtLzExNjcxNzg0NQoKUmV2
aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCgpQcmlvciB0byB0aGlzIHBhdGNoLCBhY2Nlc3NpYmls
aXR5SW5kZXhPZkNoaWxkIGNhbGxzIGNoaWxkcmVuVmVjdG9yQXJyYXksIHdoaWNoIHR1cm5zIEFY
Q29yZU9iamVjdDo6Y2hpbGRyZW4oKQppbnRvIGFuIE5TQXJyYXkgb2YgdGhlIGNvcnJlc3BvbmRp
bmcgd3JhcHBlcnMuIFRoaXMgaXMgYmFkIHRvIHVzZSBpbiBhY2Nlc3NpYmlsaXR5SW5kZXhPZkNo
aWxkIGZvciB0d28gcmVhc29uczoKCiAgMS4gVGhpcyBOU0FycmF5IGFsbG9jYXRpb24gc2hvd3Mg
dXAgaW4gdGhlIHRob3VzYW5kcyBvZiBzYW1wbGVzIG9uIHNvbWUgc2l0ZXMKICAyLiBjaGlsZHJl
blZlY3RvckFycmF5IGVhZ2VybHkgcmVzb2x2ZXMgYXR0YWNobWVudHMsIHdoaWNoIChmb3Igbm93
KSByZXF1aXJlcyBhIG1haW4tdGhyZWFkIGhpdCwKICAgICBldmVuIGlmIGFjY2Vzc2liaWxpdHlJ
bmRleE9mQ2hpbGQgZG9lc24ndCB1c2UgdGhlIGF0dGFjaG1lbnQKCldpdGggdGhpcyBwYXRjaCwg
d2UgaXRlcmF0ZSBvdmVyIHRoZSBjaGlsZHJlbiBkaXJlY3RseSB3aXRob3V0IGFsbG9jYXRpbmcg
dGhlIE5TQXJyYXkuIFRoaXMgc2F2ZXMgN2sgc2FtcGxlcwpvbiBhbiBpbnRlcm5hbCB3ZWJwYWdl
LiBTbmlwcGV0IGZyb20gdGhlIHNhbXBsZToKCjY5NTIgLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6Zm9yUGFyYW1ldGVyOl0KISA2ODYx
IC1bTlNPYmplY3QoTlNPYmplY3RBY2Nlc3NpYmlsaXR5QXR0cmlidXRlQWNjZXNzQWRkaXRpb25z
KSBhY2Nlc3NpYmlsaXR5SW5kZXhGb3JDaGlsZFVJRWxlbWVudEF0dHJpYnV0ZUZvclBhcmFtZXRl
cjpdCiEgOiA2Njk4IC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0
eUluZGV4T2ZDaGlsZDpdCiEgOiB8IDUwMTYgbWFrZU5TQXJyYXkoV1RGOjpWZWN0b3I8Li4uPiBj
b25zdCYpCiEgOiB8ICsgNDAyMCBvYmpjX21zZ1NlbmQgIChpbiBsaWJvYmpjLkEuZHlsaWIpCiEg
OiB8ICsgNjg0IC1bX19OU0FycmF5TSBhZGRPYmplY3Q6XQohIDogfCArIDEzMyAtW19fTlNBcnJh
eU0gaW5zZXJ0T2JqZWN0OmF0SW5kZXg6XQohIDogfCArIDY2IG9iamNfbXNnU2VuZCRhZGRPYmpl
Y3Q6CiEgOiB8ICsgNjEgb2JqY19yZXRhaW4KISA6IHwgKyAyOCBvYmpjX21zZ1NlbmQkaW5zZXJ0
T2JqZWN0OmF0SW5kZXg6CiEgOiB8ICsgMjQgRFlMRC1TVFVCJCRvYmpjX3JldGFpbgohIDogfCAx
MTYzIG1ha2VOU0FycmF5KFdURjo6VmVjdG9yPC4uLj4gY29uc3QmKQoKKiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToK
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUluZGV4T2ZDaGls
ZDpdKToKLS0tCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tICAg
fCAyNSArKysrKysrKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygr
KSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bQppbmRleCBmMzk0MzBjNjQ4MjcuLjE1YmJmZjAwNDE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTM1OTYsNyArMzU5Niw3IEBAIC0gKEJPT0wpYWNjZXNz
aWJpbGl0eVNob3VsZFVzZVVuaXF1ZUlkCiB9CiAKIC8vIEFQSSB0aGF0IEFwcEtpdCB1c2VzIGZv
ciBmYXN0ZXIgYWNjZXNzCi0tIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6
KGlkKWNoaWxkCistIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6KGlkKXRh
cmdldENoaWxkCiB7CiAgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNl
bGYudXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlOwogICAgIGlmICghYmFja2luZ09iamVjdCkKQEAg
LTM2MDUsMjkgKzM2MDUsMjYgQEAgLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5SW5kZXhPZkNo
aWxkOihpZCljaGlsZAogICAgIC8vIFRyZWUgb2JqZWN0cyByZXR1cm4gdGhlaXIgcm93cyBhcyB0
aGVpciBjaGlsZHJlbi4gV2UgY2FuIHVzZSB0aGUgb3JpZ2luYWwgbWV0aG9kCiAgICAgLy8gaGVy
ZSwgYmVjYXVzZSB3ZSB3b24ndCBnYWluIGFueSBzcGVlZCB1cC4KICAgICBpZiAoYmFja2luZ09i
amVjdC0+aXNUcmVlKCkpCi0gICAgICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUluZGV4
T2ZDaGlsZDpjaGlsZF07CisgICAgICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUluZGV4
T2ZDaGlsZDp0YXJnZXRDaGlsZF07CiAKLSAgICBOU0FycmF5ICpjaGlsZHJlbiA9IHNlbGYuY2hp
bGRyZW5WZWN0b3JBcnJheTsKLSAgICBpZiAoIWNoaWxkcmVuLmNvdW50KSB7CisgICAgY29uc3Qg
YXV0byYgY2hpbGRyZW4gPSBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpOworICAgIGlmICghY2hp
bGRyZW4uc2l6ZSgpKSB7CiAgICAgICAgIGlmIChhdXRvICpyZW5kZXJXaWRnZXRDaGlsZHJlbiA9
IFtzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXSkKLSAgICAgICAgICAgIHJldHVybiBbcmVuZGVy
V2lkZ2V0Q2hpbGRyZW4gaW5kZXhPZk9iamVjdDpjaGlsZF07CisgICAgICAgICAgICByZXR1cm4g
W3JlbmRlcldpZGdldENoaWxkcmVuIGluZGV4T2ZPYmplY3Q6dGFyZ2V0Q2hpbGRdOwogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNNb2RlbCgp
KQotICAgICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVu
KCkuZmluZChjaGlsZCk7CisgICAgICAgICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+bW9kZWxF
bGVtZW50Q2hpbGRyZW4oKS5maW5kKHRhcmdldENoaWxkKTsKICNlbmRpZgogICAgIH0KIAotICAg
IE5TVUludGVnZXIgY291bnQgPSBbY2hpbGRyZW4gY291bnRdOwotICAgIGZvciAoTlNVSW50ZWdl
ciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgKndyYXBwZXIgPSBjaGlsZHJlbltpXTsKLSAgICAgICAgYXV0byogb2JqZWN0ID0g
d3JhcHBlci5heEJhY2tpbmdPYmplY3Q7Ci0gICAgICAgIGlmICghb2JqZWN0KQorICAgIHNpemVf
dCBjaGlsZENvdW50ID0gY2hpbGRyZW4uc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY2hpbGRDb3VudDsgaSsrKSB7CisgICAgICAgIGlmICghY2hpbGRyZW5baV0pCiAgICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAod3JhcHBlciA9PSBjaGlsZCB8fCAob2JqZWN0
LT5pc0F0dGFjaG1lbnQoKSAmJiBbd3JhcHBlciBhdHRhY2htZW50Vmlld10gPT0gY2hpbGQpKQor
ICAgICAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAqY2hpbGRXcmFwcGVyID0gY2hp
bGRyZW5baV0tPndyYXBwZXIoKTsKKyAgICAgICAgaWYgKGNoaWxkV3JhcHBlciA9PSB0YXJnZXRD
aGlsZCB8fCAoY2hpbGRyZW5baV0tPmlzQXR0YWNobWVudCgpICYmIFtjaGlsZFdyYXBwZXIgYXR0
YWNobWVudFZpZXddID09IHRhcmdldENoaWxkKSkKICAgICAgICAgICAgIHJldHVybiBpOwogICAg
IH0KLQogICAgIHJldHVybiBOU05vdEZvdW5kOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>468157</attachid>
            <date>2023-10-10 13:14:14 -0700</date>
            <delta_ts>2023-10-10 21:04:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-262941-20231010131414.patch</filename>
            <type>text/plain</type>
            <size>4276</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA0ODY2MjhkM2FmZjA4MzA0ZTg0Mzk5OTZmYTNmZGZjOWQ0MDgxZTY1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogTW9uLCA5IE9jdCAyMDIzIDIxOjQ2OjE1IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gQVg6IC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIKIGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6
XSB1bm5lY2Vzc2FyaWx5IGFsbG9jYXRlcyBhbiBOU0FycmF5CiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYyOTQxIHJkYXI6Ly9wcm9ibGVtLzExNjcxNzg0NQoKUmV2
aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCgpQcmlvciB0byB0aGlzIHBhdGNoLCBhY2Nlc3NpYmls
aXR5SW5kZXhPZkNoaWxkIGNhbGxzIGNoaWxkcmVuVmVjdG9yQXJyYXksIHdoaWNoIHR1cm5zIEFY
Q29yZU9iamVjdDo6Y2hpbGRyZW4oKQppbnRvIGFuIE5TQXJyYXkgb2YgdGhlIGNvcnJlc3BvbmRp
bmcgd3JhcHBlcnMuIFRoaXMgaXMgYmFkIHRvIHVzZSBpbiBhY2Nlc3NpYmlsaXR5SW5kZXhPZkNo
aWxkIGZvciB0d28gcmVhc29uczoKCiAgMS4gVGhpcyBOU0FycmF5IGFsbG9jYXRpb24gc2hvd3Mg
dXAgaW4gdGhlIHRob3VzYW5kcyBvZiBzYW1wbGVzIG9uIHNvbWUgc2l0ZXMKICAyLiBjaGlsZHJl
blZlY3RvckFycmF5IGVhZ2VybHkgcmVzb2x2ZXMgYXR0YWNobWVudHMsIHdoaWNoIChmb3Igbm93
KSByZXF1aXJlcyBhIG1haW4tdGhyZWFkIGhpdCwKICAgICBldmVuIGlmIGFjY2Vzc2liaWxpdHlJ
bmRleE9mQ2hpbGQgZG9lc24ndCB1c2UgdGhlIGF0dGFjaG1lbnQKCldpdGggdGhpcyBwYXRjaCwg
d2UgaXRlcmF0ZSBvdmVyIHRoZSBjaGlsZHJlbiBkaXJlY3RseSB3aXRob3V0IGFsbG9jYXRpbmcg
dGhlIE5TQXJyYXkuIFRoaXMgc2F2ZXMgN2sgc2FtcGxlcwpvbiBhbiBpbnRlcm5hbCB3ZWJwYWdl
LiBTbmlwcGV0IGZyb20gdGhlIHNhbXBsZToKCjY5NTIgLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6Zm9yUGFyYW1ldGVyOl0KISA2ODYx
IC1bTlNPYmplY3QoTlNPYmplY3RBY2Nlc3NpYmlsaXR5QXR0cmlidXRlQWNjZXNzQWRkaXRpb25z
KSBhY2Nlc3NpYmlsaXR5SW5kZXhGb3JDaGlsZFVJRWxlbWVudEF0dHJpYnV0ZUZvclBhcmFtZXRl
cjpdCiEgOiA2Njk4IC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0
eUluZGV4T2ZDaGlsZDpdCiEgOiB8IDUwMTYgbWFrZU5TQXJyYXkoV1RGOjpWZWN0b3I8Li4uPiBj
b25zdCYpCiEgOiB8ICsgNDAyMCBvYmpjX21zZ1NlbmQgIChpbiBsaWJvYmpjLkEuZHlsaWIpCiEg
OiB8ICsgNjg0IC1bX19OU0FycmF5TSBhZGRPYmplY3Q6XQohIDogfCArIDEzMyAtW19fTlNBcnJh
eU0gaW5zZXJ0T2JqZWN0OmF0SW5kZXg6XQohIDogfCArIDY2IG9iamNfbXNnU2VuZCRhZGRPYmpl
Y3Q6CiEgOiB8ICsgNjEgb2JqY19yZXRhaW4KISA6IHwgKyAyOCBvYmpjX21zZ1NlbmQkaW5zZXJ0
T2JqZWN0OmF0SW5kZXg6CiEgOiB8ICsgMjQgRFlMRC1TVFVCJCRvYmpjX3JldGFpbgohIDogfCAx
MTYzIG1ha2VOU0FycmF5KFdURjo6VmVjdG9yPC4uLj4gY29uc3QmKQoKKiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToK
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUluZGV4T2ZDaGls
ZDpdKToKLS0tCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tICAg
fCAyNiArKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygr
KSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bQppbmRleCBmMzk0MzBjNjQ4MjcuLmNkMzg5MGE1MGE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTM1OTYsNyArMzU5Niw3IEBAIC0gKEJPT0wpYWNjZXNz
aWJpbGl0eVNob3VsZFVzZVVuaXF1ZUlkCiB9CiAKIC8vIEFQSSB0aGF0IEFwcEtpdCB1c2VzIGZv
ciBmYXN0ZXIgYWNjZXNzCi0tIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6
KGlkKWNoaWxkCistIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6KGlkKXRh
cmdldENoaWxkCiB7CiAgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09iamVjdCA9IHNl
bGYudXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlOwogICAgIGlmICghYmFja2luZ09iamVjdCkKQEAg
LTM2MDUsMjkgKzM2MDUsMjcgQEAgLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5SW5kZXhPZkNo
aWxkOihpZCljaGlsZAogICAgIC8vIFRyZWUgb2JqZWN0cyByZXR1cm4gdGhlaXIgcm93cyBhcyB0
aGVpciBjaGlsZHJlbi4gV2UgY2FuIHVzZSB0aGUgb3JpZ2luYWwgbWV0aG9kCiAgICAgLy8gaGVy
ZSwgYmVjYXVzZSB3ZSB3b24ndCBnYWluIGFueSBzcGVlZCB1cC4KICAgICBpZiAoYmFja2luZ09i
amVjdC0+aXNUcmVlKCkpCi0gICAgICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUluZGV4
T2ZDaGlsZDpjaGlsZF07CisgICAgICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUluZGV4
T2ZDaGlsZDp0YXJnZXRDaGlsZF07CiAKLSAgICBOU0FycmF5ICpjaGlsZHJlbiA9IHNlbGYuY2hp
bGRyZW5WZWN0b3JBcnJheTsKLSAgICBpZiAoIWNoaWxkcmVuLmNvdW50KSB7CisgICAgY29uc3Qg
YXV0byYgY2hpbGRyZW4gPSBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpOworICAgIGlmICghY2hp
bGRyZW4uc2l6ZSgpKSB7CiAgICAgICAgIGlmIChhdXRvICpyZW5kZXJXaWRnZXRDaGlsZHJlbiA9
IFtzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXSkKLSAgICAgICAgICAgIHJldHVybiBbcmVuZGVy
V2lkZ2V0Q2hpbGRyZW4gaW5kZXhPZk9iamVjdDpjaGlsZF07CisgICAgICAgICAgICByZXR1cm4g
W3JlbmRlcldpZGdldENoaWxkcmVuIGluZGV4T2ZPYmplY3Q6dGFyZ2V0Q2hpbGRdOwogI2lmIEVO
QUJMRShNT0RFTF9FTEVNRU5UKQogICAgICAgICBpZiAoYmFja2luZ09iamVjdC0+aXNNb2RlbCgp
KQotICAgICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QtPm1vZGVsRWxlbWVudENoaWxkcmVu
KCkuZmluZChjaGlsZCk7CisgICAgICAgICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+bW9kZWxF
bGVtZW50Q2hpbGRyZW4oKS5maW5kKHRhcmdldENoaWxkKTsKICNlbmRpZgogICAgIH0KIAotICAg
IE5TVUludGVnZXIgY291bnQgPSBbY2hpbGRyZW4gY291bnRdOwotICAgIGZvciAoTlNVSW50ZWdl
ciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgKndyYXBwZXIgPSBjaGlsZHJlbltpXTsKLSAgICAgICAgYXV0byogb2JqZWN0ID0g
d3JhcHBlci5heEJhY2tpbmdPYmplY3Q7Ci0gICAgICAgIGlmICghb2JqZWN0KQorICAgIHNpemVf
dCBjaGlsZENvdW50ID0gY2hpbGRyZW4uc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY2hpbGRDb3VudDsgaSsrKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGNoaWxkID0gY2hpbGRy
ZW5baV07CisgICAgICAgIGlmICghY2hpbGQpCiAgICAgICAgICAgICBjb250aW51ZTsKLQotICAg
ICAgICBpZiAod3JhcHBlciA9PSBjaGlsZCB8fCAob2JqZWN0LT5pc0F0dGFjaG1lbnQoKSAmJiBb
d3JhcHBlciBhdHRhY2htZW50Vmlld10gPT0gY2hpbGQpKQorICAgICAgICBXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciAqY2hpbGRXcmFwcGVyID0gY2hpbGQtPndyYXBwZXIoKTsKKyAgICAg
ICAgaWYgKGNoaWxkV3JhcHBlciA9PSB0YXJnZXRDaGlsZCB8fCAoY2hpbGQtPmlzQXR0YWNobWVu
dCgpICYmIFtjaGlsZFdyYXBwZXIgYXR0YWNobWVudFZpZXddID09IHRhcmdldENoaWxkKSkKICAg
ICAgICAgICAgIHJldHVybiBpOwogICAgIH0KLQogICAgIHJldHVybiBOU05vdEZvdW5kOwogfQog
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>