<?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>58400</bug_id>
          
          <creation_ts>2011-04-12 17:17:05 -0700</creation_ts>
          <short_desc>Make availableWidth and totalOverhangWidth in findNextLineBreak member variables of LineWidth</short_desc>
          <delta_ts>2011-04-12 19:13:38 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>57779</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>384533</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-12 17:17:05 -0700</bug_when>
    <thetext>This is a cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384547</commentid>
    <comment_count>1</comment_count>
      <attachid>89314</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-12 17:28:27 -0700</bug_when>
    <thetext>Created attachment 89314
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384551</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-12 17:29:22 -0700</bug_when>
    <thetext>I&apos;m going to merge LineOffsets and LineWidth in the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384592</commentid>
    <comment_count>3</comment_count>
      <attachid>89314</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-12 18:14:07 -0700</bug_when>
    <thetext>Comment on attachment 89314
cleanup

LGTM.  This is going to be so beautiful when you&apos;re done. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384610</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-12 18:40:41 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 89314 [details])
&gt; LGTM.  This is going to be so beautiful when you&apos;re done. :)

I know :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384623</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-12 19:13:38 -0700</bug_when>
    <thetext>Committed r83684: &lt;http://trac.webkit.org/changeset/83684&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89314</attachid>
            <date>2011-04-12 17:28:27 -0700</date>
            <delta_ts>2011-04-12 18:14:07 -0700</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-58400-20110412172826.patch</filename>
            <type>text/plain</type>
            <size>18530</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNjY5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDQtMTIgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWFrZSBhdmFpbGFibGVXaWR0aCBhbmQgdG90YWxPdmVyaGFuZ1dp
ZHRoIGluIGZpbmROZXh0TGluZUJyZWFrIG1lbWJlciB2YXJpYWJsZXMgb2YgTGluZVdpZHRoCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODQwMAorCisg
ICAgICAgIEFkZGVkIG1fYXZhaWxhYmxlV2lkdGggYW5kIG1fb3ZlcmhhbmdXaWR0aCB0byBMaW5l
V2lkdGggdGhpcyBhbGxvd3MgdXMgdG8gZW5jYXBzdWxhdGUgbV9vdmVyaGFuZ1dpZHRoLgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5lV2lkdGg6Okxp
bmVXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lV2lkdGg6OmZpdHNPbkxpbmUpOiBBZGRl
ZDsgcmV0dXJucyB0cnVlIGlmIGN1cnJlbnQgd2lkdGggKyBmaXJzdCBhcmd1bWVudCA8PSBhdmFp
bGFibGVXaWR0aC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6YXZhaWxhYmxlV2lkdGgp
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6c2V0QXZhaWxhYmxlV2lkdGgp
OiBBZGRlZDsgdGFrZXMgTGluZU9mZnNldHMuCisgICAgICAgIChXZWJDb3JlOjpMaW5lV2lkdGg6
OmFwcGx5T3ZlcmhhbmcpOiBBZGRlZDsgb2J0YWlucyB0aGUgb3Zlcmhhbmcgd2lkdGggZnJvbSBy
dWJ5IHJ1biBhbmQgaW5mbGF0ZXMKKyAgICAgICAgdGhlIGF2YWlsYWJsZSB3aWR0aC4KKyAgICAg
ICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6Zml0QmVsb3dGbG9hdHMpOiBNb3ZlZCBmcm9tIFJlbmRl
ckJsb2NrLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZUJyZWFr
KTogVXNlcyBMaW5lV2lkdGguCisKIDIwMTEtMDQtMTIgIFN0ZXBoYW5pZSBMZXdpcyAgPHNsZXdp
c0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gODM2NDApCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNyBAQCBjbGFzcyBJbmxpbmVJdGVyYXRvcjsKIGNsYXNzIExheW91dFN0YXRlTWFp
bnRhaW5lcjsKIGNsYXNzIExhenlMaW5lQnJlYWtJdGVyYXRvcjsKIGNsYXNzIExpbmVPZmZzZXRz
OworY2xhc3MgTGluZVdpZHRoOwogY2xhc3MgUmVuZGVySW5saW5lOwogCiBzdHJ1Y3QgQmlkaVJ1
bjsKQEAgLTQ5Nyw3ICs0OTgsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBza2lwVHJhaWxpbmdX
aGl0ZXNwYWNlKElubGluZUl0ZXJhdG9yJiwgYm9vbCBpc0xpbmVFbXB0eSwgYm9vbCBwcmV2aW91
c0xpbmVCcm9rZUNsZWFubHkpOwogICAgIHZvaWQgc2tpcExlYWRpbmdXaGl0ZXNwYWNlKElubGlu
ZUJpZGlSZXNvbHZlciYsIGJvb2wgaXNMaW5lRW1wdHksIGJvb2wgcHJldmlvdXNMaW5lQnJva2VD
bGVhbmx5LCBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgTGluZU9m
ZnNldHMmKTsKLSAgICB2b2lkIGZpdEJlbG93RmxvYXRzKGZsb2F0IHdpZHRoVG9GaXQsIGZsb2F0
IHRvdGFsT3ZlcmhhbmdXaWR0aCwgYm9vbCBmaXJzdExpbmUsIGZsb2F0JiBhdmFpbGFibGVXaWR0
aCk7CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8UmVuZGVyVGV4dCosIExhenlMaW5lQnJlYWtJdGVy
YXRvcj4gTGluZUJyZWFrSXRlcmF0b3JJbmZvOwogICAgIElubGluZUl0ZXJhdG9yIGZpbmROZXh0
TGluZUJyZWFrKElubGluZUJpZGlSZXNvbHZlciYsIGJvb2wgZmlyc3RMaW5lLCBib29sJiBpc0xp
bmVFbXB0eSwgTGluZUJyZWFrSXRlcmF0b3JJbmZvJiwgYm9vbCYgcHJldmlvdXNMaW5lQnJva2VD
bGVhbmx5LCBib29sJiBoeXBoZW5hdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVDbGVhciosIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5l
LCBWZWN0b3I8UmVuZGVyQm94Kj4mIHBvc2l0aW9uZWRPYmplY3RzKTsKQEAgLTc4Nyw2ICs3ODcs
NyBAQCBwcml2YXRlOgogICAgIC8vIChjYWxsaW5nIG1vdmVDaGlsZFRvLCBtb3ZlQWxsQ2hpbGRy
ZW5UbywgYW5kIG1ha2VDaGlsZHJlbk5vbklubGluZSkuCiAgICAgZnJpZW5kIGNsYXNzIFJlbmRl
clJ1YnlCYXNlOwogICAgIGZyaWVuZCBjbGFzcyBMaW5lT2Zmc2V0czsgLy8gTmVlZHMgdG8ga25v
dyBGbG9hdGluZ09iamVjdAorICAgIGZyaWVuZCBjbGFzcyBMaW5lV2lkdGg7CiB9OwogCiBpbmxp
bmUgUmVuZGVyQmxvY2sqIHRvUmVuZGVyQmxvY2soUmVuZGVyT2JqZWN0KiBvYmplY3QpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0
LmNwcAkocmV2aXNpb24gODM2NDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5NiwzMCArMTQ5Niw2IEBA
IHN0YXRpYyBib29sIHNob3VsZFNraXBXaGl0ZXNwYWNlQWZ0ZXJTdGEKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2s6OmZpdEJlbG93RmxvYXRzKGZsb2F0IHdpZHRoVG9G
aXQsIGZsb2F0IHRvdGFsT3ZlcmhhbmdXaWR0aCwgYm9vbCBmaXJzdExpbmUsIGZsb2F0JiBhdmFp
bGFibGVXaWR0aCkKLXsKLSAgICBBU1NFUlQod2lkdGhUb0ZpdCA+IGF2YWlsYWJsZVdpZHRoKTsK
LQotICAgIGludCBmbG9hdExvZ2ljYWxCb3R0b207Ci0gICAgaW50IGxhc3RGbG9hdExvZ2ljYWxC
b3R0b20gPSBsb2dpY2FsSGVpZ2h0KCk7Ci0gICAgZmxvYXQgbmV3TGluZVdpZHRoID0gYXZhaWxh
YmxlV2lkdGg7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgZmxvYXRMb2dpY2FsQm90dG9t
ID0gbmV4dEZsb2F0TG9naWNhbEJvdHRvbUJlbG93KGxhc3RGbG9hdExvZ2ljYWxCb3R0b20pOwot
ICAgICAgICBpZiAoIWZsb2F0TG9naWNhbEJvdHRvbSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgIG5ld0xpbmVXaWR0aCA9IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmUoZmxvYXRM
b2dpY2FsQm90dG9tLCBmaXJzdExpbmUpOwotICAgICAgICBsYXN0RmxvYXRMb2dpY2FsQm90dG9t
ID0gZmxvYXRMb2dpY2FsQm90dG9tOwotICAgICAgICBpZiAobmV3TGluZVdpZHRoID49IHdpZHRo
VG9GaXQpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAobmV3TGluZVdpZHRo
ID4gYXZhaWxhYmxlV2lkdGgpIHsKLSAgICAgICAgc2V0TG9naWNhbEhlaWdodChsYXN0RmxvYXRM
b2dpY2FsQm90dG9tKTsKLSAgICAgICAgYXZhaWxhYmxlV2lkdGggPSBuZXdMaW5lV2lkdGggKyB0
b3RhbE92ZXJoYW5nV2lkdGg7Ci0gICAgfQotfQotCiBzdGF0aWMgaW5saW5lIGZsb2F0IHRleHRX
aWR0aChSZW5kZXJUZXh0KiB0ZXh0LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGNvbnN0
IEZvbnQmIGZvbnQsIGZsb2F0IHhQb3MsIGJvb2wgaXNGaXhlZFBpdGNoLCBib29sIGNvbGxhcHNl
V2hpdGVTcGFjZSkKIHsKICAgICBpZiAoaXNGaXhlZFBpdGNoIHx8ICghZnJvbSAmJiBsZW4gPT0g
dGV4dC0+dGV4dExlbmd0aCgpKSB8fCB0ZXh0LT5zdHlsZSgpLT5oYXNUZXh0Q29tYmluZSgpKQpA
QCAtMTYxNywxNiArMTU5MywyMSBAQCBpbmxpbmUgdm9pZCBMaW5lT2Zmc2V0czo6c2hyaW5rV2lk
dGhGb3JOCiAKIGNsYXNzIExpbmVXaWR0aCB7CiBwdWJsaWM6Ci0gICAgTGluZVdpZHRoKCkKKyAg
ICBMaW5lV2lkdGgoZmxvYXQgYXZhaWxhYmxlV2lkdGgpCiAgICAgICAgIDogbV91bmNvbW1pdHRl
ZFdpZHRoKDApCiAgICAgICAgICwgbV9jb21taXR0ZWRXaWR0aCgwKQorICAgICAgICAsIG1fb3Zl
cmhhbmdXaWR0aCgwKQorICAgICAgICAsIG1fYXZhaWxhYmxlV2lkdGgoYXZhaWxhYmxlV2lkdGgp
CiAgICAgewogICAgIH0KKyAgICBib29sIGZpdHNPbkxpbmUoKSBjb25zdCB7IHJldHVybiBjdXJy
ZW50V2lkdGgoKSA8PSBtX2F2YWlsYWJsZVdpZHRoOyB9CisgICAgYm9vbCBmaXRzT25MaW5lKGZs
b2F0IGV4dHJhKSBjb25zdCB7IHJldHVybiBjdXJyZW50V2lkdGgoKSArIGV4dHJhIDw9IG1fYXZh
aWxhYmxlV2lkdGg7IH0KICAgICBmbG9hdCBjdXJyZW50V2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X2NvbW1pdHRlZFdpZHRoICsgbV91bmNvbW1pdHRlZFdpZHRoOyB9CiAKLSAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGV2ZW50dWFsbHkgcmVwbGFjZSB0aGVzZSB0d28gZnVuY3Rpb25zIGJ5IG9uZXMg
dGhhdCB3b3JrIG9uIGEgaGlnaGVyIGFic3RyYWN0aW9uLgorICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgZXZlbnR1YWxseSByZXBsYWNlIHRoZXNlIHRocmVlIGZ1bmN0aW9ucyBieSBvbmVzIHRoYXQg
d29yayBvbiBhIGhpZ2hlciBhYnN0cmFjdGlvbi4KICAgICBmbG9hdCB1bmNvbW1pdHRlZFdpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV91bmNvbW1pdHRlZFdpZHRoOyB9CiAgICAgZmxvYXQgY29tbWl0
dGVkV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2NvbW1pdHRlZFdpZHRoOyB9CisgICAgZmxvYXQg
YXZhaWxhYmxlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2F2YWlsYWJsZVdpZHRoOyB9CiAKICAg
ICB2b2lkIGFkZFVuY29tbWl0dGVkV2lkdGgoZmxvYXQgZGVsdGEpIHsgbV91bmNvbW1pdHRlZFdp
ZHRoICs9IGRlbHRhOyB9CiAgICAgdm9pZCBjb21taXQoKQpAQCAtMTYzNCwxMiArMTYxNSw1OSBA
QCBwdWJsaWM6CiAgICAgICAgIG1fY29tbWl0dGVkV2lkdGggKz0gbV91bmNvbW1pdHRlZFdpZHRo
OwogICAgICAgICBtX3VuY29tbWl0dGVkV2lkdGggPSAwOwogICAgIH0KKyAgICB2b2lkIGFwcGx5
T3ZlcmhhbmcoUmVuZGVyUnVieVJ1biosIGJvb2wgaXNGaXJzdExpbmUsIFJlbmRlck9iamVjdCog
c3RhcnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlcik7CisgICAgdm9pZCBmaXRC
ZWxvd0Zsb2F0cyhSZW5kZXJCbG9jayosIGJvb2wgaXNGaXJzdExpbmUpOworICAgIHZvaWQgc2V0
QXZhaWxhYmxlV2lkdGgoY29uc3QgTGluZU9mZnNldHMmIGxpbmVPZmZzZXRzKQorICAgIHsKKyAg
ICAgICAgbV9hdmFpbGFibGVXaWR0aCA9IGxpbmVPZmZzZXRzLndpZHRoKCkgKyBtX292ZXJoYW5n
V2lkdGg7CisgICAgfQogCiBwcml2YXRlOgogICAgIGZsb2F0IG1fdW5jb21taXR0ZWRXaWR0aDsK
ICAgICBmbG9hdCBtX2NvbW1pdHRlZFdpZHRoOworICAgIGZsb2F0IG1fb3ZlcmhhbmdXaWR0aDsg
Ly8gVGhlIGFtb3VudCBieSB3aGljaCB8d2lkdGh8IGhhcyBiZWVuIGluZmxhdGVkIHRvIGFjY291
bnQgZm9yIHBvc3NpYmxlIGNvbnRyYWN0aW9uIGR1ZSB0byBydWJ5IG92ZXJoYW5nLgorICAgIGZs
b2F0IG1fYXZhaWxhYmxlV2lkdGg7CiB9OwogCit2b2lkIExpbmVXaWR0aDo6YXBwbHlPdmVyaGFu
ZyhSZW5kZXJSdWJ5UnVuKiBydWJ5UnVuLCBib29sIGlzRmlyc3RMaW5lLCBSZW5kZXJPYmplY3Qq
IHN0YXJ0UmVuZGVyZXIsIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIpCit7CisgICAgaW50IHN0
YXJ0T3Zlcmhhbmc7CisgICAgaW50IGVuZE92ZXJoYW5nOworICAgIHJ1YnlSdW4tPmdldE92ZXJo
YW5nKGlzRmlyc3RMaW5lLCBzdGFydFJlbmRlcmVyLCBlbmRSZW5kZXJlciwgc3RhcnRPdmVyaGFu
ZywgZW5kT3ZlcmhhbmcpOworCisgICAgc3RhcnRPdmVyaGFuZyA9IG1pbjxpbnQ+KHN0YXJ0T3Zl
cmhhbmcsIG1fY29tbWl0dGVkV2lkdGgpOworICAgIG1fYXZhaWxhYmxlV2lkdGggKz0gc3RhcnRP
dmVyaGFuZzsKKworICAgIGVuZE92ZXJoYW5nID0gbWF4KG1pbjxpbnQ+KGVuZE92ZXJoYW5nLCBt
X2F2YWlsYWJsZVdpZHRoIC0gY3VycmVudFdpZHRoKCkpLCAwKTsKKyAgICBtX2F2YWlsYWJsZVdp
ZHRoICs9IGVuZE92ZXJoYW5nOworICAgIG1fb3ZlcmhhbmdXaWR0aCArPSBzdGFydE92ZXJoYW5n
ICsgZW5kT3Zlcmhhbmc7Cit9CisKK3ZvaWQgTGluZVdpZHRoOjpmaXRCZWxvd0Zsb2F0cyhSZW5k
ZXJCbG9jayogYmxvY2ssIGJvb2wgaXNGaXJzdExpbmUpCit7CisgICAgQVNTRVJUKCFtX2NvbW1p
dHRlZFdpZHRoKTsKKyAgICBBU1NFUlQoIWZpdHNPbkxpbmUoKSk7CisKKyAgICBpbnQgZmxvYXRM
b2dpY2FsQm90dG9tOworICAgIGludCBsYXN0RmxvYXRMb2dpY2FsQm90dG9tID0gYmxvY2stPmxv
Z2ljYWxIZWlnaHQoKTsKKyAgICBmbG9hdCBuZXdMaW5lV2lkdGggPSBtX2F2YWlsYWJsZVdpZHRo
OworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGZsb2F0TG9naWNhbEJvdHRvbSA9IGJsb2Nr
LT5uZXh0RmxvYXRMb2dpY2FsQm90dG9tQmVsb3cobGFzdEZsb2F0TG9naWNhbEJvdHRvbSk7Cisg
ICAgICAgIGlmICghZmxvYXRMb2dpY2FsQm90dG9tKQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgbmV3TGluZVdpZHRoID0gYmxvY2stPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmUo
ZmxvYXRMb2dpY2FsQm90dG9tLCBpc0ZpcnN0TGluZSk7CisgICAgICAgIGxhc3RGbG9hdExvZ2lj
YWxCb3R0b20gPSBmbG9hdExvZ2ljYWxCb3R0b207CisgICAgICAgIGlmIChuZXdMaW5lV2lkdGgg
Pj0gbV91bmNvbW1pdHRlZFdpZHRoKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
aWYgKG5ld0xpbmVXaWR0aCA+IG1fYXZhaWxhYmxlV2lkdGgpIHsKKyAgICAgICAgYmxvY2stPnNl
dExvZ2ljYWxIZWlnaHQobGFzdEZsb2F0TG9naWNhbEJvdHRvbSk7CisgICAgICAgIG1fYXZhaWxh
YmxlV2lkdGggPSBuZXdMaW5lV2lkdGggKyBtX292ZXJoYW5nV2lkdGg7CisgICAgfQorfQorCiBJ
bmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lQnJlYWsoSW5saW5lQmlkaVJl
c29sdmVyJiByZXNvbHZlciwgYm9vbCBmaXJzdExpbmUsIGJvb2wmIGlzTGluZUVtcHR5LCBMaW5l
QnJlYWtJdGVyYXRvckluZm8mIGxpbmVCcmVha0l0ZXJhdG9ySW5mbywgYm9vbCYgcHJldmlvdXNM
aW5lQnJva2VDbGVhbmx5LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sJiBoeXBoZW5hdGVkLCBFQ2xlYXIqIGNsZWFyLCBGbG9hdGluZ09iamVjdCog
bGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgVmVjdG9yPFJlbmRlckJveCo+JiBwb3NpdGlvbmVk
Qm94ZXMpCiB7CkBAIC0xNjUyLDEwICsxNjgwLDcgQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxv
Y2s6OmZpbmROZXh0TGluZQogCiAgICAgc2tpcExlYWRpbmdXaGl0ZXNwYWNlKHJlc29sdmVyLCBp
c0xpbmVFbXB0eSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5LCBsYXN0RmxvYXRGcm9tUHJldmlv
dXNMaW5lLCBsaW5lT2Zmc2V0cyk7CiAKLSAgICBmbG9hdCBhdmFpbGFibGVXaWR0aCA9IGxpbmVP
ZmZzZXRzLndpZHRoKCk7Ci0gICAgTGluZVdpZHRoIHdpZHRoOwotICAgIC8vIFRoZSBhbW91bnQg
Ynkgd2hpY2ggfHdpZHRofCBoYXMgYmVlbiBpbmZsYXRlZCB0byBhY2NvdW50IGZvciBwb3NzaWJs
ZSBjb250cmFjdGlvbiBkdWUgdG8gcnVieSBvdmVyaGFuZy4KLSAgICBmbG9hdCB0b3RhbE92ZXJo
YW5nV2lkdGggPSAwOworICAgIExpbmVXaWR0aCB3aWR0aChsaW5lT2Zmc2V0cy53aWR0aCgpKTsK
IAogICAgIGlmIChyZXNvbHZlci5wb3NpdGlvbigpLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBy
ZXNvbHZlci5wb3NpdGlvbigpOwpAQCAtMTcxNiw3ICsxNzQxLDcgQEAgSW5saW5lSXRlcmF0b3Ig
UmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZQogICAgICAgICBib29sIGNvbGxhcHNlV2hpdGVTcGFj
ZSA9IFJlbmRlclN0eWxlOjpjb2xsYXBzZVdoaXRlU3BhY2UoY3VycldTKTsKICAgICAgICAgICAg
IAogICAgICAgICBpZiAoby0+aXNCUigpKSB7Ci0gICAgICAgICAgICBpZiAod2lkdGguY3VycmVu
dFdpZHRoKCkgPD0gYXZhaWxhYmxlV2lkdGgpIHsKKyAgICAgICAgICAgIGlmICh3aWR0aC5maXRz
T25MaW5lKCkpIHsKICAgICAgICAgICAgICAgICBsQnJlYWsubW92ZVRvU3RhcnRPZihvKTsKICAg
ICAgICAgICAgICAgICBsQnJlYWsuaW5jcmVtZW50KCk7CiAKQEAgLTE3NDQsOSArMTc2OSw5IEBA
IElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpmaW5kTmV4dExpbmUKICAgICAgICAgICAgICAg
ICAvLyBjaGVjayBpZiBpdCBmaXRzIGluIHRoZSBjdXJyZW50IGxpbmUuCiAgICAgICAgICAgICAg
ICAgLy8gSWYgaXQgZG9lcywgcG9zaXRpb24gaXQgbm93LCBvdGhlcndpc2UsIHBvc2l0aW9uCiAg
ICAgICAgICAgICAgICAgLy8gaXQgYWZ0ZXIgbW92aW5nIHRvIG5leHQgbGluZSAoaW4gbmV3TGlu
ZSgpIGZ1bmMpCi0gICAgICAgICAgICAgICAgaWYgKGZsb2F0c0ZpdE9uTGluZSAmJiBsb2dpY2Fs
V2lkdGhGb3JGbG9hdChmKSArIHdpZHRoLmN1cnJlbnRXaWR0aCgpIDw9IGF2YWlsYWJsZVdpZHRo
KSB7CisgICAgICAgICAgICAgICAgaWYgKGZsb2F0c0ZpdE9uTGluZSAmJiB3aWR0aC5maXRzT25M
aW5lKGxvZ2ljYWxXaWR0aEZvckZsb2F0KGYpKSkgewogICAgICAgICAgICAgICAgICAgICBwb3Np
dGlvbk5ld0Zsb2F0T25MaW5lKGYsIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIGxpbmVPZmZz
ZXRzKTsKLSAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlV2lkdGggPSBsaW5lT2Zmc2V0cy53
aWR0aCgpICsgdG90YWxPdmVyaGFuZ1dpZHRoOworICAgICAgICAgICAgICAgICAgICB3aWR0aC5z
ZXRBdmFpbGFibGVXaWR0aChsaW5lT2Zmc2V0cyk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChs
QnJlYWsubV9vYmogPT0gbykgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFsQnJl
YWsubV9wb3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgbEJyZWFrLmluY3JlbWVudCgpOwpA
QCAtMTg0MiwxOCArMTg2Nyw4IEBAIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpmaW5kTmV4
dExpbmUKICAgICAgICAgICAgICAgICAgICAgd2lkdGguYWRkVW5jb21taXR0ZWRXaWR0aChyZXBs
YWNlZExvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICB3
aWR0aC5hZGRVbmNvbW1pdHRlZFdpZHRoKHJlcGxhY2VkTG9naWNhbFdpZHRoKTsKLSAgICAgICAg
ICAgIGlmIChvLT5pc1J1YnlSdW4oKSkgewotICAgICAgICAgICAgICAgIFJlbmRlclJ1YnlSdW4q
IHJ1YnlSdW4gPSB0b1JlbmRlclJ1YnlSdW4obyk7Ci0gICAgICAgICAgICAgICAgaW50IHN0YXJ0
T3Zlcmhhbmc7Ci0gICAgICAgICAgICAgICAgaW50IGVuZE92ZXJoYW5nOwotICAgICAgICAgICAg
ICAgIHJ1YnlSdW4tPmdldE92ZXJoYW5nKGZpcnN0TGluZSwgbGFzdCwgbmV4dCwgc3RhcnRPdmVy
aGFuZywgZW5kT3ZlcmhhbmcpOwotICAgICAgICAgICAgICAgIHN0YXJ0T3ZlcmhhbmcgPSBtaW48
aW50PihzdGFydE92ZXJoYW5nLCB3aWR0aC5jb21taXR0ZWRXaWR0aCgpKTsKLSAgICAgICAgICAg
ICAgICB0b3RhbE92ZXJoYW5nV2lkdGggKz0gc3RhcnRPdmVyaGFuZzsKLSAgICAgICAgICAgICAg
ICBhdmFpbGFibGVXaWR0aCArPSBzdGFydE92ZXJoYW5nOwotICAgICAgICAgICAgICAgIGVuZE92
ZXJoYW5nID0gbWF4KG1pbjxpbnQ+KGVuZE92ZXJoYW5nLCBhdmFpbGFibGVXaWR0aCAtIHdpZHRo
LmN1cnJlbnRXaWR0aCgpKSwgMCk7Ci0gICAgICAgICAgICAgICAgdG90YWxPdmVyaGFuZ1dpZHRo
ICs9IGVuZE92ZXJoYW5nOwotICAgICAgICAgICAgICAgIGF2YWlsYWJsZVdpZHRoICs9IGVuZE92
ZXJoYW5nOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG8tPmlzUnVieVJ1bigpKQor
ICAgICAgICAgICAgICAgIHdpZHRoLmFwcGx5T3ZlcmhhbmcodG9SZW5kZXJSdWJ5UnVuKG8pLCBm
aXJzdExpbmUsIGxhc3QsIG5leHQpOwogICAgICAgICB9IGVsc2UgaWYgKG8tPmlzVGV4dCgpKSB7
CiAgICAgICAgICAgICBpZiAoIXBvcykKICAgICAgICAgICAgICAgICBhcHBsaWVkU3RhcnRXaWR0
aCA9IGZhbHNlOwpAQCAtMTkyMiw3ICsxOTM3LDcgQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxv
Y2s6OmZpbmROZXh0TGluZQogICAgICAgICAgICAgICAgIGlmICgoYnJlYWtBbGwgfHwgYnJlYWtX
b3JkcykgJiYgIW1pZFdvcmRCcmVhaykgewogICAgICAgICAgICAgICAgICAgICB3cmFwVyArPSBj
aGFyV2lkdGg7CiAgICAgICAgICAgICAgICAgICAgIGNoYXJXaWR0aCA9IHRleHRXaWR0aCh0LCBw
b3MsIDEsIGYsIHdpZHRoLmNvbW1pdHRlZFdpZHRoKCkgKyB3cmFwVywgaXNGaXhlZFBpdGNoLCBj
b2xsYXBzZVdoaXRlU3BhY2UpOwotICAgICAgICAgICAgICAgICAgICBtaWRXb3JkQnJlYWsgPSB3
aWR0aC5jb21taXR0ZWRXaWR0aCgpICsgd3JhcFcgKyBjaGFyV2lkdGggPiBhdmFpbGFibGVXaWR0
aDsKKyAgICAgICAgICAgICAgICAgICAgbWlkV29yZEJyZWFrID0gd2lkdGguY29tbWl0dGVkV2lk
dGgoKSArIHdyYXBXICsgY2hhcldpZHRoID4gd2lkdGguYXZhaWxhYmxlV2lkdGgoKTsKICAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAobGluZUJyZWFrSXRlcmF0b3JJbmZv
LmZpcnN0ICE9IHQpIHsKQEAgLTE5NjQsMjkgKzE5NzksMjkgQEAgSW5saW5lSXRlcmF0b3IgUmVu
ZGVyQmxvY2s6OmZpbmROZXh0TGluZQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgYXBwbHlXb3JkU3BhY2luZyA9ICB3b3JkU3BhY2luZyAmJiBjdXJyZW50Q2hhcmFj
dGVySXNTcGFjZSAmJiAhcHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNlOwogCi0gICAgICAgICAgICAg
ICAgICAgIGlmICghd2lkdGguY29tbWl0dGVkV2lkdGgoKSAmJiBhdXRvV3JhcCAmJiB3aWR0aC51
bmNvbW1pdHRlZFdpZHRoKCkgPiBhdmFpbGFibGVXaWR0aCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGZpdEJlbG93RmxvYXRzKHdpZHRoLnVuY29tbWl0dGVkV2lkdGgoKSwgdG90YWxPdmVyaGFu
Z1dpZHRoLCBmaXJzdExpbmUsIGF2YWlsYWJsZVdpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCF3aWR0aC5jb21taXR0ZWRXaWR0aCgpICYmIGF1dG9XcmFwICYmICF3aWR0aC5maXRzT25M
aW5lKCkpCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aC5maXRCZWxvd0Zsb2F0cyh0aGlz
LCBmaXJzdExpbmUpOwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvV3JhcCB8fCBicmVh
a1dvcmRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBicmVhayBvbmx5IGFm
dGVyIHdoaXRlLXNwYWNlLCBjb25zaWRlciB0aGUgY3VycmVudCBjaGFyYWN0ZXIKICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGFzIGNhbmRpZGF0ZSB3aWR0aCBmb3IgdGhpcyBsaW5lLgogICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBsaW5lV2FzVG9vV2lkZSA9IGZhbHNlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoLmN1cnJlbnRXaWR0aCgpIDw9IGF2YWlsYWJsZVdp
ZHRoICYmIGN1cnJlbnRDaGFyYWN0ZXJJc1dTICYmIG8tPnN0eWxlKCktPmJyZWFrT25seUFmdGVy
V2hpdGVTcGFjZSgpICYmICFtaWRXb3JkQnJlYWspIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh3aWR0aC5maXRzT25MaW5lKCkgJiYgY3VycmVudENoYXJhY3RlcklzV1MgJiYgby0+c3R5
bGUoKS0+YnJlYWtPbmx5QWZ0ZXJXaGl0ZVNwYWNlKCkgJiYgIW1pZFdvcmRCcmVhaykgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaGFyV2lkdGggPSB0ZXh0V2lkdGgodCwgcG9z
LCAxLCBmLCB3aWR0aC5jdXJyZW50V2lkdGgoKSwgaXNGaXhlZFBpdGNoLCBjb2xsYXBzZVdoaXRl
U3BhY2UpICsgKGFwcGx5V29yZFNwYWNpbmcgPyB3b3JkU3BhY2luZyA6IDApOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIGxpbmUgaXMgdG9vIGJpZyBldmVuIHdpdGhv
dXQgdGhlIGV4dHJhIHNwYWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXQgdGhl
IGVuZCBvZiB0aGUgbGluZS4gSWYgaXQgaXMgbm90LCBkbyBub3RoaW5nLiAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbGluZSBuZWVkcyB0aGUgZXh0cmEgd2hpdGVzcGFj
ZSB0byBiZSB0b28gbG9uZywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiBt
b3ZlIHRoZSBsaW5lIGJyZWFrIHRvIHRoZSBzcGFjZSBhbmQgc2tpcCBhbGwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gYWRkaXRpb25hbCB3aGl0ZXNwYWNlLgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh3aWR0aC5jdXJyZW50V2lkdGgoKSArIGNoYXJXaWR0aCA+IGF2
YWlsYWJsZVdpZHRoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF3aWR0aC5m
aXRzT25MaW5lKGNoYXJXaWR0aCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGluZVdhc1Rvb1dpZGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
QnJlYWsubW92ZVRvKG8sIHBvcywgbmV4dEJyZWFrYWJsZSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNraXBUcmFpbGluZ1doaXRlc3BhY2UobEJyZWFrLCBpc0xpbmVFbXB0eSwg
cHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bGluZVdhc1Rvb1dpZGUgfHwgd2lkdGguY3VycmVudFdpZHRoKCkgPiBhdmFpbGFibGVXaWR0aCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5IeXBoZW5hdGUgJiYgd2lkdGgu
Y3VycmVudFdpZHRoKCkgPiBhdmFpbGFibGVXaWR0aCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0cnlIeXBoZW5hdGluZyh0LCBmLCBzdHlsZS0+bG9jYWxlKCksIHN0eWxlLT5o
eXBoZW5hdGlvbkxpbWl0QmVmb3JlKCksIHN0eWxlLT5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoKSwg
bGFzdFNwYWNlLCBwb3MsIHdpZHRoLmN1cnJlbnRXaWR0aCgpIC0gYWRkaXRpb25hbFRtcFcsIGF2
YWlsYWJsZVdpZHRoLCBpc0ZpeGVkUGl0Y2gsIGNvbGxhcHNlV2hpdGVTcGFjZSwgbGFzdFNwYWNl
V29yZFNwYWNpbmcsIGxCcmVhaywgbmV4dEJyZWFrYWJsZSwgaHlwaGVuYXRlZCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobGluZVdhc1Rvb1dpZGUgfHwgIXdpZHRoLmZpdHNPbkxpbmUo
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5IeXBoZW5hdGUgJiYgIXdp
ZHRoLmZpdHNPbkxpbmUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlI
eXBoZW5hdGluZyh0LCBmLCBzdHlsZS0+bG9jYWxlKCksIHN0eWxlLT5oeXBoZW5hdGlvbkxpbWl0
QmVmb3JlKCksIHN0eWxlLT5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoKSwgbGFzdFNwYWNlLCBwb3Ms
IHdpZHRoLmN1cnJlbnRXaWR0aCgpIC0gYWRkaXRpb25hbFRtcFcsIHdpZHRoLmF2YWlsYWJsZVdp
ZHRoKCksIGlzRml4ZWRQaXRjaCwgY29sbGFwc2VXaGl0ZVNwYWNlLCBsYXN0U3BhY2VXb3JkU3Bh
Y2luZywgbEJyZWFrLCBuZXh0QnJlYWthYmxlLCBoeXBoZW5hdGVkKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGh5cGhlbmF0ZWQpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIGVuZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CkBA
IC0yMTA0LDkgKzIxMTksOSBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRM
aW5lCiAgICAgICAgICAgICBmbG9hdCBhZGRpdGlvbmFsVG1wVyA9IGlnbm9yaW5nU3BhY2VzID8g
MCA6IHRleHRXaWR0aCh0LCBsYXN0U3BhY2UsIHBvcyAtIGxhc3RTcGFjZSwgZiwgd2lkdGguY3Vy
cmVudFdpZHRoKCksIGlzRml4ZWRQaXRjaCwgY29sbGFwc2VXaGl0ZVNwYWNlKSArIGxhc3RTcGFj
ZVdvcmRTcGFjaW5nOwogICAgICAgICAgICAgd2lkdGguYWRkVW5jb21taXR0ZWRXaWR0aChhZGRp
dGlvbmFsVG1wVyArIGlubGluZUxvZ2ljYWxXaWR0aChvLCAhYXBwbGllZFN0YXJ0V2lkdGgsIHRy
dWUpKTsKIAotICAgICAgICAgICAgaWYgKHdpZHRoLmN1cnJlbnRXaWR0aCgpID4gYXZhaWxhYmxl
V2lkdGgpIHsKKyAgICAgICAgICAgIGlmICghd2lkdGguZml0c09uTGluZSgpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGNhbkh5cGhlbmF0ZSkKLSAgICAgICAgICAgICAgICAgICAgdHJ5SHlwaGVu
YXRpbmcodCwgZiwgc3R5bGUtPmxvY2FsZSgpLCBzdHlsZS0+aHlwaGVuYXRpb25MaW1pdEJlZm9y
ZSgpLCBzdHlsZS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyKCksIGxhc3RTcGFjZSwgcG9zLCB3aWR0
aC5jdXJyZW50V2lkdGgoKSAtIGFkZGl0aW9uYWxUbXBXLCBhdmFpbGFibGVXaWR0aCwgaXNGaXhl
ZFBpdGNoLCBjb2xsYXBzZVdoaXRlU3BhY2UsIGxhc3RTcGFjZVdvcmRTcGFjaW5nLCBsQnJlYWss
IG5leHRCcmVha2FibGUsIGh5cGhlbmF0ZWQpOworICAgICAgICAgICAgICAgICAgICB0cnlIeXBo
ZW5hdGluZyh0LCBmLCBzdHlsZS0+bG9jYWxlKCksIHN0eWxlLT5oeXBoZW5hdGlvbkxpbWl0QmVm
b3JlKCksIHN0eWxlLT5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoKSwgbGFzdFNwYWNlLCBwb3MsIHdp
ZHRoLmN1cnJlbnRXaWR0aCgpIC0gYWRkaXRpb25hbFRtcFcsIHdpZHRoLmF2YWlsYWJsZVdpZHRo
KCksIGlzRml4ZWRQaXRjaCwgY29sbGFwc2VXaGl0ZVNwYWNlLCBsYXN0U3BhY2VXb3JkU3BhY2lu
ZywgbEJyZWFrLCBuZXh0QnJlYWthYmxlLCBoeXBoZW5hdGVkKTsKIAogICAgICAgICAgICAgICAg
IGlmICghaHlwaGVuYXRlZCAmJiBsQnJlYWsubV9vYmogJiYgbEJyZWFrLm1fcG9zICYmIGxCcmVh
ay5tX29iai0+aXNUZXh0KCkgJiYgdG9SZW5kZXJUZXh0KGxCcmVhay5tX29iaiktPnRleHRMZW5n
dGgoKSAmJiB0b1JlbmRlclRleHQobEJyZWFrLm1fb2JqKS0+Y2hhcmFjdGVycygpW2xCcmVhay5t
X3BvcyAtIDFdID09IHNvZnRIeXBoZW4gJiYgc3R5bGUtPmh5cGhlbnMoKSAhPSBIeXBoZW5zTm9u
ZSkKICAgICAgICAgICAgICAgICAgICAgaHlwaGVuYXRlZCA9IHRydWU7CkBAIC0yMTE4LDcgKzIx
MzMsNyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lCiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAogICAgICAgICBib29sIGNoZWNrRm9yQnJlYWsg
PSBhdXRvV3JhcDsKLSAgICAgICAgaWYgKHdpZHRoLmNvbW1pdHRlZFdpZHRoKCkgJiYgd2lkdGgu
Y3VycmVudFdpZHRoKCkgPiBhdmFpbGFibGVXaWR0aCAmJiBsQnJlYWsubV9vYmogJiYgY3VycldT
ID09IE5PV1JBUCkKKyAgICAgICAgaWYgKHdpZHRoLmNvbW1pdHRlZFdpZHRoKCkgJiYgIXdpZHRo
LmZpdHNPbkxpbmUoKSAmJiBsQnJlYWsubV9vYmogJiYgY3VycldTID09IE5PV1JBUCkKICAgICAg
ICAgICAgIGNoZWNrRm9yQnJlYWsgPSB0cnVlOwogICAgICAgICBlbHNlIGlmIChuZXh0ICYmIG8t
PmlzVGV4dCgpICYmIG5leHQtPmlzVGV4dCgpICYmICFuZXh0LT5pc0JSKCkpIHsKICAgICAgICAg
ICAgIGlmIChhdXRvV3JhcCB8fCAobmV4dC0+c3R5bGUoKS0+YXV0b1dyYXAoKSkpIHsKQEAgLTIx
MzYsMTIgKzIxNTEsMTEgQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0TGlu
ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrRm9yQnJlYWsgPSB0cnVlOwogICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5leHRUZXh0LT5pc1dvcmRCcmVhaygpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgY2hlY2tGb3JCcmVhayA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgIGJvb2wgd2lsbEZpdE9uTGluZSA9IHdpZHRoLmN1cnJlbnRXaWR0aCgpIDw9IGF2YWls
YWJsZVdpZHRoOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXdpbGxGaXRPbkxpbmUgJiYgIXdp
ZHRoLmNvbW1pdHRlZFdpZHRoKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpdEJlbG93
RmxvYXRzKHdpZHRoLnVuY29tbWl0dGVkV2lkdGgoKSwgdG90YWxPdmVyaGFuZ1dpZHRoLCBmaXJz
dExpbmUsIGF2YWlsYWJsZVdpZHRoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpbGxGaXRP
bkxpbmUgPSB3aWR0aC51bmNvbW1pdHRlZFdpZHRoKCkgPD0gYXZhaWxhYmxlV2lkdGg7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5QbGFjZU9uTGlu
ZSA9IHdpbGxGaXRPbkxpbmUgfHwgIWF1dG9XcmFwV2FzRXZlclRydWVPbkxpbmU7CisKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCF3aWR0aC5maXRzT25MaW5lKCkgJiYgIXdpZHRoLmNvbW1pdHRl
ZFdpZHRoKCkpCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aC5maXRCZWxvd0Zsb2F0cyh0
aGlzLCBmaXJzdExpbmUpOworCisgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuUGxhY2VPbkxp
bmUgPSB3aWR0aC5maXRzT25MaW5lKCkgfHwgIWF1dG9XcmFwV2FzRXZlclRydWVPbkxpbmU7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChjYW5QbGFjZU9uTGluZSAmJiBjaGVja0ZvckJyZWFrKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aC5jb21taXQoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGxCcmVhay5tb3ZlVG9TdGFydE9mKG5leHQpOwpAQCAtMjE1MCw3ICsyMTY0LDcg
QEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OmZpbmROZXh0TGluZQogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGNoZWNrRm9yQnJlYWsgJiYgKHdpZHRoLmN1cnJl
bnRXaWR0aCgpID4gYXZhaWxhYmxlV2lkdGgpKSB7CisgICAgICAgIGlmIChjaGVja0ZvckJyZWFr
ICYmICF3aWR0aC5maXRzT25MaW5lKCkpIHsKICAgICAgICAgICAgIC8vIGlmIHdlIGhhdmUgZmxv
YXRzLCB0cnkgdG8gZ2V0IGJlbG93IHRoZW0uCiAgICAgICAgICAgICBpZiAoY3VycmVudENoYXJh
Y3RlcklzU3BhY2UgJiYgIWlnbm9yaW5nU3BhY2VzICYmIG8tPnN0eWxlKCktPmNvbGxhcHNlV2hp
dGVTcGFjZSgpKSB7CiAgICAgICAgICAgICAgICAgdHJhaWxpbmdTcGFjZU9iamVjdCA9IDA7CkBA
IC0yMTYwLDEyICsyMTc0LDEyIEBAIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpmaW5kTmV4
dExpbmUKICAgICAgICAgICAgIGlmICh3aWR0aC5jb21taXR0ZWRXaWR0aCgpKQogICAgICAgICAg
ICAgICAgIGdvdG8gZW5kOwogCi0gICAgICAgICAgICBmaXRCZWxvd0Zsb2F0cyh3aWR0aC51bmNv
bW1pdHRlZFdpZHRoKCksIHRvdGFsT3ZlcmhhbmdXaWR0aCwgZmlyc3RMaW5lLCBhdmFpbGFibGVX
aWR0aCk7CisgICAgICAgICAgICB3aWR0aC5maXRCZWxvd0Zsb2F0cyh0aGlzLCBmaXJzdExpbmUp
OwogCiAgICAgICAgICAgICAvLyB8d2lkdGh8IG1heSBoYXZlIGJlZW4gYWRqdXN0ZWQgYmVjYXVz
ZSB3ZSBnb3Qgc2hvdmVkIGRvd24gcGFzdCBhIGZsb2F0ICh0aHVzCiAgICAgICAgICAgICAvLyBn
aXZpbmcgdXMgbW9yZSByb29tKSwgc28gd2UgbmVlZCB0byByZXRlc3QsIGFuZCBvbmx5IGp1bXAg
dG8KICAgICAgICAgICAgIC8vIHRoZSBlbmQgbGFiZWwgaWYgd2Ugc3RpbGwgZG9uJ3QgZml0IG9u
IHRoZSBsaW5lLiAtZHdoCi0gICAgICAgICAgICBpZiAod2lkdGguY3VycmVudFdpZHRoKCkgPiBh
dmFpbGFibGVXaWR0aCkKKyAgICAgICAgICAgIGlmICghd2lkdGguZml0c09uTGluZSgpKQogICAg
ICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICB9CiAKQEAgLTIxODksNyArMjIwMyw3IEBA
IElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpmaW5kTmV4dExpbmUKICAgICAgICAgYXRTdGFy
dCA9IGZhbHNlOwogICAgIH0KICAgICAKLSAgICBpZiAod2lkdGguY3VycmVudFdpZHRoKCkgPD0g
YXZhaWxhYmxlV2lkdGggfHwgbGFzdFdTID09IE5PV1JBUCkKKyAgICBpZiAod2lkdGguZml0c09u
TGluZSgpIHx8IGxhc3RXUyA9PSBOT1dSQVApCiAgICAgICAgIGxCcmVhay5jbGVhcigpOwogCiAg
ZW5kOgo=
</data>
<flag name="review"
          id="81974"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>