<?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>33558</bug_id>
          
          <creation_ts>2010-01-12 16:24:12 -0800</creation_ts>
          <short_desc>[Android] JavaString uses JSC-specific types</short_desc>
          <delta_ts>2025-07-11 19:55:13 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Android</rep_platform>
          <op_sys>Android</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>32154</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Steve Block">steveblock</assigned_to>
          <cc>android-webkit-unforking</cc>
    
    <cc>denisewatson11101</cc>
    
    <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>180024</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-12 16:24:12 -0800</bug_when>
    <thetext>JavaString, defined in WebCore/bridge/jni/jni_runtime.h, uses JSC-specific types. This causes problems on Android, where we can build with JSC or V8. See Bug 32154, which this bug blocks.

The code should re-factored to separate the JSC-specific internals from the script-independent code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180034</commentid>
    <comment_count>1</comment_count>
      <attachid>46412</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-12 16:42:44 -0800</bug_when>
    <thetext>Created attachment 46412
Patch 1 for Bug 33558

This moves the JSC-specific implementation of JavaString to a private implementation class. A later change will add the V8 equivalent. Also modifies JavaField::name and JavaMethod::name to return const JavaString&amp;, rather than UString::Rep*, which is JSC-specific.

Note that JavaString retains one JSC-specific method, operator UString. This is required for JSC only to allow UString::rep to be used to represent the JavaString. To avoid this anomaly, we could move the entire JavaString class to JSC and V8-specific files, but this means losing the sharing of code between the two.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181849</commentid>
    <comment_count>2</comment_count>
      <attachid>46815</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-18 06:14:35 -0800</bug_when>
    <thetext>Created attachment 46815
Patch 2 for Bug 33558

Corrects naming of JavaStringJSC.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181910</commentid>
    <comment_count>3</comment_count>
      <attachid>46815</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-18 10:01:04 -0800</bug_when>
    <thetext>Comment on attachment 46815
Patch 2 for Bug 33558

Ok.  I&apos;m sad about the c-style casts, but I see that they were there in the original.  Also, there are style errors in the old code, but that&apos;s probably not worth worrying about at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182094</commentid>
    <comment_count>4</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-01-18 18:58:41 -0800</bug_when>
    <thetext>Landed manually as http://trac.webkit.org/changeset/53449

Will fix style errors in existing code with a later patch

Closing bug as resolved</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2129529</commentid>
    <comment_count>5</comment_count>
    <who name="Orrin Herzog">denisewatson11101</who>
    <bug_when>2025-07-11 19:54:05 -0700</bug_when>
    <thetext>Java String provides safe locking options so that this level of security does not fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2129530</commentid>
    <comment_count>6</comment_count>
    <who name="Orrin Herzog">denisewatson11101</who>
    <bug_when>2025-07-11 19:55:13 -0700</bug_when>
    <thetext>Keep it up and maybe in another context Java String will roll out some amazing features that never existed before. https://unoonlinefree.io/</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46412</attachid>
            <date>2010-01-12 16:42:44 -0800</date>
            <delta_ts>2010-01-18 06:14:35 -0800</delta_ts>
            <desc>Patch 1 for Bug 33558</desc>
            <filename>javaString.txt</filename>
            <type>text/plain</type>
            <size>13360</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzE2OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTAtMDEtMTIgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmVzIEpTQy1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiBKYXZhU3RyaW5nIHRvIGEgcHJp
dmF0ZSBpbXBsZW1lbnRhdGlvbiBjbGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMzNTU4CisgICAgCisgICAgICAgIEFsc28gbW9kaWZpZXMgSmF2
YUZpZWxkOjpuYW1lIGFuZCBKYXZhTWV0aG9kOjpuYW1lIHRvIHJldHVybiBjb25zdCBKYXZhU3Ry
aW5nJiwgcmF0aGVyIHRoYW4gVVN0cmluZzo6UmVwKiwKKyAgICAgICAgd2hpY2ggaXMgSlNDLXNw
ZWNpZmljLiAgVGhpcyBhbGxvd3MgdGhpcyBjb2RlIHRvIGJlIHVzZWQgd2l0aCBib3RoIEpTQyBh
bmQgQW5kcm9pZCwgYXMgcmVxdWlyZWQgYnkgQW5kcm9pZC4KKworICAgICAgICBObyBuZXcgdGVz
dHMsIHJlZmFjdG9yaW5nIG9ubHkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IE1vZGlmaWVkLiBBZGRlZCBqbmlfc3RyaW5nX2pzYy5oLgorICAgICAgICAq
IGJyaWRnZS9qbmkvam5pX2NsYXNzLmNwcDogTW9kaWZpZWQuCisgICAgICAgIChKYXZhQ2xhc3M6
OkphdmFDbGFzcyk6IE1vZGlmaWVkLiBVcGRhdGVzIGNhbGwgc2l0ZXMgb2YgSmF2YUZpZWxkOjpu
YW1lIGFuZCBKYXZhTWV0aG9kOjpuYW1lLgorICAgICAgICAqIGJyaWRnZS9qbmkvam5pX3J1bnRp
bWUuaDogTW9kaWZpZWQuCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpKYXZhU3RyaW5nOjpKYXZh
U3RyaW5nKTogTW9kaWZpZWQuIFBhc3MgdGhyb3VnaCB0byBpbXBsZW1lbnRhdGlvbi4KKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6OkphdmFTdHJpbmc6OlVURjhTdHJpbmcpOiBNb2RpZmllZC4gUGFz
cyB0aHJvdWdoIHRvIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SmF2
YVN0cmluZzo6dWNoYXJzKTogTW9kaWZpZWQuIFBhc3MgdGhyb3VnaCB0byBpbXBsZW1lbnRhdGlv
bi4KKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkphdmFTdHJpbmc6Omxlbmd0aCk6IE1vZGlmaWVk
LiBQYXNzIHRocm91Z2ggdG8gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpKYXZhU3RyaW5nOjpvcGVyYXRvciBVU3RyaW5nKTogTW9kaWZpZWQuIFBhc3MgdGhyb3VnaCB0
byBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkphdmFGaWVsZDo6bmFt
ZSk6IE1vZGlmaWVkLiBQYXNzIHRocm91Z2ggdG8gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpKYXZhTWV0aG9kOjpuYW1lKTogTW9kaWZpZWQuIFBhc3MgdGhyb3VnaCB0
byBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9qbmlfc3RyaW5nX2pz
Yy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkphdmFTdHJpbmdJbXBsOjp+SmF2
YVN0cmluZ0ltcGwpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SmF2YVN0cmluZ0ltcGw6Omlu
aXQpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SmF2YVN0cmluZ0ltcGw6OlVURjhTdHJpbmcp
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SmF2YVN0cmluZ0ltcGw6OnVjaGFycyk6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpKYXZhU3RyaW5nSW1wbDo6bGVuZ3RoKToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OkphdmFTdHJpbmdJbXBsOjp1U3RyaW5nKToKKwogMjAxMC0wMS0xMiAgQnJp
YW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGF2ZSBIeWF0dC4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiA1MzE2NSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTE3LDYgKzExMTcsNyBAQAogCQk1OTlE
MUUzMzEwQzk3RDZFMDBFMEVGMTIgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk5RDFFMzExMEM5N0Q2RTAwRTBF
RjEyIC8qIGpuaV91dGlsaXR5X3ByaXZhdGUuaCAqLzsgfTsKIAkJNTlDNzdGMkExMDU0NUIzQjAw
NTA2MTA0IC8qIEdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlDNzdGMjgxMDU0NUIzQjAwNTA2MTA0IC8qIEdl
b2xvY2F0aW9uU2VydmljZU1vY2suY3BwICovOyB9OwogCQk1OUM3N0YyQjEwNTQ1QjNCMDA1MDYx
MDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTlDNzdGMjkxMDU0NUIzQjAwNTA2MTA0IC8qIEdlb2xvY2F0
aW9uU2VydmljZU1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk1OUNDNTI0QTEwRkQ0Njc3MDBFRjJFQkUgLyogam5pX3N0cmluZ19qc2MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5Q0M1MjQ5MTBG
RDQ2NzcwMEVGMkVCRSAvKiBqbmlfc3RyaW5nX2pzYy5oICovOyB9OwogCQk1RDE1RTNBQjBGOUU2
QUMxMDA5RTBFM0YgLyogWE1MVG9rZW5pemVyU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQxNUUzQTkwRjlFNkFDMTAwOUUwRTNGIC8qIFhN
TFRva2VuaXplclNjb3BlLmNwcCAqLzsgfTsKIAkJNUQxNUUzQUMwRjlFNkFDMTAwOUUwRTNGIC8q
IFhNTFRva2VuaXplclNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1RDE1RTNBQTBGOUU2QUMxMDA5RTBFM0YgLyogWE1MVG9rZW5pemVyU2NvcGUu
aCAqLzsgfTsKIAkJNUQ4NzRGMTMwRDE2MUQzMjAwNzk2QzNCIC8qIE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzRTIyN0REMEFGNTg5QUQwMEQ0ODMyNCAvKiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5jcHAgKi87IH07CkBAIC02NDYwLDYgKzY0NjEsNyBAQAogCQk1OTlEMUUzMTEwQzk3RDZFMDBF
MEVGMTIgLyogam5pX3V0aWxpdHlfcHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBqbmlfdXRpbGl0eV9wcml2YXRlLmg7IHBhdGggPSBqc2Mvam5pX3V0aWxpdHlfcHJp
dmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OUM3N0YyODEwNTQ1QjNCMDA1
MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNwcDsgcGF0aCA9IG1vY2sv
R2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU5Qzc3RjI5MTA1NDVCM0IwMDUwNjEwNCAvKiBHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdlb2xvY2F0aW9uU2VydmljZU1vY2suaDsg
cGF0aCA9IG1vY2svR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1OUNDNTI0OTEwRkQ0Njc3MDBFRjJFQkUgLyogam5pX3N0cmluZ19qc2MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gam5pX3N0cmluZ19qc2MuaDsgcGF0aCA9
IGpzYy9qbmlfc3RyaW5nX2pzYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDE1
RTNBOTBGOUU2QUMxMDA5RTBFM0YgLyogWE1MVG9rZW5pemVyU2NvcGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MVG9rZW5pemVyU2NvcGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1RDE1RTNBQTBGOUU2QUMxMDA5RTBFM0YgLyogWE1MVG9r
ZW5pemVyU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1MVG9rZW5p
emVyU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ5MjVCNjUwRjY0RDRE
RDAwQjg0N0YwIC8qIFNjcm9sbEJlaGF2aW9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNjcm9sbEJlaGF2aW9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTExMDM4LDYgKzExMDQwLDcgQEAKIAkJNTk5RDFFMkYxMEM5N0Q0QzAwRTBFRjEyIC8q
IGpzYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTlD
QzUyNDkxMEZENDY3NzAwRUYyRUJFIC8qIGpuaV9zdHJpbmdfanNjLmggKi8sCiAJCQkJNTk5RDFF
MzAxMEM5N0Q2RTAwRTBFRjEyIC8qIGpuaV91dGlsaXR5X3ByaXZhdGUuY3BwICovLAogCQkJCTU5
OUQxRTMxMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9wcml2YXRlLmggKi8sCiAJCQkp
OwpAQCAtMTgzMjUsNiArMTgzMjgsNyBAQAogCQkJCTBGNUI3QTU1MTBGNjVEN0EwMDM3NjMwMiAv
KiBSZW5kZXJFbWJlZGRlZE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U0QzAwRTYxMEY2
RjdDMTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA4N0Q5N0JGMTBGQjhENzcwMEMwMDg3NCAvKiBKU1NWR1BPRExpc3RDdXN0b20uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTU5Q0M1MjRBMTBGRDQ2NzcwMEVGMkVCRSAvKiBqbmlfc3RyaW5nX2pzYy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2NsYXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2NsYXNzLmNwcAkocmV2aXNpb24g
NTMxNjUpCisrKyBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2NsYXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjEsNyArNjEsNyBAQCBKYXZhQ2xhc3M6OkphdmFDbGFzcyhqb2JqZWN0IGFuSW5zdGFu
Y2UpCiAgICAgICAgIEphdmFGaWVsZCAqYUZpZWxkID0gbmV3IEphdmFGaWVsZChlbnYsIGFKRmll
bGQpOyAvLyBkZWxldGVkIGluIHRoZSBKYXZhQ2xhc3MgZGVzdHJ1Y3RvcgogICAgICAgICB7CiAg
ICAgICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotICAgICAgICAg
ICAgX2ZpZWxkcy5zZXQoYUZpZWxkLT5uYW1lKCksIGFGaWVsZCk7CisgICAgICAgICAgICBfZmll
bGRzLnNldCgoKFVTdHJpbmcpYUZpZWxkLT5uYW1lKCkpLnJlcCgpLCBhRmllbGQpOwogICAgICAg
ICB9CiAgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoYUpGaWVsZCk7CiAgICAgfQpAQCAtNzYs
MTAgKzc2LDEwIEBAIEphdmFDbGFzczo6SmF2YUNsYXNzKGpvYmplY3QgYW5JbnN0YW5jZSkKICAg
ICAgICAgewogICAgICAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsK
IAotICAgICAgICAgICAgbWV0aG9kTGlzdCA9IF9tZXRob2RzLmdldChhTWV0aG9kLT5uYW1lKCkp
OworICAgICAgICAgICAgbWV0aG9kTGlzdCA9IF9tZXRob2RzLmdldCgoKFVTdHJpbmcpYU1ldGhv
ZC0+bmFtZSgpKS5yZXAoKSk7CiAgICAgICAgICAgICBpZiAoIW1ldGhvZExpc3QpIHsKICAgICAg
ICAgICAgICAgICBtZXRob2RMaXN0ID0gbmV3IE1ldGhvZExpc3QoKTsKLSAgICAgICAgICAgICAg
ICBfbWV0aG9kcy5zZXQoYU1ldGhvZC0+bmFtZSgpLCBtZXRob2RMaXN0KTsKKyAgICAgICAgICAg
ICAgICBfbWV0aG9kcy5zZXQoKChVU3RyaW5nKWFNZXRob2QtPm5hbWUoKSkucmVwKCksIG1ldGhv
ZExpc3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIG1ldGhvZExpc3QtPmFw
cGVuZChhTWV0aG9kKTsKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfcnVudGltZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfcnVudGltZS5oCShyZXZpc2lvbiA1
MzE2NSkKKysrIFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfcnVudGltZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMyBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjgsMTYgKzI4LDE2IEBACiAKICNpZiBFTkFCTEUoTUFDX0pBVkFf
QlJJREdFKQogCi0jaW5jbHVkZSA8am5pX3V0aWxpdHkuaD4KLSNpbmNsdWRlIDxqbmlfaW5zdGFu
Y2UuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgImpuaV9pbnN0YW5j
ZS5oIgorI2luY2x1ZGUgImpuaV91dGlsaXR5LmgiCiAKKyNpZiBVU0UoSlNDKQorI2luY2x1ZGUg
ImpuaV9zdHJpbmdfanNjLmgiCisjZW5kaWYKIAotbmFtZXNwYWNlIEpTQwoteworbmFtZXNwYWNl
IEpTQyB7CiAKLW5hbWVzcGFjZSBCaW5kaW5ncwoteworbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAog
dHlwZWRlZiBjb25zdCBjaGFyKiBSdW50aW1lVHlwZTsKIApAQCAtNDYsNDkgKzQ2LDI4IEBAIGNs
YXNzIEphdmFTdHJpbmcKIHB1YmxpYzoKICAgICBKYXZhU3RyaW5nKCkKICAgICB7Ci0gICAgICAg
IEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgICAgIF9yZXAgPSBVU3Ry
aW5nKCkucmVwKCk7CisgICAgICAgIG1faW1wbC5pbml0KCk7CiAgICAgfQogCi0gICAgdm9pZCBf
Y29tbW9uSW5pdCAoSk5JRW52ICplLCBqc3RyaW5nIHMpCisgICAgSmF2YVN0cmluZyhKTklFbnYq
IGUsIGpzdHJpbmcgcykKICAgICB7Ci0gICAgICAgIGludCBfc2l6ZSA9IGUtPkdldFN0cmluZ0xl
bmd0aCAocyk7Ci0gICAgICAgIGNvbnN0IGpjaGFyICp1YyA9IGdldFVDaGFyYWN0ZXJzRnJvbUpT
dHJpbmdJbkVudiAoZSwgcyk7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEpTTG9jayBsb2NrKFNp
bGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgICAgICAgICBfcmVwID0gVVN0cmluZyhyZWludGVy
cHJldF9jYXN0PGNvbnN0IFVDaGFyKj4odWMpLCBfc2l6ZSkucmVwKCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmVsZWFzZVVDaGFyYWN0ZXJzRm9ySlN0cmluZ0luRW52IChlLCBzLCB1Yyk7Ci0gICAg
fQotICAgIAotICAgIEphdmFTdHJpbmcgKEpOSUVudiAqZSwganN0cmluZyBzKSB7Ci0gICAgICAg
IF9jb21tb25Jbml0IChlLCBzKTsKLSAgICB9Ci0gICAgCi0gICAgSmF2YVN0cmluZyAoanN0cmlu
ZyBzKSB7Ci0gICAgICAgIF9jb21tb25Jbml0IChnZXRKTklFbnYoKSwgcyk7CisgICAgICAgIG1f
aW1wbC5pbml0KGUsIHMpOwogICAgIH0KLSAgICAKLSAgICB+SmF2YVN0cmluZygpCisKKyAgICBK
YXZhU3RyaW5nKGpzdHJpbmcgcykKICAgICB7Ci0gICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7Ci0gICAgICAgIF9yZXAgPSAwOworICAgICAgICBtX2ltcGwuaW5pdChn
ZXRKTklFbnYoKSwgcyk7CiAgICAgfQotICAgIAotICAgIGNvbnN0IGNoYXIgKlVURjhTdHJpbmco
KSBjb25zdCB7IAotICAgICAgICBpZiAoX3V0ZjhTdHJpbmcuY19zdHIoKSA9PSAwKSB7Ci0gICAg
ICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotICAgICAgICAgICAg
X3V0ZjhTdHJpbmcgPSBVU3RyaW5nKF9yZXApLlVURjhTdHJpbmcoKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gX3V0ZjhTdHJpbmcuY19zdHIoKTsKLSAgICB9Ci0gICAgY29uc3QgamNoYXIg
KnVjaGFycygpIGNvbnN0IHsgcmV0dXJuIChjb25zdCBqY2hhciAqKV9yZXAtPmRhdGEoKTsgfQot
ICAgIGludCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBfcmVwLT5zaXplKCk7IH0KLSAgICBvcGVy
YXRvciBVU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gVVN0cmluZyhfcmVwKTsgfQorCisgICAgY29u
c3QgY2hhciogVVRGOFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5VVEY4U3RyaW5nKCk7
IH0KKyAgICBjb25zdCBqY2hhciogdWNoYXJzKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLnVjaGFy
cygpOyB9CisgICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5sZW5ndGgoKTsg
fQorI2lmIFVTRShKU0MpCisgICAgb3BlcmF0b3IgVVN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1f
aW1wbC51U3RyaW5nKCk7IH0KKyNlbmRpZgogCiBwcml2YXRlOgotICAgIFJlZlB0cjxVU3RyaW5n
OjpSZXA+IF9yZXA7Ci0gICAgbXV0YWJsZSBDU3RyaW5nIF91dGY4U3RyaW5nOworICAgIEphdmFT
dHJpbmdJbXBsIG1faW1wbDsKIH07CiAKIGNsYXNzIEphdmFQYXJhbWV0ZXIKQEAgLTExNSw3ICs5
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFuY2UoRXhl
Y1N0YXRlICpleGVjLCBjb25zdCBJbnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCBzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJbnN0YW5j
ZSAqaW5zdGFuY2UsIEpTVmFsdWUgYVZhbHVlKSBjb25zdDsKICAgICAKLSAgICBVU3RyaW5nOjpS
ZXAqIG5hbWUoKSBjb25zdCB7IHJldHVybiAoKFVTdHJpbmcpX25hbWUpLnJlcCgpOyB9CisgICAg
Y29uc3QgSmF2YVN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIF9uYW1lOyB9CiAgICAgdmly
dHVhbCBSdW50aW1lVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gX3R5cGUuVVRGOFN0cmluZygp
OyB9CiAKICAgICBKTklUeXBlIGdldEpOSVR5cGUoKSBjb25zdCB7IHJldHVybiBfSk5JVHlwZTsg
fQpAQCAtMTM3LDcgKzExNiw3IEBAIHB1YmxpYzoKICAgICBKYXZhTWV0aG9kKEpOSUVudiogZW52
LCBqb2JqZWN0IGFNZXRob2QpOwogICAgIH5KYXZhTWV0aG9kKCk7CiAKLSAgICBVU3RyaW5nOjpS
ZXAqIG5hbWUoKSBjb25zdCB7IHJldHVybiAoKFVTdHJpbmcpX25hbWUpLnJlcCgpOyB9CisgICAg
Y29uc3QgSmF2YVN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIF9uYW1lOyB9CiAgICAgUnVu
dGltZVR5cGUgcmV0dXJuVHlwZSgpIGNvbnN0IHsgcmV0dXJuIF9yZXR1cm5UeXBlLlVURjhTdHJp
bmcoKTsgfTsKICAgICBKYXZhUGFyYW1ldGVyKiBwYXJhbWV0ZXJBdChpbnQgaSkgY29uc3QgeyBy
ZXR1cm4gJl9wYXJhbWV0ZXJzW2ldOyB9OwogICAgIGludCBudW1QYXJhbWV0ZXJzKCkgY29uc3Qg
eyByZXR1cm4gX251bVBhcmFtZXRlcnM7IH07CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9qbmkvanNj
L2puaV9zdHJpbmdfanNjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9q
bmlfc3RyaW5nX2pzYy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9q
bmlfc3RyaW5nX2pzYy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgam5pX3N0cmluZ19qc2NfaAorI2RlZmluZSBqbmlfc3RyaW5nX2pz
Y19oCisKKyNpbmNsdWRlICJqbmlfaW5zdGFuY2UuaCIKKyNpbmNsdWRlICJqbmlfdXRpbGl0eS5o
IgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisKKworbmFtZXNwYWNlIEpTQyB7CisKK25h
bWVzcGFjZSBCaW5kaW5ncyB7CisKK2NsYXNzIEphdmFTdHJpbmdJbXBsIHsKK3B1YmxpYzoKKyAg
ICB+SmF2YVN0cmluZ0ltcGwoKQorICAgIHsKKyAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFz
c2VydGlvbnNPbmx5KTsKKyAgICAgICAgbV9yZXAgPSAwOworICAgIH0KKworICAgIHZvaWQgaW5p
dCgpCisgICAgeworICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwor
ICAgICAgICBtX3JlcCA9IFVTdHJpbmcoKS5yZXAoKTsKKyAgICB9CisKKyAgICB2b2lkIGluaXQo
Sk5JRW52KiBlLCBqc3RyaW5nIHMpCisgICAgeworICAgICAgICBpbnQgc2l6ZSA9IGUtPkdldFN0
cmluZ0xlbmd0aChzKTsKKyAgICAgICAgY29uc3QgamNoYXIqIHVjID0gZ2V0VUNoYXJhY3RlcnNG
cm9tSlN0cmluZ0luRW52KGUsIHMpOworICAgICAgICB7CisgICAgICAgICAgICBKU0xvY2sgbG9j
ayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAgICAgICAgICAgbV9yZXAgPSBVU3RyaW5nKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPih1YyksIHNpemUpLnJlcCgpOworICAgICAgICB9
CisgICAgICAgIHJlbGVhc2VVQ2hhcmFjdGVyc0ZvckpTdHJpbmdJbkVudihlLCBzLCB1Yyk7Cisg
ICAgfQorCisgICAgY29uc3QgY2hhciogVVRGOFN0cmluZygpIGNvbnN0CisgICAgeworICAgICAg
ICBpZiAoIW1fdXRmOFN0cmluZy5jX3N0cigpKSB7CisgICAgICAgICAgICBKU0xvY2sgbG9jayhT
aWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAgICAgICAgICAgbV91dGY4U3RyaW5nID0gVVN0cmlu
ZyhtX3JlcCkuVVRGOFN0cmluZygpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX3V0ZjhT
dHJpbmcuY19zdHIoKTsKKyAgICB9CisgICAgY29uc3QgamNoYXIqIHVjaGFycygpIGNvbnN0IHsg
cmV0dXJuIChjb25zdCBqY2hhciopbV9yZXAtPmRhdGEoKTsgfQorICAgIGludCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX3JlcC0+c2l6ZSgpOyB9CisgICAgVVN0cmluZyB1U3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gVVN0cmluZyhtX3JlcCk7IH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8VVN0
cmluZzo6UmVwPiBtX3JlcDsKKyAgICBtdXRhYmxlIENTdHJpbmcgbV91dGY4U3RyaW5nOworfTsK
KworfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBqbmlfc3RyaW5nX2pzY19oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46815</attachid>
            <date>2010-01-18 06:14:35 -0800</date>
            <delta_ts>2010-01-18 10:01:03 -0800</delta_ts>
            <desc>Patch 2 for Bug 33558</desc>
            <filename>javaString2.txt</filename>
            <type>text/plain</type>
            <size>12991</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzQwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTAtMDEtMTggIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1vdmVzIEpTQy1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiBKYXZhU3RyaW5nIHRvIGEgcHJp
dmF0ZSBpbXBsZW1lbnRhdGlvbiBjbGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMzNTU4CisKKyAgICAgICAgQWxzbyBtb2RpZmllcyBKYXZhRmll
bGQ6Om5hbWUgYW5kIEphdmFNZXRob2Q6Om5hbWUgdG8gcmV0dXJuIGNvbnN0IEphdmFTdHJpbmcm
LCByYXRoZXIgdGhhbiBVU3RyaW5nOjpSZXAqLAorICAgICAgICB3aGljaCBpcyBKU0Mtc3BlY2lm
aWMuIFRoaXMgYWxsb3dzIHRoaXMgY29kZSB0byBiZSB1c2VkIHdpdGggYm90aCBKU0MgYW5kIFY4
LCBhcyByZXF1aXJlZCBieSBBbmRyb2lkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0
b3Jpbmcgb25seS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajogTW9kaWZpZWQuIEFkZGVkIEphdmFTdHJpbmdKU0MuaAorICAgICAgICAqIGJyaWRnZS9qbmkv
am5pX2NsYXNzLmNwcDogTW9kaWZpZWQuCisgICAgICAgIChKYXZhQ2xhc3M6OkphdmFDbGFzcyk6
IE1vZGlmaWVkLiBVcGRhdGVzIGNhbGwgc2l0ZXMgb2YgSmF2YUZpZWxkOjpuYW1lIGFuZCBKYXZh
TWV0aG9kOjpuYW1lLgorICAgICAgICAqIGJyaWRnZS9qbmkvam5pX3J1bnRpbWUuaDogTW9kaWZp
ZWQuCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpKYXZhU3RyaW5nOjpKYXZhU3RyaW5nKTogTW9k
aWZpZWQuIFBhc3MgdGhyb3VnaCB0byBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OkphdmFTdHJpbmc6OlVURjhTdHJpbmcpOiBNb2RpZmllZC4gUGFzcyB0aHJvdWdoIHRv
IGltcGxlbWVudGF0aW9uLgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SmF2YVN0cmluZzo6dWNo
YXJzKTogTW9kaWZpZWQuIFBhc3MgdGhyb3VnaCB0byBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6OkphdmFTdHJpbmc6Omxlbmd0aCk6IE1vZGlmaWVkLiBQYXNzIHRocm91
Z2ggdG8gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpKYXZhU3RyaW5n
OjpvcGVyYXRvciBVU3RyaW5nKTogTW9kaWZpZWQuIFBhc3MgdGhyb3VnaCB0byBpbXBsZW1lbnRh
dGlvbi4KKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkphdmFGaWVsZDo6bmFtZSk6IE1vZGlmaWVk
LiBQYXNzIHRocm91Z2ggdG8gaW1wbGVtZW50YXRpb24uCisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpKYXZhTWV0aG9kOjpuYW1lKTogTW9kaWZpZWQuIFBhc3MgdGhyb3VnaCB0byBpbXBsZW1lbnRh
dGlvbi4KKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZhU3RyaW5nSlNDLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6SmF2YVN0cmluZ0ltcGw6On5KYXZhU3RyaW5nSW1wbCk6
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpKYXZhU3RyaW5nSW1wbDo6aW5pdCk6CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpKYXZhU3RyaW5nSW1wbDo6VVRGOFN0cmluZyk6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpKYXZhU3RyaW5nSW1wbDo6dWNoYXJzKToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OkphdmFTdHJpbmdJbXBsOjpsZW5ndGgpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
SmF2YVN0cmluZ0ltcGw6OnVTdHJpbmcpOgorCiAyMDEwLTAxLTE4ICBEYW5pZWwgQmF0ZXMgIDxk
YmF0ZXNAcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1MzM5
OSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTEzLDYgKzExMTMsNyBAQAogCQk1NEM1MEY3QjBFODAxREYzMDA5ODMyQTAg
LyogWE1MVG9rZW5pemVyTGlieG1sMi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NEM1MEY3QTBFODAxREYzMDA5ODMyQTAgLyogWE1MVG9rZW5pemVy
TGlieG1sMi5jcHAgKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZp
ZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJ
NTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNE
NiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNTk3QjRDRjgxMTA0QTBDNDAwMEMyRDdBIC8qIEphdmFTdHJpbmdKU0Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5N0I0Q0Y3
MTEwNEEwQzQwMDBDMkQ3QSAvKiBKYXZhU3RyaW5nSlNDLmggKi87IH07CiAJCTU5OUQxRTMyMTBD
OTdENkUwMEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9wcml2YXRlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5OUQxRTMwMTBDOTdENkUwMEUwRUYxMiAv
KiBqbmlfdXRpbGl0eV9wcml2YXRlLmNwcCAqLzsgfTsKIAkJNTk5RDFFMzMxMEM5N0Q2RTAwRTBF
RjEyIC8qIGpuaV91dGlsaXR5X3ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU5OUQxRTMxMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlfdXRpbGl0
eV9wcml2YXRlLmggKi87IH07CiAJCTU5Qzc3RjJBMTA1NDVCM0IwMDUwNjEwNCAvKiBHZW9sb2Nh
dGlvblNlcnZpY2VNb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU5Qzc3RjI4MTA1NDVCM0IwMDUwNjEwNCAvKiBHZW9sb2NhdGlvblNlcnZpY2VN
b2NrLmNwcCAqLzsgfTsKQEAgLTY0NjMsNiArNjQ2NCw3IEBACiAJCTU0QzUwRjdBMEU4MDFERjMw
MDk4MzJBMCAvKiBYTUxUb2tlbml6ZXJMaWJ4bWwyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFhNTFRva2VuaXplckxpYnhtbDIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBRdWFsaWZpZWROYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZp
ZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CisJCTU5N0I0Q0Y3MTEwNEEwQzQwMDBDMkQ3QSAvKiBKYXZhU3Ry
aW5nSlNDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEphdmFTdHJpbmdKU0Mu
aDsgcGF0aCA9IGpzYy9KYXZhU3RyaW5nSlNDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU5OUQxRTMwMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlfdXRpbGl0eV9wcml2YXRlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGpuaV91dGlsaXR5X3ByaXZhdGUu
Y3BwOyBwYXRoID0ganNjL2puaV91dGlsaXR5X3ByaXZhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1OTlEMUUzMTEwQzk3RDZFMDBFMEVGMTIgLyogam5pX3V0aWxpdHlfcHJp
dmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBqbmlfdXRpbGl0eV9wcml2
YXRlLmg7IHBhdGggPSBqc2Mvam5pX3V0aWxpdHlfcHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1OUM3N0YyODEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2
aWNlTW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBHZW9sb2Nh
dGlvblNlcnZpY2VNb2NrLmNwcDsgcGF0aCA9IG1vY2svR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTA1Nyw2ICsxMTA1OSw3IEBACiAJ
CTU5OUQxRTJGMTBDOTdENEMwMEUwRUYxMiAvKiBqc2MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTU5N0I0Q0Y3MTEwNEEwQzQwMDBDMkQ3QSAvKiBKYXZh
U3RyaW5nSlNDLmggKi8sCiAJCQkJNTk5RDFFMzAxMEM5N0Q2RTAwRTBFRjEyIC8qIGpuaV91dGls
aXR5X3ByaXZhdGUuY3BwICovLAogCQkJCTU5OUQxRTMxMTBDOTdENkUwMEUwRUYxMiAvKiBqbmlf
dXRpbGl0eV9wcml2YXRlLmggKi8sCiAJCQkpOwpAQCAtMTgzNDksNiArMTgzNTIsNyBAQAogCQkJ
CTZFNEU5MUFEMTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkU0RTkxQUYxMEY3RkIzMTAwQTI3NzlDIC8qIFdlYkdMQ29udGV4
dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFRThBNzczMTBGODAzRjMwMDVBNEEy
NCAvKiBKU1dlYkdMQ29udGV4dEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU5N0I0
Q0Y4MTEwNEEwQzQwMDBDMkQ3QSAvKiBKYXZhU3RyaW5nSlNDLmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5k
ZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfY2xhc3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYnJpZGdlL2puaS9qbmlfY2xhc3MuY3BwCShyZXZpc2lvbiA1MzM5OSkKKysrIFdlYkNvcmUv
YnJpZGdlL2puaS9qbmlfY2xhc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBA
IEphdmFDbGFzczo6SmF2YUNsYXNzKGpvYmplY3QgYW5JbnN0YW5jZSkKICAgICAgICAgSmF2YUZp
ZWxkICphRmllbGQgPSBuZXcgSmF2YUZpZWxkKGVudiwgYUpGaWVsZCk7IC8vIGRlbGV0ZWQgaW4g
dGhlIEphdmFDbGFzcyBkZXN0cnVjdG9yCiAgICAgICAgIHsKICAgICAgICAgICAgIEpTTG9jayBs
b2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgICAgICAgICBfZmllbGRzLnNldChhRmll
bGQtPm5hbWUoKSwgYUZpZWxkKTsKKyAgICAgICAgICAgIF9maWVsZHMuc2V0KCgoVVN0cmluZylh
RmllbGQtPm5hbWUoKSkucmVwKCksIGFGaWVsZCk7CiAgICAgICAgIH0KICAgICAgICAgZW52LT5E
ZWxldGVMb2NhbFJlZihhSkZpZWxkKTsKICAgICB9CkBAIC03NiwxMCArNzYsMTAgQEAgSmF2YUNs
YXNzOjpKYXZhQ2xhc3Moam9iamVjdCBhbkluc3RhbmNlKQogICAgICAgICB7CiAgICAgICAgICAg
ICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCi0gICAgICAgICAgICBtZXRo
b2RMaXN0ID0gX21ldGhvZHMuZ2V0KGFNZXRob2QtPm5hbWUoKSk7CisgICAgICAgICAgICBtZXRo
b2RMaXN0ID0gX21ldGhvZHMuZ2V0KCgoVVN0cmluZylhTWV0aG9kLT5uYW1lKCkpLnJlcCgpKTsK
ICAgICAgICAgICAgIGlmICghbWV0aG9kTGlzdCkgewogICAgICAgICAgICAgICAgIG1ldGhvZExp
c3QgPSBuZXcgTWV0aG9kTGlzdCgpOwotICAgICAgICAgICAgICAgIF9tZXRob2RzLnNldChhTWV0
aG9kLT5uYW1lKCksIG1ldGhvZExpc3QpOworICAgICAgICAgICAgICAgIF9tZXRob2RzLnNldCgo
KFVTdHJpbmcpYU1ldGhvZC0+bmFtZSgpKS5yZXAoKSwgbWV0aG9kTGlzdCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgbWV0aG9kTGlzdC0+YXBwZW5kKGFNZXRob2QpOwpJbmRl
eDogV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9ydW50aW1lLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9icmlkZ2Uvam5pL2puaV9ydW50aW1lLmgJKHJldmlzaW9uIDUzMzk5KQorKysgV2ViQ29yZS9i
cmlkZ2Uvam5pL2puaV9ydW50aW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCwxMiBA
QAogCiAjaWYgRU5BQkxFKE1BQ19KQVZBX0JSSURHRSkKIAotI2luY2x1ZGUgPGpuaV91dGlsaXR5
Lmg+Ci0jaW5jbHVkZSA8am5pX2luc3RhbmNlLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU0xvY2su
aD4KKyNpbmNsdWRlICJqbmlfaW5zdGFuY2UuaCIKKyNpbmNsdWRlICJqbmlfdXRpbGl0eS5oIgog
CisjaWYgVVNFKEpTQykKKyNpbmNsdWRlICJKYXZhU3RyaW5nSlNDLmgiCisjZW5kaWYKIAogbmFt
ZXNwYWNlIEpTQwogewpAQCAtNDYsNDkgKzQ4LDI4IEBAIGNsYXNzIEphdmFTdHJpbmcKIHB1Ymxp
YzoKICAgICBKYXZhU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7Ci0gICAgICAgIF9yZXAgPSBVU3RyaW5nKCkucmVwKCk7CisgICAgICAg
IG1faW1wbC5pbml0KCk7CiAgICAgfQogCi0gICAgdm9pZCBfY29tbW9uSW5pdCAoSk5JRW52ICpl
LCBqc3RyaW5nIHMpCisgICAgSmF2YVN0cmluZyhKTklFbnYqIGUsIGpzdHJpbmcgcykKICAgICB7
Ci0gICAgICAgIGludCBfc2l6ZSA9IGUtPkdldFN0cmluZ0xlbmd0aCAocyk7Ci0gICAgICAgIGNv
bnN0IGpjaGFyICp1YyA9IGdldFVDaGFyYWN0ZXJzRnJvbUpTdHJpbmdJbkVudiAoZSwgcyk7Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7
Ci0gICAgICAgICAgICBfcmVwID0gVVN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFy
Kj4odWMpLCBfc2l6ZSkucmVwKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmVsZWFzZVVDaGFyYWN0
ZXJzRm9ySlN0cmluZ0luRW52IChlLCBzLCB1Yyk7CisgICAgICAgIG1faW1wbC5pbml0KGUsIHMp
OwogICAgIH0KLSAgICAKLSAgICBKYXZhU3RyaW5nIChKTklFbnYgKmUsIGpzdHJpbmcgcykgewot
ICAgICAgICBfY29tbW9uSW5pdCAoZSwgcyk7Ci0gICAgfQotICAgIAotICAgIEphdmFTdHJpbmcg
KGpzdHJpbmcgcykgewotICAgICAgICBfY29tbW9uSW5pdCAoZ2V0Sk5JRW52KCksIHMpOwotICAg
IH0KLSAgICAKLSAgICB+SmF2YVN0cmluZygpCisKKyAgICBKYXZhU3RyaW5nKGpzdHJpbmcgcykK
ICAgICB7Ci0gICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAg
ICAgIF9yZXAgPSAwOwotICAgIH0KLSAgICAKLSAgICBjb25zdCBjaGFyICpVVEY4U3RyaW5nKCkg
Y29uc3QgeyAKLSAgICAgICAgaWYgKF91dGY4U3RyaW5nLmNfc3RyKCkgPT0gMCkgewotICAgICAg
ICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICAgICAgICAgIF91
dGY4U3RyaW5nID0gVVN0cmluZyhfcmVwKS5VVEY4U3RyaW5nKCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIF91dGY4U3RyaW5nLmNfc3RyKCk7CisgICAgICAgIG1faW1wbC5pbml0KGdldEpO
SUVudigpLCBzKTsKICAgICB9Ci0gICAgY29uc3QgamNoYXIgKnVjaGFycygpIGNvbnN0IHsgcmV0
dXJuIChjb25zdCBqY2hhciAqKV9yZXAtPmRhdGEoKTsgfQotICAgIGludCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBfcmVwLT5zaXplKCk7IH0KLSAgICBvcGVyYXRvciBVU3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gVVN0cmluZyhfcmVwKTsgfQorCisgICAgY29uc3QgY2hhciogVVRGOFN0cmluZygp
IGNvbnN0IHsgcmV0dXJuIG1faW1wbC5VVEY4U3RyaW5nKCk7IH0KKyAgICBjb25zdCBqY2hhciog
dWNoYXJzKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLnVjaGFycygpOyB9CisgICAgaW50IGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5sZW5ndGgoKTsgfQorI2lmIFVTRShKU0MpCisgICAg
b3BlcmF0b3IgVVN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC51U3RyaW5nKCk7IH0KKyNl
bmRpZgogCiBwcml2YXRlOgotICAgIFJlZlB0cjxVU3RyaW5nOjpSZXA+IF9yZXA7Ci0gICAgbXV0
YWJsZSBDU3RyaW5nIF91dGY4U3RyaW5nOworICAgIEphdmFTdHJpbmdJbXBsIG1faW1wbDsKIH07
CiAKIGNsYXNzIEphdmFQYXJhbWV0ZXIKQEAgLTExNSw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJ
bnN0YW5jZSAqaW5zdGFuY2UpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZVRvSW5z
dGFuY2UoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJbnN0YW5jZSAqaW5zdGFuY2UsIEpTVmFsdWUg
YVZhbHVlKSBjb25zdDsKICAgICAKLSAgICBVU3RyaW5nOjpSZXAqIG5hbWUoKSBjb25zdCB7IHJl
dHVybiAoKFVTdHJpbmcpX25hbWUpLnJlcCgpOyB9CisgICAgY29uc3QgSmF2YVN0cmluZyYgbmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIF9uYW1lOyB9CiAgICAgdmlydHVhbCBSdW50aW1lVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gX3R5cGUuVVRGOFN0cmluZygpOyB9CiAKICAgICBKTklUeXBlIGdl
dEpOSVR5cGUoKSBjb25zdCB7IHJldHVybiBfSk5JVHlwZTsgfQpAQCAtMTM3LDcgKzExOCw3IEBA
IHB1YmxpYzoKICAgICBKYXZhTWV0aG9kKEpOSUVudiogZW52LCBqb2JqZWN0IGFNZXRob2QpOwog
ICAgIH5KYXZhTWV0aG9kKCk7CiAKLSAgICBVU3RyaW5nOjpSZXAqIG5hbWUoKSBjb25zdCB7IHJl
dHVybiAoKFVTdHJpbmcpX25hbWUpLnJlcCgpOyB9CisgICAgY29uc3QgSmF2YVN0cmluZyYgbmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIF9uYW1lOyB9CiAgICAgUnVudGltZVR5cGUgcmV0dXJuVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIF9yZXR1cm5UeXBlLlVURjhTdHJpbmcoKTsgfTsKICAgICBKYXZhUGFy
YW1ldGVyKiBwYXJhbWV0ZXJBdChpbnQgaSkgY29uc3QgeyByZXR1cm4gJl9wYXJhbWV0ZXJzW2ld
OyB9OwogICAgIGludCBudW1QYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gX251bVBhcmFtZXRl
cnM7IH07CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFTdHJpbmdKU0MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFTdHJpbmdKU0MuaAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVN0cmluZ0pTQy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSmF2YVN0
cmluZ0pTQ19oCisjZGVmaW5lIEphdmFTdHJpbmdKU0NfaAorCisjaW5jbHVkZSAiam5pX2luc3Rh
bmNlLmgiCisjaW5jbHVkZSAiam5pX3V0aWxpdHkuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTTG9j
ay5oPgorCisKK25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgQmluZGluZ3MgeworCitjbGFz
cyBKYXZhU3RyaW5nSW1wbCB7CitwdWJsaWM6CisgICAgfkphdmFTdHJpbmdJbXBsKCkKKyAgICB7
CisgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisgICAgICAgIG1f
cmVwID0gMDsKKyAgICB9CisKKyAgICB2b2lkIGluaXQoKQorICAgIHsKKyAgICAgICAgSlNMb2Nr
IGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKyAgICAgICAgbV9yZXAgPSBVU3RyaW5nKCku
cmVwKCk7CisgICAgfQorCisgICAgdm9pZCBpbml0KEpOSUVudiogZSwganN0cmluZyBzKQorICAg
IHsKKyAgICAgICAgaW50IHNpemUgPSBlLT5HZXRTdHJpbmdMZW5ndGgocyk7CisgICAgICAgIGNv
bnN0IGpjaGFyKiB1YyA9IGdldFVDaGFyYWN0ZXJzRnJvbUpTdHJpbmdJbkVudihlLCBzKTsKKyAg
ICAgICAgeworICAgICAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsK
KyAgICAgICAgICAgIG1fcmVwID0gVVN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFy
Kj4odWMpLCBzaXplKS5yZXAoKTsKKyAgICAgICAgfQorICAgICAgICByZWxlYXNlVUNoYXJhY3Rl
cnNGb3JKU3RyaW5nSW5FbnYoZSwgcywgdWMpOworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIFVU
RjhTdHJpbmcoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFtX3V0ZjhTdHJpbmcuY19zdHIo
KSkgeworICAgICAgICAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKyAg
ICAgICAgICAgIG1fdXRmOFN0cmluZyA9IFVTdHJpbmcobV9yZXApLlVURjhTdHJpbmcoKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gbV91dGY4U3RyaW5nLmNfc3RyKCk7CisgICAgfQorICAg
IGNvbnN0IGpjaGFyKiB1Y2hhcnMoKSBjb25zdCB7IHJldHVybiAoY29uc3QgamNoYXIqKW1fcmVw
LT5kYXRhKCk7IH0KKyAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9yZXAtPnNpemUo
KTsgfQorICAgIFVTdHJpbmcgdVN0cmluZygpIGNvbnN0IHsgcmV0dXJuIFVTdHJpbmcobV9yZXAp
OyB9CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFVTdHJpbmc6OlJlcD4gbV9yZXA7CisgICAgbXV0
YWJsZSBDU3RyaW5nIG1fdXRmOFN0cmluZzsKK307CisKK30gLy8gbmFtZXNwYWNlIEJpbmRpbmdz
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSmF2YVN0cmluZ0pTQ19oCg==
</data>
<flag name="review"
          id="29144"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>