<?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>234683</bug_id>
          
          <creation_ts>2021-12-25 17:43:45 -0800</creation_ts>
          <short_desc>Enhance Vector::map to allow specifying what kind of Vector to return (e.g. inline capacity, overflow, etc.)</short_desc>
          <delta_ts>2021-12-28 10:03:19 -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>Web Template Framework</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1826835</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-25 17:43:45 -0800</bug_when>
    <thetext>Enhance Vector::map to allow specifying what kind of Vector to return (e.g. inline capacity, overflow, etc.).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826837</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-25 18:46:17 -0800</bug_when>
    <thetext>This is a bit tricky to tack onto the existing map due to the order of template arguments:

    template&lt;typename MapFunction, typename R = typename std::invoke_result&lt;MapFunction, const T&amp;&gt;::type&gt; Vector&lt;R&gt; map(MapFunction) const;

The naive approach, to make R an overridable parameter like the following:

    template&lt;typename MapFunction, typename R = Vector&lt;typename std::invoke_result&lt;MapFunction, const T&amp;&gt;::type&gt;&gt; R map(MapFunction) const;

has the problem that now, to specify the Vector type, you also need to specify the MapFunction type, which can be hard / impossible when used with lambdas.


My current idea is to use overloading + SFINAE to have another version that looks like:

    template&lt;typename R, typename MapFunction, typename SOME_SFINAE_TEST_HERE&gt; R map(MapFunction) const;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826841</commentid>
    <comment_count>2</comment_count>
      <attachid>447965</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-25 19:51:11 -0800</bug_when>
    <thetext>Created attachment 447965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826960</commentid>
    <comment_count>3</comment_count>
      <attachid>447965</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-27 10:11:17 -0800</bug_when>
    <thetext>Comment on attachment 447965
Patch

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

Seems like we should include at least one use of the new template, maybe in the tests directory?

&gt; Source/WTF/ChangeLog:15
&gt; +        (WTF::Malloc&gt;::map const const):
&gt; +        (WTF::Malloc&gt;::map const const const):
&gt; +        (WTF::Malloc&gt;::map const): Deleted.

Garbled function names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826966</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-27 11:49:58 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 447965 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=447965&amp;action=review
&gt; 
&gt; Seems like we should include at least one use of the new template, maybe in
&gt; the tests directory?

Yeah, I also meant to actually use this as well, but failed to upload the whole patch :(.

&gt; 
&gt; &gt; Source/WTF/ChangeLog:15
&gt; &gt; +        (WTF::Malloc&gt;::map const const):
&gt; &gt; +        (WTF::Malloc&gt;::map const const const):
&gt; &gt; +        (WTF::Malloc&gt;::map const): Deleted.
&gt; 
&gt; Garbled function names.

So close little script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827089</commentid>
    <comment_count>5</comment_count>
      <attachid>448046</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-28 09:02:34 -0800</bug_when>
    <thetext>Created attachment 448046
Patch with tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827090</commentid>
    <comment_count>6</comment_count>
      <attachid>448047</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-28 09:03:41 -0800</bug_when>
    <thetext>Created attachment 448047
Patch with tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827097</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-28 10:02:51 -0800</bug_when>
    <thetext>Committed r287472 (245607@main): &lt;https://commits.webkit.org/245607@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448047.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827098</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-28 10:03:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/86959641&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447965</attachid>
            <date>2021-12-25 19:51:11 -0800</date>
            <delta_ts>2021-12-28 09:03:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234683-20211225195110.patch</filename>
            <type>text/plain</type>
            <size>3402</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODc0NDApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDIxLTEyLTI1ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBFbmhhbmNlIFZlY3Rvcjo6bWFwIHRvIGFsbG93IHNwZWNp
Znlpbmcgd2hhdCBraW5kIG9mIFZlY3RvciB0byByZXR1cm4gKGUuZy4gaW5saW5lIGNhcGFjaXR5
LCBvdmVyZmxvdywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDY4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBhbiBvdmVybG9hZCBvZiBWZWN0b3I6Om1hcCgpIHRoYXQgYWxsb3dzIHNw
ZWNpZnkgdGhlIHR5cGUgb2YgdGhlIHJlc3VsdCBWZWN0b3IuIFRvIG1ha2UgdGhpcworICAgICAg
ICB3b3JrIHdpdGhvdXQgZ2l2aW5nIHVwIHRoZSBhcmd1bWVudCBkZWR1Y3Rpb24gaW4gdGhlIGNv
bW1vbiBjYXNlLCBTRklOQUUgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2gKKyAgICAgICAgb3Zl
cmxvYWQgdG8gdXNlLgorCisgICAgICAgICogd3RmL1ZlY3Rvci5oOgorICAgICAgICAoV1RGOjpN
YWxsb2M+OjptYXAgY29uc3QgY29uc3QpOgorICAgICAgICAoV1RGOjpNYWxsb2M+OjptYXAgY29u
c3QgY29uc3QgY29uc3QpOgorICAgICAgICAoV1RGOjpNYWxsb2M+OjptYXAgY29uc3QpOiBEZWxl
dGVkLgorCiAyMDIxLTEyLTIzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAg
ICAgICBHcmFkaWVudCBjb2xvciBpbnRlcnBvbGF0aW9uIGluY29ycmVjdCBmb3IgY29sb3JzIHdp
dGggYWxwaGEgKG5lZWQgdG8gaW50ZXJwb2xhdGUgcHJlbXVsdGlwbGllZCBjb2xvcnMpCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9W
ZWN0b3IuaAkocmV2aXNpb24gMjg3NDMxKQorKysgU291cmNlL1dURi93dGYvVmVjdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg0Myw4ICs4NDMsMTIgQEAgY2xhc3MgVmVjdG9yIDogcHJpdmF0ZSBW
ZWN0b3JCdWZmZXI8VCwgaW5saW5lQ2FwYWNpdHksCiAKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVu
Y3koKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1hcEZ1bmN0aW9uLCB0eXBlbmFtZSBSID0g
dHlwZW5hbWUgc3RkOjppbnZva2VfcmVzdWx0PE1hcEZ1bmN0aW9uLCBjb25zdCBUJj46OnR5cGU+
IFZlY3RvcjxSPiBtYXAoTWFwRnVuY3Rpb24pIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFJlc3VsdFZlY3RvciwgdHlwZW5hbWUgTWFwRnVuY3Rpb24+CisgICAgYXV0byBtYXAoTWFwRnVu
Y3Rpb24mJikgY29uc3QgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2ludm9jYWJsZV92PE1h
cEZ1bmN0aW9uLCBjb25zdCBUJj4sIFJlc3VsdFZlY3Rvcj47CiAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBNYXBGdW5jdGlvbj4KKyAgICBhdXRvIG1hcChNYXBGdW5jdGlvbiYmKSBjb25zdCAtPiBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfaW52b2NhYmxlX3Y8TWFwRnVuY3Rpb24sIGNvbnN0IFQm
PiwgVmVjdG9yPHR5cGVuYW1lIHN0ZDo6aW52b2tlX3Jlc3VsdF90PE1hcEZ1bmN0aW9uLCBjb25z
dCBUJj4+PjsKKwogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3NpemUgPT0gc3RkOjpudW1lcmljX2xpbWl0czxkZWNsdHlwZShtX3NpemUpPjo6bWF4
KCk7IH0KIAogcHJpdmF0ZToKQEAgLTE1NzUsMTQgKzE1NzksMjEgQEAgaW5saW5lIHZvaWQgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVy
LCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KLXRlbXBsYXRlPHR5cGVuYW1l
IE1hcEZ1bmN0aW9uLCB0eXBlbmFtZSBSPgotaW5saW5lIFZlY3RvcjxSPiBWZWN0b3I8VCwgaW5s
aW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46Om1hcChN
YXBGdW5jdGlvbiBtYXBGdW5jdGlvbikgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdFZl
Y3RvciwgdHlwZW5hbWUgTWFwRnVuY3Rpb24+CitpbmxpbmUgYXV0byBWZWN0b3I8VCwgaW5saW5l
Q2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46Om1hcChNYXBG
dW5jdGlvbiYmIG1hcEZ1bmN0aW9uKSBjb25zdCAtPiBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
aW52b2NhYmxlX3Y8TWFwRnVuY3Rpb24sIGNvbnN0IFQmPiwgUmVzdWx0VmVjdG9yPgogewotICAg
IFZlY3RvcjxSPiByZXN1bHQ7CisgICAgUmVzdWx0VmVjdG9yIHJlc3VsdDsKICAgICByZXN1bHQu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZSgpOyArK2kpCiAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQobWFwRnVuY3Rp
b24oYXQoaSkpKTsKICAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90
IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBNYXBGdW5j
dGlvbj4KK2lubGluZSBhdXRvIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5k
bGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6bWFwKE1hcEZ1bmN0aW9uJiYgbWFwRnVuY3Rpb24p
IGNvbnN0IC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19pbnZvY2FibGVfdjxNYXBGdW5jdGlv
biwgY29uc3QgVCY+LCBWZWN0b3I8dHlwZW5hbWUgc3RkOjppbnZva2VfcmVzdWx0X3Q8TWFwRnVu
Y3Rpb24sIGNvbnN0IFQmPj4+Cit7CisgICAgcmV0dXJuIG1hcDxWZWN0b3I8dHlwZW5hbWUgc3Rk
OjppbnZva2VfcmVzdWx0X3Q8TWFwRnVuY3Rpb24sIGNvbnN0IFQmPj4sIE1hcEZ1bmN0aW9uPihz
dGQ6OmZvcndhcmQ8TWFwRnVuY3Rpb24+KG1hcEZ1bmN0aW9uKSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVy
LCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4K
</data>
<flag name="review"
          id="473746"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448046</attachid>
            <date>2021-12-28 09:02:34 -0800</date>
            <delta_ts>2021-12-28 09:02:53 -0800</delta_ts>
            <desc>Patch with tests</desc>
            <filename>vecFinal.diff</filename>
            <type>text/plain</type>
            <size>7017</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODc0NDApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIxLTEyLTI3ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBFbmhhbmNlIFZlY3Rvcjo6bWFwIHRvIGFsbG93IHNwZWNp
Znlpbmcgd2hhdCBraW5kIG9mIFZlY3RvciB0byByZXR1cm4gKGUuZy4gaW5saW5lIGNhcGFjaXR5
LCBvdmVyZmxvdywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDY4MworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgICogd3RmL1ZlY3Rvci5oOgorICAgICAgICAoV1RGOjpWZWN0b3I6Om1hcCBjb25zdCk6
CisgICAgICAgIEFkZCBhbiBvdmVybG9hZCBvZiBWZWN0b3I6Om1hcCgpIHRoYXQgYWxsb3dzIHNw
ZWNpZnlpbmcgdGhlIHR5cGUgb2YgdGhlIHJlc3VsdCBWZWN0b3IuIFRvIG1ha2UgdGhpcworICAg
ICAgICB3b3JrIHdpdGhvdXQgZ2l2aW5nIHVwIHRoZSBhcmd1bWVudCBkZWR1Y3Rpb24gaW4gdGhl
IGNvbW1vbiBjYXNlLCBTRklOQUUgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2gKKyAgICAgICAg
b3ZlcmxvYWQgdG8gdXNlLgorCiAyMDIxLTEyLTIzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KIAogICAgICAgICBHcmFkaWVudCBjb2xvciBpbnRlcnBvbGF0aW9uIGluY29ycmVjdCBm
b3IgY29sb3JzIHdpdGggYWxwaGEgKG5lZWQgdG8gaW50ZXJwb2xhdGUgcHJlbXVsdGlwbGllZCBj
b2xvcnMpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9WZWN0b3IuaAkocmV2aXNpb24gMjg3NDMxKQorKysgU291cmNlL1dURi93dGYv
VmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0Myw4ICs4NDMsMTIgQEAgY2xhc3MgVmVjdG9y
IDogcHJpdmF0ZSBWZWN0b3JCdWZmZXI8VCwgaW5saW5lQ2FwYWNpdHksCiAKICAgICB2b2lkIGNo
ZWNrQ29uc2lzdGVuY3koKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1hcEZ1bmN0aW9uLCB0
eXBlbmFtZSBSID0gdHlwZW5hbWUgc3RkOjppbnZva2VfcmVzdWx0PE1hcEZ1bmN0aW9uLCBjb25z
dCBUJj46OnR5cGU+IFZlY3RvcjxSPiBtYXAoTWFwRnVuY3Rpb24pIGNvbnN0OworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFJlc3VsdFZlY3RvciwgdHlwZW5hbWUgTWFwRnVuY3Rpb24+CisgICAgYXV0
byBtYXAoTWFwRnVuY3Rpb24mJikgY29uc3QgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2lu
dm9jYWJsZV92PE1hcEZ1bmN0aW9uLCBjb25zdCBUJj4sIFJlc3VsdFZlY3Rvcj47CiAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBNYXBGdW5jdGlvbj4KKyAgICBhdXRvIG1hcChNYXBGdW5jdGlvbiYm
KSBjb25zdCAtPiBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfaW52b2NhYmxlX3Y8TWFwRnVuY3Rp
b24sIGNvbnN0IFQmPiwgVmVjdG9yPHR5cGVuYW1lIHN0ZDo6aW52b2tlX3Jlc3VsdF90PE1hcEZ1
bmN0aW9uLCBjb25zdCBUJj4+PjsKKwogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3NpemUgPT0gc3RkOjpudW1lcmljX2xpbWl0czxkZWNsdHlwZSht
X3NpemUpPjo6bWF4KCk7IH0KIAogcHJpdmF0ZToKQEAgLTE1NzUsMTQgKzE1NzksMjEgQEAgaW5s
aW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KLXRlbXBs
YXRlPHR5cGVuYW1lIE1hcEZ1bmN0aW9uLCB0eXBlbmFtZSBSPgotaW5saW5lIFZlY3RvcjxSPiBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1h
bGxvYz46Om1hcChNYXBGdW5jdGlvbiBtYXBGdW5jdGlvbikgY29uc3QKK3RlbXBsYXRlPHR5cGVu
YW1lIFJlc3VsdFZlY3RvciwgdHlwZW5hbWUgTWFwRnVuY3Rpb24+CitpbmxpbmUgYXV0byBWZWN0
b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxv
Yz46Om1hcChNYXBGdW5jdGlvbiYmIG1hcEZ1bmN0aW9uKSBjb25zdCAtPiBzdGQ6OmVuYWJsZV9p
Zl90PHN0ZDo6aXNfaW52b2NhYmxlX3Y8TWFwRnVuY3Rpb24sIGNvbnN0IFQmPiwgUmVzdWx0VmVj
dG9yPgogewotICAgIFZlY3RvcjxSPiByZXN1bHQ7CisgICAgUmVzdWx0VmVjdG9yIHJlc3VsdDsK
ICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKCkpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpCiAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBl
bmQobWFwRnVuY3Rpb24oYXQoaSkpKTsKICAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFu
ZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBNYXBGdW5jdGlvbj4KK2lubGluZSBhdXRvIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwg
T3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6bWFwKE1hcEZ1bmN0aW9uJiYg
bWFwRnVuY3Rpb24pIGNvbnN0IC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19pbnZvY2FibGVf
djxNYXBGdW5jdGlvbiwgY29uc3QgVCY+LCBWZWN0b3I8dHlwZW5hbWUgc3RkOjppbnZva2VfcmVz
dWx0X3Q8TWFwRnVuY3Rpb24sIGNvbnN0IFQmPj4+Cit7CisgICAgcmV0dXJuIG1hcDxWZWN0b3I8
dHlwZW5hbWUgc3RkOjppbnZva2VfcmVzdWx0X3Q8TWFwRnVuY3Rpb24sIGNvbnN0IFQmPj4sIE1h
cEZ1bmN0aW9uPihzdGQ6OmZvcndhcmQ8TWFwRnVuY3Rpb24+KG1hcEZ1bmN0aW9uKSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI4NzQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIxLTEyLTI4ICBTYW0gV2VpbmlnICA8
d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFbmhhbmNlIFZlY3Rvcjo6bWFwIHRvIGFsbG93
IHNwZWNpZnlpbmcgd2hhdCBraW5kIG9mIFZlY3RvciB0byByZXR1cm4gKGUuZy4gaW5saW5lIGNh
cGFjaXR5LCBvdmVyZmxvdywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDY4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRDb2xvclN0b3BzLmg6
CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudENvbG9yU3RvcHM6Om1hcENvbG9ycyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudENvbG9yU3RvcHM6OkdyYWRpZW50Q29sb3JTdG9w
cyk6CisgICAgICAgIFV0aWxpemUgbmV3IG92ZXJsb2FkZWQgVmVjdG9yOjptYXAgdG8gc3RyZWFt
bGluZSBHcmFkaWVudENvbG9yU3RvcHM6Om1hcENvbG9ycygpLiBBbHNvCisgICAgICAgIG1hZGUg
aXQgcHJlc2VydmUgdGhlIGlzU29ydGVkIGJpdCwgd2hpY2ggaXMgdmFsaWQgYmVjYXVzZSB0aGUg
b2Zmc2V0cyBkb24ndCBjaGFuZ2UuCisKIDIwMjEtMTItMjggIEFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gSGFuZ2luZyBjb250ZW50IG1heSBub3Qg
YmUgd2hpdGVzcGFjZSB0eXBlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFkaWVudENvbG9yU3RvcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFkaWVudENvbG9yU3RvcHMuaAkocmV2aXNpb24gMjg3NDMxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRDb2xvclN0b3BzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTkwLDExICs5MCwxMiBAQCBjbGFzcyBHcmFkaWVudENvbG9yU3RvcHMg
eyAocHVibGljKQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWFwRnVuY3Rpb24+IEdyYWRpZW50
Q29sb3JTdG9wcyBtYXBDb2xvcnMoTWFwRnVuY3Rpb24mJiBtYXBGdW5jdGlvbikgY29uc3QKICAg
ICB7Ci0gICAgICAgIEdyYWRpZW50Q29sb3JTdG9wcyByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5t
X3N0b3BzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRv
JiBzdG9wIDogbV9zdG9wcykKLSAgICAgICAgICAgIHJlc3VsdC5tX3N0b3BzLnVuY2hlY2tlZEFw
cGVuZCh7IHN0b3Aub2Zmc2V0LCBtYXBGdW5jdGlvbihzdG9wLmNvbG9yKSB9KTsKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIG1fc3RvcHMubWFw
PFN0b3BWZWN0b3I+KFsmXSAoY29uc3QgR3JhZGllbnRDb2xvclN0b3AmIHN0b3ApIC0+IEdyYWRp
ZW50Q29sb3JTdG9wIHsKKyAgICAgICAgICAgICAgICByZXR1cm4geyBzdG9wLm9mZnNldCwgbWFw
RnVuY3Rpb24oc3RvcC5jb2xvcikgfTsKKyAgICAgICAgICAgIH0pLAorICAgICAgICAgICAgbV9p
c1NvcnRlZAorICAgICAgICB9OwogICAgIH0KIAogICAgIGNvbnN0IFN0b3BWZWN0b3ImIHN0b3Bz
KCkgY29uc3QgeyByZXR1cm4gbV9zdG9wczsgfQpAQCAtMTAzLDYgKzEwNCwxMiBAQCBjbGFzcyBH
cmFkaWVudENvbG9yU3RvcHMgeyAocHVibGljKQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdyYWRpZW50Q29sb3JTdG9wcz4gZGVjb2RlKERlY29k
ZXImKTsKIAogcHJpdmF0ZToKKyAgICBHcmFkaWVudENvbG9yU3RvcHMoU3RvcFZlY3RvciBzdG9w
cywgYm9vbCBpc1NvcnRlZCkKKyAgICAgICAgOiBtX3N0b3BzIHsgV1RGTW92ZShzdG9wcykgfQor
ICAgICAgICAsIG1faXNTb3J0ZWQgeyBpc1NvcnRlZCB9CisgICAgeworICAgIH0KKwogI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgYm9vbCB2YWxpZGF0ZUlzU29ydGVkKCkgY29uc3QKICAgICB7Cklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyODc0NzEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAyMS0xMi0yOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgRW5oYW5jZSBWZWN0b3I6Om1hcCB0byBhbGxvdyBzcGVjaWZ5aW5nIHdoYXQga2luZCBv
ZiBWZWN0b3IgdG8gcmV0dXJuIChlLmcuIGlubGluZSBjYXBhY2l0eSwgb3ZlcmZsb3csIGV0Yy4p
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ2ODMK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHA6CisgICAgICAgIEFkZCB0ZXN0IGZvciBuZXcgVmVj
dG9yOjptYXAgb3ZlcmxvYWQuCisKIDIwMjEtMTItMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIFN0b3Agc2V0dGluZyBt
YW5hZ2VzLWRlc2NlbmRhbnRzIG9uIHdlYiBwcm9jZXNzIHJvb3Qgb2JqZWN0IHdpdGggQVRTUEkK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcAkocmV2aXNpb24g
Mjg3NDcxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ1OCw1ICsxNDU4LDE3IEBAIFRFU1QoV1RGX1ZlY3RvciwgQ29uc3Ry
dWN0b3JGcm9tUmF3UG9pbnRlckFuZFNpemUpCiAgICAgRVhQRUNUX0VRKHZlY3RvclszXSwgNCk7
CiAgICAgRVhQRUNUX0VRKHZlY3Rvcls0XSwgNSk7CiB9Ci0gICAgCisKK1RFU1QoV1RGX1ZlY3Rv
ciwgTWFwQ3VzdG9tUmV0dXJuVHlwZSkKK3sKKyAgICBWZWN0b3I8aW50PiBpbnB1dCB7IDEsIDIg
fTsKKyAgICBWZWN0b3I8ZmxvYXQsIDI+IG91dHB1dCA9IGlucHV0Lm1hcDxWZWN0b3I8ZmxvYXQs
IDI+PihbXSAoaW50IHZhbHVlKSB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4o
dmFsdWUpOworICAgIH0pOworCisgICAgQVNTRVJUX0VRKG91dHB1dC5zaXplKCksIGlucHV0LnNp
emUoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKG91dHB1dFswXSwgMS4wZik7CisgICAgRVhQRUNU
X0ZMT0FUX0VRKG91dHB1dFsxXSwgMi4wZik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkK
</data>
<flag name="commit-queue"
          id="473846"
          type_id="3"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448047</attachid>
            <date>2021-12-28 09:03:41 -0800</date>
            <delta_ts>2021-12-28 10:02:53 -0800</delta_ts>
            <desc>Patch with tests</desc>
            <filename>vecFinal.diff</filename>
            <type>text/plain</type>
            <size>7014</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODc0NDApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIxLTEyLTI3ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBFbmhhbmNlIFZlY3Rvcjo6bWFwIHRvIGFsbG93IHNwZWNp
Znlpbmcgd2hhdCBraW5kIG9mIFZlY3RvciB0byByZXR1cm4gKGUuZy4gaW5saW5lIGNhcGFjaXR5
LCBvdmVyZmxvdywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDY4MworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgICogd3RmL1ZlY3Rvci5oOgorICAgICAgICAoV1RGOjpWZWN0b3I6Om1hcCBjb25zdCk6
CisgICAgICAgIEFkZCBhbiBvdmVybG9hZCBvZiBWZWN0b3I6Om1hcCgpIHRoYXQgYWxsb3dzIHNw
ZWNpZnlpbmcgdGhlIHR5cGUgb2YgdGhlIHJlc3VsdCBWZWN0b3IuIFRvIG1ha2UgdGhpcworICAg
ICAgICB3b3JrIHdpdGhvdXQgZ2l2aW5nIHVwIHRoZSBhcmd1bWVudCBkZWR1Y3Rpb24gaW4gdGhl
IGNvbW1vbiBjYXNlLCBTRklOQUUgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2gKKyAgICAgICAg
b3ZlcmxvYWQgdG8gdXNlLgorCiAyMDIxLTEyLTIzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KIAogICAgICAgICBHcmFkaWVudCBjb2xvciBpbnRlcnBvbGF0aW9uIGluY29ycmVjdCBm
b3IgY29sb3JzIHdpdGggYWxwaGEgKG5lZWQgdG8gaW50ZXJwb2xhdGUgcHJlbXVsdGlwbGllZCBj
b2xvcnMpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9WZWN0b3IuaAkocmV2aXNpb24gMjg3NDMxKQorKysgU291cmNlL1dURi93dGYv
VmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0Myw4ICs4NDMsMTIgQEAgY2xhc3MgVmVjdG9y
IDogcHJpdmF0ZSBWZWN0b3JCdWZmZXI8VCwgaW5saW5lQ2FwYWNpdHksCiAKICAgICB2b2lkIGNo
ZWNrQ29uc2lzdGVuY3koKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1hcEZ1bmN0aW9uLCB0
eXBlbmFtZSBSID0gdHlwZW5hbWUgc3RkOjppbnZva2VfcmVzdWx0PE1hcEZ1bmN0aW9uLCBjb25z
dCBUJj46OnR5cGU+IFZlY3RvcjxSPiBtYXAoTWFwRnVuY3Rpb24pIGNvbnN0OworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFJlc3VsdFZlY3RvciwgdHlwZW5hbWUgTWFwRnVuY3Rpb24+CisgICAgYXV0
byBtYXAoTWFwRnVuY3Rpb24mJikgY29uc3QgLT4gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2lu
dm9jYWJsZV92PE1hcEZ1bmN0aW9uLCBjb25zdCBUJj4sIFJlc3VsdFZlY3Rvcj47CiAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBNYXBGdW5jdGlvbj4KKyAgICBhdXRvIG1hcChNYXBGdW5jdGlvbiYm
KSBjb25zdCAtPiBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfaW52b2NhYmxlX3Y8TWFwRnVuY3Rp
b24sIGNvbnN0IFQmPiwgVmVjdG9yPHR5cGVuYW1lIHN0ZDo6aW52b2tlX3Jlc3VsdF90PE1hcEZ1
bmN0aW9uLCBjb25zdCBUJj4+PjsKKwogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3NpemUgPT0gc3RkOjpudW1lcmljX2xpbWl0czxkZWNsdHlwZSht
X3NpemUpPjo6bWF4KCk7IH0KIAogcHJpdmF0ZToKQEAgLTE1NzUsMTQgKzE1NzksMjEgQEAgaW5s
aW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KLXRlbXBs
YXRlPHR5cGVuYW1lIE1hcEZ1bmN0aW9uLCB0eXBlbmFtZSBSPgotaW5saW5lIFZlY3RvcjxSPiBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1h
bGxvYz46Om1hcChNYXBGdW5jdGlvbiBtYXBGdW5jdGlvbikgY29uc3QKK3RlbXBsYXRlPHR5cGVu
YW1lIFJlc3VsdFZlY3RvciwgdHlwZW5hbWUgTWFwRnVuY3Rpb24+CitpbmxpbmUgYXV0byBWZWN0
b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxv
Yz46Om1hcChNYXBGdW5jdGlvbiYmIG1hcEZ1bmN0aW9uKSBjb25zdCAtPiBzdGQ6OmVuYWJsZV9p
Zl90PHN0ZDo6aXNfaW52b2NhYmxlX3Y8TWFwRnVuY3Rpb24sIGNvbnN0IFQmPiwgUmVzdWx0VmVj
dG9yPgogewotICAgIFZlY3RvcjxSPiByZXN1bHQ7CisgICAgUmVzdWx0VmVjdG9yIHJlc3VsdDsK
ICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKCkpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpCiAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBl
bmQobWFwRnVuY3Rpb24oYXQoaSkpKTsKICAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFu
ZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBNYXBGdW5jdGlvbj4KK2lubGluZSBhdXRvIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwg
T3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eSwgTWFsbG9jPjo6bWFwKE1hcEZ1bmN0aW9uJiYg
bWFwRnVuY3Rpb24pIGNvbnN0IC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19pbnZvY2FibGVf
djxNYXBGdW5jdGlvbiwgY29uc3QgVCY+LCBWZWN0b3I8dHlwZW5hbWUgc3RkOjppbnZva2VfcmVz
dWx0X3Q8TWFwRnVuY3Rpb24sIGNvbnN0IFQmPj4+Cit7CisgICAgcmV0dXJuIG1hcDxWZWN0b3I8
dHlwZW5hbWUgc3RkOjppbnZva2VfcmVzdWx0X3Q8TWFwRnVuY3Rpb24sIGNvbnN0IFQmPj4sIE1h
cEZ1bmN0aW9uPihzdGQ6OmZvcndhcmQ8TWFwRnVuY3Rpb24+KG1hcEZ1bmN0aW9uKSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI4NzQ3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIxLTEyLTI4ICBTYW0gV2VpbmlnICA8
d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBFbmhhbmNlIFZlY3Rvcjo6bWFwIHRvIGFsbG93
IHNwZWNpZnlpbmcgd2hhdCBraW5kIG9mIFZlY3RvciB0byByZXR1cm4gKGUuZy4gaW5saW5lIGNh
cGFjaXR5LCBvdmVyZmxvdywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDY4MworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRDb2xvclN0b3BzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudENvbG9yU3RvcHM6Om1hcENvbG9ycyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudENvbG9yU3RvcHM6OkdyYWRpZW50Q29sb3JTdG9wcyk6
CisgICAgICAgIFV0aWxpemUgbmV3IG92ZXJsb2FkZWQgVmVjdG9yOjptYXAgdG8gc3RyZWFtbGlu
ZSBHcmFkaWVudENvbG9yU3RvcHM6Om1hcENvbG9ycygpLiBBbHNvCisgICAgICAgIG1hZGUgaXQg
cHJlc2VydmUgdGhlIGlzU29ydGVkIGJpdCwgd2hpY2ggaXMgdmFsaWQgYmVjYXVzZSB0aGUgb2Zm
c2V0cyBkb24ndCBjaGFuZ2UuCisKIDIwMjEtMTItMjggIEFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gSGFuZ2luZyBjb250ZW50IG1heSBub3QgYmUg
d2hpdGVzcGFjZSB0eXBlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFkaWVudENvbG9yU3RvcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudENvbG9yU3RvcHMuaAkocmV2aXNpb24gMjg3NDMxKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRDb2xvclN0b3BzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTkwLDExICs5MCwxMiBAQCBjbGFzcyBHcmFkaWVudENvbG9yU3RvcHMgeyAo
cHVibGljKQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWFwRnVuY3Rpb24+IEdyYWRpZW50Q29s
b3JTdG9wcyBtYXBDb2xvcnMoTWFwRnVuY3Rpb24mJiBtYXBGdW5jdGlvbikgY29uc3QKICAgICB7
Ci0gICAgICAgIEdyYWRpZW50Q29sb3JTdG9wcyByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5tX3N0
b3BzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSgpKTsKLSAgICAgICAgZm9yIChhdXRvJiBz
dG9wIDogbV9zdG9wcykKLSAgICAgICAgICAgIHJlc3VsdC5tX3N0b3BzLnVuY2hlY2tlZEFwcGVu
ZCh7IHN0b3Aub2Zmc2V0LCBtYXBGdW5jdGlvbihzdG9wLmNvbG9yKSB9KTsKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIG1fc3RvcHMubWFwPFN0
b3BWZWN0b3I+KFsmXSAoY29uc3QgR3JhZGllbnRDb2xvclN0b3AmIHN0b3ApIC0+IEdyYWRpZW50
Q29sb3JTdG9wIHsKKyAgICAgICAgICAgICAgICByZXR1cm4geyBzdG9wLm9mZnNldCwgbWFwRnVu
Y3Rpb24oc3RvcC5jb2xvcikgfTsKKyAgICAgICAgICAgIH0pLAorICAgICAgICAgICAgbV9pc1Nv
cnRlZAorICAgICAgICB9OwogICAgIH0KIAogICAgIGNvbnN0IFN0b3BWZWN0b3ImIHN0b3BzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdG9wczsgfQpAQCAtMTAzLDYgKzEwNCwxMiBAQCBjbGFzcyBHcmFk
aWVudENvbG9yU3RvcHMgeyAocHVibGljKQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdyYWRpZW50Q29sb3JTdG9wcz4gZGVjb2RlKERlY29kZXIm
KTsKIAogcHJpdmF0ZToKKyAgICBHcmFkaWVudENvbG9yU3RvcHMoU3RvcFZlY3RvciBzdG9wcywg
Ym9vbCBpc1NvcnRlZCkKKyAgICAgICAgOiBtX3N0b3BzIHsgV1RGTW92ZShzdG9wcykgfQorICAg
ICAgICAsIG1faXNTb3J0ZWQgeyBpc1NvcnRlZCB9CisgICAgeworICAgIH0KKwogI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgYm9vbCB2YWxpZGF0ZUlzU29ydGVkKCkgY29uc3QKICAgICB7CkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyODc0NzEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAyMS0xMi0yOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgRW5oYW5jZSBWZWN0b3I6Om1hcCB0byBhbGxvdyBzcGVjaWZ5aW5nIHdoYXQga2luZCBvZiBW
ZWN0b3IgdG8gcmV0dXJuIChlLmcuIGlubGluZSBjYXBhY2l0eSwgb3ZlcmZsb3csIGV0Yy4pCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ2ODMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHA6CisgICAgICAgIEFkZCB0ZXN0IGZvciBuZXcgVmVjdG9y
OjptYXAgb3ZlcmxvYWQuCisKIDIwMjEtMTItMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIFN0b3Agc2V0dGluZyBtYW5h
Z2VzLWRlc2NlbmRhbnRzIG9uIHdlYiBwcm9jZXNzIHJvb3Qgb2JqZWN0IHdpdGggQVRTUEkKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcAkocmV2aXNpb24gMjg3
NDcxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ1OCw1ICsxNDU4LDE3IEBAIFRFU1QoV1RGX1ZlY3RvciwgQ29uc3RydWN0
b3JGcm9tUmF3UG9pbnRlckFuZFNpemUpCiAgICAgRVhQRUNUX0VRKHZlY3RvclszXSwgNCk7CiAg
ICAgRVhQRUNUX0VRKHZlY3Rvcls0XSwgNSk7CiB9Ci0gICAgCisKK1RFU1QoV1RGX1ZlY3Rvciwg
TWFwQ3VzdG9tUmV0dXJuVHlwZSkKK3sKKyAgICBWZWN0b3I8aW50PiBpbnB1dCB7IDEsIDIgfTsK
KyAgICBWZWN0b3I8ZmxvYXQsIDI+IG91dHB1dCA9IGlucHV0Lm1hcDxWZWN0b3I8ZmxvYXQsIDI+
PihbXSAoaW50IHZhbHVlKSB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odmFs
dWUpOworICAgIH0pOworCisgICAgQVNTRVJUX0VRKG91dHB1dC5zaXplKCksIGlucHV0LnNpemUo
KSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKG91dHB1dFswXSwgMS4wZik7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKG91dHB1dFsxXSwgMi4wZik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>