<?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>52760</bug_id>
          
          <creation_ts>2011-01-19 15:57:02 -0800</creation_ts>
          <short_desc>ComplexTextController incorrectly conflates string length and range of indexes</short_desc>
          <delta_ts>2011-01-25 22:08:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Text</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.6</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ned Holbrook">ned</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>336891</commentid>
    <comment_count>0</comment_count>
    <who name="Ned Holbrook">ned</who>
    <bug_when>2011-01-19 15:57:02 -0800</bug_when>
    <thetext>Consider a run of 2 characters where each is in its own CTRun. As the ComplexTextRuns are iterated by ComplexTextController::advance(), glyphStartOffset gets 0, but glyphEndOffset gets 2 via complexTextRun.stringLength(), which results in a width of half the first adjusted advance: half because it is divided equally among 2 characters, and no more since&quot;glyphEndOffset + complexTextRun.stringLocation() &gt; m_currentCharacter&quot; is true, which causes the loop to exit.

In order to fix this, ComplexTextRun needs to keep track of the original run range in order to return the end index (end in the sense of an STL range, or one past the last included value). Note that the string indices alone are not sufficient to determine the end index, as the last glyph may be a ligature and subsume more than one index.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336894</commentid>
    <comment_count>1</comment_count>
      <attachid>79510</attachid>
    <who name="Ned Holbrook">ned</who>
    <bug_when>2011-01-19 16:01:17 -0800</bug_when>
    <thetext>Created attachment 79510
Proposed changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337218</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-20 02:45:39 -0800</bug_when>
    <thetext>This looks right to me, but mitz should really be the one to r+ this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340137</commentid>
    <comment_count>3</comment_count>
      <attachid>79510</attachid>
    <who name="">mitz</who>
    <bug_when>2011-01-25 21:30:23 -0800</bug_when>
    <thetext>Comment on attachment 79510
Proposed changes.

I’m not sure indexEnd is the best name for this but I don’t have a better suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340152</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-25 22:08:03 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 79510:

http/tests/xmlhttprequest/failed-auth.html bug 51835 (author: ap@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340153</commentid>
    <comment_count>5</comment_count>
      <attachid>79510</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-25 22:08:48 -0800</bug_when>
    <thetext>Comment on attachment 79510
Proposed changes.

Clearing flags on attachment: 79510

Committed r76674: &lt;http://trac.webkit.org/changeset/76674&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340154</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-25 22:08:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79510</attachid>
            <date>2011-01-19 16:01:17 -0800</date>
            <delta_ts>2011-01-25 22:08:48 -0800</delta_ts>
            <desc>Proposed changes.</desc>
            <filename>indexEnd.txt</filename>
            <type>text/plain</type>
            <size>12623</size>
            <attacher name="Ned Holbrook">ned</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2MTczKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDEtMTkgIE5lZCBIb2xi
cm9vayAgPG5ob2xicm9va0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ29tcGxleFRleHRDb250cm9sbGVyIGluY29ycmVjdGx5IGNv
bmZsYXRlcyBzdHJpbmcgbGVuZ3RoIGFuZCByYW5nZSBvZiBpbmRleGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Mjc2MAorCisgICAgICAgIFRlc3Q6
IGZhc3QvdGV4dC9vZmZzZXRGb3JQb3NpdGlvbi1jb21wbGV4LWZhbGxiYWNrLmh0bWwKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpvZmZzZXRGb3JQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0
UnVuOjpDb21wbGV4VGV4dFJ1bik6CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRy
b2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpzZXRJc05vbk1vbm90b25pYyk6CisgICAgICAgIChXZWJD
b3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkdmFuY2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW46OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjppbmRleEVu
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxl
ckFUU1VJLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29t
cGxleFRleHRSdW46OkNvbXBsZXhUZXh0UnVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Q29tcGxleFRleHRSdW4p
OgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxl
eFRleHRSdW5zRm9yQ2hhcmFjdGVyc0NvcmVUZXh0KToKKwogMjAxMS0wMS0xOSAgRGF2aWQgRC4g
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzUyNjg3PiBDbGVhbiB1cCBGcmFtZUxvYWRlciBtZXRob2RzIGZvciBQTFVHSU5fUFJPWFlf
Rk9SX1ZJREVPCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNzU5
NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDkgKzExNyw5IEBAIGludCBDb21w
bGV4VGV4dENvbnRyb2xsZXI6Om9mZnNldEZvclBvc2kKICAgICAgICAgICAgICAgICBDRkluZGV4
IGhpdEdseXBoU3RhcnQgPSBjb21wbGV4VGV4dFJ1bi5pbmRleEF0KGopOwogICAgICAgICAgICAg
ICAgIENGSW5kZXggaGl0R2x5cGhFbmQ7CiAgICAgICAgICAgICAgICAgaWYgKG1fcnVuLmx0cigp
KQotICAgICAgICAgICAgICAgICAgICBoaXRHbHlwaEVuZCA9IG1heDxDRkluZGV4PihoaXRHbHlw
aFN0YXJ0LCBqICsgMSA8IGNvbXBsZXhUZXh0UnVuLmdseXBoQ291bnQoKSA/IGNvbXBsZXhUZXh0
UnVuLmluZGV4QXQoaiArIDEpIDogc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oY29tcGxleFRleHRSdW4u
c3RyaW5nTGVuZ3RoKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgaGl0R2x5cGhFbmQgPSBtYXg8
Q0ZJbmRleD4oaGl0R2x5cGhTdGFydCwgaiArIDEgPCBjb21wbGV4VGV4dFJ1bi5nbHlwaENvdW50
KCkgPyBjb21wbGV4VGV4dFJ1bi5pbmRleEF0KGogKyAxKSA6IHN0YXRpY19jYXN0PENGSW5kZXg+
KGNvbXBsZXhUZXh0UnVuLmluZGV4RW5kKCkpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGhpdEdseXBoRW5kID0gbWF4PENGSW5kZXg+KGhpdEdseXBoU3RhcnQs
IGogPiAwID8gY29tcGxleFRleHRSdW4uaW5kZXhBdChqIC0gMSkgOiBzdGF0aWNfY2FzdDxDRklu
ZGV4Pihjb21wbGV4VGV4dFJ1bi5zdHJpbmdMZW5ndGgoKSkpOworICAgICAgICAgICAgICAgICAg
ICBoaXRHbHlwaEVuZCA9IG1heDxDRkluZGV4PihoaXRHbHlwaFN0YXJ0LCBqID4gMCA/IGNvbXBs
ZXhUZXh0UnVuLmluZGV4QXQoaiAtIDEpIDogc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oY29tcGxleFRl
eHRSdW4uaW5kZXhFbmQoKSkpOwogCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEluc3RlYWQg
b2YgZGl2aWRpbmcgdGhlIGdseXBoJ3MgYWR2YW5jZSBlcXVhbGx5IGJldHdlZW4gdGhlIGNoYXJh
Y3RlcnMsIHRoaXMKICAgICAgICAgICAgICAgICAvLyBjb3VsZCB1c2UgdGhlIGdseXBoJ3MgImxp
Z2F0dXJlIGNhcmV0cyIuIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIENvcmUgVGV4dCBBUEkgdG8gZ2V0
IHRoZQpAQCAtMzEwLDYgKzMxMCw3IEBAIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRl
eHRSdW46OkMKICAgICAsIG1fY2hhcmFjdGVycyhjaGFyYWN0ZXJzKQogICAgICwgbV9zdHJpbmdM
b2NhdGlvbihzdHJpbmdMb2NhdGlvbikKICAgICAsIG1fc3RyaW5nTGVuZ3RoKHN0cmluZ0xlbmd0
aCkKKyAgICAsIG1faW5kZXhFbmQoc3RyaW5nTG9jYXRpb24gKyBzdHJpbmdMZW5ndGgpCiAgICAg
LCBtX2lzTW9ub3RvbmljKHRydWUpCiB7CiAjaWYgVVNFKENPUkVfVEVYVCkgJiYgVVNFKEFUU1VJ
KQpAQCAtMzM0LDcgKzMzNSw3IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4
VGV4dFIKIAogICAgIG1fZ2x5cGhFbmRPZmZzZXRzLmdyb3cobV9nbHlwaENvdW50KTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ2x5cGhDb3VudDsgKytpKSB7Ci0gICAgICAgIENGSW5k
ZXggbmV4dE1hcHBlZEluZGV4ID0gbV9zdHJpbmdMZW5ndGg7CisgICAgICAgIENGSW5kZXggbmV4
dE1hcHBlZEluZGV4ID0gbV9pbmRleEVuZDsKICAgICAgICAgZm9yIChzaXplX3QgaiA9IGluZGV4
QXQoaSkgKyAxOyBqIDwgbV9zdHJpbmdMZW5ndGg7ICsraikgewogICAgICAgICAgICAgaWYgKG1h
cHBlZEluZGljZXNbal0pIHsKICAgICAgICAgICAgICAgICBuZXh0TWFwcGVkSW5kZXggPSBqOwpA
QCAtMzY5LDkgKzM3MCw5IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZHZhbmNlKHVu
c2kKICAgICAgICAgICAgIHVuc2lnbmVkIGdseXBoRW5kT2Zmc2V0OwogICAgICAgICAgICAgaWYg
KGNvbXBsZXhUZXh0UnVuLmlzTW9ub3RvbmljKCkpIHsKICAgICAgICAgICAgICAgICBpZiAobHRy
KQotICAgICAgICAgICAgICAgICAgICBnbHlwaEVuZE9mZnNldCA9IG1heDx1bnNpZ25lZD4oZ2x5
cGhTdGFydE9mZnNldCwgZyArIDEgPCBnbHlwaENvdW50ID8gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGNvbXBsZXhUZXh0UnVuLmluZGV4QXQoZyArIDEpKSA6IGNvbXBsZXhUZXh0UnVuLnN0cmluZ0xl
bmd0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZ2x5cGhFbmRPZmZzZXQgPSBtYXg8dW5zaWdu
ZWQ+KGdseXBoU3RhcnRPZmZzZXQsIGcgKyAxIDwgZ2x5cGhDb3VudCA/IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjb21wbGV4VGV4dFJ1bi5pbmRleEF0KGcgKyAxKSkgOiBjb21wbGV4VGV4dFJ1bi5p
bmRleEVuZCgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGds
eXBoRW5kT2Zmc2V0ID0gbWF4PHVuc2lnbmVkPihnbHlwaFN0YXJ0T2Zmc2V0LCBnID4gMCA/IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjb21wbGV4VGV4dFJ1bi5pbmRleEF0KGcgLSAxKSkgOiBjb21w
bGV4VGV4dFJ1bi5zdHJpbmdMZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgIGdseXBoRW5k
T2Zmc2V0ID0gbWF4PHVuc2lnbmVkPihnbHlwaFN0YXJ0T2Zmc2V0LCBnID4gMCA/IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjb21wbGV4VGV4dFJ1bi5pbmRleEF0KGcgLSAxKSkgOiBjb21wbGV4VGV4
dFJ1bi5pbmRleEVuZCgpKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGds
eXBoRW5kT2Zmc2V0ID0gY29tcGxleFRleHRSdW4uZW5kT2Zmc2V0QXQoZyk7CiAKQEAgLTM4NSw3
ICszODYsNyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWR2YW5jZSh1bnNpCiAKICAg
ICAgICAgICAgIHVuc2lnbmVkIG9sZENoYXJhY3RlckluQ3VycmVudEdseXBoID0gbV9jaGFyYWN0
ZXJJbkN1cnJlbnRHbHlwaDsKICAgICAgICAgICAgIG1fY2hhcmFjdGVySW5DdXJyZW50R2x5cGgg
PSBtaW4obV9jdXJyZW50Q2hhcmFjdGVyIC0gY29tcGxleFRleHRSdW4uc3RyaW5nTG9jYXRpb24o
KSwgZ2x5cGhFbmRPZmZzZXQpIC0gZ2x5cGhTdGFydE9mZnNldDsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBJbnN0ZWFkIG9mIGRpdmlkaW5nIHRoZSBnbHlwaCdzIGFkdmFuY2UgZXF1aWFsbHkgYmV0
d2VlbiB0aGUgY2hhcmFjdGVycywgdGhpcworICAgICAgICAgICAgLy8gRklYTUU6IEluc3RlYWQg
b2YgZGl2aWRpbmcgdGhlIGdseXBoJ3MgYWR2YW5jZSBlcXVhbGx5IGJldHdlZW4gdGhlIGNoYXJh
Y3RlcnMsIHRoaXMKICAgICAgICAgICAgIC8vIGNvdWxkIHVzZSB0aGUgZ2x5cGgncyAibGlnYXR1
cmUgY2FyZXRzIi4gSG93ZXZlciwgdGhlcmUgaXMgbm8gQ29yZSBUZXh0IEFQSSB0byBnZXQgdGhl
CiAgICAgICAgICAgICAvLyBsaWdhdHVyZSBjYXJldHMuCiAgICAgICAgICAgICBpZiAoZ2x5cGhT
dGFydE9mZnNldCA9PSBnbHlwaEVuZE9mZnNldCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuaAkocmV2aXNpb24gNzU5NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDkgKzcy
LDkgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBDb21wbGV4VGV4dFJ1biA6IHB1YmxpYyBSZWZDb3Vu
dGVkPENvbXBsZXhUZXh0UnVuPiB7CiAgICAgcHVibGljOgogI2lmIFVTRShDT1JFX1RFWFQpCi0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbXBsZXhUZXh0UnVuPiBjcmVhdGUoQ1RSdW5SZWYg
Y3RSdW4sIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSwgY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCBzaXplX3Qgc3RyaW5nTGVuZ3RoKQorICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb21wbGV4VGV4dFJ1bj4gY3JlYXRlKENUUnVuUmVmIGN0
UnVuLCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udERhdGEsIGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBzdHJpbmdMb2NhdGlvbiwgc2l6ZV90IHN0cmluZ0xlbmd0aCwgQ0ZSYW5n
ZSBydW5SYW5nZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
b21wbGV4VGV4dFJ1bihjdFJ1biwgZm9udERhdGEsIGNoYXJhY3RlcnMsIHN0cmluZ0xvY2F0aW9u
LCBzdHJpbmdMZW5ndGgpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29tcGxl
eFRleHRSdW4oY3RSdW4sIGZvbnREYXRhLCBjaGFyYWN0ZXJzLCBzdHJpbmdMb2NhdGlvbiwgc3Ry
aW5nTGVuZ3RoLCBydW5SYW5nZSkpOwogICAgICAgICB9CiAjZW5kaWYKICNpZiBVU0UoQVRTVUkp
CkBAIC05NCw2ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIHN0cmluZ0xvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdMb2NhdGlvbjsgfQogICAgICAgICBzaXplX3Qg
c3RyaW5nTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdMZW5ndGg7IH0KICAgICAgICAg
QUxXQVlTX0lOTElORSBDRkluZGV4IGluZGV4QXQoc2l6ZV90IGkpIGNvbnN0OworICAgICAgICBD
RkluZGV4IGluZGV4RW5kKCkgY29uc3QgeyByZXR1cm4gbV9pbmRleEVuZDsgfQogICAgICAgICBD
RkluZGV4IGVuZE9mZnNldEF0KHNpemVfdCBpKSBjb25zdCB7IEFTU0VSVCghbV9pc01vbm90b25p
Yyk7IHJldHVybiBtX2dseXBoRW5kT2Zmc2V0c1tpXTsgfQogICAgICAgICBjb25zdCBDR0dseXBo
KiBnbHlwaHMoKSBjb25zdCB7IHJldHVybiBtX2dseXBoczsgfQogICAgICAgICBjb25zdCBDR1Np
emUqIGFkdmFuY2VzKCkgY29uc3QgeyByZXR1cm4gbV9hZHZhbmNlczsgfQpAQCAtMTAyLDcgKzEw
Myw3IEBAIHByaXZhdGU6CiAKICAgICBwcml2YXRlOgogI2lmIFVTRShDT1JFX1RFWFQpCi0gICAg
ICAgIENvbXBsZXhUZXh0UnVuKENUUnVuUmVmLCBjb25zdCBTaW1wbGVGb250RGF0YSosIGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBzdHJpbmdMb2NhdGlvbiwgc2l6ZV90IHN0cmlu
Z0xlbmd0aCk7CisgICAgICAgIENvbXBsZXhUZXh0UnVuKENUUnVuUmVmLCBjb25zdCBTaW1wbGVG
b250RGF0YSosIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBzdHJpbmdMb2NhdGlv
biwgc2l6ZV90IHN0cmluZ0xlbmd0aCwgQ0ZSYW5nZSBydW5SYW5nZSk7CiAgICAgICAgIHZvaWQg
Y3JlYXRlVGV4dFJ1bkZyb21Gb250RGF0YUNvcmVUZXh0KGJvb2wgbHRyKTsKICNlbmRpZgogI2lm
IFVTRShBVFNVSSkKQEAgLTEzMyw2ICsxMzQsNyBAQCBwcml2YXRlOgogI2lmIFVTRShBVFNVSSkK
ICAgICAgICAgVmVjdG9yPENGSW5kZXgsIDY0PiBtX2F0c3VpSW5kaWNlczsKICNlbmRpZgorICAg
ICAgICBDRkluZGV4IG1faW5kZXhFbmQ7CiAgICAgICAgIFZlY3RvcjxDRkluZGV4LCA2ND4gbV9n
bHlwaEVuZE9mZnNldHM7CiAgICAgICAgIFZlY3RvcjxDR0dseXBoLCA2ND4gbV9nbHlwaHNWZWN0
b3I7CiAgICAgICAgIGNvbnN0IENHR2x5cGgqIG1fZ2x5cGhzOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckFUU1VJLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxl
eFRleHRDb250cm9sbGVyQVRTVUkuY3BwCShyZXZpc2lvbiA3NTk3NykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJBVFNVSS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0NSw2ICsxNDUsNyBAQCBDb21wbGV4VGV4dENvbnRyb2xsZXI6
OkNvbXBsZXhUZXh0UnVuOjpDCiAgICAgLCBtX2NoYXJhY3RlcnMoY2hhcmFjdGVycykKICAgICAs
IG1fc3RyaW5nTG9jYXRpb24oc3RyaW5nTG9jYXRpb24pCiAgICAgLCBtX3N0cmluZ0xlbmd0aChz
dHJpbmdMZW5ndGgpCisgICAgLCBtX2luZGV4RW5kKHN0cmluZ0xvY2F0aW9uICsgc3RyaW5nTGVu
Z3RoKQogICAgICwgbV9kaXJlY3Rpb25hbE92ZXJyaWRlKGRpcmVjdGlvbmFsT3ZlcnJpZGUpCiAg
ICAgLCBtX2lzTW9ub3RvbmljKHRydWUpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENv
bnRyb2xsZXJDb3JlVGV4dC5jcHAJKHJldmlzaW9uIDc1OTc3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDEsMTIgKzQxLDEzIEBAIGV4dGVybiBjb25zdCBDRlN0cmluZ1Jl
ZiBrQ1RUeXBlc2V0dGVyT3AKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Db21wbGV4VGV4dENv
bnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpDb21wbGV4VGV4dFJ1bihDVFJ1blJlZiBjdFJ1biwg
Y29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhLCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgc3RyaW5nTG9jYXRpb24sIHNpemVfdCBzdHJpbmdMZW5ndGgpCitDb21wbGV4VGV4
dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpDb21wbGV4VGV4dFJ1bihDVFJ1blJlZiBjdFJ1
biwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhLCBjb25zdCBVQ2hhciogY2hhcmFjdGVy
cywgdW5zaWduZWQgc3RyaW5nTG9jYXRpb24sIHNpemVfdCBzdHJpbmdMZW5ndGgsIENGUmFuZ2Ug
cnVuUmFuZ2UpCiAgICAgOiBtX2NvcmVUZXh0UnVuKGN0UnVuKQogICAgICwgbV9mb250RGF0YShm
b250RGF0YSkKICAgICAsIG1fY2hhcmFjdGVycyhjaGFyYWN0ZXJzKQogICAgICwgbV9zdHJpbmdM
b2NhdGlvbihzdHJpbmdMb2NhdGlvbikKICAgICAsIG1fc3RyaW5nTGVuZ3RoKHN0cmluZ0xlbmd0
aCkKKyAgICAsIG1faW5kZXhFbmQocnVuUmFuZ2UubG9jYXRpb24gKyBydW5SYW5nZS5sZW5ndGgp
CiAgICAgLCBtX2lzTW9ub3RvbmljKHRydWUpCiB7CiAgICAgbV9nbHlwaENvdW50ID0gQ1RSdW5H
ZXRHbHlwaENvdW50KG1fY29yZVRleHRSdW4uZ2V0KCkpOwpAQCAtMTY0LDcgKzE2NSw4IEBAIHZv
aWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGwKICAgICBmb3IgKENGSW5kZXgg
ciA9IDA7IHIgPCBydW5Db3VudDsgcisrKSB7CiAgICAgICAgIENUUnVuUmVmIGN0UnVuID0gc3Rh
dGljX2Nhc3Q8Q1RSdW5SZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocnVuQXJyYXksIHIpKTsK
ICAgICAgICAgQVNTRVJUKENGR2V0VHlwZUlEKGN0UnVuKSA9PSBDVFJ1bkdldFR5cGVJRCgpKTsK
LSAgICAgICAgbV9jb21wbGV4VGV4dFJ1bnMuYXBwZW5kKENvbXBsZXhUZXh0UnVuOjpjcmVhdGUo
Y3RSdW4sIGZvbnREYXRhLCBjcCwgc3RyaW5nTG9jYXRpb24sIGxlbmd0aCkpOworICAgICAgICBD
RlJhbmdlIHJ1blJhbmdlID0gQ1RSdW5HZXRTdHJpbmdSYW5nZShjdFJ1bik7CisgICAgICAgIG1f
Y29tcGxleFRleHRSdW5zLmFwcGVuZChDb21wbGV4VGV4dFJ1bjo6Y3JlYXRlKGN0UnVuLCBmb250
RGF0YSwgY3AsIHN0cmluZ0xvY2F0aW9uLCBsZW5ndGgsIHJ1blJhbmdlKSk7CiAgICAgfQogfQog
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA3NjE3MykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTAxLTE5ICBOZWQgSG9sYnJvb2sgIDxu
aG9sYnJvb2tAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENvbXBsZXhUZXh0Q29udHJvbGxlciBpbmNvcnJlY3RseSBjb25mbGF0ZXMg
c3RyaW5nIGxlbmd0aCBhbmQgcmFuZ2Ugb2YgaW5kZXhlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI3NjAKKworICAgICAgICAqIGZhc3QvdGV4dC9v
ZmZzZXRGb3JQb3NpdGlvbi1jb21wbGV4LWZhbGxiYWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC90ZXh0L29mZnNldEZvclBvc2l0aW9uLWNvbXBsZXgtZmFsbGJhY2suaHRt
bDogQWRkZWQuCisKIDIwMTEtMDEtMTkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVuc2tpcCBhIHRlc3Qgbm93IHRoYXQgdGhlIDMyLWJpdCBkZWJ1
ZyBib3QgaGFzIHRoZSAyLjQgc2VyaWVzIG9mIEZyZWVUeXBlLgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L29mZnNldEZvclBvc2l0aW9uLWNvbXBsZXgtZmFsbGJhY2stZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGV4dC9vZmZzZXRGb3JQb3NpdGlvbi1j
b21wbGV4LWZhbGxiYWNrLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvdGV4dC9vZmZzZXRGb3JQb3NpdGlvbi1jb21wbGV4LWZhbGxiYWNrLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACitUZXN0IG9mZnNldCBmb3IgcG9zaXRpb24g
Y29tcHV0YXRpb24gYWNyb3NzIGNvbXBsZXggcnVucyB3aXRoIGZvbnQgZmFsbGJhY2tzLCBpbiB0
aGlzIGNhc2UgZHVlIHRvIGEgZm9udCAoQXJpYWwpIGxhY2tpbmcgYSBuZXdsaW5lIGdseXBoLgor
CitQQVNTCisKK0p1c8KtdGnCrWZpwq1jYcKtdGlvbiBzaG91bGQgYmUgdXNlZCBzcGFyaW5nbHkg
YW5kIGNhdXRpb3VzbHkgb24gV2ViIHBhZ2VzLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L29mZnNldEZvclBvc2l0aW9uLWNvbXBsZXgtZmFsbGJhY2suaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3RleHQvb2Zmc2V0Rm9yUG9zaXRpb24tY29tcGxleC1mYWxsYmFjay5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L29mZnNldEZvclBvc2l0
aW9uLWNvbXBsZXgtZmFsbGJhY2suaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNyBAQAor
PHA+CisgICAgVGVzdCBvZmZzZXQgZm9yIHBvc2l0aW9uIGNvbXB1dGF0aW9uIGFjcm9zcyBjb21w
bGV4IHJ1bnMgd2l0aCBmb250CisgICAgZmFsbGJhY2tzLCBpbiB0aGlzIGNhc2UgZHVlIHRvIGEg
Zm9udCAoQXJpYWwpIGxhY2tpbmcgYSBuZXdsaW5lIGdseXBoLgorPC9wPgorPHAgaWQ9InJlc3Vs
dCI+CisgICAgVGVzdCBkaWQgbm90IHJ1bi4KKzwvcD4KKzxkaXYgaWQ9InRhcmdldCIgc3R5bGU9
ImRpc3BsYXk6IGlubGluZTsgZm9udC1mYW1pbHk6IEFyaWFsOyB0ZXh0LXJlbmRlcmluZzogb3B0
aW1pemVMZWdpYmlsaXR5OyI+CitKdXMmc2h5O3RpJnNoeTtmaSZzaHk7Y2Emc2h5O3Rpb24KK3No
b3VsZAorYmUgdXNlZCBzcGFyaW5nbHkgYW5kIGNhdXRpb3VzbHkgb24gV2ViIHBhZ2VzLgorPC9k
aXY+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIHZhciB0
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisgICAgICAgIHZhciBy
ZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CisgICAgICAgIHZhciB4
ID0gdGFyZ2V0Lm9mZnNldExlZnQgKyB0YXJnZXQub2Zmc2V0V2lkdGggLyAyOworICAgICAgICB2
YXIgeSA9IHRhcmdldC5vZmZzZXRUb3AgKyB0YXJnZXQub2Zmc2V0SGVpZ2h0IC8gMjsKKworICAg
ICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDAwKTsKKyAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oeCwgeSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3
YXJkKDEpOworICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VVcCgpOworICAgICAgICBldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDAwKTsK
KworICAgICAgICB2YXIgc2VsZWN0ZWRUZXh0ID0gZ2V0U2VsZWN0aW9uKCkudG9TdHJpbmcoKTsK
KyAgICAgICAgaWYgKHNlbGVjdGVkVGV4dCA9PSAic3BhcmluZ2x5IikKKyAgICAgICAgICAgIHJl
c3VsdC5pbm5lclRleHQgPSAiUEFTUyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3Vs
dC5pbm5lclRleHQgPSAiRkFJTDogU2VsZWN0ZWQgdGV4dCBpcyBcIiIgKyBzZWxlY3RlZFRleHQg
KyAiXCIiOworICAgIH0KKzwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>