<?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>5461</bug_id>
          
          <creation_ts>2005-10-22 10:18:08 -0700</creation_ts>
          <short_desc>Text width measured incorrectly when text-align: justify</short_desc>
          <delta_ts>2017-12-05 13:12:07 -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>Layout and Rendering</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction</keywords>
          <priority>P2</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Duncan Wilcox">duncan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>dbates</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>22509</commentid>
    <comment_count>0</comment_count>
    <who name="Duncan Wilcox">duncan</who>
    <bug_when>2005-10-22 10:18:08 -0700</bug_when>
    <thetext>Load attached sample document, hold cmd-ctrl and hit &quot;d&quot; (keep holding cmd-ctrl), now hovering over 
words pops up the dictionary lookup. Hover towards ends of lines, the highlited text isn&apos;t exactly 
aligned with the word beneath it.

The only strange thing in the sample document is the &quot;text-align: justify&quot;.

More specifically the highlighted text appears to be aligned on the non justified word position.

Tested with freshly checked out tree, this is printed to the console:

=================
ERROR: TEXTINPUT: characterIndexForPoint: not yet implemented
(/Users/duncan/builds/WebKit/WebView.subproj/WebHTMLView.m:4874 -[WebHTMLView
(WebNSTextInputSupport) characterIndexForPoint:])
=================</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22510</commentid>
    <comment_count>1</comment_count>
      <attachid>4442</attachid>
    <who name="Duncan Wilcox">duncan</who>
    <bug_when>2005-10-22 10:18:46 -0700</bug_when>
    <thetext>Created attachment 4442
test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22514</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-10-22 13:34:49 -0700</bug_when>
    <thetext>Justified text also has serious problems when being edited in Blot and Mail; I think the root cause is the 
same. To reproduce, open the test case in Blot and try moving the caret with arrow keys or mouse clicks - 
its positioning doesn&apos;t account for the justification. Renaming the bug and bumping priority to P2.

BTW, an implementation for characterIndexForPoint is currently in the commit queue (bug 5230), and it 
doesn&apos;t help in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22515</commentid>
    <comment_count>3</comment_count>
      <attachid>4443</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-10-22 13:35:52 -0700</bug_when>
    <thetext>Created attachment 4443
Automated test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26863</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-27 15:36:32 -0800</bug_when>
    <thetext>Particularly &quot;note&quot; and &quot;are&quot; in the second paragraph.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27138</commentid>
    <comment_count>5</comment_count>
      <attachid>5353</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-29 07:14:42 -0800</bug_when>
    <thetext>Created attachment 5353
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27231</commentid>
    <comment_count>6</comment_count>
      <attachid>5376</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-30 02:25:04 -0800</bug_when>
    <thetext>Created attachment 5376
Use WebTextRenderer selection rects

There&apos;s more to this patch than just fixing the bug: past fixes to &quot;highlight
leaves trails&quot; were about narrowing WebTextRenderer&apos;s highlight rect to fit
into InlineTextBox&apos;s selectionRect, which due to the &quot;rounding hack&quot; was
narrower than AppKit&apos;s highlight rect for the same text. By moving all
selection/highlight rect computations to WebTextRenderer, this patch eliminates
unnecessary intermediate rounding and gives wider rects that match AppKit more
closely. I think it also improves caret positioning in RTL text.

It looks like AppKit uses different rounding modes for the right hand side of
the highlight (ceil) and for the caret (round). This patch sacrifices highlight
to get caret right. I guess this can be improved in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27251</commentid>
    <comment_count>7</comment_count>
      <attachid>5376</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-30 11:29:42 -0800</bug_when>
    <thetext>Comment on attachment 5376
Use WebTextRenderer selection rects

Nice. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378312</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-12-05 13:12:07 -0800</bug_when>
    <thetext>Committed in &lt;https://trac.webkit.org/changeset/11846/&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>4442</attachid>
            <date>2005-10-22 10:18:46 -0700</date>
            <delta_ts>2005-10-22 10:18:46 -0700</delta_ts>
            <desc>test case</desc>
            <filename>getty.html</filename>
            <type>text/html</type>
            <size>1374</size>
            <attacher name="Duncan Wilcox">duncan</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c3R5bGU+CnAgeyB0ZXh0LWFsaWduOiBqdXN0aWZ5OyB9Cjwvc3R5bGU+
CjwvaGVhZD4KPGJvZHk+CjxwPkZvdXJzY29yZSBhbmQgc2V2ZW4geWVhcnMgYWdvIG91ciBmYXRo
ZXJzIGJyb3VnaHQgZm9ydGggb24gdGhpcyBjb250aW5lbnQgYSBuZXcgbmF0aW9uLCBjb25jZWl2
ZWQgaW4gbGliZXJ0eSBhbmQgZGVkaWNhdGVkIHRvIHRoZSBwcm9wb3NpdGlvbiB0aGF0IGFsbCBt
ZW4gYXJlIGNyZWF0ZWQgZXF1YWwuPC9wPgoKPHA+Tm93IHdlIGFyZSBlbmdhZ2VkIGluIGEgZ3Jl
YXQgY2l2aWwgd2FyLCB0ZXN0aW5nIHdoZXRoZXIgdGhhdCBuYXRpb24gb3IgYW55IG5hdGlvbiBz
byBjb25jZWl2ZWQgYW5kIHNvIGRlZGljYXRlZCBjYW4gbG9uZyBlbmR1cmUuIFdlIGFyZSBtZXQg
b24gYSBncmVhdCBiYXR0bGVmaWVsZCBvZiB0aGF0IHdhci4gV2UgaGF2ZSBjb21lIHRvIGRlZGlj
YXRlIGEgcG9ydGlvbiBvZiBpdCBhcyBhIGZpbmFsIHJlc3RpbmcgcGxhY2UgZm9yIHRob3NlIHdo
byBkaWVkIGhlcmUgdGhhdCB0aGUgbmF0aW9uIG1pZ2h0IGxpdmUuIFRoaXMgd2UgbWF5LCBpbiBh
bGwgcHJvcHJpZXR5IGRvLiBCdXQgaW4gYSBsYXJnZXIgc2Vuc2UsIHdlIGNhbm5vdCBkZWRpY2F0
ZSwgd2UgY2Fubm90IGNvbnNlY3JhdGUsIHdlIGNhbm5vdCBoYWxsb3cgdGhpcyBncm91bmQuIFRo
ZSBicmF2ZSBtZW4sIGxpdmluZyBhbmQgZGVhZCB3aG8gc3RydWdnbGVkIGhlcmUgaGF2ZSBoYWxs
b3dlZCBpdCBmYXIgYWJvdmUgb3VyIHBvb3IgcG93ZXIgdG8gYWRkIG9yIGRldHJhY3QuIFRoZSB3
b3JsZCB3aWxsIGxpdHRsZSBub3RlIG5vciBsb25nIHJlbWVtYmVyIHdoYXQgd2Ugc2F5IGhlcmUs
IGJ1dCBpdCBjYW4gbmV2ZXIgZm9yZ2V0IHdoYXQgdGhleSBkaWQgaGVyZS48L3A+Cgo8cD5JdCBp
cyByYXRoZXIgZm9yIHVzIHRoZSBsaXZpbmcsIHdlIGhlcmUgYmUgZGVkaWNhdGVkIHRvIHRoZSBn
cmVhdCB0YXNrIHJlbWFpbmluZyBiZWZvcmUgdXMtLXRoYXQgZnJvbSB0aGVzZSBob25vcmVkIGRl
YWQgd2UgdGFrZSBpbmNyZWFzZWQgZGV2b3Rpb24gdG8gdGhhdCBjYXVzZSBmb3Igd2hpY2ggdGhl
eSBoZXJlIGdhdmUgdGhlIGxhc3QgZnVsbCBtZWFzdXJlIG9mIGRldm90aW9uLS10aGF0IHdlIGhl
cmUgaGlnaGx5IHJlc29sdmUgdGhhdCB0aGVzZSBkZWFkIHNoYWxsIG5vdCBoYXZlIGRpZWQgaW4g
dmFpbiwgdGhhdCB0aGlzIG5hdGlvbiBzaGFsbCBoYXZlIGEgbmV3IGJpcnRoIG9mIGZyZWVkb20s
IGFuZCB0aGF0IGdvdmVybm1lbnQgb2YgdGhlIHBlb3BsZSwgYnkgdGhlIHBlb3BsZSwgZm9yIHRo
ZSBwZW9wbGUgc2hhbGwgbm90IHBlcmlzaCBmcm9tIHRoZSBlYXJ0aC4iPC9wPgo8L2JvZHk+Cjwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>4443</attachid>
            <date>2005-10-22 13:35:52 -0700</date>
            <delta_ts>2005-10-22 13:35:52 -0700</delta_ts>
            <desc>Automated test case</desc>
            <filename>justified-text-rect.html</filename>
            <type>text/html</type>
            <size>935</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">77u/PGh0bWw+CjxoZWFkPgo8c3R5bGU+CmJvZHkgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDAgfQo8
L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8cCBjb250ZW50ZWRpdGFibGUgaWQ9J3Rlc3QnIFNUWUxF
PSJ3aWR0aDogNzBweDsgaGVpZ2h0OiA1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgdGV4
dC1hbGlnbjoganVzdGlmeTsiPmEgwqDCoMKgwqDCoMKgwqDCoGEgwqDCoMKgwqDCoMKgwqDCoGE8
L3A+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCiAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CiAgICAgICAgCiAgICAgICAgdHJ5IHsKICAgICAgICAKICAgICAg
ICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0ZXN0IiksIDApOwoJCQkKCQkJcmVjdCA9IHRleHRJbnB1dENvbnRyb2xsZXIuZmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoMTAsIDEpOwogICAgICAgICAgICBkb2N1bWVudC53cml0
ZShyZWN0KTsKICAgICAgICAKICAgICAgICAgICAgLy8gdGhlIHNlY29uZCBjaGFyYWN0ZXIgJ2En
IHNob3VsZCBiZSBhdCB0aGUgcmlnaHQgYm9yZGVyIG9mIHRoZSBib3gKICAgICAgICAgICAgaWYg
KHJlY3RbMF0gPiA2MCkKICAgICAgICAgICAgCWRvY3VtZW50LndyaXRlKCI8cD5TdWNjZXNzLjwv
cD4iKTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAJZG9jdW1lbnQud3JpdGUoIjxwPkZh
aWx1cmUgKHJlY3Q6ICIgKyByZWN0ICsgIik8L3A+Iik7CgoJCX0gY2F0Y2ggKGV4KSB7CgkJCWRv
Y3VtZW50LndyaXRlKCJFeGNlcHRpb246ICIgKyBleC5kZXNjcmlwdGlvbik7CgkJfQoJfSBlbHNl
IHsKCQlkb2N1bWVudC53cml0ZSgiKGNhbm5vdCBydW4gaW50ZXJhY3RpdmVseSkiKTsKCX0KPC9z
Y3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5353</attachid>
            <date>2005-12-29 07:14:42 -0800</date>
            <delta_ts>2005-12-30 02:25:04 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>5461_r1.patch</filename>
            <type>text/plain</type>
            <size>13391</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUva2h0bWwvcmVuZGVyaW5nL2ZvbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL3JlbmRlcmluZy9mb250LmNwcCx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS40NgpkaWZmIC1wIC11IC1yMS40NiBXZWJDb3JlL2todG1sL3JlbmRlcmlu
Zy9mb250LmNwcAotLS0gV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvZm9udC5jcHAJMjAgT2N0IDIw
MDUgMDY6MDI6MjQgLTAwMDAJMS40NgorKysgV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvZm9udC5j
cHAJMjkgRGVjIDIwMDUgMTU6MTg6MjYgLTAwMDAKQEAgLTMzLDYgKzMzLDE0IEBACiAKIG5hbWVz
cGFjZSBraHRtbCB7CiAKK1FSZWN0IEZvbnQ6OnNlbGVjdGlvblJlY3RGb3JUZXh0KGludCB4LCBp
bnQgeSwgaW50IGgsIGludCB0YWJXaWR0aCwgaW50IHhwb3MsIAorICAgICAgICAgICAgICAgICAg
ICAgIFFDaGFyICpzdHIsIGludCBzbGVuLCBpbnQgcG9zLCBpbnQgbGVuLCBpbnQgdG9BZGQsCisg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBydGwsIGJvb2wgdmlzdWFsbHlPcmRlcmVkLCBpbnQg
ZnJvbSwgaW50IHRvKSBjb25zdAoreworICAgIHJldHVybiBmbS5zZWxlY3Rpb25SZWN0Rm9yVGV4
dCh4LCB5LCBoLCB0YWJXaWR0aCwgeHBvcywgc3RyICsgcG9zLCBzdGQ6Om1pbihzbGVuIC0gcG9z
LCBsZW4pLCBmcm9tLCB0bywgdG9BZGQsIHJ0bCwgdmlzdWFsbHlPcmRlcmVkLCBsZXR0ZXJTcGFj
aW5nLCB3b3JkU3BhY2luZywgZm9udERlZi5zbWFsbENhcHMpOworCit9CisKIHZvaWQgRm9udDo6
ZHJhd0hpZ2hsaWdodEZvclRleHQoIFFQYWludGVyICpwLCBpbnQgeCwgaW50IHksIGludCBoLCBp
bnQgdGFiV2lkdGgsIGludCB4cG9zLCAKICAgICAgICAgICAgICAgICAgICAgIFFDaGFyICpzdHIs
IGludCBzbGVuLCBpbnQgcG9zLCBpbnQgbGVuLAogICAgICAgICAgICAgICAgICAgICAgaW50IHRv
QWRkLCBRUGFpbnRlcjo6VGV4dERpcmVjdGlvbiBkLCBib29sIHZpc3VhbGx5T3JkZXJlZCwgaW50
IGZyb20sIGludCB0bywgUUNvbG9yIGJnKSBjb25zdApJbmRleDogV2ViQ29yZS9raHRtbC9yZW5k
ZXJpbmcvZm9udC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1s
L3JlbmRlcmluZy9mb250LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzcKZGlmZiAtcCAtdSAt
cjEuMzcgV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvZm9udC5oCi0tLSBXZWJDb3JlL2todG1sL3Jl
bmRlcmluZy9mb250LmgJMjkgRGVjIDIwMDUgMTE6Mjc6MDcgLTAwMDAJMS4zNworKysgV2ViQ29y
ZS9raHRtbC9yZW5kZXJpbmcvZm9udC5oCTI5IERlYyAyMDA1IDE1OjE4OjI5IC0wMDAwCkBAIC0x
MDMsNyArMTAzLDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgIFFQYWludGVyOjpUZXh0
RGlyZWN0aW9uIGQsIGJvb2wgdmlzdWFsbHlPcmRlcmVkID0gZmFsc2UsIGludCBmcm9tID0gLTEs
IGludCB0byA9IC0xLCBRQ29sb3IgYmcgPSBRQ29sb3IoKSkgY29uc3Q7CiAgICAgZmxvYXQgZmxv
YXRXaWR0aChRQ2hhciAqc3RyLCBpbnQgc2xlbiwgaW50IHBvcywgaW50IGxlbiwgaW50IHRhYldp
ZHRoLCBpbnQgeHBvcykgY29uc3Q7CiAgICAgYm9vbCBpc0ZpeGVkUGl0Y2goKSBjb25zdDsKLSAg
ICBpbnQgY2hlY2tTZWxlY3Rpb25Qb2ludChRQ2hhciAqcywgaW50IHNsZW4sIGludCBwb3MsIGlu
dCBsZW4sIGludCB0b0FkZCwgaW50IHRhYldpZHRoLCBpbnQgeHBvcywgaW50IHgsIFFQYWludGVy
OjpUZXh0RGlyZWN0aW9uIGQsIGJvb2wgdmlzdWFsbHlPcmRlcmVkLCBib29sIGluY2x1ZGVQYXJ0
aWFsR2x5cGhzKSBjb25zdDsKKyAgICBpbnQgY2hlY2tTZWxlY3Rpb25Qb2ludChRQ2hhciAqcywg
aW50IHNsZW4sIGludCBwb3MsIGludCBsZW4sIGludCB0b0FkZCwgaW50IHRhYldpZHRoLCBpbnQg
eHBvcywKKyAgICAgICAgaW50IHgsIFFQYWludGVyOjpUZXh0RGlyZWN0aW9uIGQsIGJvb2wgdmlz
dWFsbHlPcmRlcmVkLCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdDsKKyAgICBRUmVj
dCBzZWxlY3Rpb25SZWN0Rm9yVGV4dChpbnQgeCwgaW50IHksIGludCBoLCBpbnQgdGFiV2lkdGgs
IGludCB4cG9zLCAKKyAgICAgICAgUUNoYXIgKnN0ciwgaW50IHNsZW4sIGludCBwb3MsIGludCBs
ZW4sIGludCB3aWR0aCwKKyAgICAgICAgYm9vbCBydGwsIGJvb2wgdmlzdWFsbHlPcmRlcmVkID0g
ZmFsc2UsIGludCBmcm9tID0gLTEsIGludCB0byA9IC0xKSBjb25zdDsKICAgICB2b2lkIGRyYXdI
aWdobGlnaHRGb3JUZXh0KFFQYWludGVyICpwLCBpbnQgeCwgaW50IHksIGludCBoLCBpbnQgdGFi
V2lkdGgsIGludCB4cG9zLCAKICAgICAgICAgUUNoYXIgKnN0ciwgaW50IHNsZW4sIGludCBwb3Ms
IGludCBsZW4sIGludCB3aWR0aCwKICAgICAgICAgUVBhaW50ZXI6OlRleHREaXJlY3Rpb24gZCwg
Ym9vbCB2aXN1YWxseU9yZGVyZWQgPSBmYWxzZSwgaW50IGZyb20gPSAtMSwgaW50IHRvID0gLTEs
IFFDb2xvciBiZyA9IFFDb2xvcigpKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUva2h0bWwvcmVuZGVy
aW5nL3JlbmRlcl90ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29y
ZS9raHRtbC9yZW5kZXJpbmcvcmVuZGVyX3RleHQuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjIxNgpkaWZmIC1wIC11IC1yMS4yMTYgV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvcmVuZGVyX3Rl
eHQuY3BwCi0tLSBXZWJDb3JlL2todG1sL3JlbmRlcmluZy9yZW5kZXJfdGV4dC5jcHAJMjggRGVj
IDIwMDUgMTg6MTg6MzQgLTAwMDAJMS4yMTYKKysrIFdlYkNvcmUva2h0bWwvcmVuZGVyaW5nL3Jl
bmRlcl90ZXh0LmNwcAkyOSBEZWMgMjAwNSAxNToxODozNiAtMDAwMApAQCAtNzQxLDIwICs3NDEs
OSBAQCBpbnQgSW5saW5lVGV4dEJveDo6b2Zmc2V0Rm9yUG9zaXRpb24oaW50CiBpbnQgSW5saW5l
VGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQoaW50IG9mZnNldCkgY29uc3QKIHsKICAgICBSZW5k
ZXJUZXh0ICp0ZXh0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCAqPihtX29iamVjdCk7Ci0gICAg
Y29uc3QgUUZvbnRNZXRyaWNzICZmbSA9IHRleHQtPm1ldHJpY3MobV9maXJzdExpbmUpOwotCi0g
ICAgaW50IGxlZnQ7Ci0gICAgaWYgKG1fcmV2ZXJzZWQpIHsKLQlpbnQgbGVuID0gbV9zdGFydCAr
IG1fbGVuIC0gb2Zmc2V0OwotCVFTdHJpbmcgc3RyaW5nKHRleHQtPnN0ci0+cyArIG9mZnNldCwg
bGVuKTsKLQlsZWZ0ID0gbV94ICsgZm0uYm91bmRpbmdSZWN0KHN0cmluZywgdGV4dC0+dGFiV2lk
dGgoKSwgdGV4dFBvcygpLCBsZW4pLnJpZ2h0KCk7Ci0gICAgfSBlbHNlIHsKLQlpbnQgbGVuID0g
b2Zmc2V0IC0gbV9zdGFydDsKLQlRU3RyaW5nIHN0cmluZyh0ZXh0LT5zdHItPnMgKyBtX3N0YXJ0
LCBsZW4pOwotCWxlZnQgPSBtX3ggKyBmbS5ib3VuZGluZ1JlY3Qoc3RyaW5nLCB0ZXh0LT50YWJX
aWR0aCgpLCB0ZXh0UG9zKCksIGxlbikucmlnaHQoKTsKLSAgICB9CisgICAgY29uc3QgRm9udCAq
ZiA9IHRleHQtPmh0bWxGb250KG1fZmlyc3RMaW5lKTsKICAgICAvLyBGSVhNRTogRG8gd2UgbmVl
ZCB0byBhZGQgcmlnaHRCZWFyaW5nIGhlcmU/Ci0gICAgcmV0dXJuIGxlZnQ7CisgICAgcmV0dXJu
IGYtPnNlbGVjdGlvblJlY3RGb3JUZXh0KG1feCwgMCwgMCwgdGV4dC0+dGFiV2lkdGgoKSwgdGV4
dFBvcygpLCB0ZXh0LT5zdHItPnMsIHRleHQtPnN0ci0+bCwgbV9zdGFydCwgbV9sZW4sIG1fdG9B
ZGQsIG1fcmV2ZXJzZWQsIG1fZGlyT3ZlcnJpZGUsIDAsIG9mZnNldCAtIG1fc3RhcnQpLnJpZ2h0
KCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IFdlYkNvcmUv
a3dxL0tXUUZvbnRNZXRyaWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNv
cmUva3dxL0tXUUZvbnRNZXRyaWNzLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDQKZGlmZiAt
cCAtdSAtcjEuNDQgV2ViQ29yZS9rd3EvS1dRRm9udE1ldHJpY3MuaAotLS0gV2ViQ29yZS9rd3Ev
S1dRRm9udE1ldHJpY3MuaAkxNyBEZWMgMjAwNSAxODoxMDoyNSAtMDAwMAkxLjQ0CisrKyBXZWJD
b3JlL2t3cS9LV1FGb250TWV0cmljcy5oCTI5IERlYyAyMDA1IDE1OjE4OjM5IC0wMDAwCkBAIC01
NCw2ICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgaW50IHdpZHRoKGNvbnN0IFFTdHJpbmcgJiwgaW50
IHRhYldpZHRoLCBpbnQgeHBvcywgaW50IGxlbj0tMSkgY29uc3Q7CiAgICAgaW50IHdpZHRoKGNv
bnN0IFFDaGFyICosIGludCBsZW4sIGludCB0YWJXaWR0aCwgaW50IHhwb3MpIGNvbnN0OwogICAg
IGZsb2F0IGZsb2F0V2lkdGgoY29uc3QgUUNoYXIgKiwgaW50IHNsZW4sIGludCBwb3MsIGludCBs
ZW4sIGludCB0YWJXaWR0aCwgaW50IHhwb3MsIGludCBsZXR0ZXJTcGFjaW5nLCBpbnQgd29yZFNw
YWNpbmcsIGJvb2wgc21hbGxDYXBzKSBjb25zdDsKKyAgICBRUmVjdCBzZWxlY3Rpb25SZWN0Rm9y
VGV4dChpbnQgeCwgaW50IHksIGludCBoLCBpbnQgdGFiV2lkdGgsIGludCB4cG9zLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFDaGFyICpzdHIsIGludCBsZW4sIGludCBmcm9t
LCBpbnQgdG8sIGludCB0b0FkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJ0
bCwgYm9vbCB2aXN1YWxseU9yZGVyZWQsIGludCBsZXR0ZXJTcGFjaW5nLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCB3b3JkU3BhY2luZywgYm9vbCBzbWFsbENhcHMpIGNvbnN0Owog
ICAgIGludCBjaGVja1NlbGVjdGlvblBvaW50KFFDaGFyICpzLCBpbnQgc2xlbiwgaW50IHBvcywg
aW50IGxlbiwgaW50IHRvQWRkLCBpbnQgdGFiV2lkdGgsIGludCB4cG9zLCBpbnQgbGV0dGVyU3Bh
Y2luZywgaW50IHdvcmRTcGFjaW5nLCBib29sIHNtYWxsQ2FwcywgaW50IHgsIGJvb2wgcmV2ZXJz
ZWQsIGJvb2wgZGlyT3ZlcnJpZGUsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpIGNvbnN0Owog
CiAgICAgUVJlY3QgYm91bmRpbmdSZWN0KFFDaGFyKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUva3dx
L0tXUUZvbnRNZXRyaWNzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3Jl
L2t3cS9LV1FGb250TWV0cmljcy5tbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS45NApkaWZmIC1w
IC11IC1yMS45NCBXZWJDb3JlL2t3cS9LV1FGb250TWV0cmljcy5tbQotLS0gV2ViQ29yZS9rd3Ev
S1dRRm9udE1ldHJpY3MubW0JMTcgRGVjIDIwMDUgMTg6MTA6MjUgLTAwMDAJMS45NAorKysgV2Vi
Q29yZS9rd3EvS1dRRm9udE1ldHJpY3MubW0JMjkgRGVjIDIwMDUgMTU6MTg6NDAgLTAwMDAKQEAg
LTIyNCw2ICsyMjQsMzkgQEAgZmxvYXQgUUZvbnRNZXRyaWNzOjpmbG9hdFdpZHRoKGNvbnN0IFFD
aAogICAgIHJldHVybiBbZGF0YS0+Z2V0UmVuZGVyZXIoKSBmbG9hdFdpZHRoRm9yUnVuOiZydW4g
c3R5bGU6JnN0eWxlXTsKIH0KIAorUVJlY3QgUUZvbnRNZXRyaWNzOjpzZWxlY3Rpb25SZWN0Rm9y
VGV4dChpbnQgeCwgaW50IHksIGludCBoLCBpbnQgdGFiV2lkdGgsIGludCB4cG9zLAorICAgIGNv
bnN0IFFDaGFyICpzdHIsIGludCBsZW4sIGludCBmcm9tLCBpbnQgdG8sIGludCB0b0FkZCwKKyAg
ICBib29sIHJ0bCwgYm9vbCB2aXN1YWxseU9yZGVyZWQsIGludCBsZXR0ZXJTcGFjaW5nLCBpbnQg
d29yZFNwYWNpbmcsIGJvb2wgc21hbGxDYXBzKSBjb25zdAoreworICAgIENSRUFURV9GQU1JTFlf
QVJSQVkoZGF0YS0+Zm9udCgpLCBmYW1pbGllcyk7CisKKyAgICBpZiAoZnJvbSA8IDApCisgICAg
ICAgIGZyb20gPSAwOworICAgIGlmICh0byA8IDApCisgICAgICAgIHRvID0gbGVuOworICAgICAg
ICAKKyAgICBXZWJDb3JlVGV4dFJ1biBydW47CisgICAgV2ViQ29yZUluaXRpYWxpemVUZXh0UnVu
KCZydW4sIChjb25zdCBVbmlDaGFyICopc3RyLCBsZW4sIGZyb20sIHRvKTsgICAgCisgICAgV2Vi
Q29yZVRleHRTdHlsZSBzdHlsZTsKKyAgICBXZWJDb3JlSW5pdGlhbGl6ZUVtcHR5VGV4dFN0eWxl
KCZzdHlsZSk7CisgICAgc3R5bGUucnRsID0gcnRsOworICAgIHN0eWxlLmRpcmVjdGlvbmFsT3Zl
cnJpZGUgPSB2aXN1YWxseU9yZGVyZWQ7CisgICAgc3R5bGUubGV0dGVyU3BhY2luZyA9IGxldHRl
clNwYWNpbmc7CisgICAgc3R5bGUud29yZFNwYWNpbmcgPSB3b3JkU3BhY2luZzsKKyAgICBzdHls
ZS5zbWFsbENhcHMgPSBzbWFsbENhcHM7CisgICAgc3R5bGUuZmFtaWxpZXMgPSBmYW1pbGllczsg
ICAgCisgICAgc3R5bGUucGFkZGluZyA9IHRvQWRkOworICAgIHN0eWxlLnRhYldpZHRoID0gdGFi
V2lkdGg7CisgICAgc3R5bGUueHBvcyA9IHhwb3M7CisgICAgV2ViQ29yZVRleHRHZW9tZXRyeSBn
ZW9tZXRyeTsKKyAgICBXZWJDb3JlSW5pdGlhbGl6ZUVtcHR5VGV4dEdlb21ldHJ5KCZnZW9tZXRy
eSk7CisgICAgZ2VvbWV0cnkucG9pbnQgPSBOU01ha2VQb2ludCh4LCB5KTsKKyAgICBnZW9tZXRy
eS5zZWxlY3Rpb25ZID0geTsKKyAgICBnZW9tZXRyeS5zZWxlY3Rpb25IZWlnaHQgPSBoOworICAg
IGdlb21ldHJ5LnVzZUZvbnRNZXRyaWNzRm9yU2VsZWN0aW9uWUFuZEhlaWdodCA9IGZhbHNlOwor
ICAgIHJldHVybiBRUmVjdChbZGF0YS0+Z2V0UmVuZGVyZXIoKSBzZWxlY3Rpb25SZWN0Rm9yUnVu
OiZydW4gc3R5bGU6JnN0eWxlIGdlb21ldHJ5OiZnZW9tZXRyeV0pOworfQorCiBpbnQgUUZvbnRN
ZXRyaWNzOjpjaGVja1NlbGVjdGlvblBvaW50KFFDaGFyICpzLCBpbnQgc2xlbiwgaW50IHBvcywg
aW50IGxlbiwgaW50IHRvQWRkLCBpbnQgdGFiV2lkdGgsIGludCB4cG9zLCBpbnQgbGV0dGVyU3Bh
Y2luZywgaW50IHdvcmRTcGFjaW5nLCBib29sIHNtYWxsQ2FwcywgaW50IHgsIGJvb2wgcmV2ZXJz
ZWQsIGJvb2wgZGlyT3ZlcnJpZGUsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpIGNvbnN0CiB7
CiAgICAgaWYgKCFkYXRhKSB7CkluZGV4OiBXZWJDb3JlL2t3cS9XZWJDb3JlVGV4dFJlbmRlcmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL1dlYkNvcmVUZXh0
UmVuZGVyZXIuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zOApkaWZmIC1wIC11IC1yMS4zOCBX
ZWJDb3JlL2t3cS9XZWJDb3JlVGV4dFJlbmRlcmVyLmgKLS0tIFdlYkNvcmUva3dxL1dlYkNvcmVU
ZXh0UmVuZGVyZXIuaAkxNyBEZWMgMjAwNSAxODoxMDoyNSAtMDAwMAkxLjM4CisrKyBXZWJDb3Jl
L2t3cS9XZWJDb3JlVGV4dFJlbmRlcmVyLmgJMjkgRGVjIDIwMDUgMTU6MTg6NDEgLTAwMDAKQEAg
LTk0LDYgKzk0LDcgQEAgZXh0ZXJuIHZvaWQgV2ViQ29yZUluaXRpYWxpemVFbXB0eVRleHRHZQog
CiAvLyBkcmF3aW5nCiAtICh2b2lkKWRyYXdSdW46KGNvbnN0IFdlYkNvcmVUZXh0UnVuICopcnVu
IHN0eWxlOihjb25zdCBXZWJDb3JlVGV4dFN0eWxlICopc3R5bGUgZ2VvbWV0cnk6KGNvbnN0IFdl
YkNvcmVUZXh0R2VvbWV0cnkgKilnZW9tZXRyeTsKKy0gKE5TUmVjdClzZWxlY3Rpb25SZWN0Rm9y
UnVuOihjb25zdCBXZWJDb3JlVGV4dFJ1biAqKXJ1biBzdHlsZTooY29uc3QgV2ViQ29yZVRleHRT
dHlsZSAqKXN0eWxlIGdlb21ldHJ5Oihjb25zdCBXZWJDb3JlVGV4dEdlb21ldHJ5ICopZ2VvbWV0
cnk7CiAtICh2b2lkKWRyYXdIaWdobGlnaHRGb3JSdW46KGNvbnN0IFdlYkNvcmVUZXh0UnVuICop
cnVuIHN0eWxlOihjb25zdCBXZWJDb3JlVGV4dFN0eWxlICopc3R5bGUgZ2VvbWV0cnk6KGNvbnN0
IFdlYkNvcmVUZXh0R2VvbWV0cnkgKilnZW9tZXRyeTsKIC0gKHZvaWQpZHJhd0xpbmVGb3JDaGFy
YWN0ZXJzOihOU1BvaW50KXBvaW50IHlPZmZzZXQ6KGZsb2F0KXlPZmZzZXQgd2lkdGg6IChpbnQp
d2lkdGggY29sb3I6KE5TQ29sb3IgKiljb2xvciB0aGlja25lc3M6KGZsb2F0KXRoaWNrbmVzczsK
IC0gKHZvaWQpZHJhd0xpbmVGb3JNaXNzcGVsbGluZzooTlNQb2ludClwb2ludCB3aXRoV2lkdGg6
KGludCl3aWR0aDsKSW5kZXg6IFdlYktpdC9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRleHRS
ZW5kZXJlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXQvV2ViQ29yZVN1
cHBvcnQuc3VicHJvai9XZWJUZXh0UmVuZGVyZXIubSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4y
MTEKZGlmZiAtcCAtdSAtcjEuMjExIFdlYktpdC9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRl
eHRSZW5kZXJlci5tCi0tLSBXZWJLaXQvV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJUZXh0UmVu
ZGVyZXIubQkyOSBEZWMgMjAwNSAxMTozMDowMCAtMDAwMAkxLjIxMQorKysgV2ViS2l0L1dlYkNv
cmVTdXBwb3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLm0JMjkgRGVjIDIwMDUgMTU6MTk6MDgg
LTAwMDAKQEAgLTE0NCw2ICsxNDQsMTAgQEAgc3RhdGljIGludCBDR19wb2ludFRvT2Zmc2V0KFdl
YlRleHRSZW5kZQogc3RhdGljIGludCBBVFNVX3BvaW50VG9PZmZzZXQoV2ViVGV4dFJlbmRlcmVy
ICosIGNvbnN0IFdlYkNvcmVUZXh0UnVuICosIGNvbnN0IFdlYkNvcmVUZXh0U3R5bGUgKiwKICAg
ICBpbnQgeCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocyk7CiAKKy8vIFNlbGVjdGlvbiByZWN0
Lgorc3RhdGljIE5TUmVjdCBDR19zZWxlY3Rpb25SZWN0KFdlYlRleHRSZW5kZXJlciAqLCBjb25z
dCBXZWJDb3JlVGV4dFJ1biAqLCBjb25zdCBXZWJDb3JlVGV4dFN0eWxlICosIGNvbnN0IFdlYkNv
cmVUZXh0R2VvbWV0cnkgKik7CitzdGF0aWMgTlNSZWN0IEFUU1Vfc2VsZWN0aW9uUmVjdChXZWJU
ZXh0UmVuZGVyZXIgKiwgY29uc3QgV2ViQ29yZVRleHRSdW4gKiwgY29uc3QgV2ViQ29yZVRleHRT
dHlsZSAqLCBjb25zdCBXZWJDb3JlVGV4dEdlb21ldHJ5ICopOworCiAvLyBEcmF3aW5nIGhpZ2hs
aWdodC4KIHN0YXRpYyB2b2lkIENHX2RyYXdIaWdobGlnaHQoV2ViVGV4dFJlbmRlcmVyICosIGNv
bnN0IFdlYkNvcmVUZXh0UnVuICosIGNvbnN0IFdlYkNvcmVUZXh0U3R5bGUgKiwgY29uc3QgV2Vi
Q29yZVRleHRHZW9tZXRyeSAqKTsKIHN0YXRpYyB2b2lkIEFUU1VfZHJhd0hpZ2hsaWdodChXZWJU
ZXh0UmVuZGVyZXIgKiwgY29uc3QgV2ViQ29yZVRleHRSdW4gKiwgY29uc3QgV2ViQ29yZVRleHRT
dHlsZSAqLCBjb25zdCBXZWJDb3JlVGV4dEdlb21ldHJ5ICopOwpAQCAtNTU2LDYgKzU2MCwxNCBA
QCBzdGF0aWMgdm9pZCBkZXN0cm95KFdlYlRleHRSZW5kZXJlciAqcmVuCiAgICAgW2dyYXBoaWNz
Q29udGV4dCBzZXRTaG91bGRBbnRpYWxpYXM6IGZsYWddOwogfQogCistIChOU1JlY3Qpc2VsZWN0
aW9uUmVjdEZvclJ1bjooY29uc3QgV2ViQ29yZVRleHRSdW4gKilydW4gc3R5bGU6KGNvbnN0IFdl
YkNvcmVUZXh0U3R5bGUgKilzdHlsZSBnZW9tZXRyeTooY29uc3QgV2ViQ29yZVRleHRHZW9tZXRy
eSAqKWdlb21ldHJ5Cit7CisgICAgaWYgKHNob3VsZFVzZUFUU1UocnVuKSkKKyAgICAgICAgcmV0
dXJuIEFUU1Vfc2VsZWN0aW9uUmVjdChzZWxmLCBydW4sIHN0eWxlLCBnZW9tZXRyeSk7CisgICAg
ZWxzZQorICAgICAgICByZXR1cm4gQ0dfc2VsZWN0aW9uUmVjdChzZWxmLCBydW4sIHN0eWxlLCBn
ZW9tZXRyeSk7Cit9CisKIC0gKHZvaWQpZHJhd0hpZ2hsaWdodEZvclJ1bjooY29uc3QgV2ViQ29y
ZVRleHRSdW4gKilydW4gc3R5bGU6KGNvbnN0IFdlYkNvcmVUZXh0U3R5bGUgKilzdHlsZSBnZW9t
ZXRyeTooY29uc3QgV2ViQ29yZVRleHRHZW9tZXRyeSAqKWdlb21ldHJ5CiB7CiAgICAgaWYgKHNo
b3VsZFVzZUFUU1UocnVuKSkKQEAgLTg3MSw3ICs4ODMsMTEgQEAgc3RhdGljIHZvaWQgQ0dfZHJh
d0hpZ2hsaWdodChXZWJUZXh0UmVuZAogICAgICAgICByZXR1cm47CiAKICAgICBbc3R5bGUtPmJh
Y2tncm91bmRDb2xvciBzZXRdOworICAgIFtOU0JlemllclBhdGggZmlsbFJlY3Q6Q0dfc2VsZWN0
aW9uUmVjdChyZW5kZXJlciwgcnVuLCBzdHlsZSwgZ2VvbWV0cnkpXTsKK30KIAorc3RhdGljIE5T
UmVjdCBDR19zZWxlY3Rpb25SZWN0KFdlYlRleHRSZW5kZXJlciAqcmVuZGVyZXIsIGNvbnN0IFdl
YkNvcmVUZXh0UnVuICogcnVuLCBjb25zdCBXZWJDb3JlVGV4dFN0eWxlICpzdHlsZSwgY29uc3Qg
V2ViQ29yZVRleHRHZW9tZXRyeSAqZ2VvbWV0cnkpCit7CiAgICAgZmxvYXQgeVBvcyA9IGdlb21l
dHJ5LT51c2VGb250TWV0cmljc0ZvclNlbGVjdGlvbllBbmRIZWlnaHQKICAgICAgICAgPyBnZW9t
ZXRyeS0+cG9pbnQueSAtIHJlbmRlcmVyLT5hc2NlbnQgLSAocmVuZGVyZXItPmxpbmVHYXAgLyAy
KSA6IGdlb21ldHJ5LT5zZWxlY3Rpb25ZOwogICAgIGZsb2F0IGhlaWdodCA9IGdlb21ldHJ5LT51
c2VGb250TWV0cmljc0ZvclNlbGVjdGlvbllBbmRIZWlnaHQKQEAgLTg5Nyw5ICs5MTMsOSBAQCBz
dGF0aWMgdm9pZCBDR19kcmF3SGlnaGxpZ2h0KFdlYlRleHRSZW5kCiAgICAgICAgIGZsb2F0IHRv
dGFsV2lkdGggPSBpdC5ydW5XaWR0aFNvRmFyOwogICAgICAgICBpZiAoc3R5bGUtPmFwcGx5UnVu
Um91bmRpbmcpCiAgICAgICAgICAgICB0b3RhbFdpZHRoID0gY2VpbGYodG90YWxXaWR0aCk7Ci0g
ICAgICAgIFtOU0JlemllclBhdGggZmlsbFJlY3Q6TlNNYWtlUmVjdChnZW9tZXRyeS0+cG9pbnQu
eCArIHJvdW5kZih0b3RhbFdpZHRoIC0gYmFja2dyb3VuZFdpZHRoIC0gYmVmb3JlV2lkdGgpLCB5
UG9zLCByb3VuZGYoYmFja2dyb3VuZFdpZHRoKSwgaGVpZ2h0KV07CisgICAgICAgIHJldHVybiBO
U01ha2VSZWN0KGdlb21ldHJ5LT5wb2ludC54ICsgcm91bmRmKHRvdGFsV2lkdGggLSBiYWNrZ3Jv
dW5kV2lkdGggLSBiZWZvcmVXaWR0aCksIHlQb3MsIHJvdW5kZihiYWNrZ3JvdW5kV2lkdGgpLCBo
ZWlnaHQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFtOU0JlemllclBhdGggZmlsbFJlY3Q6TlNN
YWtlUmVjdChnZW9tZXRyeS0+cG9pbnQueCArIHJvdW5kZihiZWZvcmVXaWR0aCksIHlQb3MsIHJv
dW5kZihiYWNrZ3JvdW5kV2lkdGgpLCBoZWlnaHQpXTsKKyAgICAgICAgcmV0dXJuIE5TTWFrZVJl
Y3QoZ2VvbWV0cnktPnBvaW50LnggKyByb3VuZGYoYmVmb3JlV2lkdGgpLCB5UG9zLCByb3VuZGYo
YmFja2dyb3VuZFdpZHRoKSwgaGVpZ2h0KTsKICAgICB9CiB9CiAKQEAgLTE0NTcsMTYgKzE0NzMs
MjEgQEAgc3RhdGljIHZvaWQgQVRTVV9kcmF3SGlnaGxpZ2h0KFdlYlRleHRSZQogCiAgICAgaWYg
KHN0eWxlLT5iYWNrZ3JvdW5kQ29sb3IgPT0gbmlsKQogICAgICAgICByZXR1cm47CisgICAgaWYg
KHJ1bi0+dG8gPD0gcnVuLT5mcm9tKQorICAgICAgICByZXR1cm47CiAgICAgCisgICAgW3N0eWxl
LT5iYWNrZ3JvdW5kQ29sb3Igc2V0XTsKKyAgICBbTlNCZXppZXJQYXRoIGZpbGxSZWN0OkFUU1Vf
c2VsZWN0aW9uUmVjdChyZW5kZXJlciwgcnVuLCBzdHlsZSwgZ2VvbWV0cnkpXTsKK30KKworc3Rh
dGljIE5TUmVjdCBBVFNVX3NlbGVjdGlvblJlY3QoV2ViVGV4dFJlbmRlcmVyICpyZW5kZXJlciwg
Y29uc3QgV2ViQ29yZVRleHRSdW4gKnJ1biwgY29uc3QgV2ViQ29yZVRleHRTdHlsZSAqc3R5bGUs
IGNvbnN0IFdlYkNvcmVUZXh0R2VvbWV0cnkgKmdlb21ldHJ5KQorewogICAgIGludCBmcm9tID0g
cnVuLT5mcm9tOwogICAgIGludCB0byA9IHJ1bi0+dG87CiAgICAgaWYgKGZyb20gPT0gLTEpCiAg
ICAgICAgIGZyb20gPSAwOwogICAgIGlmICh0byA9PSAtMSkKICAgICAgICAgdG8gPSBydW4tPmxl
bmd0aDsKLSAgICBpbnQgcnVuTGVuZ3RoID0gdG8gLSBmcm9tOwotICAgIGlmIChydW5MZW5ndGgg
PD0gMCkKLSAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViQ29yZVRleHRSdW4gcnVuV2l0aExlYWQg
PSAqcnVuOwogICAgIHJ1bldpdGhMZWFkLmZyb20gPSAwOwpAQCAtMTQ4MSw3ICsxNTAyLDcgQEAg
c3RhdGljIHZvaWQgQVRTVV9kcmF3SGlnaGxpZ2h0KFdlYlRleHRSZQogICAgIGZsb2F0IHNlbGVj
dGVkTGVmdFg7CiAgICAgZmxvYXQgd2lkdGhXaXRoTGVhZCA9IEFUU1VfZmxvYXRXaWR0aEZvclJ1
bihyZW5kZXJlciwgYVJ1biwgc3R5bGUpOwogICAgIAotICAgIGFSdW4tPnRvIC09IHJ1bkxlbmd0
aDsKKyAgICBhUnVuLT50byArPSBmcm9tIC0gdG87CiAgICAgZmxvYXQgbGVhZFdpZHRoID0gQVRT
VV9mbG9hdFdpZHRoRm9yUnVuKHJlbmRlcmVyLCBhUnVuLCBzdHlsZSk7CiAgICAgCiAgICAgZmxv
YXQgYmFja2dyb3VuZFdpZHRoID0gcm91bmRmKHdpZHRoV2l0aExlYWQgLSBsZWFkV2lkdGgpOwpA
QCAtMTQ5NCwxNiArMTUxNSwxNiBAQCBzdGF0aWMgdm9pZCBBVFNVX2RyYXdIaWdobGlnaHQoV2Vi
VGV4dFJlCiAgICAgICAgIHNlbGVjdGVkTGVmdFggPSByb3VuZGYoZ2VvbWV0cnktPnBvaW50Lngg
KyB0b3RhbFdpZHRoIC0gd2lkdGhXaXRoTGVhZCk7CiAgICAgfQogICAgIAotICAgIFtzdHlsZS0+
YmFja2dyb3VuZENvbG9yIHNldF07Ci0KICAgICBmbG9hdCB5UG9zID0gZ2VvbWV0cnktPnVzZUZv
bnRNZXRyaWNzRm9yU2VsZWN0aW9uWUFuZEhlaWdodAogICAgICAgICA/IGdlb21ldHJ5LT5wb2lu
dC55IC0gcmVuZGVyZXItPmFzY2VudCA6IGdlb21ldHJ5LT5zZWxlY3Rpb25ZOwogICAgIGZsb2F0
IGhlaWdodCA9IGdlb21ldHJ5LT51c2VGb250TWV0cmljc0ZvclNlbGVjdGlvbllBbmRIZWlnaHQK
ICAgICAgICAgPyByZW5kZXJlci0+bGluZVNwYWNpbmcgOiBnZW9tZXRyeS0+c2VsZWN0aW9uSGVp
Z2h0OwotICAgIFtOU0JlemllclBhdGggZmlsbFJlY3Q6TlNNYWtlUmVjdChzZWxlY3RlZExlZnRY
LCB5UG9zLCBiYWNrZ3JvdW5kV2lkdGgsIGhlaWdodCldOworICAgIE5TUmVjdCByZWN0ID0gTlNN
YWtlUmVjdChzZWxlY3RlZExlZnRYLCB5UG9zLCBiYWNrZ3JvdW5kV2lkdGgsIGhlaWdodCk7CiAK
ICAgICBpZiAoc3R5bGUtPmRpcmVjdGlvbmFsT3ZlcnJpZGUpCiAgICAgICAgIGZyZWUoKHZvaWQg
Kilzd2FwcGVkUnVuLmNoYXJhY3RlcnMpOworCisgICAgcmV0dXJuIHJlY3Q7CiB9CiAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5376</attachid>
            <date>2005-12-30 02:25:04 -0800</date>
            <delta_ts>2005-12-30 11:29:42 -0800</delta_ts>
            <desc>Use WebTextRenderer selection rects</desc>
            <filename>5461_r2.patch</filename>
            <type>text/plain</type>
            <size>24526</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIwNgpkaWZm
IC1wIC11IC1yMS4yMDYgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCi0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJMzAgRGVjIDIwMDUgMDg6NTE6MjMgLTAwMDAJMS4yMDYKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkzMCBEZWMgMjAwNSAxMDoxNToxMCAtMDAwMApAQCAtMSwzICsxLDE1IEBACisyMDA2
LTAxLSMjICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAbnlwb3AuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgLSB0ZXN0IGZvciBo
dHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTU0NjEKKyAgICAg
ICAgICBUZXh0IHdpZHRoIG1lYXN1cmVkIGluY29ycmVjdGx5IHdoZW4gdGV4dC1hbGlnbjoganVz
dGlmeQorICAgICAgICAKKyAgICAgICAgKiBmYXN0L3RleHQvanVzdGlmaWVkLXRleHQtcmVjdC1l
eHBlY3RlZC5jaGVja3N1bTogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2p1c3RpZmllZC10
ZXh0LXJlY3QtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvanVzdGlm
aWVkLXRleHQtcmVjdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9q
dXN0aWZpZWQtdGV4dC1yZWN0Lmh0bWw6IEFkZGVkLgorCiAyMDA1LTEyLTMwICBKb29zdCBkZSBW
YWxrICA8d2Via2l0QGpvb3N0ZGV2YWxrLm5sPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
LCBsYW5kZWQgYnkgTWFjaWVqLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2p1c3RpZmll
ZC10ZXh0LXJlY3QtZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC1OcHUgTGF5b3V0
VGVzdHMvZmFzdC90ZXh0L2p1c3RpZmllZC10ZXh0LXJlY3QtZXhwZWN0ZWQuY2hlY2tzdW0KLS0t
IExheW91dFRlc3RzL2Zhc3QvdGV4dC9qdXN0aWZpZWQtdGV4dC1yZWN0LWV4cGVjdGVkLmNoZWNr
c3VtCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9q
dXN0aWZpZWQtdGV4dC1yZWN0LWV4cGVjdGVkLmNoZWNrc3VtCTMwIERlYyAyMDA1IDA5OjMyOjQ2
IC0wMDAwCkBAIC0wLDAgKzEgQEAKK2Y3MTFlNTFmMmUzNzZkODJiNTQ3YWUzN2U5NGUyNjNiClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2p1
c3RpZmllZC10ZXh0LXJlY3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtTnB1IExheW91
dFRlc3RzL2Zhc3QvdGV4dC9qdXN0aWZpZWQtdGV4dC1yZWN0LWV4cGVjdGVkLnR4dAotLS0gTGF5
b3V0VGVzdHMvZmFzdC90ZXh0L2p1c3RpZmllZC10ZXh0LXJlY3QtZXhwZWN0ZWQudHh0CTEgSmFu
IDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9qdXN0aWZpZWQt
dGV4dC1yZWN0LWV4cGVjdGVkLnR4dAkzMCBEZWMgMjAwNSAwOTozMjoxNCAtMDAwMApAQCAtMCww
ICsxLDE3IEBACitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK2xheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAw
eDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICgwLDApIHNpemUgODAweDU4NAorICAgICAg
UmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzB4NTAgW2JnY29sb3I9IzAwODAwMF0KKyAg
ICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA3MHgzNgorICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDcwOiAiYSAgICAgICAgIGEiCisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMTgpIHdpZHRoIDM5OiAiICAgICAgICBhIgorICAgICAgUmVuZGVyQmxvY2sgKGFu
b255bW91cykgYXQgKDAsNjYpIHNpemUgODAweDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDApIHNpemUgNzZ4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3
NjogIjYzLDU4Miw2LDE4IgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDEwMCkgc2l6ZSA4
MDB4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA1NHgxOAorICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDU0OiAiU3VjY2Vzcy4iCitjYXJldDogcG9z
aXRpb24gMCBvZiBjaGlsZCAwIHtURVhUfSBvZiBjaGlsZCAxIHtQfSBvZiBjaGlsZCAxIHtCT0RZ
fSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L2p1c3RpZmllZC10ZXh0LXJlY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLU5wdSBMYXlvdXRU
ZXN0cy9mYXN0L3RleHQvanVzdGlmaWVkLXRleHQtcmVjdC5odG1sCi0tLSBMYXlvdXRUZXN0cy9m
YXN0L3RleHQvanVzdGlmaWVkLXRleHQtcmVjdC5odG1sCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAw
MDAKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9qdXN0aWZpZWQtdGV4dC1yZWN0Lmh0bWwJMzAg
RGVjIDIwMDUgMDk6Mjk6MzggLTAwMDAKQEAgLTAsMCArMSwzNCBAQAor77u/PGh0bWw+Cis8aGVh
ZD4KKzxzdHlsZT4KK2JvZHkgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDAgfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorPHAgY29udGVudGVkaXRhYmxlIGlkPSd0ZXN0JyBTVFlMRT0id2lkdGg6
IDcwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHRleHQtYWxpZ246
IGp1c3RpZnk7Ij5hIMKgwqDCoMKgwqDCoMKgwqBhIMKgwqDCoMKgwqDCoMKgwqBhPC9wPgorPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgCisgICAgICAg
ICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3QiKSwgMCk7CisJCQkKKwkJCXJlY3QgPSB0ZXh0SW5wdXRDb250cm9sbGVyLmZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDEwLCAxKTsKKyAgICAgICAgICAgIGRvY3VtZW50Lndy
aXRlKHJlY3QpOworICAgICAgICAKKyAgICAgICAgICAgIC8vIHRoZSBzZWNvbmQgY2hhcmFjdGVy
ICdhJyBzaG91bGQgYmUgYXQgdGhlIHJpZ2h0IGJvcmRlciBvZiB0aGUgYm94CisgICAgICAgICAg
ICBpZiAocmVjdFswXSA+IDYwKQorICAgICAgICAgICAgCWRvY3VtZW50LndyaXRlKCI8cD5TdWNj
ZXNzLjwvcD4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIAlkb2N1bWVudC53cml0
ZSgiPHA+RmFpbHVyZSAocmVjdDogIiArIHJlY3QgKyAiKTwvcD4iKTsKKworCQl9IGNhdGNoIChl
eCkgeworCQkJZG9jdW1lbnQud3JpdGUoIkV4Y2VwdGlvbjogIiArIGV4LmRlc2NyaXB0aW9uKTsK
KwkJfQorCX0gZWxzZSB7CisJCWRvY3VtZW50LndyaXRlKCIoY2Fubm90IHJ1biBpbnRlcmFjdGl2
ZWx5KSIpOworCX0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUvQ2hhbmdlTG9n
LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjY0CmRpZmYgLXAgLXUgLXIxLjY0IFdlYkNvcmUvQ2hh
bmdlTG9nCi0tLSBXZWJDb3JlL0NoYW5nZUxvZwkzMCBEZWMgMjAwNSAwNjo0Njo1NSAtMDAwMAkx
LjY0CisrKyBXZWJDb3JlL0NoYW5nZUxvZwkzMCBEZWMgMjAwNSAxMDoxNToyMSAtMDAwMApAQCAt
MSwzICsxLDI3IEBACisyMDA2LTAxLSMjICBNaXR6IFBldHRlbCAgPG9wZW5kYXJ3aW4ub3JnQG1p
dHpwZXR0ZWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAg
ICAgICAKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L2p1c3RpZmllZC10ZXh0LXJlY3QuaHRtbAor
ICAgICAgICAKKyAgICAgICAgLSBXZWJDb3JlIHBhcnQgb2YgZml4IGZvcgorICAgICAgICAgIGh0
dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ2MQorICAgICAg
ICAgIFRleHQgd2lkdGggbWVhc3VyZWQgaW5jb3JyZWN0bHkgd2hlbiB0ZXh0LWFsaWduOiBqdXN0
aWZ5CisKKyAgICAgICAgKiBraHRtbC9yZW5kZXJpbmcvZm9udC5oOgorICAgICAgICAqIGtodG1s
L3JlbmRlcmluZy9mb250LmNwcDoKKyAgICAgICAgKGtodG1sOjpGb250OjpzZWxlY3Rpb25SZWN0
Rm9yVGV4dCk6IEFkZGVkLgorICAgICAgICAqIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfdGV4dC5j
cHA6CisgICAgICAgIChrdGhtbDo6SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uUmVjdCk6IFVzZSBz
ZWxlY3Rpb25SZWN0Rm9yVGV4dC4gVGhpcworICAgICAgICB3b3JrcyBmb3IganVzdGlmaWVkIHRl
eHQgYXMgd2VsbCwgYW5kIGF2b2lkcyBpbnRlcm1lZGlhdGUgcm91bmRpbmcgd2hpY2gKKyAgICAg
ICAgcmVzdWx0ZWQgaW4gc2VsZWN0aW9uIHJlY3RzIG5hcnJvd2VyIHRoYW4gQXBwS2l0J3MuCisg
ICAgICAgIChraHRtbDo6SW5saW5lVGV4dEJveDo6cG9zaXRpb25Gb3JPZmZzZXQpOiBVc2Ugc2Vs
ZWN0aW9uUmVjdEZvclRleHQsCisgICAgICAgIHdoaWNoIHdvcmtzIGZvciBqdXN0aWZpZWQgdGV4
dCBhcyB3ZWxsLgorICAgICAgICAqIGt3cS9LV1FGb250TWV0cmljcy5oOgorICAgICAgICAqIGt3
cS9LV1FGb250TWV0cmljcy5tbToKKyAgICAgICAgKFFGb250TWV0cmljczo6c2VsZWN0aW9uUmVj
dEZvclRleHQpOiBBZGRlZC4KKyAgICAgICAgKiBrd3EvV2ViQ29yZVRleHRSZW5kZXJlci5oOgor
CiAyMDA1LTEyLTI5ICBHcmFoYW0gRGVubmlzICA8R3JhaGFtLkRlbm5pc0BnbWFpbC5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgSHlhdHQuCkluZGV4OiBXZWJDb3JlL2todG1sL3JlbmRlcmlu
Zy9mb250LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9y
ZW5kZXJpbmcvZm9udC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDYKZGlmZiAtcCAtdSAt
cjEuNDYgV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvZm9udC5jcHAKLS0tIFdlYkNvcmUva2h0bWwv
cmVuZGVyaW5nL2ZvbnQuY3BwCTIwIE9jdCAyMDA1IDA2OjAyOjI0IC0wMDAwCTEuNDYKKysrIFdl
YkNvcmUva2h0bWwvcmVuZGVyaW5nL2ZvbnQuY3BwCTMwIERlYyAyMDA1IDA5OjIwOjUwIC0wMDAw
CkBAIC0zMyw2ICszMywxNCBAQAogCiBuYW1lc3BhY2Uga2h0bWwgewogCitRUmVjdCBGb250Ojpz
ZWxlY3Rpb25SZWN0Rm9yVGV4dChpbnQgeCwgaW50IHksIGludCBoLCBpbnQgdGFiV2lkdGgsIGlu
dCB4cG9zLCAKKyAgICAgICAgICAgICAgICAgICAgICBRQ2hhciAqc3RyLCBpbnQgc2xlbiwgaW50
IHBvcywgaW50IGxlbiwgaW50IHRvQWRkLAorICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcnRs
LCBib29sIHZpc3VhbGx5T3JkZXJlZCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZm0uc2VsZWN0aW9uUmVjdEZvclRleHQoeCwgeSwgaCwgdGFiV2lkdGgsIHhwb3MsIHN0
ciArIHBvcywgc3RkOjptaW4oc2xlbiAtIHBvcywgbGVuKSwgZnJvbSwgdG8sIHRvQWRkLCBydGws
IHZpc3VhbGx5T3JkZXJlZCwgbGV0dGVyU3BhY2luZywgd29yZFNwYWNpbmcsIGZvbnREZWYuc21h
bGxDYXBzKTsKKworfQorCiB2b2lkIEZvbnQ6OmRyYXdIaWdobGlnaHRGb3JUZXh0KCBRUGFpbnRl
ciAqcCwgaW50IHgsIGludCB5LCBpbnQgaCwgaW50IHRhYldpZHRoLCBpbnQgeHBvcywgCiAgICAg
ICAgICAgICAgICAgICAgICBRQ2hhciAqc3RyLCBpbnQgc2xlbiwgaW50IHBvcywgaW50IGxlbiwK
ICAgICAgICAgICAgICAgICAgICAgIGludCB0b0FkZCwgUVBhaW50ZXI6OlRleHREaXJlY3Rpb24g
ZCwgYm9vbCB2aXN1YWxseU9yZGVyZWQsIGludCBmcm9tLCBpbnQgdG8sIFFDb2xvciBiZykgY29u
c3QKSW5kZXg6IFdlYkNvcmUva2h0bWwvcmVuZGVyaW5nL2ZvbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvZm9udC5oLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjM3CmRpZmYgLXAgLXUgLXIxLjM3IFdlYkNvcmUva2h0bWwvcmVuZGVyaW5n
L2ZvbnQuaAotLS0gV2ViQ29yZS9raHRtbC9yZW5kZXJpbmcvZm9udC5oCTI5IERlYyAyMDA1IDEx
OjI3OjA3IC0wMDAwCTEuMzcKKysrIFdlYkNvcmUva2h0bWwvcmVuZGVyaW5nL2ZvbnQuaAkzMCBE
ZWMgMjAwNSAwOToyMDo1MCAtMDAwMApAQCAtMTAzLDcgKzEwMywxMSBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICBRUGFpbnRlcjo6VGV4dERpcmVjdGlvbiBkLCBib29sIHZpc3VhbGx5T3Jk
ZXJlZCA9IGZhbHNlLCBpbnQgZnJvbSA9IC0xLCBpbnQgdG8gPSAtMSwgUUNvbG9yIGJnID0gUUNv
bG9yKCkpIGNvbnN0OwogICAgIGZsb2F0IGZsb2F0V2lkdGgoUUNoYXIgKnN0ciwgaW50IHNsZW4s
IGludCBwb3MsIGludCBsZW4sIGludCB0YWJXaWR0aCwgaW50IHhwb3MpIGNvbnN0OwogICAgIGJv
b2wgaXNGaXhlZFBpdGNoKCkgY29uc3Q7Ci0gICAgaW50IGNoZWNrU2VsZWN0aW9uUG9pbnQoUUNo
YXIgKnMsIGludCBzbGVuLCBpbnQgcG9zLCBpbnQgbGVuLCBpbnQgdG9BZGQsIGludCB0YWJXaWR0
aCwgaW50IHhwb3MsIGludCB4LCBRUGFpbnRlcjo6VGV4dERpcmVjdGlvbiBkLCBib29sIHZpc3Vh
bGx5T3JkZXJlZCwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CisgICAgaW50IGNo
ZWNrU2VsZWN0aW9uUG9pbnQoUUNoYXIgKnMsIGludCBzbGVuLCBpbnQgcG9zLCBpbnQgbGVuLCBp
bnQgdG9BZGQsIGludCB0YWJXaWR0aCwgaW50IHhwb3MsCisgICAgICAgIGludCB4LCBRUGFpbnRl
cjo6VGV4dERpcmVjdGlvbiBkLCBib29sIHZpc3VhbGx5T3JkZXJlZCwgYm9vbCBpbmNsdWRlUGFy
dGlhbEdseXBocykgY29uc3Q7CisgICAgUVJlY3Qgc2VsZWN0aW9uUmVjdEZvclRleHQoaW50IHgs
IGludCB5LCBpbnQgaCwgaW50IHRhYldpZHRoLCBpbnQgeHBvcywgCisgICAgICAgIFFDaGFyICpz
dHIsIGludCBzbGVuLCBpbnQgcG9zLCBpbnQgbGVuLCBpbnQgd2lkdGgsCisgICAgICAgIGJvb2wg
cnRsLCBib29sIHZpc3VhbGx5T3JkZXJlZCA9IGZhbHNlLCBpbnQgZnJvbSA9IC0xLCBpbnQgdG8g
PSAtMSkgY29uc3Q7CiAgICAgdm9pZCBkcmF3SGlnaGxpZ2h0Rm9yVGV4dChRUGFpbnRlciAqcCwg
aW50IHgsIGludCB5LCBpbnQgaCwgaW50IHRhYldpZHRoLCBpbnQgeHBvcywgCiAgICAgICAgIFFD
aGFyICpzdHIsIGludCBzbGVuLCBpbnQgcG9zLCBpbnQgbGVuLCBpbnQgd2lkdGgsCiAgICAgICAg
IFFQYWludGVyOjpUZXh0RGlyZWN0aW9uIGQsIGJvb2wgdmlzdWFsbHlPcmRlcmVkID0gZmFsc2Us
IGludCBmcm9tID0gLTEsIGludCB0byA9IC0xLCBRQ29sb3IgYmcgPSBRQ29sb3IoKSkgY29uc3Q7
CkluZGV4OiBXZWJDb3JlL2todG1sL3JlbmRlcmluZy9yZW5kZXJfdGV4dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvcmVuZGVyaW5nL3JlbmRlcl90ZXh0
LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMTYKZGlmZiAtcCAtdSAtcjEuMjE2IFdlYkNv
cmUva2h0bWwvcmVuZGVyaW5nL3JlbmRlcl90ZXh0LmNwcAotLS0gV2ViQ29yZS9raHRtbC9yZW5k
ZXJpbmcvcmVuZGVyX3RleHQuY3BwCTI4IERlYyAyMDA1IDE4OjE4OjM0IC0wMDAwCTEuMjE2Cisr
KyBXZWJDb3JlL2todG1sL3JlbmRlcmluZy9yZW5kZXJfdGV4dC5jcHAJMzAgRGVjIDIwMDUgMDk6
MjA6NTUgLTAwMDAKQEAgLTEyMyw0NCArMTIzLDExIEBAIFFSZWN0IElubGluZVRleHRCb3g6OnNl
bGVjdGlvblJlY3QoaW50IHQKIAogICAgIFJvb3RJbmxpbmVCb3gqIHJvb3RCb3ggPSByb290KCk7
CiAgICAgUmVuZGVyVGV4dCogdGV4dE9iaiA9IHRleHRPYmplY3QoKTsKLSAgICBpbnQgc2VsU3Rh
cnQgPSBtX3JldmVyc2VkID8gbV94ICsgbV93aWR0aCA6IG1feDsKLSAgICBpbnQgc2VsRW5kID0g
c2VsU3RhcnQ7CiAgICAgaW50IHNlbFRvcCA9IHJvb3RCb3gtPnNlbGVjdGlvblRvcCgpOwogICAg
IGludCBzZWxIZWlnaHQgPSByb290Qm94LT5zZWxlY3Rpb25IZWlnaHQoKTsKLSAgICBpbnQgbGVh
ZFdpZHRoID0gMDsKKyAgICBjb25zdCBGb250ICpmID0gdGV4dE9iai0+aHRtbEZvbnQobV9maXJz
dExpbmUpOwogCi0gICAgLy8gRklYTUU6IEZvciBqdXN0aWZpZWQgdGV4dCwganVzdCByZXR1cm4g
dGhlIGVudGlyZSB0ZXh0IGJveCdzIHJlY3QuICBBdCB0aGUgbW9tZW50IHRoZXJlJ3Mgc3RpbGwg
bm8gZWFzeQotICAgIC8vIHdheSB0byBnZXQgdGhlIHdpZHRoIG9mIGEgcnVuIGluY2x1ZGluZyB0
aGUganVzdGlmaWNhdGlvbiBwYWRkaW5nLgotICAgIGlmIChzUG9zID4gMCAmJiAhbV90b0FkZCkg
ewotICAgICAgICAvLyBUaGUgc2VsZWN0aW9uIGJlZ2lucyBpbiB0aGUgbWlkZGxlIG9mIG91ciBy
dW4uCi0gICAgICAgIGxlYWRXaWR0aCA9IHRleHRPYmotPndpZHRoKG1fc3RhcnQsIHNQb3MsIHRl
eHRQb3MoKSwgbV9maXJzdExpbmUpOwotICAgICAgICBpZiAobV9yZXZlcnNlZCkKLSAgICAgICAg
ICAgIHNlbFN0YXJ0IC09IGxlYWRXaWR0aDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc2Vs
U3RhcnQgKz0gbGVhZFdpZHRoOwotICAgIH0KLQotICAgIGlmIChtX3RvQWRkIHx8IChzUG9zID09
IDAgJiYgZVBvcyA9PSBtX2xlbikpIHsKLSAgICAgICAgaWYgKG1fcmV2ZXJzZWQpCi0gICAgICAg
ICAgICBzZWxFbmQgPSBtX3g7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNlbEVuZCA9IG1f
eCArIG1fd2lkdGg7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvLyBPdXIgcnVuIGlzIHBh
cnRpYWxseSBzZWxlY3RlZCwgYW5kIHNvIHdlIG5lZWQgdG8gbWVhc3VyZS4KLSAgICAgICAgaW50
IHcgPSB0ZXh0T2JqLT53aWR0aChzUG9zICsgbV9zdGFydCwgZVBvcyAtIHNQb3MsIHRleHRQb3Mo
KSArIGxlYWRXaWR0aCwgbV9maXJzdExpbmUpOwotICAgICAgICBpZiAoc1BvcyArIG1fc3RhcnQg
PiAwICYmIHRleHRPYmotPnN0ci0+c1tzUG9zICsgbV9zdGFydF0uaXNTcGFjZSgpICYmICF0ZXh0
T2JqLT5zdHItPnNbc1BvcyArIG1fc3RhcnQgLSAxXS5pc1NwYWNlKCkpCi0gICAgICAgICAgICB3
ICs9IHRleHRPYmotPnN0eWxlKG1fZmlyc3RMaW5lKS0+d29yZFNwYWNpbmcoKTsKLSAgICAgICAg
aWYgKG1fcmV2ZXJzZWQpCi0gICAgICAgICAgICBzZWxFbmQgPSBzZWxTdGFydCAtIHc7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHNlbEVuZCA9IHNlbFN0YXJ0ICsgdzsKLSAgICB9Ci0gICAg
Ci0gICAgaW50IHNlbExlZnQgPSBtX3JldmVyc2VkID8gc2VsRW5kIDogc2VsU3RhcnQ7Ci0gICAg
aW50IHNlbFJpZ2h0ID0gbV9yZXZlcnNlZCA/IHNlbFN0YXJ0IDogc2VsRW5kOwotCi0gICAgcmV0
dXJuIFFSZWN0KHNlbExlZnQgKyB0eCwgc2VsVG9wICsgdHksIHNlbFJpZ2h0IC0gc2VsTGVmdCwg
c2VsSGVpZ2h0KTsKKyAgICByZXR1cm4gZi0+c2VsZWN0aW9uUmVjdEZvclRleHQodHggKyBtX3gs
IHR5ICsgc2VsVG9wLCBzZWxIZWlnaHQsIHRleHRPYmotPnRhYldpZHRoKCksIHRleHRQb3MoKSwg
dGV4dE9iai0+c3RyLT5zLCB0ZXh0T2JqLT5zdHItPmwsIG1fc3RhcnQsIG1fbGVuLCBtX3RvQWRk
LCBtX3JldmVyc2VkLCBtX2Rpck92ZXJyaWRlLCBzUG9zLCBlUG9zKTsKIH0KIAogdm9pZCBJbmxp
bmVUZXh0Qm94OjpkZWxldGVMaW5lKFJlbmRlckFyZW5hKiBhcmVuYSkKQEAgLTc0MSwyMCArNzA4
LDExIEBAIGludCBJbmxpbmVUZXh0Qm94OjpvZmZzZXRGb3JQb3NpdGlvbihpbnQKIGludCBJbmxp
bmVUZXh0Qm94Ojpwb3NpdGlvbkZvck9mZnNldChpbnQgb2Zmc2V0KSBjb25zdAogewogICAgIFJl
bmRlclRleHQgKnRleHQgPSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0ICo+KG1fb2JqZWN0KTsKLSAg
ICBjb25zdCBRRm9udE1ldHJpY3MgJmZtID0gdGV4dC0+bWV0cmljcyhtX2ZpcnN0TGluZSk7Ci0K
LSAgICBpbnQgbGVmdDsKLSAgICBpZiAobV9yZXZlcnNlZCkgewotCWludCBsZW4gPSBtX3N0YXJ0
ICsgbV9sZW4gLSBvZmZzZXQ7Ci0JUVN0cmluZyBzdHJpbmcodGV4dC0+c3RyLT5zICsgb2Zmc2V0
LCBsZW4pOwotCWxlZnQgPSBtX3ggKyBmbS5ib3VuZGluZ1JlY3Qoc3RyaW5nLCB0ZXh0LT50YWJX
aWR0aCgpLCB0ZXh0UG9zKCksIGxlbikucmlnaHQoKTsKLSAgICB9IGVsc2UgewotCWludCBsZW4g
PSBvZmZzZXQgLSBtX3N0YXJ0OwotCVFTdHJpbmcgc3RyaW5nKHRleHQtPnN0ci0+cyArIG1fc3Rh
cnQsIGxlbik7Ci0JbGVmdCA9IG1feCArIGZtLmJvdW5kaW5nUmVjdChzdHJpbmcsIHRleHQtPnRh
YldpZHRoKCksIHRleHRQb3MoKSwgbGVuKS5yaWdodCgpOwotICAgIH0KKyAgICBjb25zdCBGb250
ICpmID0gdGV4dC0+aHRtbEZvbnQobV9maXJzdExpbmUpOworICAgIGludCBmcm9tID0gbV9yZXZl
cnNlZCA/IG9mZnNldCAtIG1fc3RhcnQgOiAwOworICAgIGludCB0byA9IG1fcmV2ZXJzZWQgPyBt
X2xlbiA6IG9mZnNldCAtIG1fc3RhcnQ7CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gYWRk
IHJpZ2h0QmVhcmluZyBoZXJlPwotICAgIHJldHVybiBsZWZ0OworICAgIHJldHVybiBmLT5zZWxl
Y3Rpb25SZWN0Rm9yVGV4dChtX3gsIDAsIDAsIHRleHQtPnRhYldpZHRoKCksIHRleHRQb3MoKSwg
dGV4dC0+c3RyLT5zLCB0ZXh0LT5zdHItPmwsIG1fc3RhcnQsIG1fbGVuLCBtX3RvQWRkLCBtX3Jl
dmVyc2VkLCBtX2Rpck92ZXJyaWRlLCBmcm9tLCB0bykucmlnaHQoKTsKIH0KIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogV2ViQ29yZS9rd3EvS1dRRm9udE1ldHJpY3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRRm9udE1ldHJp
Y3MuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40NApkaWZmIC1wIC11IC1yMS40NCBXZWJDb3Jl
L2t3cS9LV1FGb250TWV0cmljcy5oCi0tLSBXZWJDb3JlL2t3cS9LV1FGb250TWV0cmljcy5oCTE3
IERlYyAyMDA1IDE4OjEwOjI1IC0wMDAwCTEuNDQKKysrIFdlYkNvcmUva3dxL0tXUUZvbnRNZXRy
aWNzLmgJMzAgRGVjIDIwMDUgMDk6MjE6MDIgLTAwMDAKQEAgLTU0LDYgKzU0LDEwIEBAIHB1Ymxp
YzoKICAgICBpbnQgd2lkdGgoY29uc3QgUVN0cmluZyAmLCBpbnQgdGFiV2lkdGgsIGludCB4cG9z
LCBpbnQgbGVuPS0xKSBjb25zdDsKICAgICBpbnQgd2lkdGgoY29uc3QgUUNoYXIgKiwgaW50IGxl
biwgaW50IHRhYldpZHRoLCBpbnQgeHBvcykgY29uc3Q7CiAgICAgZmxvYXQgZmxvYXRXaWR0aChj
b25zdCBRQ2hhciAqLCBpbnQgc2xlbiwgaW50IHBvcywgaW50IGxlbiwgaW50IHRhYldpZHRoLCBp
bnQgeHBvcywgaW50IGxldHRlclNwYWNpbmcsIGludCB3b3JkU3BhY2luZywgYm9vbCBzbWFsbENh
cHMpIGNvbnN0OworICAgIFFSZWN0IHNlbGVjdGlvblJlY3RGb3JUZXh0KGludCB4LCBpbnQgeSwg
aW50IGgsIGludCB0YWJXaWR0aCwgaW50IHhwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgUUNoYXIgKnN0ciwgaW50IGxlbiwgaW50IGZyb20sIGludCB0bywgaW50IHRvQWRk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcnRsLCBib29sIHZpc3VhbGx5T3Jk
ZXJlZCwgaW50IGxldHRlclNwYWNpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHdvcmRTcGFjaW5nLCBib29sIHNtYWxsQ2FwcykgY29uc3Q7CiAgICAgaW50IGNoZWNrU2VsZWN0
aW9uUG9pbnQoUUNoYXIgKnMsIGludCBzbGVuLCBpbnQgcG9zLCBpbnQgbGVuLCBpbnQgdG9BZGQs
IGludCB0YWJXaWR0aCwgaW50IHhwb3MsIGludCBsZXR0ZXJTcGFjaW5nLCBpbnQgd29yZFNwYWNp
bmcsIGJvb2wgc21hbGxDYXBzLCBpbnQgeCwgYm9vbCByZXZlcnNlZCwgYm9vbCBkaXJPdmVycmlk
ZSwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAKICAgICBRUmVjdCBib3VuZGlu
Z1JlY3QoUUNoYXIpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9rd3EvS1dRRm9udE1ldHJpY3MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva3dxL0tXUUZvbnRNZXRyaWNz
Lm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjk0CmRpZmYgLXAgLXUgLXIxLjk0IFdlYkNvcmUv
a3dxL0tXUUZvbnRNZXRyaWNzLm1tCi0tLSBXZWJDb3JlL2t3cS9LV1FGb250TWV0cmljcy5tbQkx
NyBEZWMgMjAwNSAxODoxMDoyNSAtMDAwMAkxLjk0CisrKyBXZWJDb3JlL2t3cS9LV1FGb250TWV0
cmljcy5tbQkzMCBEZWMgMjAwNSAwOToyMTowMyAtMDAwMApAQCAtMjI0LDYgKzIyNCwzOSBAQCBm
bG9hdCBRRm9udE1ldHJpY3M6OmZsb2F0V2lkdGgoY29uc3QgUUNoCiAgICAgcmV0dXJuIFtkYXRh
LT5nZXRSZW5kZXJlcigpIGZsb2F0V2lkdGhGb3JSdW46JnJ1biBzdHlsZTomc3R5bGVdOwogfQog
CitRUmVjdCBRRm9udE1ldHJpY3M6OnNlbGVjdGlvblJlY3RGb3JUZXh0KGludCB4LCBpbnQgeSwg
aW50IGgsIGludCB0YWJXaWR0aCwgaW50IHhwb3MsCisgICAgY29uc3QgUUNoYXIgKnN0ciwgaW50
IGxlbiwgaW50IGZyb20sIGludCB0bywgaW50IHRvQWRkLAorICAgIGJvb2wgcnRsLCBib29sIHZp
c3VhbGx5T3JkZXJlZCwgaW50IGxldHRlclNwYWNpbmcsIGludCB3b3JkU3BhY2luZywgYm9vbCBz
bWFsbENhcHMpIGNvbnN0Cit7CisgICAgQ1JFQVRFX0ZBTUlMWV9BUlJBWShkYXRhLT5mb250KCks
IGZhbWlsaWVzKTsKKworICAgIGlmIChmcm9tIDwgMCkKKyAgICAgICAgZnJvbSA9IDA7CisgICAg
aWYgKHRvIDwgMCkKKyAgICAgICAgdG8gPSBsZW47CisgICAgICAgIAorICAgIFdlYkNvcmVUZXh0
UnVuIHJ1bjsKKyAgICBXZWJDb3JlSW5pdGlhbGl6ZVRleHRSdW4oJnJ1biwgKGNvbnN0IFVuaUNo
YXIgKilzdHIsIGxlbiwgZnJvbSwgdG8pOyAgICAKKyAgICBXZWJDb3JlVGV4dFN0eWxlIHN0eWxl
OworICAgIFdlYkNvcmVJbml0aWFsaXplRW1wdHlUZXh0U3R5bGUoJnN0eWxlKTsKKyAgICBzdHls
ZS5ydGwgPSBydGw7CisgICAgc3R5bGUuZGlyZWN0aW9uYWxPdmVycmlkZSA9IHZpc3VhbGx5T3Jk
ZXJlZDsKKyAgICBzdHlsZS5sZXR0ZXJTcGFjaW5nID0gbGV0dGVyU3BhY2luZzsKKyAgICBzdHls
ZS53b3JkU3BhY2luZyA9IHdvcmRTcGFjaW5nOworICAgIHN0eWxlLnNtYWxsQ2FwcyA9IHNtYWxs
Q2FwczsKKyAgICBzdHlsZS5mYW1pbGllcyA9IGZhbWlsaWVzOyAgICAKKyAgICBzdHlsZS5wYWRk
aW5nID0gdG9BZGQ7CisgICAgc3R5bGUudGFiV2lkdGggPSB0YWJXaWR0aDsKKyAgICBzdHlsZS54
cG9zID0geHBvczsKKyAgICBXZWJDb3JlVGV4dEdlb21ldHJ5IGdlb21ldHJ5OworICAgIFdlYkNv
cmVJbml0aWFsaXplRW1wdHlUZXh0R2VvbWV0cnkoJmdlb21ldHJ5KTsKKyAgICBnZW9tZXRyeS5w
b2ludCA9IE5TTWFrZVBvaW50KHgsIHkpOworICAgIGdlb21ldHJ5LnNlbGVjdGlvblkgPSB5Owor
ICAgIGdlb21ldHJ5LnNlbGVjdGlvbkhlaWdodCA9IGg7CisgICAgZ2VvbWV0cnkudXNlRm9udE1l
dHJpY3NGb3JTZWxlY3Rpb25ZQW5kSGVpZ2h0ID0gZmFsc2U7CisgICAgcmV0dXJuIFFSZWN0KFtk
YXRhLT5nZXRSZW5kZXJlcigpIHNlbGVjdGlvblJlY3RGb3JSdW46JnJ1biBzdHlsZTomc3R5bGUg
Z2VvbWV0cnk6Jmdlb21ldHJ5XSk7Cit9CisKIGludCBRRm9udE1ldHJpY3M6OmNoZWNrU2VsZWN0
aW9uUG9pbnQoUUNoYXIgKnMsIGludCBzbGVuLCBpbnQgcG9zLCBpbnQgbGVuLCBpbnQgdG9BZGQs
IGludCB0YWJXaWR0aCwgaW50IHhwb3MsIGludCBsZXR0ZXJTcGFjaW5nLCBpbnQgd29yZFNwYWNp
bmcsIGJvb2wgc21hbGxDYXBzLCBpbnQgeCwgYm9vbCByZXZlcnNlZCwgYm9vbCBkaXJPdmVycmlk
ZSwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3QKIHsKICAgICBpZiAoIWRhdGEpIHsK
SW5kZXg6IFdlYkNvcmUva3dxL1dlYkNvcmVUZXh0UmVuZGVyZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9rd3EvV2ViQ29yZVRleHRSZW5kZXJlci5oLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjM4CmRpZmYgLXAgLXUgLXIxLjM4IFdlYkNvcmUva3dxL1dlYkNvcmVU
ZXh0UmVuZGVyZXIuaAotLS0gV2ViQ29yZS9rd3EvV2ViQ29yZVRleHRSZW5kZXJlci5oCTE3IERl
YyAyMDA1IDE4OjEwOjI1IC0wMDAwCTEuMzgKKysrIFdlYkNvcmUva3dxL1dlYkNvcmVUZXh0UmVu
ZGVyZXIuaAkzMCBEZWMgMjAwNSAwOToyMTowNCAtMDAwMApAQCAtOTQsNiArOTQsNyBAQCBleHRl
cm4gdm9pZCBXZWJDb3JlSW5pdGlhbGl6ZUVtcHR5VGV4dEdlCiAKIC8vIGRyYXdpbmcKIC0gKHZv
aWQpZHJhd1J1bjooY29uc3QgV2ViQ29yZVRleHRSdW4gKilydW4gc3R5bGU6KGNvbnN0IFdlYkNv
cmVUZXh0U3R5bGUgKilzdHlsZSBnZW9tZXRyeTooY29uc3QgV2ViQ29yZVRleHRHZW9tZXRyeSAq
KWdlb21ldHJ5OworLSAoTlNSZWN0KXNlbGVjdGlvblJlY3RGb3JSdW46KGNvbnN0IFdlYkNvcmVU
ZXh0UnVuICopcnVuIHN0eWxlOihjb25zdCBXZWJDb3JlVGV4dFN0eWxlICopc3R5bGUgZ2VvbWV0
cnk6KGNvbnN0IFdlYkNvcmVUZXh0R2VvbWV0cnkgKilnZW9tZXRyeTsKIC0gKHZvaWQpZHJhd0hp
Z2hsaWdodEZvclJ1bjooY29uc3QgV2ViQ29yZVRleHRSdW4gKilydW4gc3R5bGU6KGNvbnN0IFdl
YkNvcmVUZXh0U3R5bGUgKilzdHlsZSBnZW9tZXRyeTooY29uc3QgV2ViQ29yZVRleHRHZW9tZXRy
eSAqKWdlb21ldHJ5OwogLSAodm9pZClkcmF3TGluZUZvckNoYXJhY3RlcnM6KE5TUG9pbnQpcG9p
bnQgeU9mZnNldDooZmxvYXQpeU9mZnNldCB3aWR0aDogKGludCl3aWR0aCBjb2xvcjooTlNDb2xv
ciAqKWNvbG9yIHRoaWNrbmVzczooZmxvYXQpdGhpY2tuZXNzOwogLSAodm9pZClkcmF3TGluZUZv
ck1pc3NwZWxsaW5nOihOU1BvaW50KXBvaW50IHdpdGhXaWR0aDooaW50KXdpZHRoOwpJbmRleDog
V2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L0No
YW5nZUxvZyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zNDM1CmRpZmYgLXAgLXUgLXIxLjM0MzUg
V2ViS2l0L0NoYW5nZUxvZwotLS0gV2ViS2l0L0NoYW5nZUxvZwkzMCBEZWMgMjAwNSAwNzowNTo0
NyAtMDAwMAkxLjM0MzUKKysrIFdlYktpdC9DaGFuZ2VMb2cJMzAgRGVjIDIwMDUgMTA6MTc6MzEg
LTAwMDAKQEAgLTEsMyArMSwyNyBAQAorMjAwNi0wMS0jIyAgTWl0eiBQZXR0ZWwgIDxvcGVuZGFy
d2luLm9yZ0BtaXR6cGV0dGVsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKyAgICAgICAgCisgICAgICAgIFRlc3Q6IGZhc3QvdGV4dC9qdXN0aWZpZWQtdGV4dC1y
ZWN0Lmh0bWwKKyAgICAgICAgCisgICAgICAgIC0gV2ViS2l0IHBhcnQgb2YgZml4IGZvcgorICAg
ICAgICAgIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ2
MQorICAgICAgICAgIFRleHQgd2lkdGggbWVhc3VyZWQgaW5jb3JyZWN0bHkgd2hlbiB0ZXh0LWFs
aWduOiBqdXN0aWZ5CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRleHRS
ZW5kZXJlci5tOgorICAgICAgICAoLVtXZWJUZXh0UmVuZGVyZXIgc2VsZWN0aW9uUmVjdEZvclJ1
bjpzdHlsZTpnZW9tZXRyeTpdKTogQWRkZWQuCisgICAgICAgIChDR19kcmF3SGlnaGxpZ2h0KTog
VXNlIG5ldyBmdW5jdGlvbiBDR19zZWxlY3Rpb25SZWN0LgorICAgICAgICAoQ0dfc2VsZWN0aW9u
UmVjdCk6IE5ldyBmdW5jdGlvbiB0byBjb21wdXRlIHRoZSBzZWxlY3Rpb24gcmVjdC4KKyAgICAg
ICAgRWxpbWluYXRlZCByb3VuZGluZyBoYWNrZXJ5IHRoYXQgd2FzIHJlcXVpcmVkIGZvciBrZWVw
aW5nIHRoZSBoaWdobGlnaHQKKyAgICAgICAgcmVjdCB3aXRoaW4gdGhlIHNlbGVjdGlvbiByZWN0
IGNvbXB1dGVkIGJ5CisgICAgICAgIElubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3QsIHNpbmNl
IHRoZSBsYXR0ZXIgdXNlcyB0aGlzIGZ1bmN0aW9uIG5vdy4KKyAgICAgICAgVGhlIG5ldyBzZWxl
Y3Rpb24gcmVjdCBpcyB3aWRlciBhbmQgbWF0Y2hlcyBBcHBLaXQgbW9yZSBjbG9zZWx5LAorICAg
ICAgICBhbHRob3VnaCB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIHJvdW5kZigpZWQgaW5zdGVhZCBv
ZiBjaWVsZigpZWQgZm9yCisgICAgICAgIG9wdGltYWwgY2FyZXQgcG9zaXRpb25pbmcuCisgICAg
ICAgIChBVFNVX2RyYXdIaWdobGlnaHQpOiBVc2UgbmV3IGZ1bmN0aW9uIEFUU1Vfc2VsZWN0aW9u
UmVjdC4KKyAgICAgICAgKEFUU1Vfc2VsZWN0aW9uUmVjdCk6IE5ldyBmdW5jdGlvbiB0byBjb21w
dXRlIHRoZSBzZWxlY3Rpb24gcmVjdC4KKyAgICAgICAgTXVjaCBsaWtlIENHX3NlbGVjdGlvblJl
Y3QuCisKIDIwMDUtMTItMzAgIE1pdHogUGV0dGVsICA8b3BlbmRhcndpbi5vcmdAbWl0enBldHRl
bC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYywgY29tbWl0dGVkIGJ5IE1hY2llai4K
SW5kZXg6IFdlYktpdC9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRleHRSZW5kZXJlci5tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXQvV2ViQ29yZVN1cHBvcnQuc3VicHJv
ai9XZWJUZXh0UmVuZGVyZXIubSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMTIKZGlmZiAtcCAt
dSAtcjEuMjEyIFdlYktpdC9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRleHRSZW5kZXJlci5t
Ci0tLSBXZWJLaXQvV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJUZXh0UmVuZGVyZXIubQkzMCBE
ZWMgMjAwNSAwNzowNTo1NCAtMDAwMAkxLjIxMgorKysgV2ViS2l0L1dlYkNvcmVTdXBwb3J0LnN1
YnByb2ovV2ViVGV4dFJlbmRlcmVyLm0JMzAgRGVjIDIwMDUgMDk6MjE6MjYgLTAwMDAKQEAgLTE0
NCw2ICsxNDQsMTAgQEAgc3RhdGljIGludCBDR19wb2ludFRvT2Zmc2V0KFdlYlRleHRSZW5kZQog
c3RhdGljIGludCBBVFNVX3BvaW50VG9PZmZzZXQoV2ViVGV4dFJlbmRlcmVyICosIGNvbnN0IFdl
YkNvcmVUZXh0UnVuICosIGNvbnN0IFdlYkNvcmVUZXh0U3R5bGUgKiwKICAgICBpbnQgeCwgYm9v
bCBpbmNsdWRlUGFydGlhbEdseXBocyk7CiAKKy8vIFNlbGVjdGlvbiByZWN0Lgorc3RhdGljIE5T
UmVjdCBDR19zZWxlY3Rpb25SZWN0KFdlYlRleHRSZW5kZXJlciAqLCBjb25zdCBXZWJDb3JlVGV4
dFJ1biAqLCBjb25zdCBXZWJDb3JlVGV4dFN0eWxlICosIGNvbnN0IFdlYkNvcmVUZXh0R2VvbWV0
cnkgKik7CitzdGF0aWMgTlNSZWN0IEFUU1Vfc2VsZWN0aW9uUmVjdChXZWJUZXh0UmVuZGVyZXIg
KiwgY29uc3QgV2ViQ29yZVRleHRSdW4gKiwgY29uc3QgV2ViQ29yZVRleHRTdHlsZSAqLCBjb25z
dCBXZWJDb3JlVGV4dEdlb21ldHJ5ICopOworCiAvLyBEcmF3aW5nIGhpZ2hsaWdodC4KIHN0YXRp
YyB2b2lkIENHX2RyYXdIaWdobGlnaHQoV2ViVGV4dFJlbmRlcmVyICosIGNvbnN0IFdlYkNvcmVU
ZXh0UnVuICosIGNvbnN0IFdlYkNvcmVUZXh0U3R5bGUgKiwgY29uc3QgV2ViQ29yZVRleHRHZW9t
ZXRyeSAqKTsKIHN0YXRpYyB2b2lkIEFUU1VfZHJhd0hpZ2hsaWdodChXZWJUZXh0UmVuZGVyZXIg
KiwgY29uc3QgV2ViQ29yZVRleHRSdW4gKiwgY29uc3QgV2ViQ29yZVRleHRTdHlsZSAqLCBjb25z
dCBXZWJDb3JlVGV4dEdlb21ldHJ5ICopOwpAQCAtNTU2LDYgKzU2MCwxNCBAQCBzdGF0aWMgdm9p
ZCBkZXN0cm95KFdlYlRleHRSZW5kZXJlciAqcmVuCiAgICAgW2dyYXBoaWNzQ29udGV4dCBzZXRT
aG91bGRBbnRpYWxpYXM6IGZsYWddOwogfQogCistIChOU1JlY3Qpc2VsZWN0aW9uUmVjdEZvclJ1
bjooY29uc3QgV2ViQ29yZVRleHRSdW4gKilydW4gc3R5bGU6KGNvbnN0IFdlYkNvcmVUZXh0U3R5
bGUgKilzdHlsZSBnZW9tZXRyeTooY29uc3QgV2ViQ29yZVRleHRHZW9tZXRyeSAqKWdlb21ldHJ5
Cit7CisgICAgaWYgKHNob3VsZFVzZUFUU1UocnVuKSkKKyAgICAgICAgcmV0dXJuIEFUU1Vfc2Vs
ZWN0aW9uUmVjdChzZWxmLCBydW4sIHN0eWxlLCBnZW9tZXRyeSk7CisgICAgZWxzZQorICAgICAg
ICByZXR1cm4gQ0dfc2VsZWN0aW9uUmVjdChzZWxmLCBydW4sIHN0eWxlLCBnZW9tZXRyeSk7Cit9
CisKIC0gKHZvaWQpZHJhd0hpZ2hsaWdodEZvclJ1bjooY29uc3QgV2ViQ29yZVRleHRSdW4gKily
dW4gc3R5bGU6KGNvbnN0IFdlYkNvcmVUZXh0U3R5bGUgKilzdHlsZSBnZW9tZXRyeTooY29uc3Qg
V2ViQ29yZVRleHRHZW9tZXRyeSAqKWdlb21ldHJ5CiB7CiAgICAgaWYgKHNob3VsZFVzZUFUU1Uo
cnVuKSkKQEAgLTg3MSw3ICs4ODMsMTEgQEAgc3RhdGljIHZvaWQgQ0dfZHJhd0hpZ2hsaWdodChX
ZWJUZXh0UmVuZAogICAgICAgICByZXR1cm47CiAKICAgICBbc3R5bGUtPmJhY2tncm91bmRDb2xv
ciBzZXRdOworICAgIFtOU0JlemllclBhdGggZmlsbFJlY3Q6Q0dfc2VsZWN0aW9uUmVjdChyZW5k
ZXJlciwgcnVuLCBzdHlsZSwgZ2VvbWV0cnkpXTsKK30KIAorc3RhdGljIE5TUmVjdCBDR19zZWxl
Y3Rpb25SZWN0KFdlYlRleHRSZW5kZXJlciAqcmVuZGVyZXIsIGNvbnN0IFdlYkNvcmVUZXh0UnVu
ICogcnVuLCBjb25zdCBXZWJDb3JlVGV4dFN0eWxlICpzdHlsZSwgY29uc3QgV2ViQ29yZVRleHRH
ZW9tZXRyeSAqZ2VvbWV0cnkpCit7CiAgICAgZmxvYXQgeVBvcyA9IGdlb21ldHJ5LT51c2VGb250
TWV0cmljc0ZvclNlbGVjdGlvbllBbmRIZWlnaHQKICAgICAgICAgPyBnZW9tZXRyeS0+cG9pbnQu
eSAtIHJlbmRlcmVyLT5hc2NlbnQgLSAocmVuZGVyZXItPmxpbmVHYXAgLyAyKSA6IGdlb21ldHJ5
LT5zZWxlY3Rpb25ZOwogICAgIGZsb2F0IGhlaWdodCA9IGdlb21ldHJ5LT51c2VGb250TWV0cmlj
c0ZvclNlbGVjdGlvbllBbmRIZWlnaHQKQEAgLTg4NiwyMCArOTAyLDE1IEBAIHN0YXRpYyB2b2lk
IENHX2RyYXdIaWdobGlnaHQoV2ViVGV4dFJlbmQKICAgICAKICAgICBhZHZhbmNlV2lkdGhJdGVy
YXRvcigmaXQsIHJ1bi0+ZnJvbSwgMCwgMCwgMCk7CiAgICAgZmxvYXQgYmVmb3JlV2lkdGggPSBp
dC5ydW5XaWR0aFNvRmFyOwotICAgIC8vIGFwcGx5IHJvdW5kaW5nIGFzIGlmIHRoaXMgaXMgdGhl
IGVuZCBvZiB0aGUgcnVuLCBzaW5jZSB0aGF0J3MgaG93IFJlbmRlclRleHQ6OnNlbGVjdGlvblJl
Y3QoKSB3b3JrcwotICAgIGlmICgoc3R5bGUtPmFwcGx5V29yZFJvdW5kaW5nICYmIGlzUm91bmRp
bmdIYWNrQ2hhcmFjdGVyKHJ1bi0+Y2hhcmFjdGVyc1tydW4tPmZyb21dKSkKLSAgICAgICAgICAg
IHx8IHN0eWxlLT5hcHBseVJ1blJvdW5kaW5nKQotICAgICAgICBiZWZvcmVXaWR0aCA9IGNlaWxm
KGJlZm9yZVdpZHRoKTsKICAgICBhZHZhbmNlV2lkdGhJdGVyYXRvcigmaXQsIHJ1bi0+dG8sIDAs
IDAsIDApOwotICAgIGZsb2F0IGJhY2tncm91bmRXaWR0aCA9IGl0LnJ1bldpZHRoU29GYXIgLSBi
ZWZvcmVXaWR0aDsKKyAgICBmbG9hdCBhZnRlcldpZHRoID0gaXQucnVuV2lkdGhTb0ZhcjsKKyAg
ICAvLyBVc2luZyByb3VuZGYoKSByYXRoZXIgdGhhbiBjZWlsZigpIGZvciB0aGUgcmlnaHQgZWRn
ZSBhcyBhIGNvbXByb21pc2UgdG8gZW5zdXJlIGNvcnJlY3QgY2FyZXQgcG9zaXRpb25pbmcKICAg
ICBpZiAoc3R5bGUtPnJ0bCkgewogICAgICAgICBhZHZhbmNlV2lkdGhJdGVyYXRvcigmaXQsIHJ1
bi0+bGVuZ3RoLCAwLCAwLCAwKTsKICAgICAgICAgZmxvYXQgdG90YWxXaWR0aCA9IGl0LnJ1bldp
ZHRoU29GYXI7Ci0gICAgICAgIGlmIChzdHlsZS0+YXBwbHlSdW5Sb3VuZGluZykKLSAgICAgICAg
ICAgIHRvdGFsV2lkdGggPSBjZWlsZih0b3RhbFdpZHRoKTsKLSAgICAgICAgW05TQmV6aWVyUGF0
aCBmaWxsUmVjdDpOU01ha2VSZWN0KGdlb21ldHJ5LT5wb2ludC54ICsgcm91bmRmKHRvdGFsV2lk
dGggLSBiYWNrZ3JvdW5kV2lkdGggLSBiZWZvcmVXaWR0aCksIHlQb3MsIHJvdW5kZihiYWNrZ3Jv
dW5kV2lkdGgpLCBoZWlnaHQpXTsKKyAgICAgICAgcmV0dXJuIE5TTWFrZVJlY3QoZ2VvbWV0cnkt
PnBvaW50LnggKyBmbG9vcmYodG90YWxXaWR0aCAtIGFmdGVyV2lkdGgpLCB5UG9zLCByb3VuZGYo
dG90YWxXaWR0aCAtIGJlZm9yZVdpZHRoKSAtIGZsb29yZih0b3RhbFdpZHRoIC0gYWZ0ZXJXaWR0
aCksIGhlaWdodCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgW05TQmV6aWVyUGF0aCBmaWxsUmVj
dDpOU01ha2VSZWN0KGdlb21ldHJ5LT5wb2ludC54ICsgcm91bmRmKGJlZm9yZVdpZHRoKSwgeVBv
cywgcm91bmRmKGJhY2tncm91bmRXaWR0aCksIGhlaWdodCldOworICAgICAgICByZXR1cm4gTlNN
YWtlUmVjdChnZW9tZXRyeS0+cG9pbnQueCArIGZsb29yZihiZWZvcmVXaWR0aCksIHlQb3MsIHJv
dW5kZihhZnRlcldpZHRoKSAtIGZsb29yZihiZWZvcmVXaWR0aCksIGhlaWdodCk7CiAgICAgfQog
fQogCkBAIC0xNDU3LDUzICsxNDY4LDYyIEBAIHN0YXRpYyB2b2lkIEFUU1VfZHJhd0hpZ2hsaWdo
dChXZWJUZXh0UmUKIAogICAgIGlmIChzdHlsZS0+YmFja2dyb3VuZENvbG9yID09IG5pbCkKICAg
ICAgICAgcmV0dXJuOworICAgIGlmIChydW4tPnRvIDw9IHJ1bi0+ZnJvbSkKKyAgICAgICAgcmV0
dXJuOwogICAgIAorICAgIFtzdHlsZS0+YmFja2dyb3VuZENvbG9yIHNldF07CisgICAgW05TQmV6
aWVyUGF0aCBmaWxsUmVjdDpBVFNVX3NlbGVjdGlvblJlY3QocmVuZGVyZXIsIHJ1biwgc3R5bGUs
IGdlb21ldHJ5KV07Cit9CisKK3N0YXRpYyBOU1JlY3QgQVRTVV9zZWxlY3Rpb25SZWN0KFdlYlRl
eHRSZW5kZXJlciAqcmVuZGVyZXIsIGNvbnN0IFdlYkNvcmVUZXh0UnVuICpydW4sIGNvbnN0IFdl
YkNvcmVUZXh0U3R5bGUgKnN0eWxlLCBjb25zdCBXZWJDb3JlVGV4dEdlb21ldHJ5ICpnZW9tZXRy
eSkKK3sKICAgICBpbnQgZnJvbSA9IHJ1bi0+ZnJvbTsKICAgICBpbnQgdG8gPSBydW4tPnRvOwog
ICAgIGlmIChmcm9tID09IC0xKQogICAgICAgICBmcm9tID0gMDsKICAgICBpZiAodG8gPT0gLTEp
CiAgICAgICAgIHRvID0gcnVuLT5sZW5ndGg7Ci0gICAgaW50IHJ1bkxlbmd0aCA9IHRvIC0gZnJv
bTsKLSAgICBpZiAocnVuTGVuZ3RoIDw9IDApCi0gICAgICAgIHJldHVybjsKLQotICAgIFdlYkNv
cmVUZXh0UnVuIHJ1bldpdGhMZWFkID0gKnJ1bjsKLSAgICBydW5XaXRoTGVhZC5mcm9tID0gMDsK
LSAgICBXZWJDb3JlVGV4dFJ1biAqYVJ1biA9ICZydW5XaXRoTGVhZDsKKyAgICAgICAgCisgICAg
V2ViQ29yZVRleHRSdW4gY29tcGxldGVSdW4gPSAqcnVuOworICAgIGNvbXBsZXRlUnVuLmZyb20g
PSAwOworICAgIGNvbXBsZXRlUnVuLnRvID0gcnVuLT5sZW5ndGg7CisgICAgCisgICAgV2ViQ29y
ZVRleHRSdW4gKmFSdW4gPSAmY29tcGxldGVSdW47CiAgICAgV2ViQ29yZVRleHRSdW4gc3dhcHBl
ZFJ1bjsKLQorICAgIAogICAgIGlmIChzdHlsZS0+ZGlyZWN0aW9uYWxPdmVycmlkZSkgewogICAg
ICAgICBzd2FwcGVkUnVuID0gYWRkRGlyZWN0aW9uYWxPdmVycmlkZShhUnVuLCBzdHlsZS0+cnRs
KTsKICAgICAgICAgYVJ1biA9ICZzd2FwcGVkUnVuOworICAgICAgICBmcm9tKys7CisgICAgICAg
IHRvKys7CiAgICAgfQogICAgCi0gICAgZmxvYXQgc2VsZWN0ZWRMZWZ0WDsKLSAgICBmbG9hdCB3
aWR0aFdpdGhMZWFkID0gQVRTVV9mbG9hdFdpZHRoRm9yUnVuKHJlbmRlcmVyLCBhUnVuLCBzdHls
ZSk7CisgICAgQVRTVUxheW91dFBhcmFtZXRlcnMgcGFyYW1zOworICAgIGNyZWF0ZUFUU1VMYXlv
dXRQYXJhbWV0ZXJzKCZwYXJhbXMsIHJlbmRlcmVyLCBhUnVuLCBzdHlsZSk7CiAgICAgCi0gICAg
YVJ1bi0+dG8gLT0gcnVuTGVuZ3RoOwotICAgIGZsb2F0IGxlYWRXaWR0aCA9IEFUU1VfZmxvYXRX
aWR0aEZvclJ1bihyZW5kZXJlciwgYVJ1biwgc3R5bGUpOworICAgIEFUU1RyYXBlem9pZCBmaXJz
dEdseXBoQm91bmRzOworICAgIEl0ZW1Db3VudCBhY3R1YWxOdW1Cb3VuZHM7CiAgICAgCi0gICAg
ZmxvYXQgYmFja2dyb3VuZFdpZHRoID0gcm91bmRmKHdpZHRoV2l0aExlYWQgLSBsZWFkV2lkdGgp
OwotCi0gICAgaWYgKCFzdHlsZS0+cnRsKQotICAgICAgICBzZWxlY3RlZExlZnRYID0gcm91bmRm
KGdlb21ldHJ5LT5wb2ludC54ICsgbGVhZFdpZHRoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgYVJ1
bi0+dG8gKz0gcnVuLT5sZW5ndGggLSBydW4tPmZyb207Ci0gICAgICAgIGZsb2F0IHRvdGFsV2lk
dGggPSBBVFNVX2Zsb2F0V2lkdGhGb3JSdW4ocmVuZGVyZXIsIGFSdW4sIHN0eWxlKTsKLSAgICAg
ICAgc2VsZWN0ZWRMZWZ0WCA9IHJvdW5kZihnZW9tZXRyeS0+cG9pbnQueCArIHRvdGFsV2lkdGgg
LSB3aWR0aFdpdGhMZWFkKTsKKyAgICBPU1N0YXR1cyBzdGF0dXMgPSBBVFNVR2V0R2x5cGhCb3Vu
ZHMocGFyYW1zLmxheW91dCwgMCwgMCwgZnJvbSwgdG8gLSBmcm9tLCBrQVRTVXNlRnJhY3Rpb25h
bE9yaWdpbnMsIDEsICZmaXJzdEdseXBoQm91bmRzLCAmYWN0dWFsTnVtQm91bmRzKTsKKyAgICBp
ZiAoc3RhdHVzICE9IG5vRXJyIHx8IGFjdHVhbE51bUJvdW5kcyAhPSAxKSB7CisgICAgICAgIHN0
YXRpYyBBVFNUcmFwZXpvaWQgemVyb1RyYXBlem9pZCA9IHsgezAsIDB9LCB7MCwgMH0sIHswLCAw
fSwgezAsIDB9IH07CisgICAgICAgIGZpcnN0R2x5cGhCb3VuZHMgPSB6ZXJvVHJhcGV6b2lkOwog
ICAgIH0KKyAgICBkaXNwb3NlQVRTVUxheW91dFBhcmFtZXRlcnMoJnBhcmFtcyk7ICAgIAogICAg
IAotICAgIFtzdHlsZS0+YmFja2dyb3VuZENvbG9yIHNldF07Ci0KKyAgICBmbG9hdCBiZWZvcmVX
aWR0aCA9IE1JTihGaXhlZFRvRmxvYXQoZmlyc3RHbHlwaEJvdW5kcy5sb3dlckxlZnQueCksIEZp
eGVkVG9GbG9hdChmaXJzdEdseXBoQm91bmRzLnVwcGVyTGVmdC54KSk7CisgICAgZmxvYXQgYWZ0
ZXJXaWR0aCA9IE1BWChGaXhlZFRvRmxvYXQoZmlyc3RHbHlwaEJvdW5kcy5sb3dlclJpZ2h0Lngp
LCBGaXhlZFRvRmxvYXQoZmlyc3RHbHlwaEJvdW5kcy51cHBlclJpZ2h0LngpKTsKICAgICBmbG9h
dCB5UG9zID0gZ2VvbWV0cnktPnVzZUZvbnRNZXRyaWNzRm9yU2VsZWN0aW9uWUFuZEhlaWdodAog
ICAgICAgICA/IGdlb21ldHJ5LT5wb2ludC55IC0gcmVuZGVyZXItPmFzY2VudCA6IGdlb21ldHJ5
LT5zZWxlY3Rpb25ZOwogICAgIGZsb2F0IGhlaWdodCA9IGdlb21ldHJ5LT51c2VGb250TWV0cmlj
c0ZvclNlbGVjdGlvbllBbmRIZWlnaHQKICAgICAgICAgPyByZW5kZXJlci0+bGluZVNwYWNpbmcg
OiBnZW9tZXRyeS0+c2VsZWN0aW9uSGVpZ2h0OwotICAgIFtOU0JlemllclBhdGggZmlsbFJlY3Q6
TlNNYWtlUmVjdChzZWxlY3RlZExlZnRYLCB5UG9zLCBiYWNrZ3JvdW5kV2lkdGgsIGhlaWdodCld
OworCisgICAgTlNSZWN0IHJlY3QgPSBOU01ha2VSZWN0KGdlb21ldHJ5LT5wb2ludC54ICsgZmxv
b3JmKGJlZm9yZVdpZHRoKSwgeVBvcywgcm91bmRmKGFmdGVyV2lkdGgpIC0gZmxvb3JmKGJlZm9y
ZVdpZHRoKSwgaGVpZ2h0KTsKIAogICAgIGlmIChzdHlsZS0+ZGlyZWN0aW9uYWxPdmVycmlkZSkK
ICAgICAgICAgZnJlZSgodm9pZCAqKXN3YXBwZWRSdW4uY2hhcmFjdGVycyk7CisKKyAgICByZXR1
cm4gcmVjdDsKIH0KIAogCg==
</data>
<flag name="review"
          id="1144"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>