<?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>58411</bug_id>
          
          <creation_ts>2011-04-12 19:32:00 -0700</creation_ts>
          <short_desc>Merge LineOffsets and LineWidth</short_desc>
          <delta_ts>2011-04-13 17:59:03 -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>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>384629</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-12 19:32:00 -0700</bug_when>
    <thetext>We should merge LineOffsets and LineWidth classes in RenderBlockLineLayout.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384634</commentid>
    <comment_count>1</comment_count>
      <attachid>89329</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-12 20:00:10 -0700</bug_when>
    <thetext>Created attachment 89329
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385040</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-13 11:32:11 -0700</bug_when>
    <thetext>ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385066</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-13 11:42:01 -0700</bug_when>
    <thetext>I&apos;m not sure I fully understand the motivation of this change.  I can&apos;t tell if the code is better with it or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385105</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-13 11:56:06 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I&apos;m not sure I fully understand the motivation of this change.  I can&apos;t tell if the code is better with it or not.

LineOffsets is used only to compute m_availableWidth, which is a member variable of LineWidth.  Combining these two classes allow us to encapsulate mutations of m_availableWidth entirely, and hide left/right mechanism we use internally to figure out the correct available width.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385108</commentid>
    <comment_count>5</comment_count>
      <attachid>89329</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-13 11:58:13 -0700</bug_when>
    <thetext>Comment on attachment 89329
cleanup

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385405</commentid>
    <comment_count>6</comment_count>
      <attachid>89329</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-13 17:58:57 -0700</bug_when>
    <thetext>Comment on attachment 89329
cleanup

Clearing flags on attachment: 89329

Committed r83794: &lt;http://trac.webkit.org/changeset/83794&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385406</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-13 17:59:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89329</attachid>
            <date>2011-04-12 20:00:10 -0700</date>
            <delta_ts>2011-04-13 17:58:57 -0700</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-58411-20110412200008.patch</filename>
            <type>text/plain</type>
            <size>15973</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNjg4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDQtMTIgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWVyZ2UgTGluZU9mZnNldHMgYW5kIExpbmVXaWR0aAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0MTEKKworICAgICAg
ICBNZXJnZWQgbGluZU9mZnNldHMgaW50byBMaW5lV2lkdGguCisKKyAgICAgICAgQWZ0ZXIgdGhp
cyBwYXRjaCwgYXZhaWxhYmxlIHdpZHRoIGlzIHVwZGF0ZWQgaW4gcG9zaXRpb25OZXdGbG9hdE9u
TGluZSB2aWEgdXBkYXRlQXZhaWxhYmxlV2lkdGggYW5kCisgICAgICAgIHNocmlua0F2YWlsYWJs
ZVdpZHRoRm9yTmV3RmxvYXRJZk5lZWRlZCBpbnN0ZWFkIG9mIGZpbmROZXh0QnJlYWsuIFRoaXMg
aXMgY29ycmVjdCBiZWNhdXNlCisgICAgICAgIC0gTGluZU9mZnNldHM6OnVwZGF0ZSBhbmQgTGlu
ZU9mZnNldHM6OnNocmlua1dpZHRoRm9yTmV3RmxvYXRJZk5lZWRlZCB3ZXJlIG9ubHkgY2FsbGVk
IGluIHBvc2l0aW9uTmV3RmxvYXRPbkxpbmUKKyAgICAgICAgICBiZXNpZGVzIExpbmVPZmZzZXRz
JyBjb25zdHJ1Y3RvcgorICAgICAgICAtIHBvc2l0aW9uTmV3RmxvYXRPbkxpbmUgd2FzIG9ubHkg
Y2FsbGVkIGluIHNraXBMZWFkaW5nV2hpdGVzcGFjZSBhbmQgZmluZE5leHRMaW5lQnJlYWsKKyAg
ICAgICAgLSBmaW5kTmV4dExpbmVCcmVhayB1cGRhdGVzIHRoZSBhdmFpbGFibGUgd2lkdGggd2hl
bmV2ZXIgaXQgY2FsbHMgc2tpcExlYWRpbmdXaGl0ZXNwYWNlIG9yIHBvc2l0aW9uTmV3RmxvYXRP
bkxpbmUKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OnNraXBMZWFkaW5nV2hpdGVzcGFjZSk6IFRha2VzIExpbmVXaWR0aCBpbnN0ZWFk
IG9mIExpbmVPZmZzZXQKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6TGluZVdpZHRoKTog
VGFrZXMgUmVuZGVyQmxvY2sqIGFuZCBib29sZWFuIGlzRmlyc3RMaW5lOyBjYWxsIHVwZGF0ZUF2
YWlsYWJsZVdpZHRoCisgICAgICAgIGJlY2F1c2UgdGhlIGluaXRpYWwgYXZhaWxhYmxlIHdpZHRo
IHdhcyB1c2VkIHRvIGJlIGNvbXB1dGVkIGZyb20gbGluZU9mZnNldHMud2lkdGgoKS4KKyAgICAg
ICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6Y29tcHV0ZUF2YWlsYWJsZVdpZHRoRnJvbUxlZnRBbmRS
aWdodCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZVdpZHRoOjp1cGRhdGVBdmFpbGFi
bGVXaWR0aCk6IFJlbmFtZWQgZnJvbSBMaW5lT2Zmc2V0czo6dXBkYXRlOyB0aGlzIGZ1bmN0aW9u
IG5vdyB1cGRhdGVzCisgICAgICAgIG1fYXZhaWxhYmxlV2lkdGggdmlhIGNvbXB1dGVBdmFpbGFi
bGVXaWR0aEZyb21MZWZ0QW5kUmlnaHQgYXMgd2VsbCBhcyBtX2xlZnQgYW5kIG1fcmlnaHQuCisg
ICAgICAgIChXZWJDb3JlOjpMaW5lV2lkdGg6OnNocmlua0F2YWlsYWJsZVdpZHRoRm9yTmV3Rmxv
YXRJZk5lZWRlZCk6IFJlbmFtZWQgZnJvbQorICAgICAgICBMaW5lT2Zmc2V0czo6c2hyaW5rV2lk
dGhGb3JOZXdGbG9hdElmTmVlZGVkLiBUaGlzIGZ1bmN0aW9uIGFsc28gY2FsbHMgY29tcHV0ZUF2
YWlsYWJsZVdpZHRoRnJvbUxlZnRBbmRSaWdodC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0
aDo6YXBwbHlPdmVyaGFuZyk6IE5vIGxvbmdlciB0YWtlcyBhcmd1bWVudHMgc2luY2UgYm90aCBh
cmd1bWVudHMgd2VyZSBtZW1iZXIgdmFyaWFibGVzCisgICAgICAgIG9mIExpbmVPZmZzZXRzLgor
ICAgICAgICAoV2ViQ29yZTo6TGluZVdpZHRoOjpmaXRCZWxvd0Zsb2F0cyk6IE5vIGxvbmdlciB0
YWtlcyBpc0ZpcnN0TGluZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpmaW5kTmV4
dExpbmVCcmVhayk6IFVzZXMgTGluZVdpZHRoLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OnBvc2l0aW9uTmV3RmxvYXRPbkxpbmUpOiBUYWtlcyBhIHJlZmVyZW5jZSB0byBMaW5lV2lk
dGguCisKIDIwMTEtMDQtMTIgIEFuYW50YW5hcmF5YW5hbiBHIEl5ZW5nYXIgIDxhbmFudGFAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gODM2ODQp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsNiBAQCBjbGFzcyBDb2x1bW5JbmZvOwogY2xhc3MgSW5saW5lSXRlcmF0
b3I7CiBjbGFzcyBMYXlvdXRTdGF0ZU1haW50YWluZXI7CiBjbGFzcyBMYXp5TGluZUJyZWFrSXRl
cmF0b3I7Ci1jbGFzcyBMaW5lT2Zmc2V0czsKIGNsYXNzIExpbmVXaWR0aDsKIGNsYXNzIFJlbmRl
cklubGluZTsKIApAQCAtNDk3LDcgKzQ5Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBSb290SW5saW5lQm94KiYgZW5kTGluZSwgaW50JiBlbmRZUG9zLCBpbnQmIHJlcGFp
bnRCb3R0b20sIGludCYgcmVwYWludFRvcCk7CiAKICAgICB2b2lkIHNraXBUcmFpbGluZ1doaXRl
c3BhY2UoSW5saW5lSXRlcmF0b3ImLCBib29sIGlzTGluZUVtcHR5LCBib29sIHByZXZpb3VzTGlu
ZUJyb2tlQ2xlYW5seSk7Ci0gICAgdm9pZCBza2lwTGVhZGluZ1doaXRlc3BhY2UoSW5saW5lQmlk
aVJlc29sdmVyJiwgYm9vbCBpc0xpbmVFbXB0eSwgYm9vbCBwcmV2aW91c0xpbmVCcm9rZUNsZWFu
bHksIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBMaW5lT2Zmc2V0
cyYpOworICAgIHZvaWQgc2tpcExlYWRpbmdXaGl0ZXNwYWNlKElubGluZUJpZGlSZXNvbHZlciYs
IGJvb2wgaXNMaW5lRW1wdHksIGJvb2wgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5LCBGbG9hdGlu
Z09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgTGluZVdpZHRoJik7CiAgICAgdHlw
ZWRlZiBzdGQ6OnBhaXI8UmVuZGVyVGV4dCosIExhenlMaW5lQnJlYWtJdGVyYXRvcj4gTGluZUJy
ZWFrSXRlcmF0b3JJbmZvOwogICAgIElubGluZUl0ZXJhdG9yIGZpbmROZXh0TGluZUJyZWFrKElu
bGluZUJpZGlSZXNvbHZlciYsIGJvb2wgZmlyc3RMaW5lLCBib29sJiBpc0xpbmVFbXB0eSwgTGlu
ZUJyZWFrSXRlcmF0b3JJbmZvJiwgYm9vbCYgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5LCBib29s
JiBoeXBoZW5hdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVDbGVh
ciosIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBWZWN0b3I8UmVu
ZGVyQm94Kj4mIHBvc2l0aW9uZWRPYmplY3RzKTsKQEAgLTUxMSw3ICs1MTAsNyBAQCBwcml2YXRl
OgogCiAgICAgLy8gUG9zaXRpb25zIG5ldyBmbG9hdHMgYW5kIGFsc28gYWRqdXN0IGFsbCBmbG9h
dHMgZW5jb3VudGVyZWQgb24gdGhlIGxpbmUgaWYgYW55IG9mIHRoZW0KICAgICAvLyBoYXZlIHRv
IG1vdmUgdG8gdGhlIG5leHQgcGFnZS9jb2x1bW4uCi0gICAgYm9vbCBwb3NpdGlvbk5ld0Zsb2F0
T25MaW5lKEZsb2F0aW5nT2JqZWN0KiBuZXdGbG9hdCwgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9h
dEZyb21QcmV2aW91c0xpbmUsIExpbmVPZmZzZXRzJik7CisgICAgYm9vbCBwb3NpdGlvbk5ld0Zs
b2F0T25MaW5lKEZsb2F0aW5nT2JqZWN0KiBuZXdGbG9hdCwgRmxvYXRpbmdPYmplY3QqIGxhc3RG
bG9hdEZyb21QcmV2aW91c0xpbmUsIExpbmVXaWR0aCYpOwogCiAgICAgLy8gRW5kIG9mIGZ1bmN0
aW9ucyBkZWZpbmVkIGluIFJlbmRlckJsb2NrTGluZUxheW91dC5jcHAuCiAKQEAgLTc4Niw4ICs3
ODUsNyBAQCBwcml2YXRlOgogICAgIC8vIFJlbmRlclJ1YnlCYXNlIG9iamVjdHMgbmVlZCB0byBi
ZSBhYmxlIHRvIHNwbGl0IGFuZCBtZXJnZSwgbW92aW5nIHRoZWlyIGNoaWxkcmVuIGFyb3VuZAog
ICAgIC8vIChjYWxsaW5nIG1vdmVDaGlsZFRvLCBtb3ZlQWxsQ2hpbGRyZW5UbywgYW5kIG1ha2VD
aGlsZHJlbk5vbklubGluZSkuCiAgICAgZnJpZW5kIGNsYXNzIFJlbmRlclJ1YnlCYXNlOwotICAg
IGZyaWVuZCBjbGFzcyBMaW5lT2Zmc2V0czsgLy8gTmVlZHMgdG8ga25vdyBGbG9hdGluZ09iamVj
dAotICAgIGZyaWVuZCBjbGFzcyBMaW5lV2lkdGg7CisgICAgZnJpZW5kIGNsYXNzIExpbmVXaWR0
aDsgLy8gTmVlZHMgdG8ga25vdyBGbG9hdGluZ09iamVjdAogfTsKIAogaW5saW5lIFJlbmRlckJs
b2NrKiB0b1JlbmRlckJsb2NrKFJlbmRlck9iamVjdCogb2JqZWN0KQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHJldmlz
aW9uIDgzNjg0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxh
eW91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NjYsMTIgKzE0NjYsMTIgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6c2tpcFRyYWlsaW5nV2hpdGVzcGFjZQogfQogCiB2b2lkIFJlbmRlckJsb2NrOjpz
a2lwTGVhZGluZ1doaXRlc3BhY2UoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlciwgYm9vbCBp
c0xpbmVFbXB0eSwgYm9vbCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHksCi0gICAgRmxvYXRpbmdP
YmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIExpbmVPZmZzZXRzJiBsaW5lT2Zmc2V0
cykKKyAgICBGbG9hdGluZ09iamVjdCogbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgTGluZVdp
ZHRoJiB3aWR0aCkKIHsKICAgICB3aGlsZSAoIXJlc29sdmVyLnBvc2l0aW9uKCkuYXRFbmQoKSAm
JiAhcmVxdWlyZXNMaW5lQm94KHJlc29sdmVyLnBvc2l0aW9uKCksIGlzTGluZUVtcHR5LCBwcmV2
aW91c0xpbmVCcm9rZUNsZWFubHkpKSB7CiAgICAgICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0g
cmVzb2x2ZXIucG9zaXRpb24oKS5tX29iajsKICAgICAgICAgaWYgKG9iamVjdC0+aXNGbG9hdGlu
ZygpKQotICAgICAgICAgICAgcG9zaXRpb25OZXdGbG9hdE9uTGluZShpbnNlcnRGbG9hdGluZ09i
amVjdCh0b1JlbmRlckJveChvYmplY3QpKSwgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgbGlu
ZU9mZnNldHMpOworICAgICAgICAgICAgcG9zaXRpb25OZXdGbG9hdE9uTGluZShpbnNlcnRGbG9h
dGluZ09iamVjdCh0b1JlbmRlckJveChvYmplY3QpKSwgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGlu
ZSwgd2lkdGgpOwogICAgICAgICBlbHNlIGlmIChvYmplY3QtPmlzUG9zaXRpb25lZCgpKQogICAg
ICAgICAgICAgc2V0U3RhdGljUG9zaXRpb25zKHRoaXMsIHRvUmVuZGVyQm94KG9iamVjdCkpOwog
ICAgICAgICByZXNvbHZlci5pbmNyZW1lbnQoKTsKQEAgLTE1NDgsNTcgKzE1NDgsMjAgQEAgc3Rh
dGljIHZvaWQgdHJ5SHlwaGVuYXRpbmcoUmVuZGVyVGV4dCogdAogICAgIGh5cGhlbmF0ZWQgPSB0
cnVlOwogfQogCi1jbGFzcyBMaW5lT2Zmc2V0cyB7Ci1wdWJsaWM6Ci0gICAgTGluZU9mZnNldHMo
UmVuZGVyQmxvY2sqLCBib29sIGlzRmlyc3RMaW5lKTsKLSAgICBpbnQgd2lkdGgoKSBjb25zdCB7
IHJldHVybiBtYXgoMCwgbV9yaWdodCAtIG1fbGVmdCk7IH0KLSAgICB2b2lkIHVwZGF0ZSgpOwot
ICAgIHZvaWQgc2hyaW5rV2lkdGhGb3JOZXdGbG9hdElmTmVlZGVkKFJlbmRlckJsb2NrOjpGbG9h
dGluZ09iamVjdCopOwotCi1wcml2YXRlOgotICAgIFJlbmRlckJsb2NrKiBtX2Jsb2NrOwotICAg
IGludCBtX2xlZnQ7Ci0gICAgaW50IG1fcmlnaHQ7Ci0gICAgYm9vbCBtX2lzRmlyc3RMaW5lOwot
fTsKLQotaW5saW5lIExpbmVPZmZzZXRzOjpMaW5lT2Zmc2V0cyhSZW5kZXJCbG9jayogYmxvY2ss
IGJvb2wgaXNGaXJzdExpbmUpCi0gICAgOiBtX2Jsb2NrKGJsb2NrKQotICAgICwgbV9sZWZ0KDAp
Ci0gICAgLCBtX3JpZ2h0KDApCi0gICAgLCBtX2lzRmlyc3RMaW5lKGlzRmlyc3RMaW5lKQotewot
ICAgIEFTU0VSVChibG9jayk7Ci0gICAgdXBkYXRlKCk7Ci19Ci0KLWlubGluZSB2b2lkIExpbmVP
ZmZzZXRzOjp1cGRhdGUoKQotewotICAgIGludCBoZWlnaHQgPSBtX2Jsb2NrLT5sb2dpY2FsSGVp
Z2h0KCk7Ci0gICAgbV9sZWZ0ID0gbV9ibG9jay0+bG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGhl
aWdodCwgbV9pc0ZpcnN0TGluZSk7Ci0gICAgbV9yaWdodCA9IG1fYmxvY2stPmxvZ2ljYWxSaWdo
dE9mZnNldEZvckxpbmUoaGVpZ2h0LCBtX2lzRmlyc3RMaW5lKTsKLX0KLQotaW5saW5lIHZvaWQg
TGluZU9mZnNldHM6OnNocmlua1dpZHRoRm9yTmV3RmxvYXRJZk5lZWRlZChSZW5kZXJCbG9jazo6
RmxvYXRpbmdPYmplY3QqIG5ld0Zsb2F0KQotewotICAgIGludCBoZWlnaHQgPSBtX2Jsb2NrLT5s
b2dpY2FsSGVpZ2h0KCk7Ci0gICAgaWYgKGhlaWdodCA8IG1fYmxvY2stPmxvZ2ljYWxUb3BGb3JG
bG9hdChuZXdGbG9hdCkgfHwgaGVpZ2h0ID49IG1fYmxvY2stPmxvZ2ljYWxCb3R0b21Gb3JGbG9h
dChuZXdGbG9hdCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChuZXdGbG9hdC0+dHlwZSgp
ID09IFJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0KQotICAgICAgICBtX2xl
ZnQgPSBtX2Jsb2NrLT5sb2dpY2FsUmlnaHRGb3JGbG9hdChuZXdGbG9hdCk7Ci0gICAgZWxzZQot
ICAgICAgICBtX3JpZ2h0ID0gbV9ibG9jay0+bG9naWNhbExlZnRGb3JGbG9hdChuZXdGbG9hdCk7
Ci19Ci0KIGNsYXNzIExpbmVXaWR0aCB7CiBwdWJsaWM6Ci0gICAgTGluZVdpZHRoKGZsb2F0IGF2
YWlsYWJsZVdpZHRoKQotICAgICAgICA6IG1fdW5jb21taXR0ZWRXaWR0aCgwKQorICAgIExpbmVX
aWR0aChSZW5kZXJCbG9jayogYmxvY2ssIGJvb2wgaXNGaXJzdExpbmUpCisgICAgICAgIDogbV9i
bG9jayhibG9jaykKKyAgICAgICAgLCBtX3VuY29tbWl0dGVkV2lkdGgoMCkKICAgICAgICAgLCBt
X2NvbW1pdHRlZFdpZHRoKDApCiAgICAgICAgICwgbV9vdmVyaGFuZ1dpZHRoKDApCi0gICAgICAg
ICwgbV9hdmFpbGFibGVXaWR0aChhdmFpbGFibGVXaWR0aCkKKyAgICAgICAgLCBtX2xlZnQoMCkK
KyAgICAgICAgLCBtX3JpZ2h0KDApCisgICAgICAgICwgbV9hdmFpbGFibGVXaWR0aCgwKQorICAg
ICAgICAsIG1faXNGaXJzdExpbmUoaXNGaXJzdExpbmUpCiAgICAgeworICAgICAgICBBU1NFUlQo
YmxvY2spOworICAgICAgICB1cGRhdGVBdmFpbGFibGVXaWR0aCgpOwogICAgIH0KICAgICBib29s
IGZpdHNPbkxpbmUoKSBjb25zdCB7IHJldHVybiBjdXJyZW50V2lkdGgoKSA8PSBtX2F2YWlsYWJs
ZVdpZHRoOyB9CiAgICAgYm9vbCBmaXRzT25MaW5lKGZsb2F0IGV4dHJhKSBjb25zdCB7IHJldHVy
biBjdXJyZW50V2lkdGgoKSArIGV4dHJhIDw9IG1fYXZhaWxhYmxlV2lkdGg7IH0KQEAgLTE2MDks
MzEgKzE1NzIsNjIgQEAgcHVibGljOgogICAgIGZsb2F0IGNvbW1pdHRlZFdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gbV9jb21taXR0ZWRXaWR0aDsgfQogICAgIGZsb2F0IGF2YWlsYWJsZVdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV9hdmFpbGFibGVXaWR0aDsgfQogCisgICAgdm9pZCB1cGRhdGVBdmFp
bGFibGVXaWR0aCgpOworICAgIHZvaWQgc2hyaW5rQXZhaWxhYmxlV2lkdGhGb3JOZXdGbG9hdElm
TmVlZGVkKFJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdCopOwogICAgIHZvaWQgYWRkVW5jb21t
aXR0ZWRXaWR0aChmbG9hdCBkZWx0YSkgeyBtX3VuY29tbWl0dGVkV2lkdGggKz0gZGVsdGE7IH0K
ICAgICB2b2lkIGNvbW1pdCgpCiAgICAgewogICAgICAgICBtX2NvbW1pdHRlZFdpZHRoICs9IG1f
dW5jb21taXR0ZWRXaWR0aDsKICAgICAgICAgbV91bmNvbW1pdHRlZFdpZHRoID0gMDsKICAgICB9
Ci0gICAgdm9pZCBhcHBseU92ZXJoYW5nKFJlbmRlclJ1YnlSdW4qLCBib29sIGlzRmlyc3RMaW5l
LCBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIsIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIp
OwotICAgIHZvaWQgZml0QmVsb3dGbG9hdHMoUmVuZGVyQmxvY2sqLCBib29sIGlzRmlyc3RMaW5l
KTsKLSAgICB2b2lkIHNldEF2YWlsYWJsZVdpZHRoKGNvbnN0IExpbmVPZmZzZXRzJiBsaW5lT2Zm
c2V0cykKKyAgICB2b2lkIGFwcGx5T3ZlcmhhbmcoUmVuZGVyUnVieVJ1biosIFJlbmRlck9iamVj
dCogc3RhcnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlcik7CisgICAgdm9pZCBm
aXRCZWxvd0Zsb2F0cygpOworCitwcml2YXRlOgorICAgIHZvaWQgY29tcHV0ZUF2YWlsYWJsZVdp
ZHRoRnJvbUxlZnRBbmRSaWdodCgpCiAgICAgewotICAgICAgICBtX2F2YWlsYWJsZVdpZHRoID0g
bGluZU9mZnNldHMud2lkdGgoKSArIG1fb3ZlcmhhbmdXaWR0aDsKKyAgICAgICAgbV9hdmFpbGFi
bGVXaWR0aCA9IG1heCgwLCBtX3JpZ2h0IC0gbV9sZWZ0KSArIG1fb3ZlcmhhbmdXaWR0aDsKICAg
ICB9CiAKIHByaXZhdGU6CisgICAgUmVuZGVyQmxvY2sqIG1fYmxvY2s7CiAgICAgZmxvYXQgbV91
bmNvbW1pdHRlZFdpZHRoOwogICAgIGZsb2F0IG1fY29tbWl0dGVkV2lkdGg7Ci0gICAgZmxvYXQg
bV9vdmVyaGFuZ1dpZHRoOyAvLyBUaGUgYW1vdW50IGJ5IHdoaWNoIHx3aWR0aHwgaGFzIGJlZW4g
aW5mbGF0ZWQgdG8gYWNjb3VudCBmb3IgcG9zc2libGUgY29udHJhY3Rpb24gZHVlIHRvIHJ1Ynkg
b3ZlcmhhbmcuCisgICAgZmxvYXQgbV9vdmVyaGFuZ1dpZHRoOyAvLyBUaGUgYW1vdW50IGJ5IHdo
aWNoIHxtX2F2YWlsYWJsZVdpZHRofCBoYXMgYmVlbiBpbmZsYXRlZCB0byBhY2NvdW50IGZvciBw
b3NzaWJsZSBjb250cmFjdGlvbiBkdWUgdG8gcnVieSBvdmVyaGFuZy4KKyAgICBpbnQgbV9sZWZ0
OworICAgIGludCBtX3JpZ2h0OwogICAgIGZsb2F0IG1fYXZhaWxhYmxlV2lkdGg7CisgICAgYm9v
bCBtX2lzRmlyc3RMaW5lOwogfTsKIAotdm9pZCBMaW5lV2lkdGg6OmFwcGx5T3ZlcmhhbmcoUmVu
ZGVyUnVieVJ1biogcnVieVJ1biwgYm9vbCBpc0ZpcnN0TGluZSwgUmVuZGVyT2JqZWN0KiBzdGFy
dFJlbmRlcmVyLCBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyKQoraW5saW5lIHZvaWQgTGluZVdp
ZHRoOjp1cGRhdGVBdmFpbGFibGVXaWR0aCgpCit7CisgICAgaW50IGhlaWdodCA9IG1fYmxvY2st
PmxvZ2ljYWxIZWlnaHQoKTsKKyAgICBtX2xlZnQgPSBtX2Jsb2NrLT5sb2dpY2FsTGVmdE9mZnNl
dEZvckxpbmUoaGVpZ2h0LCBtX2lzRmlyc3RMaW5lKTsKKyAgICBtX3JpZ2h0ID0gbV9ibG9jay0+
bG9naWNhbFJpZ2h0T2Zmc2V0Rm9yTGluZShoZWlnaHQsIG1faXNGaXJzdExpbmUpOworCisgICAg
Y29tcHV0ZUF2YWlsYWJsZVdpZHRoRnJvbUxlZnRBbmRSaWdodCgpOworfQorCitpbmxpbmUgdm9p
ZCBMaW5lV2lkdGg6OnNocmlua0F2YWlsYWJsZVdpZHRoRm9yTmV3RmxvYXRJZk5lZWRlZChSZW5k
ZXJCbG9jazo6RmxvYXRpbmdPYmplY3QqIG5ld0Zsb2F0KQoreworICAgIGludCBoZWlnaHQgPSBt
X2Jsb2NrLT5sb2dpY2FsSGVpZ2h0KCk7CisgICAgaWYgKGhlaWdodCA8IG1fYmxvY2stPmxvZ2lj
YWxUb3BGb3JGbG9hdChuZXdGbG9hdCkgfHwgaGVpZ2h0ID49IG1fYmxvY2stPmxvZ2ljYWxCb3R0
b21Gb3JGbG9hdChuZXdGbG9hdCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChuZXdGbG9h
dC0+dHlwZSgpID09IFJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0KQorICAg
ICAgICBtX2xlZnQgPSBtX2Jsb2NrLT5sb2dpY2FsUmlnaHRGb3JGbG9hdChuZXdGbG9hdCk7Cisg
ICAgZWxzZQorICAgICAgICBtX3JpZ2h0ID0gbV9ibG9jay0+bG9naWNhbExlZnRGb3JGbG9hdChu
ZXdGbG9hdCk7CisKKyAgICBjb21wdXRlQXZhaWxhYmxlV2lkdGhGcm9tTGVmdEFuZFJpZ2h0KCk7
Cit9CisKK3ZvaWQgTGluZVdpZHRoOjphcHBseU92ZXJoYW5nKFJlbmRlclJ1YnlSdW4qIHJ1YnlS
dW4sIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJl
cikKIHsKICAgICBpbnQgc3RhcnRPdmVyaGFuZzsKICAgICBpbnQgZW5kT3Zlcmhhbmc7Ci0gICAg
cnVieVJ1bi0+Z2V0T3ZlcmhhbmcoaXNGaXJzdExpbmUsIHN0YXJ0UmVuZGVyZXIsIGVuZFJlbmRl
cmVyLCBzdGFydE92ZXJoYW5nLCBlbmRPdmVyaGFuZyk7CisgICAgcnVieVJ1bi0+Z2V0T3Zlcmhh
bmcobV9pc0ZpcnN0TGluZSwgc3RhcnRSZW5kZXJlciwgZW5kUmVuZGVyZXIsIHN0YXJ0T3Zlcmhh
bmcsIGVuZE92ZXJoYW5nKTsKIAogICAgIHN0YXJ0T3ZlcmhhbmcgPSBtaW48aW50PihzdGFydE92
ZXJoYW5nLCBtX2NvbW1pdHRlZFdpZHRoKTsKICAgICBtX2F2YWlsYWJsZVdpZHRoICs9IHN0YXJ0
T3Zlcmhhbmc7CkBAIC0xNjQzLDI3ICsxNjM3LDI3IEBAIHZvaWQgTGluZVdpZHRoOjphcHBseU92
ZXJoYW5nKFJlbmRlclJ1YnkKICAgICBtX292ZXJoYW5nV2lkdGggKz0gc3RhcnRPdmVyaGFuZyAr
IGVuZE92ZXJoYW5nOwogfQogCi12b2lkIExpbmVXaWR0aDo6Zml0QmVsb3dGbG9hdHMoUmVuZGVy
QmxvY2sqIGJsb2NrLCBib29sIGlzRmlyc3RMaW5lKQordm9pZCBMaW5lV2lkdGg6OmZpdEJlbG93
RmxvYXRzKCkKIHsKICAgICBBU1NFUlQoIW1fY29tbWl0dGVkV2lkdGgpOwogICAgIEFTU0VSVCgh
Zml0c09uTGluZSgpKTsKIAogICAgIGludCBmbG9hdExvZ2ljYWxCb3R0b207Ci0gICAgaW50IGxh
c3RGbG9hdExvZ2ljYWxCb3R0b20gPSBibG9jay0+bG9naWNhbEhlaWdodCgpOworICAgIGludCBs
YXN0RmxvYXRMb2dpY2FsQm90dG9tID0gbV9ibG9jay0+bG9naWNhbEhlaWdodCgpOwogICAgIGZs
b2F0IG5ld0xpbmVXaWR0aCA9IG1fYXZhaWxhYmxlV2lkdGg7CiAgICAgd2hpbGUgKHRydWUpIHsK
LSAgICAgICAgZmxvYXRMb2dpY2FsQm90dG9tID0gYmxvY2stPm5leHRGbG9hdExvZ2ljYWxCb3R0
b21CZWxvdyhsYXN0RmxvYXRMb2dpY2FsQm90dG9tKTsKKyAgICAgICAgZmxvYXRMb2dpY2FsQm90
dG9tID0gbV9ibG9jay0+bmV4dEZsb2F0TG9naWNhbEJvdHRvbUJlbG93KGxhc3RGbG9hdExvZ2lj
YWxCb3R0b20pOwogICAgICAgICBpZiAoIWZsb2F0TG9naWNhbEJvdHRvbSkKICAgICAgICAgICAg
IGJyZWFrOwogCi0gICAgICAgIG5ld0xpbmVXaWR0aCA9IGJsb2NrLT5hdmFpbGFibGVMb2dpY2Fs
V2lkdGhGb3JMaW5lKGZsb2F0TG9naWNhbEJvdHRvbSwgaXNGaXJzdExpbmUpOworICAgICAgICBu
ZXdMaW5lV2lkdGggPSBtX2Jsb2NrLT5hdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKGZsb2F0
TG9naWNhbEJvdHRvbSwgbV9pc0ZpcnN0TGluZSk7CiAgICAgICAgIGxhc3RGbG9hdExvZ2ljYWxC
b3R0b20gPSBmbG9hdExvZ2ljYWxCb3R0b207CiAgICAgICAgIGlmIChuZXdMaW5lV2lkdGggPj0g
bV91bmNvbW1pdHRlZFdpZHRoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYg
KG5ld0xpbmVXaWR0aCA+IG1fYXZhaWxhYmxlV2lkdGgpIHsKLSAgICAgICAgYmxvY2stPnNldExv
Z2ljYWxIZWlnaHQobGFzdEZsb2F0TG9naWNhbEJvdHRvbSk7CisgICAgICAgIG1fYmxvY2stPnNl
dExvZ2ljYWxIZWlnaHQobGFzdEZsb2F0TG9naWNhbEJvdHRvbSk7CiAgICAgICAgIG1fYXZhaWxh
YmxlV2lkdGggPSBuZXdMaW5lV2lkdGggKyBtX292ZXJoYW5nV2lkdGg7CiAgICAgfQogfQpAQCAt
MTY3NiwxMSArMTY3MCw5IEBAIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpmaW5kTmV4dExp
bmUKICAgICBib29sIGFwcGxpZWRTdGFydFdpZHRoID0gcmVzb2x2ZXIucG9zaXRpb24oKS5tX3Bv
cyA+IDA7CiAgICAgTGluZU1pZHBvaW50U3RhdGUmIGxpbmVNaWRwb2ludFN0YXRlID0gcmVzb2x2
ZXIubWlkcG9pbnRTdGF0ZSgpOwogCi0gICAgTGluZU9mZnNldHMgbGluZU9mZnNldHModGhpcywg
Zmlyc3RMaW5lKTsKLQotICAgIHNraXBMZWFkaW5nV2hpdGVzcGFjZShyZXNvbHZlciwgaXNMaW5l
RW1wdHksIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSwgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGlu
ZSwgbGluZU9mZnNldHMpOworICAgIExpbmVXaWR0aCB3aWR0aCh0aGlzLCBmaXJzdExpbmUpOwog
Ci0gICAgTGluZVdpZHRoIHdpZHRoKGxpbmVPZmZzZXRzLndpZHRoKCkpOworICAgIHNraXBMZWFk
aW5nV2hpdGVzcGFjZShyZXNvbHZlciwgaXNMaW5lRW1wdHksIHByZXZpb3VzTGluZUJyb2tlQ2xl
YW5seSwgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgd2lkdGgpOwogCiAgICAgaWYgKHJlc29s
dmVyLnBvc2l0aW9uKCkuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc29sdmVyLnBvc2l0aW9u
KCk7CkBAIC0xNzcwLDggKzE3NjIsNyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6Zmlu
ZE5leHRMaW5lCiAgICAgICAgICAgICAgICAgLy8gSWYgaXQgZG9lcywgcG9zaXRpb24gaXQgbm93
LCBvdGhlcndpc2UsIHBvc2l0aW9uCiAgICAgICAgICAgICAgICAgLy8gaXQgYWZ0ZXIgbW92aW5n
IHRvIG5leHQgbGluZSAoaW4gbmV3TGluZSgpIGZ1bmMpCiAgICAgICAgICAgICAgICAgaWYgKGZs
b2F0c0ZpdE9uTGluZSAmJiB3aWR0aC5maXRzT25MaW5lKGxvZ2ljYWxXaWR0aEZvckZsb2F0KGYp
KSkgewotICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbk5ld0Zsb2F0T25MaW5lKGYsIGxhc3RG
bG9hdEZyb21QcmV2aW91c0xpbmUsIGxpbmVPZmZzZXRzKTsKLSAgICAgICAgICAgICAgICAgICAg
d2lkdGguc2V0QXZhaWxhYmxlV2lkdGgobGluZU9mZnNldHMpOworICAgICAgICAgICAgICAgICAg
ICBwb3NpdGlvbk5ld0Zsb2F0T25MaW5lKGYsIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIHdp
ZHRoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGxCcmVhay5tX29iaiA9PSBvKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWxCcmVhay5tX3Bvcyk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBsQnJlYWsuaW5jcmVtZW50KCk7CkBAIC0xODY4LDcgKzE4NTksNyBAQCBJbmxp
bmVJdGVyYXRvciBSZW5kZXJCbG9jazo6ZmluZE5leHRMaW5lCiAgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICB3aWR0aC5hZGRVbmNvbW1pdHRlZFdpZHRoKHJlcGxhY2VkTG9naWNh
bFdpZHRoKTsKICAgICAgICAgICAgIGlmIChvLT5pc1J1YnlSdW4oKSkKLSAgICAgICAgICAgICAg
ICB3aWR0aC5hcHBseU92ZXJoYW5nKHRvUmVuZGVyUnVieVJ1bihvKSwgZmlyc3RMaW5lLCBsYXN0
LCBuZXh0KTsKKyAgICAgICAgICAgICAgICB3aWR0aC5hcHBseU92ZXJoYW5nKHRvUmVuZGVyUnVi
eVJ1bihvKSwgbGFzdCwgbmV4dCk7CiAgICAgICAgIH0gZWxzZSBpZiAoby0+aXNUZXh0KCkpIHsK
ICAgICAgICAgICAgIGlmICghcG9zKQogICAgICAgICAgICAgICAgIGFwcGxpZWRTdGFydFdpZHRo
ID0gZmFsc2U7CkBAIC0xOTgwLDcgKzE5NzEsNyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9j
azo6ZmluZE5leHRMaW5lCiAgICAgICAgICAgICAgICAgICAgIGFwcGx5V29yZFNwYWNpbmcgPSAg
d29yZFNwYWNpbmcgJiYgY3VycmVudENoYXJhY3RlcklzU3BhY2UgJiYgIXByZXZpb3VzQ2hhcmFj
dGVySXNTcGFjZTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoIXdpZHRoLmNvbW1pdHRlZFdp
ZHRoKCkgJiYgYXV0b1dyYXAgJiYgIXdpZHRoLmZpdHNPbkxpbmUoKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHdpZHRoLmZpdEJlbG93RmxvYXRzKHRoaXMsIGZpcnN0TGluZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB3aWR0aC5maXRCZWxvd0Zsb2F0cygpOwogCiAgICAgICAgICAgICAg
ICAgICAgIGlmIChhdXRvV3JhcCB8fCBicmVha1dvcmRzKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBJZiB3ZSBicmVhayBvbmx5IGFmdGVyIHdoaXRlLXNwYWNlLCBjb25zaWRlciB0aGUg
Y3VycmVudCBjaGFyYWN0ZXIKQEAgLTIxNTMsNyArMjE0NCw3IEBAIElubGluZUl0ZXJhdG9yIFJl
bmRlckJsb2NrOjpmaW5kTmV4dExpbmUKICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrRm9y
QnJlYWsgPSB0cnVlOwogCiAgICAgICAgICAgICAgICAgICAgIGlmICghd2lkdGguZml0c09uTGlu
ZSgpICYmICF3aWR0aC5jb21taXR0ZWRXaWR0aCgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
d2lkdGguZml0QmVsb3dGbG9hdHModGhpcywgZmlyc3RMaW5lKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHdpZHRoLmZpdEJlbG93RmxvYXRzKCk7CiAKICAgICAgICAgICAgICAgICAgICAgYm9v
bCBjYW5QbGFjZU9uTGluZSA9IHdpZHRoLmZpdHNPbkxpbmUoKSB8fCAhYXV0b1dyYXBXYXNFdmVy
VHJ1ZU9uTGluZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNhblBsYWNlT25MaW5lICYmIGNo
ZWNrRm9yQnJlYWspIHsKQEAgLTIxNzQsNyArMjE2NSw3IEBAIElubGluZUl0ZXJhdG9yIFJlbmRl
ckJsb2NrOjpmaW5kTmV4dExpbmUKICAgICAgICAgICAgIGlmICh3aWR0aC5jb21taXR0ZWRXaWR0
aCgpKQogICAgICAgICAgICAgICAgIGdvdG8gZW5kOwogCi0gICAgICAgICAgICB3aWR0aC5maXRC
ZWxvd0Zsb2F0cyh0aGlzLCBmaXJzdExpbmUpOworICAgICAgICAgICAgd2lkdGguZml0QmVsb3dG
bG9hdHMoKTsKIAogICAgICAgICAgICAgLy8gfHdpZHRofCBtYXkgaGF2ZSBiZWVuIGFkanVzdGVk
IGJlY2F1c2Ugd2UgZ290IHNob3ZlZCBkb3duIHBhc3QgYSBmbG9hdCAodGh1cwogICAgICAgICAg
ICAgLy8gZ2l2aW5nIHVzIG1vcmUgcm9vbSksIHNvIHdlIG5lZWQgdG8gcmV0ZXN0LCBhbmQgb25s
eSBqdW1wIHRvCkBAIC0yMzM5LDEyICsyMzMwLDEyIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNoZWNr
TGluZXNGb3JUZXh0T3ZlcmYKICAgICB9CiB9CiAKLWJvb2wgUmVuZGVyQmxvY2s6OnBvc2l0aW9u
TmV3RmxvYXRPbkxpbmUoRmxvYXRpbmdPYmplY3QqIG5ld0Zsb2F0LCBGbG9hdGluZ09iamVjdCog
bGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgTGluZU9mZnNldHMmIGxpbmVPZmZzZXRzKQorYm9v
bCBSZW5kZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdE9uTGluZShGbG9hdGluZ09iamVjdCogbmV3
RmxvYXQsIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBMaW5lV2lk
dGgmIHdpZHRoKQogewogICAgIGlmICghcG9zaXRpb25OZXdGbG9hdHMoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgbGluZU9mZnNldHMuc2hyaW5rV2lkdGhGb3JOZXdGbG9hdElmTmVl
ZGVkKG5ld0Zsb2F0KTsKKyAgICB3aWR0aC5zaHJpbmtBdmFpbGFibGVXaWR0aEZvck5ld0Zsb2F0
SWZOZWVkZWQobmV3RmxvYXQpOwogCiAgICAgaWYgKCFuZXdGbG9hdC0+bV9wYWdpbmF0aW9uU3Ry
dXQpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjM3OSw3ICsyMzcwLDcgQEAgYm9vbCBSZW5k
ZXJCbG9jazo6cG9zaXRpb25OZXdGbG9hdE9uTGluZQogICAgIH0KIAogICAgIHNldExvZ2ljYWxI
ZWlnaHQobG9naWNhbEhlaWdodCgpICsgcGFnaW5hdGlvblN0cnV0KTsKLSAgICBsaW5lT2Zmc2V0
cy51cGRhdGUoKTsKKyAgICB3aWR0aC51cGRhdGVBdmFpbGFibGVXaWR0aCgpOwogCiAgICAgcmV0
dXJuIHRydWU7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>