<?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>263574</bug_id>
          
          <creation_ts>2023-10-23 18:00:28 -0700</creation_ts>
          <short_desc>Add bounds check to StringImpl&apos;s operator[]</short_desc>
          <delta_ts>2023-10-30 18:04:16 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>263899</dup_id>
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=263615</see_also>
          <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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1987033</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2023-10-23 18:00:28 -0700</bug_when>
    <thetext>Add bounds check to StringImpl&apos;s operator[] for extra safety.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1987034</commentid>
    <comment_count>1</comment_count>
      <attachid>468310</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2023-10-23 18:00:45 -0700</bug_when>
    <thetext>Created attachment 468310
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1987049</commentid>
    <comment_count>2</comment_count>
      <attachid>468311</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2023-10-23 20:16:14 -0700</bug_when>
    <thetext>Created attachment 468311
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1987052</commentid>
    <comment_count>3</comment_count>
      <attachid>468312</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2023-10-23 20:27:08 -0700</bug_when>
    <thetext>Created attachment 468312
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1987071</commentid>
    <comment_count>4</comment_count>
      <attachid>468314</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2023-10-23 21:40:22 -0700</bug_when>
    <thetext>Created attachment 468314
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1987216</commentid>
    <comment_count>5</comment_count>
      <attachid>468322</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2023-10-24 13:22:01 -0700</bug_when>
    <thetext>Created attachment 468322
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1988723</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-10-30 18:01:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/117713370&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1988724</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2023-10-30 18:04:16 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 263899 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>468310</attachid>
            <date>2023-10-23 18:00:45 -0700</date>
            <delta_ts>2023-10-23 20:32:36 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>StringImpl_safe_indexing.patch</filename>
            <type>text/plain</type>
            <size>5400</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwCmluZGV4IDlkMGRiZmU5ZmYxMi4uZWViNTQ3ODk3MmMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTM2OSw3ICsz
NjksOCBAQCBib29sIFVSTDo6cHJvdG9jb2xJcyhTdHJpbmdWaWV3IHByb3RvY29sKSBjb25zdAog
ICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYg
KG1fc2NoZW1lRW5kICE9IHByb3RvY29sLmxlbmd0aCgpKQorICAgIC8vIEZJWE1FOiBXaHkgY2Fu
IG1fc2NoZW1lRW5kIGJlIG91dCBvZiBib3VuZHM/CisgICAgaWYgKG1fc2NoZW1lRW5kICE9IHBy
b3RvY29sLmxlbmd0aCgpIHx8IG1fc2NoZW1lRW5kID4gbV9zdHJpbmcubGVuZ3RoKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFr
aW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRl
eCA0MjEzZWE0NzlmMTEuLmZiNWIwNzQzZjMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
Y3BwCkBAIC01MTksNiArNTE5LDkgQEAgdXBjb252ZXJ0OgogCiBzdGF0aWMgaW5saW5lIGJvb2wg
bmVlZHNUdXJraXNoQ2FzaW5nUnVsZXMoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlSWRlbnRpZmll
cikKIHsKKyAgICBpZiAobG9jYWxlSWRlbnRpZmllci5sZW5ndGgoKSA8IDIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKwogICAgIC8vIEVpdGhlciAidHIiIG9yICJheiIgbG9jYWxlLCB3aXRoIGNh
c2Ugc2Vuc2l0aXZlIGNvbXBhcmlzb24gYW5kIGFsbG93aW5nIGZvciBhbiBpZ25vcmVkIHN1YnRh
Zy4KICAgICBVQ2hhciBmaXJzdCA9IGxvY2FsZUlkZW50aWZpZXJbMF07CiAgICAgVUNoYXIgc2Vj
b25kID0gbG9jYWxlSWRlbnRpZmllclsxXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXgg
ZTAwY2NjOGMyOWI0Li45N2U5MGZlOTQ0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBA
IC0xMTYzLDcgKzExNjMsNyBAQCBpbmxpbmUgdm9pZCBTdHJpbmdJbXBsOjpkZXJlZigpCiAKIGlu
bGluZSBVQ2hhciBTdHJpbmdJbXBsOjphdCh1bnNpZ25lZCBpKSBjb25zdAogewotICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBtX2xlbmd0aCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICByZXR1cm4gaXM4Qml0KCkgPyBtX2RhdGE4W2ldIDog
bV9kYXRhMTZbaV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGJiNWEzNzU1M2E4
My4uYTRlMDFkODM1YTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTQ0NCw4ICs0NDQs
NyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBjb25zdCBVQ2hhciogU3RyaW5nOjpjaGFyYWN0ZXJzPFVD
aGFyPigpIGNvbnN0CiAKIGlubGluZSBVQ2hhciBTdHJpbmc6OmNoYXJhY3RlckF0KHVuc2lnbmVk
IGluZGV4KSBjb25zdAogewotICAgIGlmICghbV9pbXBsIHx8IGluZGV4ID49IG1faW1wbC0+bGVu
Z3RoKCkpCi0gICAgICAgIHJldHVybiAwOworICAgIFJFTEVBU0VfQVNTRVJUKG1faW1wbCk7CiAg
ICAgcmV0dXJuICgqbV9pbXBsKVtpbmRleF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggZjE5ZjE4NWI5NmU2Li4wY2U2NjA4
YzNjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1h
bmQuY3BwCkBAIC05MjgsNiArOTI4LDkgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVi
YWxhbmNlV2hpdGVzcGFjZUF0KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKICAgICAvLyBJZiB0
aGUgcmViYWxhbmNlIGlzIGZvciB0aGUgc2luZ2xlIG9mZnNldCwgYW5kIG5laXRoZXIgdGV4dFtv
ZmZzZXRdIG5vciB0ZXh0W29mZnNldCAtIDFdIGFyZSBzb21lIGZvcm0gb2Ygd2hpdGVzcGFjZSwg
ZG8gbm90aGluZy4KICAgICBpbnQgb2Zmc2V0ID0gcG9zaXRpb24uZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKTsKICAgICBTdHJpbmcgdGV4dCA9IHRleHROb2RlLT5kYXRhKCk7CisgICAgaWYgKG9m
ZnNldCA8IDAgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG9mZnNldCkgPj0gdGV4dC5sZW5ndGgo
KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFkZXByZWNhdGVkSXNFZGl0aW5nV2hpdGVz
cGFjZSh0ZXh0W29mZnNldF0pKSB7CiAgICAgICAgIG9mZnNldC0tOwogICAgICAgICBpZiAob2Zm
c2V0IDwgMCB8fCAhZGVwcmVjYXRlZElzRWRpdGluZ1doaXRlc3BhY2UodGV4dFtvZmZzZXRdKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDk4YjkwNjRkNDA5
Ny4uODIxNWQwYjczMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHAKQEAgLTgwNCw3ICs4MDQsNyBAQCBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmlzU2VydmVyTWFw
KCkgY29uc3QKICAgICBjb25zdCBBdG9tU3RyaW5nJiB1c2VtYXAgPSBhdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKHVzZW1hcEF0dHIpOwogCiAgICAgLy8gSWYgdGhlIHVzZW1hcCBhdHRy
aWJ1dGUgc3RhcnRzIHdpdGggJyMnLCBpdCByZWZlcnMgdG8gYSBtYXAgZWxlbWVudCBpbiB0aGUg
ZG9jdW1lbnQuCi0gICAgaWYgKHVzZW1hcC5zdHJpbmcoKVswXSA9PSAnIycpCisgICAgaWYgKCF1
c2VtYXAuaXNFbXB0eSgpICYmIHVzZW1hcC5zdHJpbmcoKVswXSA9PSAnIycpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVzZW1hcCku
aXNFbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcAppbmRleCAxZTc5
NjAzODY3NzQuLjZjYzMzYjU0NDEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVu
dC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEhUTUxNYXBFbGVtZW50OjphdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogICAgICAg
ICBpZiAoaXNJblRyZWVTY29wZSgpKQogICAgICAgICAgICAgdHJlZVNjb3BlKCkucmVtb3ZlSW1h
Z2VNYXAoKnRoaXMpOwogICAgICAgICBBdG9tU3RyaW5nIG1hcE5hbWUgPSBuZXdWYWx1ZTsKLSAg
ICAgICAgaWYgKG1hcE5hbWVbMF0gPT0gJyMnKQorICAgICAgICBpZiAoIW1hcE5hbWUuaXNFbXB0
eSgpICYmIG1hcE5hbWVbMF0gPT0gJyMnKQogICAgICAgICAgICAgbWFwTmFtZSA9IFN0cmluZ1Zp
ZXcobWFwTmFtZSkuc3Vic3RyaW5nKDEpLnRvQXRvbVN0cmluZygpOwogICAgICAgICBtX25hbWUg
PSBXVEZNb3ZlKG1hcE5hbWUpOwogICAgICAgICBpZiAoaXNJblRyZWVTY29wZSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxk
RWxlbWVudC5jcHAKaW5kZXggNGY1MTQzMjI2ZGY2Li5lYjM4ZTBjZTU4MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRF
bGVtZW50LmNwcApAQCAtMTc5LDYgKzE3OSw5IEBAIHZvaWQgRGF0ZVRpbWVOdW1lcmljRmllbGRF
bGVtZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGtleWJvYXJkRXZlCiAK
ICAgICBhdXRvIGNoYXJDb2RlID0gc3RhdGljX2Nhc3Q8VUNoYXI+KGtleWJvYXJkRXZlbnQuY2hh
ckNvZGUoKSk7CiAgICAgU3RyaW5nIG51bWJlciA9IGxvY2FsZUZvck93bmVyKCkuY29udmVydEZy
b21Mb2NhbGl6ZWROdW1iZXIoU3RyaW5nKCZjaGFyQ29kZSwgMSkpOworICAgIGlmIChudW1iZXIu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKICAgICBpbnQgZGlnaXQgPSBudW1iZXJbMF0g
LSAnMCc7CiAgICAgaWYgKGRpZ2l0IDwgMCB8fCBkaWdpdCA+IDkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKaW5k
ZXggOTYwZDE3OWZmZmYwLi5mYWJlNTM2Y2Q3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC0xMjUsNiArMTI1LDggQEAgYm9vbCBp
c1ZhbGlkUmVhc29uUGhyYXNlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAvLyBTZWUgaHR0cHM6Ly9m
ZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtaGVhZGVyCiBib29sIGlzVmFsaWRIVFRQSGVh
ZGVyVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgVUNoYXIgYyA9IHZhbHVlWzBdOwogICAgIGlm
IChpc1RhYk9yU3BhY2UoYykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
</data>
<flag name="commit-queue"
          id="495238"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>468311</attachid>
            <date>2023-10-23 20:16:14 -0700</date>
            <delta_ts>2023-10-23 20:27:08 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>StringImpl_safe_indexing2.patch</filename>
            <type>text/plain</type>
            <size>7362</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwCmluZGV4IDlkMGRiZmU5ZmYxMi4uZWViNTQ3ODk3MmMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTM2OSw3ICsz
NjksOCBAQCBib29sIFVSTDo6cHJvdG9jb2xJcyhTdHJpbmdWaWV3IHByb3RvY29sKSBjb25zdAog
ICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYg
KG1fc2NoZW1lRW5kICE9IHByb3RvY29sLmxlbmd0aCgpKQorICAgIC8vIEZJWE1FOiBXaHkgY2Fu
IG1fc2NoZW1lRW5kIGJlIG91dCBvZiBib3VuZHM/CisgICAgaWYgKG1fc2NoZW1lRW5kICE9IHBy
b3RvY29sLmxlbmd0aCgpIHx8IG1fc2NoZW1lRW5kID4gbV9zdHJpbmcubGVuZ3RoKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFr
aW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRl
eCA0MjEzZWE0NzlmMTEuLmZiNWIwNzQzZjMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
Y3BwCkBAIC01MTksNiArNTE5LDkgQEAgdXBjb252ZXJ0OgogCiBzdGF0aWMgaW5saW5lIGJvb2wg
bmVlZHNUdXJraXNoQ2FzaW5nUnVsZXMoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlSWRlbnRpZmll
cikKIHsKKyAgICBpZiAobG9jYWxlSWRlbnRpZmllci5sZW5ndGgoKSA8IDIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKwogICAgIC8vIEVpdGhlciAidHIiIG9yICJheiIgbG9jYWxlLCB3aXRoIGNh
c2Ugc2Vuc2l0aXZlIGNvbXBhcmlzb24gYW5kIGFsbG93aW5nIGZvciBhbiBpZ25vcmVkIHN1YnRh
Zy4KICAgICBVQ2hhciBmaXJzdCA9IGxvY2FsZUlkZW50aWZpZXJbMF07CiAgICAgVUNoYXIgc2Vj
b25kID0gbG9jYWxlSWRlbnRpZmllclsxXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXgg
ZTAwY2NjOGMyOWI0Li45N2U5MGZlOTQ0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBA
IC0xMTYzLDcgKzExNjMsNyBAQCBpbmxpbmUgdm9pZCBTdHJpbmdJbXBsOjpkZXJlZigpCiAKIGlu
bGluZSBVQ2hhciBTdHJpbmdJbXBsOjphdCh1bnNpZ25lZCBpKSBjb25zdAogewotICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBtX2xlbmd0aCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICByZXR1cm4gaXM4Qml0KCkgPyBtX2RhdGE4W2ldIDog
bV9kYXRhMTZbaV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGJiNWEzNzU1M2E4
My4uYTRlMDFkODM1YTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTQ0NCw4ICs0NDQs
NyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBjb25zdCBVQ2hhciogU3RyaW5nOjpjaGFyYWN0ZXJzPFVD
aGFyPigpIGNvbnN0CiAKIGlubGluZSBVQ2hhciBTdHJpbmc6OmNoYXJhY3RlckF0KHVuc2lnbmVk
IGluZGV4KSBjb25zdAogewotICAgIGlmICghbV9pbXBsIHx8IGluZGV4ID49IG1faW1wbC0+bGVu
Z3RoKCkpCi0gICAgICAgIHJldHVybiAwOworICAgIFJFTEVBU0VfQVNTRVJUKG1faW1wbCk7CiAg
ICAgcmV0dXJuICgqbV9pbXBsKVtpbmRleF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmlu
ZGV4IGQ2MGRkNDdmZDkwNi4uYzVhNmJjZGE4NGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAK
QEAgLTExNDksNyArMTE0OSwxMSBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6bGVhZGluZ1doaXRlc3Bh
Y2VQb3NpdGlvbihBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBjb25zaWRlck5vbgogICAgIFJlZlB0
ciBub2RlID0gZGVwcmVjYXRlZE5vZGUoKTsKICAgICBSZWZQdHIgcHJldmlvdXNOb2RlID0gcHJl
di5kZXByZWNhdGVkTm9kZSgpOwogICAgIGlmIChwcmV2ICE9ICp0aGlzICYmIGluU2FtZUVuY2xv
c2luZ0Jsb2NrRmxvd0VsZW1lbnQobm9kZS5nZXQoKSwgcHJldmlvdXNOb2RlLmdldCgpKSAmJiBp
czxUZXh0PigqcHJldmlvdXNOb2RlKSkgewotICAgICAgICBVQ2hhciBjID0gZG93bmNhc3Q8VGV4
dD4oKnByZXZpb3VzTm9kZSkuZGF0YSgpW3ByZXYuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKV07
CisgICAgICAgIGF1dG8gb2Zmc2V0ID0gcHJldi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwor
ICAgICAgICBhdXRvJiBwcmV2aW91c05vZGVUZXh0ID0gZG93bmNhc3Q8VGV4dD4oKnByZXZpb3Vz
Tm9kZSkuZGF0YSgpOworICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ob2Zmc2V0KSA+PSBwcmV2aW91c05vZGVUZXh0Lmxlbmd0aCgpKQorICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgVUNoYXIgYyA9IHByZXZpb3VzTm9kZVRleHRbb2Zmc2V0XTsK
ICAgICAgICAgaWYgKGNvbnNpZGVyTm9uQ29sbGFwc2libGVXaGl0ZXNwYWNlID8gKGlzQVNDSUlX
aGl0ZXNwYWNlKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSA6IGRlcHJlY2F0ZWRJc0NvbGxhcHNp
YmxlV2hpdGVzcGFjZShjKSkgewogICAgICAgICAgICAgaWYgKGlzRWRpdGFibGVQb3NpdGlvbihw
cmV2KSkKICAgICAgICAgICAgICAgICByZXR1cm4gcHJldjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggZjE5ZjE4NWI5NmU2Li5hZDk4
ODIwMzZmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCkBAIC05MjgsOSArOTI4LDEyIEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6
OnJlYmFsYW5jZVdoaXRlc3BhY2VBdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAgLy8g
SWYgdGhlIHJlYmFsYW5jZSBpcyBmb3IgdGhlIHNpbmdsZSBvZmZzZXQsIGFuZCBuZWl0aGVyIHRl
eHRbb2Zmc2V0XSBub3IgdGV4dFtvZmZzZXQgLSAxXSBhcmUgc29tZSBmb3JtIG9mIHdoaXRlc3Bh
Y2UsIGRvIG5vdGhpbmcuCiAgICAgaW50IG9mZnNldCA9IHBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCk7CiAgICAgU3RyaW5nIHRleHQgPSB0ZXh0Tm9kZS0+ZGF0YSgpOwotICAgIGlm
ICghZGVwcmVjYXRlZElzRWRpdGluZ1doaXRlc3BhY2UodGV4dFtvZmZzZXRdKSkgeworICAgIGlm
IChvZmZzZXQgPCAwKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG9mZnNldCkgPj0gdGV4dC5sZW5ndGgoKSB8fCAhZGVwcmVjYXRlZElzRWRpdGluZ1do
aXRlc3BhY2UodGV4dFtvZmZzZXRdKSkgewogICAgICAgICBvZmZzZXQtLTsKLSAgICAgICAgaWYg
KG9mZnNldCA8IDAgfHwgIWRlcHJlY2F0ZWRJc0VkaXRpbmdXaGl0ZXNwYWNlKHRleHRbb2Zmc2V0
XSkpCisgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihvZmZz
ZXQpID49IHRleHQubGVuZ3RoKCkgfHwgIWRlcHJlY2F0ZWRJc0VkaXRpbmdXaGl0ZXNwYWNlKHRl
eHRbb2Zmc2V0XSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCAyYTFkNTM0YWU1YjIuLjE0ODhlZjdlYmVk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC00MDksNiAr
NDA5LDkgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUZvcmVDb2xvcihMb2NhbEZyYW1lJiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXIKIAogc3RhdGljIGJvb2wgZXhlY3V0ZUZv
cm1hdEJsb2NrKExvY2FsRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CisgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCiAgICAgU3RyaW5nIGxvd2VyY2FzZVZhbHVlID0gdmFsdWUuY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICBBdG9tU3RyaW5nIHRhZ05hbWU7CiAgICAgaWYg
KGxvd2VyY2FzZVZhbHVlWzBdID09ICc8JyAmJiBsb3dlcmNhc2VWYWx1ZVtsb3dlcmNhc2VWYWx1
ZS5sZW5ndGgoKSAtIDFdID09ICc+JykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwCmluZGV4IDk4YjkwNjRkNDA5Ny4uODIxNWQwYjczMjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTgwNCw3ICs4MDQsNyBAQCBib29sIEhUTUxJ
bWFnZUVsZW1lbnQ6OmlzU2VydmVyTWFwKCkgY29uc3QKICAgICBjb25zdCBBdG9tU3RyaW5nJiB1
c2VtYXAgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHVzZW1hcEF0dHIpOwogCiAg
ICAgLy8gSWYgdGhlIHVzZW1hcCBhdHRyaWJ1dGUgc3RhcnRzIHdpdGggJyMnLCBpdCByZWZlcnMg
dG8gYSBtYXAgZWxlbWVudCBpbiB0aGUgZG9jdW1lbnQuCi0gICAgaWYgKHVzZW1hcC5zdHJpbmco
KVswXSA9PSAnIycpCisgICAgaWYgKCF1c2VtYXAuaXNFbXB0eSgpICYmIHVzZW1hcC5zdHJpbmco
KVswXSA9PSAnIycpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBkb2N1bWVu
dCgpLmNvbXBsZXRlVVJMKHVzZW1hcCkuaXNFbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
YXBFbGVtZW50LmNwcAppbmRleCAxZTc5NjAzODY3NzQuLjZjYzMzYjU0NDEwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEhU
TUxNYXBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21TdHJpbgogICAgICAgICBpZiAoaXNJblRyZWVTY29wZSgpKQogICAgICAgICAg
ICAgdHJlZVNjb3BlKCkucmVtb3ZlSW1hZ2VNYXAoKnRoaXMpOwogICAgICAgICBBdG9tU3RyaW5n
IG1hcE5hbWUgPSBuZXdWYWx1ZTsKLSAgICAgICAgaWYgKG1hcE5hbWVbMF0gPT0gJyMnKQorICAg
ICAgICBpZiAoIW1hcE5hbWUuaXNFbXB0eSgpICYmIG1hcE5hbWVbMF0gPT0gJyMnKQogICAgICAg
ICAgICAgbWFwTmFtZSA9IFN0cmluZ1ZpZXcobWFwTmFtZSkuc3Vic3RyaW5nKDEpLnRvQXRvbVN0
cmluZygpOwogICAgICAgICBtX25hbWUgPSBXVEZNb3ZlKG1hcE5hbWUpOwogICAgICAgICBpZiAo
aXNJblRyZWVTY29wZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
RGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAKaW5kZXggNGY1MTQzMjI2ZGY2Li5l
YjM4ZTBjZTU4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVU
aW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNwcApAQCAtMTc5LDYgKzE3OSw5IEBAIHZv
aWQgRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJv
YXJkRXZlbnQmIGtleWJvYXJkRXZlCiAKICAgICBhdXRvIGNoYXJDb2RlID0gc3RhdGljX2Nhc3Q8
VUNoYXI+KGtleWJvYXJkRXZlbnQuY2hhckNvZGUoKSk7CiAgICAgU3RyaW5nIG51bWJlciA9IGxv
Y2FsZUZvck93bmVyKCkuY29udmVydEZyb21Mb2NhbGl6ZWROdW1iZXIoU3RyaW5nKCZjaGFyQ29k
ZSwgMSkpOworICAgIGlmIChudW1iZXIuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKICAg
ICBpbnQgZGlnaXQgPSBudW1iZXJbMF0gLSAnMCc7CiAgICAgaWYgKGRpZ2l0IDwgMCB8fCBkaWdp
dCA+IDkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggOTYwZDE3OWZmZmYwLi5mYWJlNTM2Y2Q3MjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBA
IC0xMjUsNiArMTI1LDggQEAgYm9vbCBpc1ZhbGlkUmVhc29uUGhyYXNlKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiAvLyBTZWUgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtaGVh
ZGVyCiBib29sIGlzVmFsaWRIVFRQSGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsK
KyAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgVUNo
YXIgYyA9IHZhbHVlWzBdOwogICAgIGlmIChpc1RhYk9yU3BhY2UoYykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>468312</attachid>
            <date>2023-10-23 20:27:08 -0700</date>
            <delta_ts>2023-10-23 21:40:22 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>StringImpl_safe_indexing3.patch</filename>
            <type>text/plain</type>
            <size>7361</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwCmluZGV4IDlkMGRiZmU5ZmYxMi4uZWViNTQ3ODk3MmMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTM2OSw3ICsz
NjksOCBAQCBib29sIFVSTDo6cHJvdG9jb2xJcyhTdHJpbmdWaWV3IHByb3RvY29sKSBjb25zdAog
ICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYg
KG1fc2NoZW1lRW5kICE9IHByb3RvY29sLmxlbmd0aCgpKQorICAgIC8vIEZJWE1FOiBXaHkgY2Fu
IG1fc2NoZW1lRW5kIGJlIG91dCBvZiBib3VuZHM/CisgICAgaWYgKG1fc2NoZW1lRW5kICE9IHBy
b3RvY29sLmxlbmd0aCgpIHx8IG1fc2NoZW1lRW5kID4gbV9zdHJpbmcubGVuZ3RoKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFr
aW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRl
eCA0MjEzZWE0NzlmMTEuLmZiNWIwNzQzZjMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
Y3BwCkBAIC01MTksNiArNTE5LDkgQEAgdXBjb252ZXJ0OgogCiBzdGF0aWMgaW5saW5lIGJvb2wg
bmVlZHNUdXJraXNoQ2FzaW5nUnVsZXMoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlSWRlbnRpZmll
cikKIHsKKyAgICBpZiAobG9jYWxlSWRlbnRpZmllci5sZW5ndGgoKSA8IDIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKwogICAgIC8vIEVpdGhlciAidHIiIG9yICJheiIgbG9jYWxlLCB3aXRoIGNh
c2Ugc2Vuc2l0aXZlIGNvbXBhcmlzb24gYW5kIGFsbG93aW5nIGZvciBhbiBpZ25vcmVkIHN1YnRh
Zy4KICAgICBVQ2hhciBmaXJzdCA9IGxvY2FsZUlkZW50aWZpZXJbMF07CiAgICAgVUNoYXIgc2Vj
b25kID0gbG9jYWxlSWRlbnRpZmllclsxXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXgg
ZTAwY2NjOGMyOWI0Li45N2U5MGZlOTQ0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBA
IC0xMTYzLDcgKzExNjMsNyBAQCBpbmxpbmUgdm9pZCBTdHJpbmdJbXBsOjpkZXJlZigpCiAKIGlu
bGluZSBVQ2hhciBTdHJpbmdJbXBsOjphdCh1bnNpZ25lZCBpKSBjb25zdAogewotICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBtX2xlbmd0aCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoaSA8IG1fbGVuZ3RoKTsKICAgICByZXR1cm4gaXM4Qml0KCkgPyBtX2RhdGE4W2ldIDog
bV9kYXRhMTZbaV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGJiNWEzNzU1M2E4
My4uYTRlMDFkODM1YTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTQ0NCw4ICs0NDQs
NyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBjb25zdCBVQ2hhciogU3RyaW5nOjpjaGFyYWN0ZXJzPFVD
aGFyPigpIGNvbnN0CiAKIGlubGluZSBVQ2hhciBTdHJpbmc6OmNoYXJhY3RlckF0KHVuc2lnbmVk
IGluZGV4KSBjb25zdAogewotICAgIGlmICghbV9pbXBsIHx8IGluZGV4ID49IG1faW1wbC0+bGVu
Z3RoKCkpCi0gICAgICAgIHJldHVybiAwOworICAgIFJFTEVBU0VfQVNTRVJUKG1faW1wbCk7CiAg
ICAgcmV0dXJuICgqbV9pbXBsKVtpbmRleF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmlu
ZGV4IGQ2MGRkNDdmZDkwNi4uYzVhNmJjZGE4NGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAK
QEAgLTExNDksNyArMTE0OSwxMSBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6bGVhZGluZ1doaXRlc3Bh
Y2VQb3NpdGlvbihBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBjb25zaWRlck5vbgogICAgIFJlZlB0
ciBub2RlID0gZGVwcmVjYXRlZE5vZGUoKTsKICAgICBSZWZQdHIgcHJldmlvdXNOb2RlID0gcHJl
di5kZXByZWNhdGVkTm9kZSgpOwogICAgIGlmIChwcmV2ICE9ICp0aGlzICYmIGluU2FtZUVuY2xv
c2luZ0Jsb2NrRmxvd0VsZW1lbnQobm9kZS5nZXQoKSwgcHJldmlvdXNOb2RlLmdldCgpKSAmJiBp
czxUZXh0PigqcHJldmlvdXNOb2RlKSkgewotICAgICAgICBVQ2hhciBjID0gZG93bmNhc3Q8VGV4
dD4oKnByZXZpb3VzTm9kZSkuZGF0YSgpW3ByZXYuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKV07
CisgICAgICAgIGF1dG8gb2Zmc2V0ID0gcHJldi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwor
ICAgICAgICBhdXRvJiBwcmV2aW91c05vZGVUZXh0ID0gZG93bmNhc3Q8VGV4dD4oKnByZXZpb3Vz
Tm9kZSkuZGF0YSgpOworICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ob2Zmc2V0KSA+PSBwcmV2aW91c05vZGVUZXh0Lmxlbmd0aCgpKQorICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgVUNoYXIgYyA9IHByZXZpb3VzTm9kZVRleHRbb2Zmc2V0XTsK
ICAgICAgICAgaWYgKGNvbnNpZGVyTm9uQ29sbGFwc2libGVXaGl0ZXNwYWNlID8gKGlzQVNDSUlX
aGl0ZXNwYWNlKGMpIHx8IGMgPT0gbm9CcmVha1NwYWNlKSA6IGRlcHJlY2F0ZWRJc0NvbGxhcHNp
YmxlV2hpdGVzcGFjZShjKSkgewogICAgICAgICAgICAgaWYgKGlzRWRpdGFibGVQb3NpdGlvbihw
cmV2KSkKICAgICAgICAgICAgICAgICByZXR1cm4gcHJldjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKaW5kZXggZjE5ZjE4NWI5NmU2Li5hZDk4
ODIwMzZmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCkBAIC05MjgsOSArOTI4LDEyIEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6
OnJlYmFsYW5jZVdoaXRlc3BhY2VBdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAgLy8g
SWYgdGhlIHJlYmFsYW5jZSBpcyBmb3IgdGhlIHNpbmdsZSBvZmZzZXQsIGFuZCBuZWl0aGVyIHRl
eHRbb2Zmc2V0XSBub3IgdGV4dFtvZmZzZXQgLSAxXSBhcmUgc29tZSBmb3JtIG9mIHdoaXRlc3Bh
Y2UsIGRvIG5vdGhpbmcuCiAgICAgaW50IG9mZnNldCA9IHBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCk7CiAgICAgU3RyaW5nIHRleHQgPSB0ZXh0Tm9kZS0+ZGF0YSgpOwotICAgIGlm
ICghZGVwcmVjYXRlZElzRWRpdGluZ1doaXRlc3BhY2UodGV4dFtvZmZzZXRdKSkgeworICAgIGlm
IChvZmZzZXQgPCAwKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG9mZnNldCkgPj0gdGV4dC5sZW5ndGgoKSB8fCAhZGVwcmVjYXRlZElzRWRpdGluZ1do
aXRlc3BhY2UodGV4dFtvZmZzZXRdKSkgewogICAgICAgICBvZmZzZXQtLTsKLSAgICAgICAgaWYg
KG9mZnNldCA8IDAgfHwgIWRlcHJlY2F0ZWRJc0VkaXRpbmdXaGl0ZXNwYWNlKHRleHRbb2Zmc2V0
XSkpCisgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihvZmZz
ZXQpID49IHRleHQubGVuZ3RoKCkgfHwgIWRlcHJlY2F0ZWRJc0VkaXRpbmdXaGl0ZXNwYWNlKHRl
eHRbb2Zmc2V0XSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCAyYTFkNTM0YWU1YjIuLjE0ODhlZjdlYmVk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC00MDksNiAr
NDA5LDkgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUZvcmVDb2xvcihMb2NhbEZyYW1lJiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXIKIAogc3RhdGljIGJvb2wgZXhlY3V0ZUZv
cm1hdEJsb2NrKExvY2FsRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CisgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCiAgICAgU3RyaW5nIGxvd2VyY2FzZVZhbHVlID0gdmFsdWUuY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICBBdG9tU3RyaW5nIHRhZ05hbWU7CiAgICAgaWYg
KGxvd2VyY2FzZVZhbHVlWzBdID09ICc8JyAmJiBsb3dlcmNhc2VWYWx1ZVtsb3dlcmNhc2VWYWx1
ZS5sZW5ndGgoKSAtIDFdID09ICc+JykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwCmluZGV4IDk4YjkwNjRkNDA5Ny4uODIxNWQwYjczMjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTgwNCw3ICs4MDQsNyBAQCBib29sIEhUTUxJ
bWFnZUVsZW1lbnQ6OmlzU2VydmVyTWFwKCkgY29uc3QKICAgICBjb25zdCBBdG9tU3RyaW5nJiB1
c2VtYXAgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHVzZW1hcEF0dHIpOwogCiAg
ICAgLy8gSWYgdGhlIHVzZW1hcCBhdHRyaWJ1dGUgc3RhcnRzIHdpdGggJyMnLCBpdCByZWZlcnMg
dG8gYSBtYXAgZWxlbWVudCBpbiB0aGUgZG9jdW1lbnQuCi0gICAgaWYgKHVzZW1hcC5zdHJpbmco
KVswXSA9PSAnIycpCisgICAgaWYgKCF1c2VtYXAuaXNFbXB0eSgpICYmIHVzZW1hcC5zdHJpbmco
KVswXSA9PSAnIycpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBkb2N1bWVu
dCgpLmNvbXBsZXRlVVJMKHVzZW1hcCkuaXNFbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
YXBFbGVtZW50LmNwcAppbmRleCAxZTc5NjAzODY3NzQuLjZjYzMzYjU0NDEwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEhU
TUxNYXBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21TdHJpbgogICAgICAgICBpZiAoaXNJblRyZWVTY29wZSgpKQogICAgICAgICAg
ICAgdHJlZVNjb3BlKCkucmVtb3ZlSW1hZ2VNYXAoKnRoaXMpOwogICAgICAgICBBdG9tU3RyaW5n
IG1hcE5hbWUgPSBuZXdWYWx1ZTsKLSAgICAgICAgaWYgKG1hcE5hbWVbMF0gPT0gJyMnKQorICAg
ICAgICBpZiAoIW1hcE5hbWUuaXNFbXB0eSgpICYmIG1hcE5hbWVbMF0gPT0gJyMnKQogICAgICAg
ICAgICAgbWFwTmFtZSA9IFN0cmluZ1ZpZXcobWFwTmFtZSkuc3Vic3RyaW5nKDEpLnRvQXRvbVN0
cmluZygpOwogICAgICAgICBtX25hbWUgPSBXVEZNb3ZlKG1hcE5hbWUpOwogICAgICAgICBpZiAo
aXNJblRyZWVTY29wZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
RGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAKaW5kZXggNGY1MTQzMjI2ZGY2Li5l
YjM4ZTBjZTU4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVU
aW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNwcApAQCAtMTc5LDYgKzE3OSw5IEBAIHZv
aWQgRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJv
YXJkRXZlbnQmIGtleWJvYXJkRXZlCiAKICAgICBhdXRvIGNoYXJDb2RlID0gc3RhdGljX2Nhc3Q8
VUNoYXI+KGtleWJvYXJkRXZlbnQuY2hhckNvZGUoKSk7CiAgICAgU3RyaW5nIG51bWJlciA9IGxv
Y2FsZUZvck93bmVyKCkuY29udmVydEZyb21Mb2NhbGl6ZWROdW1iZXIoU3RyaW5nKCZjaGFyQ29k
ZSwgMSkpOworICAgIGlmIChudW1iZXIuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKICAg
ICBpbnQgZGlnaXQgPSBudW1iZXJbMF0gLSAnMCc7CiAgICAgaWYgKGRpZ2l0IDwgMCB8fCBkaWdp
dCA+IDkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggOTYwZDE3OWZmZmYwLi5iY2NhNjYxYmRjNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBA
IC0xMjUsNiArMTI1LDggQEAgYm9vbCBpc1ZhbGlkUmVhc29uUGhyYXNlKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiAvLyBTZWUgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtaGVh
ZGVyCiBib29sIGlzVmFsaWRIVFRQSGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsK
KyAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBVQ2hh
ciBjID0gdmFsdWVbMF07CiAgICAgaWYgKGlzVGFiT3JTcGFjZShjKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>468314</attachid>
            <date>2023-10-23 21:40:22 -0700</date>
            <delta_ts>2023-10-24 13:22:01 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>StringImpl_safe_indexing4.patch</filename>
            <type>text/plain</type>
            <size>8811</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oIGIvU291cmNlL1dURi93dGYvVVJMLmgK
aW5kZXggZDNlYjI3NmRhNDc2Li45ZmZlOGViNDc0MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1VSTC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5oCkBAIC02MCw2ICs2MCw0NyBAQCBw
dWJsaWM6CiAgICAgZXhwbGljaXQgVVJMKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOwogICAg
IGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5p
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKKyAgICBVUkwoY29uc3QgVVJMJikgPSBkZWZh
dWx0OworICAgIFVSTCYgb3BlcmF0b3I9KGNvbnN0IFVSTCYpID0gZGVmYXVsdDsKKworICAgIFVS
TChVUkwmJiBvdGhlcikKKyAgICAgICAgOiBtX3N0cmluZyhvdGhlci5tX3N0cmluZykKKyAgICAg
ICAgLCBtX2lzVmFsaWQob3RoZXIubV9pc1ZhbGlkKQorICAgICAgICAsIG1fcHJvdG9jb2xJc0lu
SFRUUEZhbWlseShvdGhlci5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkpCisgICAgICAgICwgbV9o
YXNPcGFxdWVQYXRoKG90aGVyLm1faGFzT3BhcXVlUGF0aCkKKyAgICAgICAgLCBtX3BvcnRMZW5n
dGgob3RoZXIubV9wb3J0TGVuZ3RoKQorICAgICAgICAsIG1fc2NoZW1lRW5kKG90aGVyLm1fc2No
ZW1lRW5kKQorICAgICAgICAsIG1fdXNlclN0YXJ0KG90aGVyLm1fdXNlclN0YXJ0KQorICAgICAg
ICAsIG1fdXNlckVuZChvdGhlci5tX3VzZXJFbmQpCisgICAgICAgICwgbV9wYXNzd29yZEVuZChv
dGhlci5tX3Bhc3N3b3JkRW5kKQorICAgICAgICAsIG1faG9zdEVuZChvdGhlci5tX2hvc3RFbmQp
CisgICAgICAgICwgbV9wYXRoQWZ0ZXJMYXN0U2xhc2gob3RoZXIubV9wYXRoQWZ0ZXJMYXN0U2xh
c2gpCisgICAgICAgICwgbV9wYXRoRW5kKG90aGVyLm1fcGF0aEVuZCkKKyAgICAgICAgLCBtX3F1
ZXJ5RW5kKG90aGVyLm1fcXVlcnlFbmQpCisgICAgeworICAgICAgICBvdGhlci5tX2lzVmFsaWQg
PSBmYWxzZTsKKyAgICB9CisKKyAgICBVUkwmIG9wZXJhdG9yPShVUkwmJiBvdGhlcikKKyAgICB7
CisgICAgICAgIG1fc3RyaW5nID0gV1RGTW92ZShvdGhlci5tX3N0cmluZyk7CisgICAgICAgIG1f
aXNWYWxpZCA9IG90aGVyLm1faXNWYWxpZDsKKyAgICAgICAgb3RoZXIubV9pc1ZhbGlkID0gZmFs
c2U7CisgICAgICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IG90aGVyLm1fcHJvdG9jb2xJ
c0luSFRUUEZhbWlseTsKKyAgICAgICAgbV9oYXNPcGFxdWVQYXRoID0gb3RoZXIubV9oYXNPcGFx
dWVQYXRoOworICAgICAgICBtX3BvcnRMZW5ndGggPSBvdGhlci5tX3BvcnRMZW5ndGg7CisgICAg
ICAgIG1fc2NoZW1lRW5kID0gb3RoZXIubV9zY2hlbWVFbmQ7CisgICAgICAgIG1fdXNlclN0YXJ0
ID0gb3RoZXIubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXNlckVuZCA9IG90aGVyLm1fdXNlckVu
ZDsKKyAgICAgICAgbV9wYXNzd29yZEVuZCA9IG90aGVyLm1fcGFzc3dvcmRFbmQ7CisgICAgICAg
IG1faG9zdEVuZCA9IG90aGVyLm1faG9zdEVuZDsKKyAgICAgICAgbV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPSBvdGhlci5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgbV9wYXRoRW5kID0gb3Ro
ZXIubV9wYXRoRW5kOworICAgICAgICBtX3F1ZXJ5RW5kID0gb3RoZXIubV9xdWVyeUVuZDsKKwor
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCiAgICAgLy8gUmVzb2x2ZXMgdGhlIHJlbGF0
aXZlIFVSTCB3aXRoIHRoZSBnaXZlbiBiYXNlIFVSTC4gSWYgcHJvdmlkZWQsIHRoZQogICAgIC8v
IFVSTFRleHRFbmNvZGluZyBpcyB1c2VkIHRvIGVuY29kZSBub24tQVNDSUkgY2hhcmFjdGVycy4g
VGhlIGJhc2UgVVJMIGNhbiBiZQogICAgIC8vIG51bGwgb3IgZW1wdHksIGluIHdoaWNoIGNhc2Ug
dGhlIHJlbGF0aXZlIFVSTCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFic29sdXRlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggNDIxM2VhNDc5ZjExLi5mYjViMDc0M2YzMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtNTE5LDYgKzUxOSw5IEBAIHVwY29udmVy
dDoKIAogc3RhdGljIGlubGluZSBib29sIG5lZWRzVHVya2lzaENhc2luZ1J1bGVzKGNvbnN0IEF0
b21TdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCiB7CisgICAgaWYgKGxvY2FsZUlkZW50aWZpZXIu
bGVuZ3RoKCkgPCAyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAvLyBFaXRoZXIgInRy
IiBvciAiYXoiIGxvY2FsZSwgd2l0aCBjYXNlIHNlbnNpdGl2ZSBjb21wYXJpc29uIGFuZCBhbGxv
d2luZyBmb3IgYW4gaWdub3JlZCBzdWJ0YWcuCiAgICAgVUNoYXIgZmlyc3QgPSBsb2NhbGVJZGVu
dGlmaWVyWzBdOwogICAgIFVDaGFyIHNlY29uZCA9IGxvY2FsZUlkZW50aWZpZXJbMV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IGUwMGNjYzhjMjliNC4uOTdlOTBmZTk0NDFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMTE2Myw3ICsxMTYzLDcgQEAgaW5saW5lIHZvaWQg
U3RyaW5nSW1wbDo6ZGVyZWYoKQogCiBpbmxpbmUgVUNoYXIgU3RyaW5nSW1wbDo6YXQodW5zaWdu
ZWQgaSkgY29uc3QKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwg
bV9sZW5ndGgpOworICAgIFJFTEVBU0VfQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgcmV0dXJu
IGlzOEJpdCgpID8gbV9kYXRhOFtpXSA6IG1fZGF0YTE2W2ldOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaAppbmRleCBiYjVhMzc1NTNhODMuLmE0ZTAxZDgzNWE3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCkBAIC00NDQsOCArNDQ0LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgY29uc3QgVUNo
YXIqIFN0cmluZzo6Y2hhcmFjdGVyczxVQ2hhcj4oKSBjb25zdAogCiBpbmxpbmUgVUNoYXIgU3Ry
aW5nOjpjaGFyYWN0ZXJBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1w
bCB8fCBpbmRleCA+PSBtX2ltcGwtPmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBS
RUxFQVNFX0FTU0VSVChtX2ltcGwpOwogICAgIHJldHVybiAoKm1faW1wbClbaW5kZXhdOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCBkNjBkZDQ3ZmQ5MDYuLmM1YTZiY2RhODRiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCkBAIC0xMTQ5LDcgKzExNDksMTEgQEAgUG9zaXRpb24g
UG9zaXRpb246OmxlYWRpbmdXaGl0ZXNwYWNlUG9zaXRpb24oQWZmaW5pdHkgYWZmaW5pdHksIGJv
b2wgY29uc2lkZXJOb24KICAgICBSZWZQdHIgbm9kZSA9IGRlcHJlY2F0ZWROb2RlKCk7CiAgICAg
UmVmUHRyIHByZXZpb3VzTm9kZSA9IHByZXYuZGVwcmVjYXRlZE5vZGUoKTsKICAgICBpZiAocHJl
diAhPSAqdGhpcyAmJiBpblNhbWVFbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KG5vZGUuZ2V0KCks
IHByZXZpb3VzTm9kZS5nZXQoKSkgJiYgaXM8VGV4dD4oKnByZXZpb3VzTm9kZSkpIHsKLSAgICAg
ICAgVUNoYXIgYyA9IGRvd25jYXN0PFRleHQ+KCpwcmV2aW91c05vZGUpLmRhdGEoKVtwcmV2LmRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCldOworICAgICAgICBhdXRvIG9mZnNldCA9IHByZXYuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKKyAgICAgICAgYXV0byYgcHJldmlvdXNOb2RlVGV4dCA9
IGRvd25jYXN0PFRleHQ+KCpwcmV2aW91c05vZGUpLmRhdGEoKTsKKyAgICAgICAgaWYgKG9mZnNl
dCA8IDAgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG9mZnNldCkgPj0gcHJldmlvdXNOb2RlVGV4
dC5sZW5ndGgoKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIFVDaGFyIGMgPSBw
cmV2aW91c05vZGVUZXh0W29mZnNldF07CiAgICAgICAgIGlmIChjb25zaWRlck5vbkNvbGxhcHNp
YmxlV2hpdGVzcGFjZSA/IChpc0FTQ0lJV2hpdGVzcGFjZShjKSB8fCBjID09IG5vQnJlYWtTcGFj
ZSkgOiBkZXByZWNhdGVkSXNDb2xsYXBzaWJsZVdoaXRlc3BhY2UoYykpIHsKICAgICAgICAgICAg
IGlmIChpc0VkaXRhYmxlUG9zaXRpb24ocHJldikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHBy
ZXY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
CmluZGV4IGYxOWYxODViOTZlNi4uYWQ5ODgyMDM2ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtOTI4LDkgKzkyOCwxMiBAQCB2
b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZWJhbGFuY2VXaGl0ZXNwYWNlQXQoY29uc3QgUG9z
aXRpb24mIHBvc2l0aW9uKQogICAgIC8vIElmIHRoZSByZWJhbGFuY2UgaXMgZm9yIHRoZSBzaW5n
bGUgb2Zmc2V0LCBhbmQgbmVpdGhlciB0ZXh0W29mZnNldF0gbm9yIHRleHRbb2Zmc2V0IC0gMV0g
YXJlIHNvbWUgZm9ybSBvZiB3aGl0ZXNwYWNlLCBkbyBub3RoaW5nLgogICAgIGludCBvZmZzZXQg
PSBwb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogICAgIFN0cmluZyB0ZXh0ID0g
dGV4dE5vZGUtPmRhdGEoKTsKLSAgICBpZiAoIWRlcHJlY2F0ZWRJc0VkaXRpbmdXaGl0ZXNwYWNl
KHRleHRbb2Zmc2V0XSkpIHsKKyAgICBpZiAob2Zmc2V0IDwgMCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihvZmZzZXQpID49IHRleHQubGVuZ3RoKCkg
fHwgIWRlcHJlY2F0ZWRJc0VkaXRpbmdXaGl0ZXNwYWNlKHRleHRbb2Zmc2V0XSkpIHsKICAgICAg
ICAgb2Zmc2V0LS07Ci0gICAgICAgIGlmIChvZmZzZXQgPCAwIHx8ICFkZXByZWNhdGVkSXNFZGl0
aW5nV2hpdGVzcGFjZSh0ZXh0W29mZnNldF0pKQorICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ob2Zmc2V0KSA+PSB0ZXh0Lmxlbmd0aCgpIHx8ICFkZXByZWNh
dGVkSXNFZGl0aW5nV2hpdGVzcGFjZSh0ZXh0W29mZnNldF0pKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXgg
MmExZDUzNGFlNWIyLi4xNDg4ZWY3ZWJlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcApAQCAtNDA5LDYgKzQwOSw5IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVGb3Jl
Q29sb3IoTG9jYWxGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3Vy
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVGb3JtYXRCbG9jayhMb2NhbEZyYW1lJiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogeworICAgIGlm
ICh2YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIFN0cmluZyBs
b3dlcmNhc2VWYWx1ZSA9IHZhbHVlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAgICAgQXRv
bVN0cmluZyB0YWdOYW1lOwogICAgIGlmIChsb3dlcmNhc2VWYWx1ZVswXSA9PSAnPCcgJiYgbG93
ZXJjYXNlVmFsdWVbbG93ZXJjYXNlVmFsdWUubGVuZ3RoKCkgLSAxXSA9PSAnPicpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCA5OGI5MDY0ZDQwOTcuLjgyMTVk
MGI3MzIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC04
MDQsNyArODA0LDcgQEAgYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojppc1NlcnZlck1hcCgpIGNvbnN0
CiAgICAgY29uc3QgQXRvbVN0cmluZyYgdXNlbWFwID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbih1c2VtYXBBdHRyKTsKIAogICAgIC8vIElmIHRoZSB1c2VtYXAgYXR0cmlidXRlIHN0
YXJ0cyB3aXRoICcjJywgaXQgcmVmZXJzIHRvIGEgbWFwIGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50
LgotICAgIGlmICh1c2VtYXAuc3RyaW5nKClbMF0gPT0gJyMnKQorICAgIGlmICghdXNlbWFwLmlz
RW1wdHkoKSAmJiB1c2VtYXAuc3RyaW5nKClbMF0gPT0gJyMnKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1c2VtYXApLmlzRW1wdHko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKaW5kZXggMWU3OTYwMzg2Nzc0
Li42Y2MzM2I1NDQxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCkBA
IC0xMDEsNyArMTAxLDcgQEAgdm9pZCBIVE1MTWFwRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW4KICAgICAgICAgaWYgKGlz
SW5UcmVlU2NvcGUoKSkKICAgICAgICAgICAgIHRyZWVTY29wZSgpLnJlbW92ZUltYWdlTWFwKCp0
aGlzKTsKICAgICAgICAgQXRvbVN0cmluZyBtYXBOYW1lID0gbmV3VmFsdWU7Ci0gICAgICAgIGlm
IChtYXBOYW1lWzBdID09ICcjJykKKyAgICAgICAgaWYgKCFtYXBOYW1lLmlzRW1wdHkoKSAmJiBt
YXBOYW1lWzBdID09ICcjJykKICAgICAgICAgICAgIG1hcE5hbWUgPSBTdHJpbmdWaWV3KG1hcE5h
bWUpLnN1YnN0cmluZygxKS50b0F0b21TdHJpbmcoKTsKICAgICAgICAgbV9uYW1lID0gV1RGTW92
ZShtYXBOYW1lKTsKICAgICAgICAgaWYgKGlzSW5UcmVlU2NvcGUoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQu
Y3BwCmluZGV4IDRmNTE0MzIyNmRmNi4uZWIzOGUwY2U1ODBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5j
cHAKQEAgLTE3OSw2ICsxNzksOSBAQCB2b2lkIERhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudDo6
aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZQogCiAgICAgYXV0
byBjaGFyQ29kZSA9IHN0YXRpY19jYXN0PFVDaGFyPihrZXlib2FyZEV2ZW50LmNoYXJDb2RlKCkp
OwogICAgIFN0cmluZyBudW1iZXIgPSBsb2NhbGVGb3JPd25lcigpLmNvbnZlcnRGcm9tTG9jYWxp
emVkTnVtYmVyKFN0cmluZygmY2hhckNvZGUsIDEpKTsKKyAgICBpZiAobnVtYmVyLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaW50IGRpZ2l0ID0gbnVtYmVyWzBdIC0gJzAnOwog
ICAgIGlmIChkaWdpdCA8IDAgfHwgZGlnaXQgPiA5KQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IDk2MGQx
NzlmZmZmMC4uYmNjYTY2MWJkYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtMTI1LDYgKzEyNSw4IEBAIGJvb2wgaXNWYWxpZFJl
YXNvblBocmFzZShjb25zdCBTdHJpbmcmIHZhbHVlKQogLy8gU2VlIGh0dHBzOi8vZmV0Y2guc3Bl
Yy53aGF0d2cub3JnLyNjb25jZXB0LWhlYWRlcgogYm9vbCBpc1ZhbGlkSFRUUEhlYWRlclZhbHVl
KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CisgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgVUNoYXIgYyA9IHZhbHVlWzBdOwogICAgIGlmIChpc1RhYk9y
U3BhY2UoYykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
</data>
<flag name="commit-queue"
          id="495241"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>468322</attachid>
            <date>2023-10-24 13:22:01 -0700</date>
            <delta_ts>2023-10-24 18:28:00 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>StringImpl_safe_indexing5.patch</filename>
            <type>text/plain</type>
            <size>13322</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oIGIvU291cmNlL1dURi93dGYvVVJMLmgK
aW5kZXggZDNlYjI3NmRhNDc2Li45ZmZlOGViNDc0MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1VSTC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5oCkBAIC02MCw2ICs2MCw0NyBAQCBw
dWJsaWM6CiAgICAgZXhwbGljaXQgVVJMKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOwogICAg
IGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5p
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKKyAgICBVUkwoY29uc3QgVVJMJikgPSBkZWZh
dWx0OworICAgIFVSTCYgb3BlcmF0b3I9KGNvbnN0IFVSTCYpID0gZGVmYXVsdDsKKworICAgIFVS
TChVUkwmJiBvdGhlcikKKyAgICAgICAgOiBtX3N0cmluZyhvdGhlci5tX3N0cmluZykKKyAgICAg
ICAgLCBtX2lzVmFsaWQob3RoZXIubV9pc1ZhbGlkKQorICAgICAgICAsIG1fcHJvdG9jb2xJc0lu
SFRUUEZhbWlseShvdGhlci5tX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkpCisgICAgICAgICwgbV9o
YXNPcGFxdWVQYXRoKG90aGVyLm1faGFzT3BhcXVlUGF0aCkKKyAgICAgICAgLCBtX3BvcnRMZW5n
dGgob3RoZXIubV9wb3J0TGVuZ3RoKQorICAgICAgICAsIG1fc2NoZW1lRW5kKG90aGVyLm1fc2No
ZW1lRW5kKQorICAgICAgICAsIG1fdXNlclN0YXJ0KG90aGVyLm1fdXNlclN0YXJ0KQorICAgICAg
ICAsIG1fdXNlckVuZChvdGhlci5tX3VzZXJFbmQpCisgICAgICAgICwgbV9wYXNzd29yZEVuZChv
dGhlci5tX3Bhc3N3b3JkRW5kKQorICAgICAgICAsIG1faG9zdEVuZChvdGhlci5tX2hvc3RFbmQp
CisgICAgICAgICwgbV9wYXRoQWZ0ZXJMYXN0U2xhc2gob3RoZXIubV9wYXRoQWZ0ZXJMYXN0U2xh
c2gpCisgICAgICAgICwgbV9wYXRoRW5kKG90aGVyLm1fcGF0aEVuZCkKKyAgICAgICAgLCBtX3F1
ZXJ5RW5kKG90aGVyLm1fcXVlcnlFbmQpCisgICAgeworICAgICAgICBvdGhlci5tX2lzVmFsaWQg
PSBmYWxzZTsKKyAgICB9CisKKyAgICBVUkwmIG9wZXJhdG9yPShVUkwmJiBvdGhlcikKKyAgICB7
CisgICAgICAgIG1fc3RyaW5nID0gV1RGTW92ZShvdGhlci5tX3N0cmluZyk7CisgICAgICAgIG1f
aXNWYWxpZCA9IG90aGVyLm1faXNWYWxpZDsKKyAgICAgICAgb3RoZXIubV9pc1ZhbGlkID0gZmFs
c2U7CisgICAgICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IG90aGVyLm1fcHJvdG9jb2xJ
c0luSFRUUEZhbWlseTsKKyAgICAgICAgbV9oYXNPcGFxdWVQYXRoID0gb3RoZXIubV9oYXNPcGFx
dWVQYXRoOworICAgICAgICBtX3BvcnRMZW5ndGggPSBvdGhlci5tX3BvcnRMZW5ndGg7CisgICAg
ICAgIG1fc2NoZW1lRW5kID0gb3RoZXIubV9zY2hlbWVFbmQ7CisgICAgICAgIG1fdXNlclN0YXJ0
ID0gb3RoZXIubV91c2VyU3RhcnQ7CisgICAgICAgIG1fdXNlckVuZCA9IG90aGVyLm1fdXNlckVu
ZDsKKyAgICAgICAgbV9wYXNzd29yZEVuZCA9IG90aGVyLm1fcGFzc3dvcmRFbmQ7CisgICAgICAg
IG1faG9zdEVuZCA9IG90aGVyLm1faG9zdEVuZDsKKyAgICAgICAgbV9wYXRoQWZ0ZXJMYXN0U2xh
c2ggPSBvdGhlci5tX3BhdGhBZnRlckxhc3RTbGFzaDsKKyAgICAgICAgbV9wYXRoRW5kID0gb3Ro
ZXIubV9wYXRoRW5kOworICAgICAgICBtX3F1ZXJ5RW5kID0gb3RoZXIubV9xdWVyeUVuZDsKKwor
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCiAgICAgLy8gUmVzb2x2ZXMgdGhlIHJlbGF0
aXZlIFVSTCB3aXRoIHRoZSBnaXZlbiBiYXNlIFVSTC4gSWYgcHJvdmlkZWQsIHRoZQogICAgIC8v
IFVSTFRleHRFbmNvZGluZyBpcyB1c2VkIHRvIGVuY29kZSBub24tQVNDSUkgY2hhcmFjdGVycy4g
VGhlIGJhc2UgVVJMIGNhbiBiZQogICAgIC8vIG51bGwgb3IgZW1wdHksIGluIHdoaWNoIGNhc2Ug
dGhlIHJlbGF0aXZlIFVSTCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFic29sdXRlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggNDIxM2VhNDc5ZjExLi5mYjViMDc0M2YzMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtNTE5LDYgKzUxOSw5IEBAIHVwY29udmVy
dDoKIAogc3RhdGljIGlubGluZSBib29sIG5lZWRzVHVya2lzaENhc2luZ1J1bGVzKGNvbnN0IEF0
b21TdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCiB7CisgICAgaWYgKGxvY2FsZUlkZW50aWZpZXIu
bGVuZ3RoKCkgPCAyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAvLyBFaXRoZXIgInRy
IiBvciAiYXoiIGxvY2FsZSwgd2l0aCBjYXNlIHNlbnNpdGl2ZSBjb21wYXJpc29uIGFuZCBhbGxv
d2luZyBmb3IgYW4gaWdub3JlZCBzdWJ0YWcuCiAgICAgVUNoYXIgZmlyc3QgPSBsb2NhbGVJZGVu
dGlmaWVyWzBdOwogICAgIFVDaGFyIHNlY29uZCA9IGxvY2FsZUlkZW50aWZpZXJbMV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IGUwMGNjYzhjMjliNC4uOTdlOTBmZTk0NDFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMTE2Myw3ICsxMTYzLDcgQEAgaW5saW5lIHZvaWQg
U3RyaW5nSW1wbDo6ZGVyZWYoKQogCiBpbmxpbmUgVUNoYXIgU3RyaW5nSW1wbDo6YXQodW5zaWdu
ZWQgaSkgY29uc3QKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwg
bV9sZW5ndGgpOworICAgIFJFTEVBU0VfQVNTRVJUKGkgPCBtX2xlbmd0aCk7CiAgICAgcmV0dXJu
IGlzOEJpdCgpID8gbV9kYXRhOFtpXSA6IG1fZGF0YTE2W2ldOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaAppbmRleCBiYjVhMzc1NTNhODMuLmE0ZTAxZDgzNWE3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCkBAIC00NDQsOCArNDQ0LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgY29uc3QgVUNo
YXIqIFN0cmluZzo6Y2hhcmFjdGVyczxVQ2hhcj4oKSBjb25zdAogCiBpbmxpbmUgVUNoYXIgU3Ry
aW5nOjpjaGFyYWN0ZXJBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKLSAgICBpZiAoIW1faW1w
bCB8fCBpbmRleCA+PSBtX2ltcGwtPmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBS
RUxFQVNFX0FTU0VSVChtX2ltcGwpOwogICAgIHJldHVybiAoKm1faW1wbClbaW5kZXhdOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA2YTE4NjFkODlkYWMuLjhmNzI4Njc2NTFhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMzY0LDcgKzEzNjQsNyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNQb3RlbnRpYWxDdXN0b21FbGVtZW50TmFtZUNoYXJhY3RlcihVQ2hhcjMyIGNo
YXJhY3RlcikKIAogQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzIERvY3VtZW50Ojp2
YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkKIHsK
LSAgICBpZiAoIWlzQVNDSUlMb3dlcihsb2NhbE5hbWVbMF0pKQorICAgIGlmIChsb2NhbE5hbWUu
aXNFbXB0eSgpIHx8ICFpc0FTQ0lJTG93ZXIobG9jYWxOYW1lWzBdKSkKICAgICAgICAgcmV0dXJu
IEN1c3RvbUVsZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1czo6Rmlyc3RDaGFyYWN0ZXJJc05vdExv
d2VyY2FzZUFTQ0lJTGV0dGVyOwogCiAgICAgYm9vbCBjb250YWluc0h5cGhlbiA9IGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggZDYwZGQ0N2ZkOTA2Li5jNWE2YmNkYTg0YjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtMTE0OSw3ICsxMTQ5LDExIEBAIFBvc2l0aW9uIFBv
c2l0aW9uOjpsZWFkaW5nV2hpdGVzcGFjZVBvc2l0aW9uKEFmZmluaXR5IGFmZmluaXR5LCBib29s
IGNvbnNpZGVyTm9uCiAgICAgUmVmUHRyIG5vZGUgPSBkZXByZWNhdGVkTm9kZSgpOwogICAgIFJl
ZlB0ciBwcmV2aW91c05vZGUgPSBwcmV2LmRlcHJlY2F0ZWROb2RlKCk7CiAgICAgaWYgKHByZXYg
IT0gKnRoaXMgJiYgaW5TYW1lRW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudChub2RlLmdldCgpLCBw
cmV2aW91c05vZGUuZ2V0KCkpICYmIGlzPFRleHQ+KCpwcmV2aW91c05vZGUpKSB7Ci0gICAgICAg
IFVDaGFyIGMgPSBkb3duY2FzdDxUZXh0PigqcHJldmlvdXNOb2RlKS5kYXRhKClbcHJldi5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpXTsKKyAgICAgICAgYXV0byBvZmZzZXQgPSBwcmV2LmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CisgICAgICAgIGF1dG8mIHByZXZpb3VzTm9kZVRleHQgPSBk
b3duY2FzdDxUZXh0PigqcHJldmlvdXNOb2RlKS5kYXRhKCk7CisgICAgICAgIGlmIChvZmZzZXQg
PCAwIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihvZmZzZXQpID49IHByZXZpb3VzTm9kZVRleHQu
bGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBVQ2hhciBjID0gcHJl
dmlvdXNOb2RlVGV4dFtvZmZzZXRdOwogICAgICAgICBpZiAoY29uc2lkZXJOb25Db2xsYXBzaWJs
ZVdoaXRlc3BhY2UgPyAoaXNBU0NJSVdoaXRlc3BhY2UoYykgfHwgYyA9PSBub0JyZWFrU3BhY2Up
IDogZGVwcmVjYXRlZElzQ29sbGFwc2libGVXaGl0ZXNwYWNlKGMpKSB7CiAgICAgICAgICAgICBp
ZiAoaXNFZGl0YWJsZVBvc2l0aW9uKHByZXYpKQogICAgICAgICAgICAgICAgIHJldHVybiBwcmV2
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApp
bmRleCBmMTlmMTg1Yjk2ZTYuLmFkOTg4MjAzNmYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTkyOCw5ICs5MjgsMTIgQEAgdm9p
ZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmViYWxhbmNlV2hpdGVzcGFjZUF0KGNvbnN0IFBvc2l0
aW9uJiBwb3NpdGlvbikKICAgICAvLyBJZiB0aGUgcmViYWxhbmNlIGlzIGZvciB0aGUgc2luZ2xl
IG9mZnNldCwgYW5kIG5laXRoZXIgdGV4dFtvZmZzZXRdIG5vciB0ZXh0W29mZnNldCAtIDFdIGFy
ZSBzb21lIGZvcm0gb2Ygd2hpdGVzcGFjZSwgZG8gbm90aGluZy4KICAgICBpbnQgb2Zmc2V0ID0g
cG9zaXRpb24uZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICBTdHJpbmcgdGV4dCA9IHRl
eHROb2RlLT5kYXRhKCk7Ci0gICAgaWYgKCFkZXByZWNhdGVkSXNFZGl0aW5nV2hpdGVzcGFjZSh0
ZXh0W29mZnNldF0pKSB7CisgICAgaWYgKG9mZnNldCA8IDApCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob2Zmc2V0KSA+PSB0ZXh0Lmxlbmd0aCgpIHx8
ICFkZXByZWNhdGVkSXNFZGl0aW5nV2hpdGVzcGFjZSh0ZXh0W29mZnNldF0pKSB7CiAgICAgICAg
IG9mZnNldC0tOwotICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCAhZGVwcmVjYXRlZElzRWRpdGlu
Z1doaXRlc3BhY2UodGV4dFtvZmZzZXRdKSkKKyAgICAgICAgaWYgKG9mZnNldCA8IDAgfHwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG9mZnNldCkgPj0gdGV4dC5sZW5ndGgoKSB8fCAhZGVwcmVjYXRl
ZElzRWRpdGluZ1doaXRlc3BhY2UodGV4dFtvZmZzZXRdKSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDJh
MWQ1MzRhZTViMi4uMTQ4OGVmN2ViZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHAKQEAgLTQwOSw2ICs0MDksOSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRm9yZUNv
bG9yKExvY2FsRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cgog
CiBzdGF0aWMgYm9vbCBleGVjdXRlRm9ybWF0QmxvY2soTG9jYWxGcmFtZSYgZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKKyAgICBpZiAo
dmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBTdHJpbmcgbG93
ZXJjYXNlVmFsdWUgPSB2YWx1ZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgIEF0b21T
dHJpbmcgdGFnTmFtZTsKICAgICBpZiAobG93ZXJjYXNlVmFsdWVbMF0gPT0gJzwnICYmIGxvd2Vy
Y2FzZVZhbHVlW2xvd2VyY2FzZVZhbHVlLmxlbmd0aCgpIC0gMV0gPT0gJz4nKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggOThiOTA2NGQ0MDk3Li44NWU1MjIx
YjkwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtNjA4
LDcgKzYwOCw3IEBAIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3Qg
QXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHJpYnV0ZS5uYW1lKCkg
PT0gc3JjQXR0cgogICAgICAgICB8fCBhdHRyaWJ1dGUubmFtZSgpID09IGxvd3NyY0F0dHIKICAg
ICAgICAgfHwgYXR0cmlidXRlLm5hbWUoKSA9PSBsb25nZGVzY0F0dHIKLSAgICAgICAgfHwgKGF0
dHJpYnV0ZS5uYW1lKCkgPT0gdXNlbWFwQXR0ciAmJiBhdHRyaWJ1dGUudmFsdWUoKS5zdHJpbmco
KVswXSAhPSAnIycpCisgICAgICAgIHx8IChhdHRyaWJ1dGUubmFtZSgpID09IHVzZW1hcEF0dHIg
JiYgKGF0dHJpYnV0ZS52YWx1ZSgpLmlzRW1wdHkoKSB8fCBhdHRyaWJ1dGUudmFsdWUoKS5zdHJp
bmcoKVswXSAhPSAnIycpKQogICAgICAgICB8fCBIVE1MRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUo
YXR0cmlidXRlKTsKIH0KIApAQCAtODA0LDcgKzgwNCw3IEBAIGJvb2wgSFRNTEltYWdlRWxlbWVu
dDo6aXNTZXJ2ZXJNYXAoKSBjb25zdAogICAgIGNvbnN0IEF0b21TdHJpbmcmIHVzZW1hcCA9IGF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24odXNlbWFwQXR0cik7CiAKICAgICAvLyBJZiB0
aGUgdXNlbWFwIGF0dHJpYnV0ZSBzdGFydHMgd2l0aCAnIycsIGl0IHJlZmVycyB0byBhIG1hcCBl
bGVtZW50IGluIHRoZSBkb2N1bWVudC4KLSAgICBpZiAodXNlbWFwLnN0cmluZygpWzBdID09ICcj
JykKKyAgICBpZiAoIXVzZW1hcC5pc0VtcHR5KCkgJiYgdXNlbWFwLnN0cmluZygpWzBdID09ICcj
JykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIGRvY3VtZW50KCkuY29tcGxl
dGVVUkwodXNlbWFwKS5pc0VtcHR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNYXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQu
Y3BwCmluZGV4IDFlNzk2MDM4Njc3NC4uNmNjMzNiNTQ0MTBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNYXBFbGVtZW50LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgSFRNTE1hcEVsZW1l
bnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bVN0cmluCiAgICAgICAgIGlmIChpc0luVHJlZVNjb3BlKCkpCiAgICAgICAgICAgICB0cmVlU2Nv
cGUoKS5yZW1vdmVJbWFnZU1hcCgqdGhpcyk7CiAgICAgICAgIEF0b21TdHJpbmcgbWFwTmFtZSA9
IG5ld1ZhbHVlOwotICAgICAgICBpZiAobWFwTmFtZVswXSA9PSAnIycpCisgICAgICAgIGlmICgh
bWFwTmFtZS5pc0VtcHR5KCkgJiYgbWFwTmFtZVswXSA9PSAnIycpCiAgICAgICAgICAgICBtYXBO
YW1lID0gU3RyaW5nVmlldyhtYXBOYW1lKS5zdWJzdHJpbmcoMSkudG9BdG9tU3RyaW5nKCk7CiAg
ICAgICAgIG1fbmFtZSA9IFdURk1vdmUobWFwTmFtZSk7CiAgICAgICAgIGlmIChpc0luVHJlZVNj
b3BlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51
bWVyaWNGaWVsZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRp
bWVOdW1lcmljRmllbGRFbGVtZW50LmNwcAppbmRleCA0ZjUxNDMyMjZkZjYuLmViMzhlMGNlNTgw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmlj
RmllbGRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGlt
ZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwCkBAIC0xNzksNiArMTc5LDkgQEAgdm9pZCBEYXRlVGlt
ZU51bWVyaWNGaWVsZEVsZW1lbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYg
a2V5Ym9hcmRFdmUKIAogICAgIGF1dG8gY2hhckNvZGUgPSBzdGF0aWNfY2FzdDxVQ2hhcj4oa2V5
Ym9hcmRFdmVudC5jaGFyQ29kZSgpKTsKICAgICBTdHJpbmcgbnVtYmVyID0gbG9jYWxlRm9yT3du
ZXIoKS5jb252ZXJ0RnJvbUxvY2FsaXplZE51bWJlcihTdHJpbmcoJmNoYXJDb2RlLCAxKSk7Cisg
ICAgaWYgKG51bWJlci5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGludCBkaWdp
dCA9IG51bWJlclswXSAtICcwJzsKICAgICBpZiAoZGlnaXQgPCAwIHx8IGRpZ2l0ID4gOSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIu
Y3BwCmluZGV4IGY4Mzk4N2Q3ZGE0Ny4uYTc5ZGVjNGYzYjIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJl
YWtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCkBAIC00NDgsNyArNDQ4LDcgQEAgc3RkOjpv
cHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtlcjo6UGFydGlhbFJ1bj4gSW5saW5lQ29udGVudEJy
ZWFrZXI6OnRyeUJyZWFraW4KICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gd29yZEJyZWFr
ID0gbWlkV29yZEJyZWFrKGNhbmRpZGF0ZVJ1biwgY2FuZGlkYXRlVGV4dFJ1bi5sb2dpY2FsTGVm
dCwgYXZhaWxhYmxlV2lkdGgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnRp
YWxSdW4geyB3b3JkQnJlYWstPmxlbmd0aCwgd29yZEJyZWFrLT5sb2dpY2FsV2lkdGggfTsKICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGNhbkJyZWFrQmVmb3JlKGlubGlu
ZVRleHRJdGVtLmlubGluZVRleHRCb3goKS5jb250ZW50KClbaW5saW5lVGV4dEl0ZW0uc3RhcnQo
KV0sIHN0eWxlLmxpbmVCcmVhaygpKSkKKyAgICAgICAgICAgICAgICBpZiAoaW5saW5lVGV4dEl0
ZW0uc3RhcnQoKSA+PSBpbmxpbmVUZXh0SXRlbS5pbmxpbmVUZXh0Qm94KCkuY29udGVudCgpLmxl
bmd0aCgpIHx8IGNhbkJyZWFrQmVmb3JlKGlubGluZVRleHRJdGVtLmlubGluZVRleHRCb3goKS5j
b250ZW50KClbaW5saW5lVGV4dEl0ZW0uc3RhcnQoKV0sIHN0eWxlLmxpbmVCcmVhaygpKSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFBhcnRpYWxSdW4geyB9OwogICAgICAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGlzIGlzIGFuIG92ZXJmbG93
aW5nIGNvbnRlbnQgYW5kIHdlIGFyZSBhbGxvd2VkIHRvIGJyZWFrIGF0IGFyYml0cmFyeSBwb3Np
dGlvbiwgd2UgcmVhbGx5IG91Z2h0IHRvIGZpbmQgYSBicmVha2luZyBwb3NpdGlvbi4KQEAgLTQ2
Myw3ICs0NjMsNyBAQCBzdGQ6Om9wdGlvbmFsPElubGluZUNvbnRlbnRCcmVha2VyOjpQYXJ0aWFs
UnVuPiBJbmxpbmVDb250ZW50QnJlYWtlcjo6dHJ5QnJlYWtpbgogICAgICAgICAgICAgICAgICAg
ICAgICAgVTE2X1NFVF9DUF9TVEFSVCh0ZXh0LCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB3aGlsZSAocmlnaHQgPCBpbmxpbmVUZXh0SXRlbS5lbmQoKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFUxNl9GV0RfMSh0ZXh0LCByaWdodCwgaW5saW5lVGV4dEl0
ZW0ubGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5CcmVha0Jl
Zm9yZSh0ZXh0W3JpZ2h0XSwgc3R5bGUubGluZUJyZWFrKCkpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHJpZ2h0ID49IHRleHQubGVuZ3RoKCkgfHwgY2FuQnJlYWtCZWZvcmUo
dGV4dFtyaWdodF0sIHN0eWxlLmxpbmVCcmVhaygpKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAocmlnaHQgPT0gaW5saW5lVGV4dEl0ZW0uZW5kKCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gVGV4dFV0aWw6OldvcmRCcmVha0xlZnQgeyByaWdodCAtIGxl
ZnQsIFRleHRVdGlsOjp3aWR0aChpbmxpbmVUZXh0SXRlbSwgc3R5bGUuZm9udENhc2NhZGUoKSwg
bGVmdCwgcmlnaHQsIGNhbmRpZGF0ZVRleHRSdW4ubG9naWNhbExlZnQpIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IDk2MGQxNzlm
ZmZmMC4uYmNjYTY2MWJkYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtMTI1LDYgKzEyNSw4IEBAIGJvb2wgaXNWYWxpZFJlYXNv
blBocmFzZShjb25zdCBTdHJpbmcmIHZhbHVlKQogLy8gU2VlIGh0dHBzOi8vZmV0Y2guc3BlYy53
aGF0d2cub3JnLyNjb25jZXB0LWhlYWRlcgogYm9vbCBpc1ZhbGlkSFRUUEhlYWRlclZhbHVlKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7CisgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgVUNoYXIgYyA9IHZhbHVlWzBdOwogICAgIGlmIChpc1RhYk9yU3Bh
Y2UoYykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCA3MmVlZGJlZDA4NzYuLjNmZTBlY2JkODJlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAt
NDI2LDcgKzQyNiw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6dXBkYXRlQ29udGVudCgpCiAg
ICAgICAgIG1fdGV4dFdpdGhTdWZmaXggPSBzdHlsZVR5cGUuaWRlbnRpZmllcjsKICAgICAgICAg
bV90ZXh0V2l0aG91dFN1ZmZpeExlbmd0aCA9IG1fdGV4dFdpdGhTdWZmaXgubGVuZ3RoKCk7CiAg
ICAgICAgIC8vIEZJWE1FOiBEZXBlbmRpbmcgb24gdGhlIHN0cmluZyB2YWx1ZSwgd2UgbWF5IG5l
ZWQgdGhlIHJlYWwgYmlkaSBhbGdvcml0aG0uIChyZGFyOi8vMTA2MTM5MTgwKQotICAgICAgICBt
X3RleHRJc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID0gdV9jaGFyRGlyZWN0aW9uKG1fdGV4dFdpdGhT
dWZmaXhbMF0pICE9IFVfUklHSFRfVE9fTEVGVDsKKyAgICAgICAgbV90ZXh0SXNMZWZ0VG9SaWdo
dERpcmVjdGlvbiA9IG1fdGV4dFdpdGhTdWZmaXguaXNFbXB0eSgpIHx8IHVfY2hhckRpcmVjdGlv
bihtX3RleHRXaXRoU3VmZml4WzBdKSAhPSBVX1JJR0hUX1RPX0xFRlQ7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTGlzdFN0eWxlVHlwZTo6VHlwZTo6Q291bnRlclN0eWxlOiB7CiAgICAgICAg
IGF1dG8gY291bnRlciA9IGNvdW50ZXJTdHlsZSgpOwpAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQg
UmVuZGVyTGlzdE1hcmtlcjo6dXBkYXRlQ29udGVudCgpCiAgICAgICAgIGF1dG8gdGV4dCA9IG1h
a2VTdHJpbmcoY291bnRlci0+cHJlZml4KCkudGV4dCwgY291bnRlci0+dGV4dChtX2xpc3RJdGVt
LT52YWx1ZSgpKSk7CiAgICAgICAgIG1fdGV4dFdpdGhTdWZmaXggPSBtYWtlU3RyaW5nKHRleHQs
IGNvdW50ZXItPnN1ZmZpeCgpLnRleHQpOwogICAgICAgICBtX3RleHRXaXRob3V0U3VmZml4TGVu
Z3RoID0gdGV4dC5sZW5ndGgoKTsKLSAgICAgICAgbV90ZXh0SXNMZWZ0VG9SaWdodERpcmVjdGlv
biA9IHVfY2hhckRpcmVjdGlvbih0ZXh0WzBdKSAhPSBVX1JJR0hUX1RPX0xFRlQ7CisgICAgICAg
IG1fdGV4dElzTGVmdFRvUmlnaHREaXJlY3Rpb24gPSB0ZXh0LmlzRW1wdHkoKSB8fCB1X2NoYXJE
aXJlY3Rpb24odGV4dFswXSkgIT0gVV9SSUdIVF9UT19MRUZUOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBMaXN0U3R5bGVUeXBlOjpUeXBlOjpOb25lOgo=
</data>
<flag name="commit-queue"
          id="495244"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>