<?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>234747</bug_id>
          
          <creation_ts>2021-12-29 15:01:51 -0800</creation_ts>
          <short_desc>Updating the file name of attachment-backed images should automatically set the `alt` attribute</short_desc>
          <delta_ts>2022-01-02 11:06:22 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1827205</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-29 15:01:51 -0800</bug_when>
    <thetext>rdar://85899879</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827206</commentid>
    <comment_count>1</comment_count>
      <attachid>448082</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-29 15:23:42 -0800</bug_when>
    <thetext>Created attachment 448082
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827286</commentid>
    <comment_count>2</comment_count>
      <attachid>448082</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-30 17:45:37 -0800</bug_when>
    <thetext>Comment on attachment 448082
For EWS

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

&gt; Source/WebCore/html/HTMLAttachmentElement.h:67
&gt; +    RefPtr&lt;HTMLImageElement&gt; enclosingImageElement() const;

Someone has to write down our rules about RefPtr vs. raw pointer in new code. It seems clear this should be RefPtr in case we call any function using it as a this pointer, but not sure where we wrote that down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827351</commentid>
    <comment_count>3</comment_count>
      <attachid>448082</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-31 11:40:06 -0800</bug_when>
    <thetext>Comment on attachment 448082
For EWS

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

Thanks for the review!

&gt;&gt; Source/WebCore/html/HTMLAttachmentElement.h:67
&gt;&gt; +    RefPtr&lt;HTMLImageElement&gt; enclosingImageElement() const;
&gt; 
&gt; Someone has to write down our rules about RefPtr vs. raw pointer in new code. It seems clear this should be RefPtr in case we call any function using it as a this pointer, but not sure where we wrote that down.

+1 to this! I agree it would be great to have explicit guidelines around when to use RefPtr/Ref in the return type, vs. using RefPtr/Ref at the call site.

My understanding was that we should generally return RefPtr/Ref instead of raw pointers/references and use `auto` in call sites, unless there&apos;s a good reason to avoid the ref-churn (e.g. performance). That said, I do still tend to pass back raw pointers or references sometimes for methods that are just simple getters around a ref-counted object :P.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827352</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-31 11:47:53 -0800</bug_when>
    <thetext>Committed r287494 (245629@main): &lt;https://commits.webkit.org/245629@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448082.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827389</commentid>
    <comment_count>5</comment_count>
      <attachid>448082</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-31 21:22:47 -0800</bug_when>
    <thetext>Comment on attachment 448082
For EWS

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

&gt;&gt;&gt; Source/WebCore/html/HTMLAttachmentElement.h:67
&gt;&gt;&gt; +    RefPtr&lt;HTMLImageElement&gt; enclosingImageElement() const;
&gt;&gt; 
&gt;&gt; Someone has to write down our rules about RefPtr vs. raw pointer in new code. It seems clear this should be RefPtr in case we call any function using it as a this pointer, but not sure where we wrote that down.
&gt; 
&gt; +1 to this! I agree it would be great to have explicit guidelines around when to use RefPtr/Ref in the return type, vs. using RefPtr/Ref at the call site.
&gt; 
&gt; My understanding was that we should generally return RefPtr/Ref instead of raw pointers/references and use `auto` in call sites, unless there&apos;s a good reason to avoid the ref-churn (e.g. performance). That said, I do still tend to pass back raw pointers or references sometimes for methods that are just simple getters around a ref-counted object :P.

My understanding was that we should use RefPtr/Ref for local variables and not for argument types or return types. But I am not sure that rule works as a general rule, given that a return type has *some* of the same properties as a local variable, when used as an argument to a function or to make a member function call. I’m sure the full answer depends on the lifetime of the returned raw pointer, but it’s hard to reason about that given side effects. Like returning something owned by &quot;this&quot;, but then a new value is assigned during the lifetime of that return value.

And: a rule that contains the phrase &quot;unless there’s a good reason&quot; is difficult to follow, because of how subjective that is.

You mention above that we should use a RefPtr return type and use &quot;auto&quot; at call sites, but in this patch we use a RefPtr return type and use &quot;RefPtr&quot; at call sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827430</commentid>
    <comment_count>6</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-01 11:01:10 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 448082 [details]
&gt; For EWS
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448082&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/html/HTMLAttachmentElement.h:67
&gt; &gt;&gt;&gt; +    RefPtr&lt;HTMLImageElement&gt; enclosingImageElement() const;
&gt; &gt;&gt; 
&gt; &gt;&gt; Someone has to write down our rules about RefPtr vs. raw pointer in new code. It seems clear this should be RefPtr in case we call any function using it as a this pointer, but not sure where we wrote that down.
&gt; &gt; 
&gt; &gt; +1 to this! I agree it would be great to have explicit guidelines around when to use RefPtr/Ref in the return type, vs. using RefPtr/Ref at the call site.
&gt; &gt; 
&gt; &gt; My understanding was that we should generally return RefPtr/Ref instead of raw pointers/references and use `auto` in call sites, unless there&apos;s a good reason to avoid the ref-churn (e.g. performance). That said, I do still tend to pass back raw pointers or references sometimes for methods that are just simple getters around a ref-counted object :P.
&gt; 
&gt; My understanding was that we should use RefPtr/Ref for local variables and
&gt; not for argument types or return types. But I am not sure that rule works as
&gt; a general rule, given that a return type has *some* of the same properties
&gt; as a local variable, when used as an argument to a function or to make a
&gt; member function call. I’m sure the full answer depends on the lifetime of
&gt; the returned raw pointer, but it’s hard to reason about that given side
&gt; effects. Like returning something owned by &quot;this&quot;, but then a new value is
&gt; assigned during the lifetime of that return value.

I see — it sounds like this method&apos;s return type should really just be a raw pointer, then? (Especially since I already explicitly put it in a RefPtr, as you noted below).

&gt; 
&gt; And: a rule that contains the phrase &quot;unless there’s a good reason&quot; is
&gt; difficult to follow, because of how subjective that is.
&gt; 
&gt; You mention above that we should use a RefPtr return type and use &quot;auto&quot; at
&gt; call sites, but in this patch we use a RefPtr return type and use &quot;RefPtr&quot;
&gt; at call sites.

Whoops, good catch — that&apos;s probably from when I was going back and forth when trying to decide between returning a raw pointer vs. RefPtr :P.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827432</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-01 11:13:24 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827433</commentid>
    <comment_count>8</comment_count>
      <attachid>448155</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-01 11:13:26 -0800</bug_when>
    <thetext>Created attachment 448155
Return pointer instead of RefPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827434</commentid>
    <comment_count>9</comment_count>
      <attachid>448155</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-01 11:18:10 -0800</bug_when>
    <thetext>Comment on attachment 448155
Return pointer instead of RefPtr

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Make a helper method on HTMLAttachmentElement return a raw pointer instead of a RefPtr. All call sites that
&gt; +        store the result of this method in a local variable already use RefPtr.

I know I created the doubt here, but I am still not sure about this; if any caller wanted to call a function on the result of this, then I think we’d be happier with RefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827440</commentid>
    <comment_count>10</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-01 12:06:09 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; Comment on attachment 448155 [details]
&gt; Return pointer instead of RefPtr
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448155&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        Make a helper method on HTMLAttachmentElement return a raw pointer instead of a RefPtr. All call sites that
&gt; &gt; +        store the result of this method in a local variable already use RefPtr.
&gt; 
&gt; I know I created the doubt here, but I am still not sure about this; if any
&gt; caller wanted to call a function on the result of this, then I think we’d be
&gt; happier with RefPtr.

Hm...fair enough. Maybe I&apos;ll just leave the return value as `RefPtr` but switch the `RefPtr` =&gt; `auto` at the call sites, then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827441</commentid>
    <comment_count>11</comment_count>
      <attachid>448158</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-01 12:07:21 -0800</bug_when>
    <thetext>Created attachment 448158
Use auto in a few more places</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827524</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-02 11:06:18 -0800</bug_when>
    <thetext>Committed r287521 (245656@main): &lt;https://commits.webkit.org/245656@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448158.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448082</attachid>
            <date>2021-12-29 15:23:42 -0800</date>
            <delta_ts>2021-12-31 11:47:55 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-234747-20211229152341.patch</filename>
            <type>text/plain</type>
            <size>12356</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQyN2MxMTNmNWY2Yjhk
YmFiNjJkNGFjN2ZhOTk2YWMzZmE4YjUzYy4uODlmOWIyNjY3NWIyYzNhODA0MjhjY2YyMWI2MTY0
ZTIxNzI5N2YxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTEyLTI5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0aW5nIHRo
ZSBmaWxlIG5hbWUgb2YgYXR0YWNobWVudC1iYWNrZWQgaW1hZ2VzIHNob3VsZCBhdXRvbWF0aWNh
bGx5IHNldCB0aGUgYGFsdGAgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ3NDcKKyAgICAgICAgcmRhcjovLzg1ODk5ODc5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBhIHNtYWxs
IGFkanVzdG1lbnQgd2hlbiB1cGRhdGluZyBhdHRhY2htZW50IGF0dHJpYnV0ZXMgZm9yIGF0dGFj
aG1lbnQtYmFja2VkIGltYWdlcyAoaS5lLiB3aGVuIHVzaW5nCisgICAgICAgIGAtW19XS0F0dGFj
aG1lbnRJbmZvIHNldEZpbGVXcmFwcGVyOmNvbnRlbnRUeXBlOmNvbXBsZXRpb246XWApLCBzdWNo
IHRoYXQgdGhlIGBhbHRgIGF0dHJpYnV0ZSBvZiB0aGUgaW1hZ2UgaXMKKyAgICAgICAgc2V0IHRv
IHRoZSBhdHRhY2htZW50IGVsZW1lbnQncyBgdGl0bGVgLiBXaGlsZSBjb252ZW5pZW50IGZvciBh
bGwgaW50ZXJuYWwgY2xpZW50cyBvZiB0aGUgYF9XS0F0dGFjaG1lbnRgIFNQSQorICAgICAgICAo
aS5lLiBNYWlsLCBOb3RlcyksIHRoaXMgaGFzIHRoZSBhZGRlZCBiZW5lZml0IG9mIHByZXNlcnZp
bmcgdGhlIGF0dGFjaG1lbnQncyBmaWxlIG5hbWUgd2hlbiBjb3B5aW5nIGFuZCBwYXN0aW5nCisg
ICAgICAgIGFjcm9zcyBkaWZmZXJlbnQgd2ViIHZpZXdzICh3aGVyZSBhIG5ldyBgQVBJOjpBdHRh
Y2htZW50YCBpcyBnZW5lcmF0ZWQgb24gcGFzdGUpLCBpbnN0ZWFkIG9mIGRlZmF1bHRpbmcgdG8g
dGhlCisgICAgICAgIGxhc3QgcGF0aCBjb21wb25lbnQgb2YgdGhlIGJsb2IgVVJMIGNvcnJlc3Bv
bmRpbmcgdG8gdGhlIGltYWdlIGRhdGEgaW4gdGhlIHdlYiBhcmNoaXZlLgorCisgICAgICAgIFRl
c3Q6IFdLQXR0YWNobWVudFRlc3RzLkNvcHlBbmRQYXN0ZUltYWdlQmV0d2VlbldlYlZpZXdzCisK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
Om5vdGlmeUNsaWVudE9mQXR0YWNobWVudFVwZGF0ZXMpOgorICAgICAgICAqIGh0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxl
bWVudDo6ZW5jbG9zaW5nSW1hZ2VFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpoYXNFbmNsb3NpbmdJbWFn
ZSBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVwbGFjZSBgaGFzRW5jbG9zaW5nSW1hZ2Uo
KWAgd2l0aCBgZW5jbG9zaW5nSW1hZ2VFbGVtZW50KClgLCBhIGhlbHBlciB0aGF0IHJldHVybnMg
dGhlIGVuY2xvc2luZyBpbWFnZSBlbGVtZW50CisgICAgICAgIChvciBudWxsIGlmIHRoZXJlIGlz
IG5vbmUpLiBXZSB1c2UgdGhlIGxhdHRlciBpbiBhIGNvdXBsZSBvZiBwbGFjZXMgYWJvdmUsIHdo
ZXJlIHdlIG1vZGlmeSBzb21lIGF0dHJpYnV0ZXMgb24KKyAgICAgICAgdGhlIGVuY2xvc2luZyBp
bWFnZSBpbiByZXNwb25zZSB0byBhdHRyaWJ1dGUgYW5kIGRhdGEgdXBkYXRlcy4KKworICAgICAg
ICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisKIDIwMjEtMTItMjkgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhZGRpdGlvbmFsIG5hbWVkIGNv
bG9yIHNwYWNlcyBmb3IgZXh0ZW5kZWQgcmdiIGNvbG9yIHR5cGVzIGFuZCBIU0wvSFdCIGluIHBy
ZXBhcmF0aW9uIGZvciBvdXQgb2YgZ2FtdXQgYW5kIG1pc3NpbmcgY29tcG9uZW50IHN1cHBvcnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA0MGM3ODRjM2UzOGI4ZGE4OTIxMmJiODk4
MDJkY2M5MmU2YjgzYTA2Li5iMGNiNjgzM2I4ZmYyNDZjNzA1NmYzZmQyNmMwNjMxMmY5Y2FkOGM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00MjMxLDcgKzQyMzEsNyBAQCB2b2lk
IEVkaXRvcjo6bm90aWZ5Q2xpZW50T2ZBdHRhY2htZW50VXBkYXRlcygpCiAKICAgICBmb3IgKGF1
dG8mIGlkZW50aWZpZXIgOiBpbnNlcnRlZEF0dGFjaG1lbnRJZGVudGlmaWVycykgewogICAgICAg
ICBpZiAoYXV0byBhdHRhY2htZW50ID0gbV9kb2N1bWVudC5hdHRhY2htZW50Rm9ySWRlbnRpZmll
cihpZGVudGlmaWVyKSkKLSAgICAgICAgICAgIGNsaWVudCgpLT5kaWRJbnNlcnRBdHRhY2htZW50
V2l0aElkZW50aWZpZXIoaWRlbnRpZmllciwgYXR0YWNobWVudC0+YXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIpLCBhdHRhY2htZW50LT5oYXNFbmNsb3Np
bmdJbWFnZSgpKTsKKyAgICAgICAgICAgIGNsaWVudCgpLT5kaWRJbnNlcnRBdHRhY2htZW50V2l0
aElkZW50aWZpZXIoaWRlbnRpZmllciwgYXR0YWNobWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIpLCBhdHRhY2htZW50LT5lbmNsb3NpbmdJbWFn
ZUVsZW1lbnQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1l
bnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmNwcAppbmRleCBkMmI4NzQxYTA0NDM0MmM3ZmZkOWU4YTUzM2NjOGExMjBlMjliYWQ0Li43ZDlj
ZTM5OGJlMmYxYWM0MjM3M2Y3YmI0NzBhNGQwYTJhN2IzMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0xNTIsOSArMTUyLDEyIEBAIGNv
bnN0IFN0cmluZyYgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjplbnN1cmVVbmlxdWVJZGVudGlmaWVy
KCkKICAgICByZXR1cm4gbV91bmlxdWVJZGVudGlmaWVyOwogfQogCi1ib29sIEhUTUxBdHRhY2ht
ZW50RWxlbWVudDo6aGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdAorUmVmUHRyPEhUTUxJbWFnZUVs
ZW1lbnQ+IEhUTUxBdHRhY2htZW50RWxlbWVudDo6ZW5jbG9zaW5nSW1hZ2VFbGVtZW50KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gaXM8SFRNTEltYWdlRWxlbWVudD4oc2hhZG93SG9zdCgpKTsKKyAg
ICBpZiAoYXV0byBob3N0RWxlbWVudCA9IHNoYWRvd0hvc3QoKTsgaXM8SFRNTEltYWdlRWxlbWVu
dD4oaG9zdEVsZW1lbnQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVu
dD4oaG9zdEVsZW1lbnQpOworCisgICAgcmV0dXJuIHsgfTsKIH0KIAogdm9pZCBIVE1MQXR0YWNo
bWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21TdHJpbmcmIHZhbHVlKQpAQCAtMjAzLDEwICsyMDYsMTUgQEAgU3RyaW5nIEhUTUxB
dHRhY2htZW50RWxlbWVudDo6YXR0YWNobWVudFBhdGgoKSBjb25zdAogCiB2b2lkIEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6dXBkYXRlQXR0cmlidXRlcyhzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYm
IG5ld0ZpbGVTaXplLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IG5ld0ZpbGVuYW1lKQogewotICAgIGlmICghbmV3RmlsZW5hbWUuaXNOdWxsKCkpCisgICAgaWYg
KCFuZXdGaWxlbmFtZS5pc051bGwoKSkgeworICAgICAgICBpZiAoUmVmUHRyIGVuY2xvc2luZ0lt
YWdlID0gZW5jbG9zaW5nSW1hZ2VFbGVtZW50KCkpCisgICAgICAgICAgICBlbmNsb3NpbmdJbWFn
ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmFsdEF0dHIs
IG5ld0ZpbGVuYW1lKTsKICAgICAgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihIVE1MTmFtZXM6OnRpdGxlQXR0ciwgbmV3RmlsZW5hbWUpOwotICAgIGVsc2UKKyAgICB9IGVs
c2UgeworICAgICAgICBpZiAoUmVmUHRyIGVuY2xvc2luZ0ltYWdlID0gZW5jbG9zaW5nSW1hZ2VF
bGVtZW50KCkpCisgICAgICAgICAgICBlbmNsb3NpbmdJbWFnZS0+cmVtb3ZlQXR0cmlidXRlKEhU
TUxOYW1lczo6YWx0QXR0cik7CiAgICAgICAgIHJlbW92ZUF0dHJpYnV0ZShIVE1MTmFtZXM6OnRp
dGxlQXR0cik7CisgICAgfQogCiAgICAgaWYgKCFuZXdDb250ZW50VHlwZS5pc051bGwoKSkKICAg
ICAgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnR5cGVB
dHRyLCBuZXdDb250ZW50VHlwZSk7CkBAIC0yMjksOCArMjM3LDExIEBAIHN0YXRpYyBib29sIG1p
bWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0YWNobWVudChjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQogCiB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1h
Z2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgYXV0byogaG9zdEVsZW1lbnQgPSBzaGFkb3dIb3N0
KCk7Ci0gICAgaWYgKCFpczxIVE1MSW1hZ2VFbGVtZW50Pihob3N0RWxlbWVudCkgfHwgIWJ1ZmZl
ci0+c2l6ZSgpKQorICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUmVmUHRyIGVuY2xvc2luZ0ltYWdlID0gZW5jbG9zaW5nSW1hZ2VFbGVtZW50KCk7Cisg
ICAgaWYgKCFlbmNsb3NpbmdJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIG1p
bWVUeXBlID0gY29udGVudFR5cGU7CkBAIC0yNDIsNyArMjUzLDcgQEAgdm9pZCBIVE1MQXR0YWNo
bWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBj
b250ZW50VHkKICAgICBpZiAoIW1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0YWNo
bWVudChtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGhvc3RFbGVtZW50LT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJM
OjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCgpLCBi
dWZmZXItPmV4dHJhY3REYXRhKCksIG1pbWVUeXBlKSkpOworICAgIGVuY2xvc2luZ0ltYWdlLT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9N
VVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCgp
LCBidWZmZXItPmV4dHJhY3REYXRhKCksIG1pbWVUeXBlKSkpOwogfQogCiB2b2lkIEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6dXBkYXRlVGh1bWJuYWlsKGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1i
bmFpbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCmluZGV4
IDY2MWRlYzkzNzZkOGE5ZDZkNDcxN2ZkMGI0Y2U3ZjgyZmYwM2Y3NTYuLmZkM2QxYTM4MWYzN2Vi
NTU5YWIzN2ZlOGMwYTE0MGFkN2Q5YzgxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAK
ICAgICBjb25zdCBTdHJpbmcmIGVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKTsKLSAgICBib29sIGhh
c0VuY2xvc2luZ0ltYWdlKCkgY29uc3Q7CisgICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGVu
Y2xvc2luZ0ltYWdlRWxlbWVudCgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGF0dGFjaG1lbnRUaXRsZSgpIGNvbnN0OwogICAgIFN0cmluZyBhdHRhY2htZW50VGl0bGVGb3JE
aXNwbGF5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggN2EzYmE2NzU0MDViOGZhNjVkZDEzYzkwNTZkYjNiYmM3N2Y5YjdlZi4uODE4
ZWE4MWVkMWQ4YmYzNGJhMzhmOGU1MDQzZTMwMWYxYjhhM2ZmZiAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEy
LTI5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFVw
ZGF0aW5nIHRoZSBmaWxlIG5hbWUgb2YgYXR0YWNobWVudC1iYWNrZWQgaW1hZ2VzIHNob3VsZCBh
dXRvbWF0aWNhbGx5IHNldCB0aGUgYGFsdGAgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ3NDcKKyAgICAgICAgcmRhcjovLzg1ODk5
ODc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IGEgbmV3IEFQSSB0ZXN0IHRvIGV4ZXJjaXNlIHRoaXMgc2NlbmFyaW8gLS0gaS5lLiBjb3B5aW5n
IGFuIGF0dGFjaG1lbnQtYmFja2VkIGltYWdlIGluIG9uZSB3ZWIgdmlldywgcGFzdGluZworICAg
ICAgICBpdCBpbnRvIGFub3RoZXIgd2ViIHZpZXcsIGFuZCBjb25maXJtaW5nIHRoYXQgdGhlIHBh
c3RlZCBhdHRhY2htZW50IHByZXNlcnZlcyB0aGUgX1dLQXR0YWNobWVudCBmaWxlIG5hbWUuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRl
c3RzLm1tOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IGVuc3VyZUF0dGFjaG1lbnRGb3JJbWFn
ZUVsZW1lbnRdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTEyLTI4
ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmhhbmNlIFZlY3Rv
cjo6bWFwIHRvIGFsbG93IHNwZWNpZnlpbmcgd2hhdCBraW5kIG9mIFZlY3RvciB0byByZXR1cm4g
KGUuZy4gaW5saW5lIGNhcGFjaXR5LCBvdmVyZmxvdywgZXRjLikKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1t
CmluZGV4IDA4ZDNkOTM1YWE4YTNhZTU4YzJhMTIxMjdiNTliYjZhMzE3NTY0ODAuLjc1MjE0Y2Y1
MmQ5NzBhYzFmZDE1MWU2YjFlYmY0ZWQzYmQzNzk4NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpA
QCAtMzY1LDYgKzM2NSwyNCBAQCAtICh2b2lkKWV4cGVjdFVwZGF0ZXNBZnRlckNvbW1hbmQ6KE5T
U3RyaW5nICopY29tbWFuZCB3aXRoQXJndW1lbnQ6KE5TU3RyaW5nICopYQogICAgIG9ic2VydmVy
LmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKHJlbW92ZWQsIGluc2VydGVkKTsKIH0KIAorLSAoTlNT
dHJpbmcgKillbnN1cmVBdHRhY2htZW50Rm9ySW1hZ2VFbGVtZW50Cit7CisgICAgX19ibG9jayBi
b29sIGRvbmVXYWl0aW5nRm9yQXR0YWNobWVudEluc2VydGlvbiA9IGZhbHNlOworICAgIFtzZWxm
IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJpbnNlcnRlZCIgYWN0aW9uOl57CisgICAg
ICAgIGRvbmVXYWl0aW5nRm9yQXR0YWNobWVudEluc2VydGlvbiA9IHRydWU7CisgICAgfV07CisK
KyAgICBjb25zdCBjaGFyICpzY3JpcHRGb3JFbnN1cmluZ0F0dGFjaG1lbnRJZGVudGlmaWVyID0g
XAorICAgICAgICAiY29uc3QgaWRlbnRpZmllciA9IEhUTUxBdHRhY2htZW50RWxlbWVudC5nZXRB
dHRhY2htZW50SWRlbnRpZmllcihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbWcnKSk7IgorICAg
ICAgICAic2V0VGltZW91dCgoKSA9PiB3ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVy
LnBvc3RNZXNzYWdlKCdpbnNlcnRlZCcpLCAwKTsiCisgICAgICAgICJpZGVudGlmaWVyIjsKKwor
ICAgIFJldGFpblB0ciBhdHRhY2htZW50SWRlbnRpZmllciA9IFtzZWxmIHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QChzY3JpcHRGb3JFbnN1cmluZ0F0dGFjaG1lbnRJZGVudGlmaWVyKV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lV2FpdGluZ0ZvckF0dGFjaG1lbnRJ
bnNlcnRpb24pOworCisgICAgcmV0dXJuIGF0dGFjaG1lbnRJZGVudGlmaWVyLmF1dG9yZWxlYXNl
KCk7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIE5TRGF0YSAoQXR0YWNobWVudFRlc3Rp
bmcpCkBAIC0xNDA3LDIyICsxNDI1LDExIEBAIFRFU1QoV0tBdHRhY2htZW50VGVzdHMsIEFkZEF0
dGFjaG1lbnRUb0Nvbm5lY3RlZEltYWdlRWxlbWVudCkKICAgICBhdXRvIHdlYlZpZXcgPSB3ZWJW
aWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7CiAgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlF
eGVjdXRlRWRpdENvbW1hbmQ6QCJJbnNlcnRIVE1MIiBhcmd1bWVudDpAIjxpbWc+PC9pbWc+Il07
CiAKLSAgICBfX2Jsb2NrIGJvb2wgZG9uZVdhaXRpbmdGb3JBdHRhY2htZW50SW5zZXJ0aW9uID0g
ZmFsc2U7Ci0gICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAImluc2Vy
dGVkIiBhY3Rpb246XnsKLSAgICAgICAgZG9uZVdhaXRpbmdGb3JBdHRhY2htZW50SW5zZXJ0aW9u
ID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIGNvbnN0IGNoYXIgKnNjcmlwdEZvckVuc3VyaW5nQXR0
YWNobWVudElkZW50aWZpZXIgPSBcCi0gICAgICAgICJjb25zdCBpZGVudGlmaWVyID0gSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmdldEF0dGFjaG1lbnRJZGVudGlmaWVyKGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ2ltZycpKTsiCi0gICAgICAgICJzZXRUaW1lb3V0KCgpID0+IHdlYmtpdC5tZXNzYWdl
SGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ2luc2VydGVkJyksIDApOyIKLSAgICAg
ICAgImlkZW50aWZpZXIiOwotCiAgICAgT2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUg
b2JzZXJ2ZXIod2ViVmlldy5nZXQoKSk7Ci0gICAgTlNTdHJpbmcgKmF0dGFjaG1lbnRJZGVudGlm
aWVyID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAKHNjcmlwdEZvckVu
c3VyaW5nQXR0YWNobWVudElkZW50aWZpZXIpXTsKKyAgICBOU1N0cmluZyAqYXR0YWNobWVudElk
ZW50aWZpZXIgPSBbd2ViVmlldyBlbnN1cmVBdHRhY2htZW50Rm9ySW1hZ2VFbGVtZW50XTsKICAg
ICBhdXRvIGF0dGFjaG1lbnQgPSByZXRhaW5QdHIoW3dlYlZpZXcgX2F0dGFjaG1lbnRGb3JJZGVu
dGlmaWVyOmF0dGFjaG1lbnRJZGVudGlmaWVyXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKGF0dGFj
aG1lbnRJZGVudGlmaWVyLCBbYXR0YWNobWVudCB1bmlxdWVJZGVudGlmaWVyXSk7CiAgICAgRVhQ
RUNUX1dLX1NUUkVRKGF0dGFjaG1lbnRJZGVudGlmaWVyLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW1nJykuYXR0YWNobWVu
dElkZW50aWZpZXIiXSk7Ci0gICAgVXRpbDo6cnVuKCZkb25lV2FpdGluZ0ZvckF0dGFjaG1lbnRJ
bnNlcnRpb24pOwogICAgIG9ic2VydmVyLmV4cGVjdEF0dGFjaG1lbnRVcGRhdGVzKEBbIF0sIEBb
IGF0dGFjaG1lbnQuZ2V0KCkgXSk7CiAKICAgICBhdXRvIGZpcnN0SW1hZ2UgPSBhZG9wdE5TKFtb
TlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6dGVzdEltYWdlRmlsZVVSTCgpIG9wdGlv
bnM6MCBlcnJvcjpuaWxdKTsKQEAgLTE1MzMsNiArMTU0MCwzNyBAQCBURVNUKFdLQXR0YWNobWVu
dFRlc3RzLCBDb3B5QW5kUGFzdGVCZXR3ZWVuV2ViVmlld3MpCiAgICAgRVhQRUNUX1dLX1NUUkVR
KCJhcHBsaWNhdGlvbi96aXAiLCBwYXN0ZWRBcmNoaXZlSW5mby5jb250ZW50VHlwZSk7CiB9CiAK
K1RFU1QoV0tBdHRhY2htZW50VGVzdHMsIENvcHlBbmRQYXN0ZUltYWdlQmV0d2VlbldlYlZpZXdz
KQoreworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFdpdGhVUkw6dGVzdEltYWdlRmlsZVVSTCgpIG9wdGlvbnM6MCBlcnJvcjpuaWxdKTsKKyAgICBb
aW1hZ2Ugc2V0UHJlZmVycmVkRmlsZW5hbWU6QCJpY29uLnBuZyJdOworICAgIFJldGFpblB0ciBv
cmlnaW5hbERhdGEgPSBbaW1hZ2UgcmVndWxhckZpbGVDb250ZW50c107CisKKyAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKKyAgICAgICAgYXV0byBzb3VyY2VWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdB
dHRhY2htZW50cygpOworICAgICAgICBbc291cmNlVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVF
ZGl0Q29tbWFuZDpAIkluc2VydEhUTUwiIGFyZ3VtZW50OkAiPGltZz48L2ltZz4iXTsKKworICAg
ICAgICBhdXRvIGF0dGFjaG1lbnQgPSBbc291cmNlVmlldyBfYXR0YWNobWVudEZvcklkZW50aWZp
ZXI6W3NvdXJjZVZpZXcgZW5zdXJlQXR0YWNobWVudEZvckltYWdlRWxlbWVudF1dOworICAgICAg
ICBbYXR0YWNobWVudCBzeW5jaHJvbm91c2x5U2V0RmlsZVdyYXBwZXI6aW1hZ2UuZ2V0KCkgbmV3
Q29udGVudFR5cGU6QCJpbWFnZS9wbmciIGVycm9yOm5pbF07CisgICAgICAgIFtzb3VyY2VWaWV3
IHdhaXRGb3JJbWFnZUVsZW1lbnRTaXplVG9CZWNvbWU6Q0dTaXplTWFrZSgyMTUsIDE3NCldOwor
CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiaWNvbi5wbmciLCBbc291cmNlVmlldyB2YWx1ZU9m
QXR0cmlidXRlOkAiYWx0IiBmb3JRdWVyeVNlbGVjdG9yOkAiaW1nIl0pOworICAgICAgICBbc291
cmNlVmlldyBzZWxlY3RBbGw6bmlsXTsKKyAgICAgICAgW3NvdXJjZVZpZXcgX3N5bmNocm9ub3Vz
bHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJDb3B5IiBhcmd1bWVudDpuaWxdOworICAgICAgICBbc291
cmNlVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgfQorCisgICAgYXV0
byBkZXN0aW5hdGlvblZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7CisgICAg
T2JzZXJ2ZUF0dGFjaG1lbnRVcGRhdGVzRm9yU2NvcGUgb2JzZXJ2ZXIoZGVzdGluYXRpb25WaWV3
LmdldCgpKTsKKyAgICBbZGVzdGluYXRpb25WaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRD
b21tYW5kOkAiUGFzdGUiIGFyZ3VtZW50Om5pbF07CisgICAgRVhQRUNUX0VRKDFVLCBvYnNlcnZl
ci5vYnNlcnZlcigpLmluc2VydGVkLmNvdW50KTsKKworICAgIGF1dG8gcGFzdGVkQXR0YWNobWVu
dEluZm8gPSBbb2JzZXJ2ZXIub2JzZXJ2ZXIoKS5pbnNlcnRlZC5maXJzdE9iamVjdCBpbmZvXTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoImltYWdlL3BuZyIsIHBhc3RlZEF0dGFjaG1lbnRJbmZvLmNv
bnRlbnRUeXBlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImljb24ucG5nIiwgcGFzdGVkQXR0YWNo
bWVudEluZm8ubmFtZSk7CisgICAgRVhQRUNUX1RSVUUoW29yaWdpbmFsRGF0YSBpc0VxdWFsVG9E
YXRhOnBhc3RlZEF0dGFjaG1lbnRJbmZvLmRhdGFdKTsKK30KKwogVEVTVChXS0F0dGFjaG1lbnRU
ZXN0cywgQXR0YWNobWVudElkZW50aWZpZXJPZkNsb25lZEF0dGFjaG1lbnQpCiB7CiAgICAgYXV0
byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448155</attachid>
            <date>2022-01-01 11:13:26 -0800</date>
            <delta_ts>2022-01-01 12:07:31 -0800</delta_ts>
            <desc>Return pointer instead of RefPtr</desc>
            <filename>bug-234747-20220101111324.patch</filename>
            <type>text/plain</type>
            <size>2451</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc3ZTU3M2VlMjI0NTA1
NGJhMTNjMzJiODEyOGNjMTMwZGU5YjdlYy4uNzA4YTRkZjBlYWI2Y2ZiZWFiZTc0MzE2MGFjODBm
Y2U4ODViNTg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIyLTAxLTAxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEZvbGxvd3VwIHRv
IHIyODc0OTQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDc0NworICAgICAgICByZGFyOi8vODU4OTk4NzkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIGEgaGVscGVyIG1ldGhvZCBvbiBIVE1MQXR0
YWNobWVudEVsZW1lbnQgcmV0dXJuIGEgcmF3IHBvaW50ZXIgaW5zdGVhZCBvZiBhIFJlZlB0ci4g
QWxsIGNhbGwgc2l0ZXMgdGhhdAorICAgICAgICBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoaXMgbWV0
aG9kIGluIGEgbG9jYWwgdmFyaWFibGUgYWxyZWFkeSB1c2UgUmVmUHRyLgorCisgICAgICAgICog
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0
dGFjaG1lbnRFbGVtZW50OjplbmNsb3NpbmdJbWFnZUVsZW1lbnQgY29uc3QpOgorICAgICAgICAq
IGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisKIDIwMjItMDEtMDEgIEplZmYgTWlsbGVy
ICA8amVmZm1AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSB1c2VyLXZpc2libGUgY29weXJp
Z2h0IHN0cmluZ3MgdG8gaW5jbHVkZSAyMDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggN2Q5Y2UzOThiZTJmMWFjNDIzNzNmN2JiNDcwYTRk
MGEyYTdiMzFjYS4uN2ZiOTAyYzRhYjQ0OWI1N2M3NmEzMDBlMzVkMmI0ZDllMTZhMmZjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMTUy
LDEyICsxNTIsMTIgQEAgY29uc3QgU3RyaW5nJiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmVuc3Vy
ZVVuaXF1ZUlkZW50aWZpZXIoKQogICAgIHJldHVybiBtX3VuaXF1ZUlkZW50aWZpZXI7CiB9CiAK
LVJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmVuY2xvc2lu
Z0ltYWdlRWxlbWVudCgpIGNvbnN0CitIVE1MSW1hZ2VFbGVtZW50KiBIVE1MQXR0YWNobWVudEVs
ZW1lbnQ6OmVuY2xvc2luZ0ltYWdlRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8gaG9z
dEVsZW1lbnQgPSBzaGFkb3dIb3N0KCk7IGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGhvc3RFbGVtZW50
KSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGhvc3RFbGVtZW50
KTsKIAotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgSFRN
TEF0dGFjaG1lbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dHRhY2htZW50RWxlbWVudC5oCmluZGV4IGZkM2QxYTM4MWYzN2ViNTU5YWIzN2ZlOGMwYTE0MGFk
N2Q5YzgxMGMuLjJiZGM1ZTdlZDZmMTk3NTMxYzEwYWQ2YWY0MTk5Yjc4ZGI5Mjg2N2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtNjQsNyArNjQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBD
b250YWluZXJOb2RlJikgZmluYWw7CiAKICAgICBjb25zdCBTdHJpbmcmIGVuc3VyZVVuaXF1ZUlk
ZW50aWZpZXIoKTsKLSAgICBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gZW5jbG9zaW5nSW1hZ2VF
bGVtZW50KCkgY29uc3Q7CisgICAgSFRNTEltYWdlRWxlbWVudCogZW5jbG9zaW5nSW1hZ2VFbGVt
ZW50KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYXR0YWNobWVudFRpdGxl
KCkgY29uc3Q7CiAgICAgU3RyaW5nIGF0dGFjaG1lbnRUaXRsZUZvckRpc3BsYXkoKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448158</attachid>
            <date>2022-01-01 12:07:21 -0800</date>
            <delta_ts>2022-01-02 11:06:20 -0800</delta_ts>
            <desc>Use auto in a few more places</desc>
            <filename>bug-234747-20220101120720.patch</filename>
            <type>text/plain</type>
            <size>2340</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc3ZTU3M2VlMjI0NTA1
NGJhMTNjMzJiODEyOGNjMTMwZGU5YjdlYy4uOWYzMGY2ZDE4YjJiN2YyODQ5OWIwZTQyNWYxNDMx
NThlMDc0NjY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIyLTAxLTAxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEZvbGxvd3VwIHRv
IHIyODc0OTQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDc0NworICAgICAgICByZGFyOi8vODU4OTk4NzkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYGF1dG9gIGluc3RyZWFkIG9mIGBSZWZQdHJg
IHdoZW4gc3RvcmluZyB0aGUgcmVzdWx0IG9mIGBlbmNsb3NpbmdJbWFnZUVsZW1lbnQoKWAgaW4g
YSBmZXcgcGxhY2VzOyB0aGlzCisgICAgICAgIG1ldGhvZCBhbHJlYWR5IHJldHVybnMgYSBgUmVm
UHRyYC4KKworICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlQXR0cmlidXRlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0lt
YWdlV2l0aERhdGEpOgorCiAyMDIyLTAxLTAxICBKZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNv
bT4KIAogICAgICAgICBVcGRhdGUgdXNlci12aXNpYmxlIGNvcHlyaWdodCBzdHJpbmdzIHRvIGlu
Y2x1ZGUgMjAyMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQu
Y3BwCmluZGV4IDdkOWNlMzk4YmUyZjFhYzQyMzczZjdiYjQ3MGE0ZDBhMmE3YjMxY2EuLmU4YmM1
YzNjYWM0ZTVjNjc3NzI3OTJlNjFmMDkzNTE5NjUzYWI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTIwNywxMSArMjA3LDExIEBAIFN0
cmluZyBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmF0dGFjaG1lbnRQYXRoKCkgY29uc3QKIHZvaWQg
SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVBdHRyaWJ1dGVzKHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgbmV3RmlsZW5hbWUpCiB7CiAgICAgaWYgKCFuZXdGaWxlbmFtZS5pc051bGwoKSkg
ewotICAgICAgICBpZiAoUmVmUHRyIGVuY2xvc2luZ0ltYWdlID0gZW5jbG9zaW5nSW1hZ2VFbGVt
ZW50KCkpCisgICAgICAgIGlmIChhdXRvIGVuY2xvc2luZ0ltYWdlID0gZW5jbG9zaW5nSW1hZ2VF
bGVtZW50KCkpCiAgICAgICAgICAgICBlbmNsb3NpbmdJbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmFsdEF0dHIsIG5ld0ZpbGVuYW1lKTsKICAgICAg
ICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnRpdGxlQXR0
ciwgbmV3RmlsZW5hbWUpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChSZWZQdHIgZW5jbG9z
aW5nSW1hZ2UgPSBlbmNsb3NpbmdJbWFnZUVsZW1lbnQoKSkKKyAgICAgICAgaWYgKGF1dG8gZW5j
bG9zaW5nSW1hZ2UgPSBlbmNsb3NpbmdJbWFnZUVsZW1lbnQoKSkKICAgICAgICAgICAgIGVuY2xv
c2luZ0ltYWdlLT5yZW1vdmVBdHRyaWJ1dGUoSFRNTE5hbWVzOjphbHRBdHRyKTsKICAgICAgICAg
cmVtb3ZlQXR0cmlidXRlKEhUTUxOYW1lczo6dGl0bGVBdHRyKTsKICAgICB9CkBAIC0yNDAsNyAr
MjQwLDcgQEAgdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdl
V2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHkKICAgICBpZiAoYnVmZmVyLT5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0ciBlbmNsb3NpbmdJbWFnZSA9IGVuY2xv
c2luZ0ltYWdlRWxlbWVudCgpOworICAgIGF1dG8gZW5jbG9zaW5nSW1hZ2UgPSBlbmNsb3NpbmdJ
bWFnZUVsZW1lbnQoKTsKICAgICBpZiAoIWVuY2xvc2luZ0ltYWdlKQogICAgICAgICByZXR1cm47
CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>