<?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>5936</bug_id>
          
          <creation_ts>2005-12-04 22:27:53 -0800</creation_ts>
          <short_desc>REGRESSION: selection keeps growing after double-click</short_desc>
          <delta_ts>2005-12-05 21:54:00 -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>HTML Editing</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>VERIFIED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Justin Garcia">justin.garcia</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>25541</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-12-04 22:27:53 -0800</bug_when>
    <thetext>Steps to reproduce: 
1. Double-click any word on this page
2. Move the mouse pointer one line up

Results: The selection starts expanding forward character by character, until it reaches the end of 
paragraph.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25542</commentid>
    <comment_count>1</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2005-12-04 22:29:59 -0800</bug_when>
    <thetext>This was caused by my recent checkin, I&apos;m working on a fix. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25547</commentid>
    <comment_count>2</comment_count>
      <attachid>4955</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2005-12-05 00:19:10 -0800</bug_when>
    <thetext>Created attachment 4955
patch

I rolled out my fix for 5856 and rewrote it.

The bug in 5856 was caused because validate() was making changes to the
selection (expansion) that weren&apos;t themselves corrected by validate().	The
part of validation that is important for the bug is adjustForEditableContent(),
which prevents the selection from straddling an editable/non-editable boundary.
 In this patch, adjustForEditableContent() is called after expansion, and I
modified it to take into account the possibility of start/end being distinct
from base/extent.  Base/extent will be distinct from start/end when expansion
is done.  Expansion happens when you a) double or triple click, or b) when you
modify a selection that was created by double or triple clicking.  When you
modify a selection that was created by a double or triple click, the new
selection uses word or paragraph granularity, respectively.

Originally, I thought that SelectionController could be changed to keep just
two positions and a boolean (baseIsStart).  But keeping four positions in
SelectionController is probably the most straightforward way of implementing
the second type of expansion mentioned above, otherwise the Part would have to
keep track of the base of the selection.  In addition, adjustForEditableContent
wouldn&apos;t be able to do its job after an expansion if it didn&apos;t know where the
user based the selection.

The patch also renames m_baseIsStart to m_baseIsFirst, since base/extent are
sometimes distinct from start/end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25548</commentid>
    <comment_count>3</comment_count>
      <attachid>4956</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2005-12-05 00:25:54 -0800</bug_when>
    <thetext>Created attachment 4956
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25573</commentid>
    <comment_count>4</comment_count>
      <attachid>4956</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-05 06:34:50 -0800</bug_when>
    <thetext>Comment on attachment 4956
patch

OK, looks fine. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25608</commentid>
    <comment_count>5</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2005-12-05 20:30:08 -0800</bug_when>
    <thetext>landed</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4955</attachid>
            <date>2005-12-05 00:19:10 -0800</date>
            <delta_ts>2005-12-05 00:25:54 -0800</delta_ts>
            <desc>patch</desc>
            <filename>5936.txt</filename>
            <type>text/plain</type>
            <size>13244</size>
            <attacher name="Justin Garcia">justin.garcia</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2todG1sX3BhcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9v
dC9XZWJDb3JlL2todG1sL2todG1sX3BhcnQuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM2
MgpkaWZmIC11IC1yMS4zNjIga2h0bWxfcGFydC5jcHAKLS0tIGtodG1sL2todG1sX3BhcnQuY3Bw
CTIgRGVjIDIwMDUgMDM6NDg6MDMgLTAwMDAJMS4zNjIKKysrIGtodG1sL2todG1sX3BhcnQuY3Bw
CTUgRGVjIDIwMDUgMDc6MDg6NTUgLTAwMDAKQEAgLTI3MzEsMjYgKzI3MzEsMjQgQEAKICAgICAv
LyBkb25lIGluIGtodG1sTW91c2VQcmVzc0V2ZW50LCBidXQgbm90IGlmIHRoZSBtb3VzZSBwcmVz
cyB3YXMgb24gYW4gZXhpc3Rpbmcgc2VsZWN0aW9uLgogICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIg
c2VsID0gc2VsZWN0aW9uKCk7CiAgICAgc2VsLmNsZWFyTW9kaWZ5QmlhcygpOworICAgIAogICAg
IGlmICghZC0+bV9iZWdhblNlbGVjdGluZ1RleHQpIHsKICAgICAgICAgZC0+bV9iZWdhblNlbGVj
dGluZ1RleHQgPSB0cnVlOwogICAgICAgICBzZWwubW92ZVRvKHBvcyk7CiAgICAgfQogCiAgICAg
c2VsLnNldEV4dGVudChwb3MpOwotICAgIGlmIChkLT5tX3NlbGVjdGlvbkdyYW51bGFyaXR5ICE9
IENIQVJBQ1RFUikgeworICAgIGlmIChkLT5tX3NlbGVjdGlvbkdyYW51bGFyaXR5ICE9IENIQVJB
Q1RFUikKICAgICAgICAgc2VsLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoZC0+bV9zZWxlY3Rpb25H
cmFudWxhcml0eSk7Ci0gICAgfQogCi0gICAgaWYgKHNob3VsZENoYW5nZVNlbGVjdGlvbihzZWwp
KSB7CisgICAgaWYgKHNob3VsZENoYW5nZVNlbGVjdGlvbihzZWwpKQogICAgICAgICBzZXRTZWxl
Y3Rpb24oc2VsKTsKLSAgICB9CiAKICNlbmRpZiAvLyBLSFRNTF9OT19TRUxFQ1RJT04KIH0KIAog
dm9pZCBLSFRNTFBhcnQ6OmtodG1sTW91c2VNb3ZlRXZlbnQoa2h0bWw6Ok1vdXNlTW92ZUV2ZW50
ICpldmVudCkKIHsKLQogICAgIGhhbmRsZU1vdXNlTW92ZUV2ZW50U2VsZWN0aW9uKGV2ZW50KTsJ
CQogfQogCkluZGV4OiBraHRtbC9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL2VkaXRpbmcvU2VsZWN0aW9u
Q29udHJvbGxlci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTA0CmRpZmYgLXUgLXIxLjEw
NCBTZWxlY3Rpb25Db250cm9sbGVyLmNwcAotLS0ga2h0bWwvZWRpdGluZy9TZWxlY3Rpb25Db250
cm9sbGVyLmNwcAk0IERlYyAyMDA1IDAwOjQ4OjA1IC0wMDAwCTEuMTA0CisrKyBraHRtbC9lZGl0
aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCTUgRGVjIDIwMDUgMDc6MDg6NTkgLTAwMDAKQEAg
LTQ5MSw2MSArNDkxLDggQEAKIHsKICAgICBpZiAoaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICAgICAgY2FzZSBDSEFSQUNU
RVI6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXT1JEOiB7Ci0gICAgICAgICAg
ICAvLyBHZW5lcmFsIGNhc2U6IFNlbGVjdCB0aGUgd29yZCB0aGUgY2FyZXQgaXMgcG9zaXRpb25l
ZCBpbnNpZGUgb2YsIG9yIGF0IHRoZSBzdGFydCBvZiAoUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KS4K
LSAgICAgICAgICAgIC8vIEVkZ2UgY2FzZTogSWYgdGhlIGNhcmV0IGlzIGFmdGVyIHRoZSBsYXN0
IHdvcmQgaW4gYSBzb2Z0LXdyYXBwZWQgbGluZSBvciB0aGUgbGFzdCB3b3JkIGluCi0gICAgICAg
ICAgICAvLyB0aGUgZG9jdW1lbnQsIHNlbGVjdCB0aGF0IGxhc3Qgd29yZCAoTGVmdFdvcmRJZk9u
Qm91bmRhcnkpLgotICAgICAgICAgICAgLy8gRWRnZSBjYXNlOiBJZiB0aGUgY2FyZXQgaXMgYWZ0
ZXIgdGhlIGxhc3Qgd29yZCBpbiBhIHBhcmFncmFwaCwgc2VsZWN0IGZyb20gdGhlIHRoZSBlbmQg
b2YgdGhlCi0gICAgICAgICAgICAvLyBsYXN0IHdvcmQgdG8gdGhlIGxpbmUgYnJlYWsgKGFsc28g
UmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKLSAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBzdGFy
dCA9IFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KTsKLSAgICAgICAgICAgIFZp
c2libGVQb3NpdGlvbiBlbmQgICA9IFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSk7
Ci0gICAgICAgICAgICBFV29yZFNpZGUgc2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFyeTsKLSAg
ICAgICAgICAgIGlmIChpc0VuZE9mRG9jdW1lbnQoc3RhcnQpIHx8IChpc0VuZE9mTGluZShzdGFy
dCkgJiYgIWlzU3RhcnRPZkxpbmUoc3RhcnQpICYmICFpc0VuZE9mUGFyYWdyYXBoKHN0YXJ0KSkp
Ci0gICAgICAgICAgICAgICAgc2lkZSA9IExlZnRXb3JkSWZPbkJvdW5kYXJ5OwotICAgICAgICAg
ICAgbV9zdGFydCA9IHN0YXJ0T2ZXb3JkKHN0YXJ0LCBzaWRlKS5kZWVwRXF1aXZhbGVudCgpOwot
ICAgICAgICAgICAgc2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFyeTsKLSAgICAgICAgICAgIGlm
IChpc0VuZE9mRG9jdW1lbnQoZW5kKSB8fCAoaXNFbmRPZkxpbmUoZW5kKSAmJiAhaXNTdGFydE9m
TGluZShlbmQpICYmICFpc0VuZE9mUGFyYWdyYXBoKGVuZCkpKQotICAgICAgICAgICAgICAgIHNp
ZGUgPSBMZWZ0V29yZElmT25Cb3VuZGFyeTsKLSAgICAgICAgICAgIG1fZW5kID0gZW5kT2ZXb3Jk
KGVuZCwgc2lkZSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGNhc2UgTElORToKLSAgICAgICAgY2FzZSBM
SU5FX0JPVU5EQVJZOgotICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZMaW5lKFZpc2libGVQ
b3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAg
ICAgIG1fZW5kID0gZW5kT2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSks
IEluY2x1ZGVMaW5lQnJlYWspLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBQQVJBR1JBUEg6IHsKLSAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBw
b3MobV9zdGFydCwgbV9hZmZpbml0eSk7Ci0gICAgICAgICAgICBpZiAoaXNTdGFydE9mTGluZShw
b3MpICYmIGlzRW5kT2ZEb2N1bWVudChwb3MpKQotICAgICAgICAgICAgICAgIHBvcyA9IHBvcy5w
cmV2aW91cygpOwotICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZQYXJhZ3JhcGgocG9zKS5k
ZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAgbV9lbmQgPSBlbmRPZlBhcmFncmFwaChWaXNp
YmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpLCBJbmNsdWRlTGluZUJyZWFrKS5kZWVwRXF1
aXZhbGVudCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBE
T0NVTUVOVF9CT1VOREFSWToKLSAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9mRG9jdW1lbnQo
VmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOwot
ICAgICAgICAgICAgbV9lbmQgPSBlbmRPZkRvY3VtZW50KFZpc2libGVQb3NpdGlvbihtX2VuZCwg
bV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBQQVJBR1JBUEhfQk9VTkRBUlk6Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3RhcnRP
ZlBhcmFncmFwaChWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSkpLmRlZXBFcXVp
dmFsZW50KCk7Ci0gICAgICAgICAgICBtX2VuZCA9IGVuZE9mUGFyYWdyYXBoKFZpc2libGVQb3Np
dGlvbihtX2VuZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICB9CiAgICAgCi0gICAgaWYgKG1fYmFzZUlzU3RhcnQpIHsKLSAgICAgICAgbV9i
YXNlID0gbV9zdGFydDsKLSAgICAgICAgbV9leHRlbnQgPSBtX2VuZDsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBtX2Jhc2UgPSBtX2VuZDsKLSAgICAgICAgbV9leHRlbnQgPSBtX3N0YXJ0OwotICAg
IH0KLSAgICAKLSAgICB2YWxpZGF0ZSgpOworICAgIHZhbGlkYXRlKGdyYW51bGFyaXR5KTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtODI0LDU5ICs3NzEsNjQgQEAKICAgICAgICAgcC0+Zmls
bFJlY3QoY2FyZXQgJiByZWN0LCBRQnJ1c2goKSk7CiB9CiAKLXZvaWQgU2VsZWN0aW9uQ29udHJv
bGxlcjo6YWRqdXN0RXh0ZW50Rm9yRWRpdGFibGVDb250ZW50KCkKK3ZvaWQgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6YWRqdXN0Rm9yRWRpdGFibGVDb250ZW50KCkKIHsKLSAgICBQb3NpdGlvbiBiYXNl
ID0gdGhpcy0+YmFzZSgpOwotICAgIFBvc2l0aW9uIGV4dGVudCA9IHRoaXMtPmV4dGVudCgpOwot
ICAgIAotICAgIGlmICghYmFzZS5ub2RlKCkgfHwgIWV4dGVudC5ub2RlKCkpCisgICAgaWYgKG1f
YmFzZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOworCisgICAgTm9kZUltcGwgKmJhc2VSb290
ID0gbV9iYXNlLm5vZGUoKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOworICAgIE5vZGVJbXBsICpz
dGFydFJvb3QgPSBtX3N0YXJ0Lm5vZGUoKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOworICAgIE5v
ZGVJbXBsICplbmRSb290ID0gbV9lbmQubm9kZSgpLT5yb290RWRpdGFibGVFbGVtZW50KCk7CiAg
ICAgCi0gICAgTm9kZUltcGwgKmJhc2VSb290ID0gYmFzZS5ub2RlKCktPnJvb3RFZGl0YWJsZUVs
ZW1lbnQoKTsKLSAgICBOb2RlSW1wbCAqZXh0ZW50Um9vdCA9IGV4dGVudC5ub2RlKCktPnJvb3RF
ZGl0YWJsZUVsZW1lbnQoKTsKLSAgICAKLSAgICBpZiAoYmFzZVJvb3QgPT0gZXh0ZW50Um9vdCkK
KyAgICAvLyBUaGUgYmFzZSwgc3RhcnQgYW5kIGVuZCBhcmUgYWxsIGluIHRoZSBzYW1lIHJlZ2lv
bi4gIE5vIGFkanVzdG1lbnQgbmVjZXNzYXJ5LgorICAgIGlmIChiYXNlUm9vdCA9PSBzdGFydFJv
b3QgJiYgYmFzZVJvb3QgPT0gZW5kUm9vdCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGJv
b2wgYmFzZUlzU3RhcnQgPSBSYW5nZUltcGw6OmNvbXBhcmVCb3VuZGFyeVBvaW50cyhiYXNlLCBl
eHRlbnQpIDw9IDA7Ci0gICAgCi0gICAgLy8gYmFzZSBpcyBpbiBhbiBlZGl0YWJsZSByZWdpb24s
IGJ1dCBleHRlbnQgaXMgbm90LgorICAgIC8vIFRoZSBzZWxlY3Rpb24gaXMgYmFzZWQgaW4gYW4g
ZWRpdGFibGUgYXJlYS4gIEtlZXAgaXQgZnJvbSBleHRlbmRpbmcgb3V0c2lkZSB0aGF0IGFyZWEu
CiAgICAgaWYgKGJhc2VSb290KSB7Ci0gICAgICAgIFBvc2l0aW9uIGZpcnN0KFBvc2l0aW9uKGJh
c2VSb290LCAwKSk7Ci0gICAgICAgIFBvc2l0aW9uIGxhc3QoUG9zaXRpb24oYmFzZVJvb3QsIGJh
c2VSb290LT5tYXhEZWVwT2Zmc2V0KCkpKTsKLSAgICAgICAgCi0gICAgICAgIG1fZXh0ZW50ID0g
YmFzZUlzU3RhcnQgPyBsYXN0IDogZmlyc3Q7Ci0gICAgLy8gZXh0ZW50IGlzIGluIGFuIGVkaXRh
YmxlIHJlZ2lvbiwgYnV0IGJhc2UgaXMgbm90LgorICAgICAgICAvLyBJZiB0aGUgc3RhcnQgaXMg
b3V0c2lkZSB0aGUgYmFzZSdzIGVkaXRhYmxlIHJvb3QsIGNhcCBpdCBhdCB0aGUgc3RhcnQgb2Yg
dGhhdCBlZGl0YWJsZSByb290LgorICAgICAgICBpZiAoYmFzZVJvb3QgIT0gc3RhcnRSb290KSB7
CisgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gZmlyc3QoUG9zaXRpb24oYmFzZVJvb3QsIDAp
KTsKKyAgICAgICAgICAgIG1fc3RhcnQgPSBmaXJzdC5kZWVwRXF1aXZhbGVudCgpOworICAgICAg
ICB9CisgICAgICAgIC8vIElmIHRoZSBlbmQgaXMgb3V0c2lkZSB0aGUgYmFzZSdzIGVkaXRhYmxl
IHJvb3QsIGNhcCBpdCBhdCB0aGUgZW5kIG9mIHRoYXQgZWRpdGFibGUgcm9vdC4KKyAgICAgICAg
aWYgKGJhc2VSb290ICE9IGVuZFJvb3QpIHsKKyAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBs
YXN0KFBvc2l0aW9uKGJhc2VSb290LCBiYXNlUm9vdC0+bWF4RGVlcE9mZnNldCgpKSk7CisgICAg
ICAgICAgICBtX2VuZCA9IGxhc3QuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgfQorICAgIC8v
IFRoZSBzZWxlY3Rpb24gaXMgYmFzZWQgb3V0c2lkZSBlZGl0YWJsZSBjb250ZW50LiAgS2VlcCBp
dCBmcm9tIHJlYWNoaW5nIGludG8gZWRpdGFibGUgY29udGVudC4KICAgICB9IGVsc2UgewotICAg
ICAgICBpZiAoYmFzZUlzU3RhcnQpIHsKKyAgICAgICAgaWYgKGJhc2VSb290ICE9IGVuZFJvb3Qp
IHsKICAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91czsKKyAgICAgICAgICAgIC8v
IFRoZSBzZWxlY3Rpb24gZW5kcyBpbiBlZGl0YWJsZSBjb250ZW50LCBtb3ZlIGJhY2t3YXJkIHVu
dGlsIG5vbi1lZGl0YWJsZSBjb250ZW50IGlzIHJlYWNoZWQuCiAgICAgICAgICAgICBkbyB7Ci0g
ICAgICAgICAgICAgICAgcHJldmlvdXMgPSBWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24oZXh0ZW50
Um9vdCwgMCkpLnByZXZpb3VzKCk7Ci0gICAgICAgICAgICAgICAgZXh0ZW50Um9vdCA9IHByZXZp
b3VzLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpLT5yb290RWRpdGFibGVFbGVtZW50KCk7Ci0gICAg
ICAgICAgICB9IHdoaWxlIChleHRlbnRSb290KTsKKyAgICAgICAgICAgICAgICBwcmV2aW91cyA9
IFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihlbmRSb290LCAwKSkucHJldmlvdXMoKTsKKyAgICAg
ICAgICAgICAgICBlbmRSb290ID0gcHJldmlvdXMuZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCktPnJv
b3RFZGl0YWJsZUVsZW1lbnQoKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKGVuZFJvb3QpOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICAvLyBTaW5jZSB3ZSBrbm93IHRoYXQgYmFzZSBpcyBiZWZv
cmUgZXh0ZW50LCBhbmQgc2luY2Ugd2Uga25vdyB0aGF0IGJhc2UgaXMgbm90IGluIGEgY29udGVu
dCBlZGl0YWJsZSBlbGVtZW50LAotICAgICAgICAgICAgLy8gd2Uga25vdyB0aGF0IHdlIG11c3Qg
aGF2ZSByZWFjaGVkIG5vbiBlZGl0YWJsZSBjb250ZW50LgogICAgICAgICAgICAgQVNTRVJUKCFw
cmV2aW91cy5pc051bGwoKSk7Ci0gICAgICAgICAgICBtX2V4dGVudCA9IHByZXZpb3VzLmRlZXBF
cXVpdmFsZW50KCk7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2VuZCA9IHByZXZp
b3VzLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJhc2VSb290ICE9
IHN0YXJ0Um9vdCkgewogICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHQ7CisgICAgICAg
ICAgICAvLyBUaGUgc2VsZWN0aW9uIHN0YXJ0cyBpbiBlZGl0YWJsZSBjb250ZW50LCBtb3ZlIGZv
cndhcmQgdW50aWwgbm9uLWVkaXRhYmxlIGNvbnRlbnQgaXMgcmVhY2hlZC4KICAgICAgICAgICAg
IGRvIHsKLSAgICAgICAgICAgICAgICBuZXh0ID0gVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKGV4
dGVudFJvb3QsIGV4dGVudFJvb3QtPm1heERlZXBPZmZzZXQoKSkpLm5leHQoKTsKLSAgICAgICAg
ICAgICAgICBleHRlbnRSb290ID0gbmV4dC5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKS0+cm9vdEVk
aXRhYmxlRWxlbWVudCgpOwotICAgICAgICAgICAgfSB3aGlsZSAoZXh0ZW50Um9vdCk7CisgICAg
ICAgICAgICAgICAgbmV4dCA9IFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihzdGFydFJvb3QsIHN0
YXJ0Um9vdC0+bWF4RGVlcE9mZnNldCgpKSkubmV4dCgpOworICAgICAgICAgICAgICAgIHN0YXJ0
Um9vdCA9IG5leHQuZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQo
KTsKKyAgICAgICAgICAgIH0gd2hpbGUgKHN0YXJ0Um9vdCk7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIC8vIFNpbmNlIHdlIGtub3cgdGhhdCBleHRlbnQgaXMgYmVmb3JlIGJhc2UsIGFuZCBz
aW5jZSB3ZSBrbm93IHRoYXQgZXh0ZW50IGlzIG5vdCBpbiBhIGNvbnRlbnQgZWRpdGFibGUgZWxl
bWVudCwKLSAgICAgICAgICAgIC8vIHdlIGtub3cgdGhhdCB3ZSBtdXN0IGhhdmUgcmVhY2hlZCBu
b24gZWRpdGFibGUgY29udGVudC4KICAgICAgICAgICAgIEFTU0VSVCghbmV4dC5pc051bGwoKSk7
Ci0gICAgICAgICAgICBtX2V4dGVudCA9IG5leHQuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAg
ICAgIG1fc3RhcnQgPSBuZXh0LmRlZXBFcXVpdmFsZW50KCk7CiAgICAgICAgIH0KICAgICB9Cisg
ICAgCisgICAgLy8gQ29ycmVjdCB0aGUgZXh0ZW50IGlmIG5lY2Vzc2FyeS4KKyAgICBpZiAoYmFz
ZVJvb3QgIT0gbV9leHRlbnQubm9kZSgpLT5yb290RWRpdGFibGVFbGVtZW50KCkpCisgICAgICAg
IG1fZXh0ZW50ID0gbV9iYXNlSXNTdGFydCA/IG1fZW5kIDogbV9zdGFydDsKIH0KIAotdm9pZCBT
ZWxlY3Rpb25Db250cm9sbGVyOjp2YWxpZGF0ZSgpCit2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6
OnZhbGlkYXRlKEVUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7Ci0gICAgYWRqdXN0RXh0
ZW50Rm9yRWRpdGFibGVDb250ZW50KCk7CiAgICAgLy8gTW92ZSB0aGUgc2VsZWN0aW9uIHRvIHJl
bmRlcmVkIHBvc2l0aW9ucywgaWYgcG9zc2libGUuCiAgICAgUG9zaXRpb24gb3JpZ2luYWxCYXNl
KG1fYmFzZSk7CiAgICAgYm9vbCBiYXNlQW5kRXh0ZW50RXF1YWwgPSBtX2Jhc2UgPT0gbV9leHRl
bnQ7CkBAIC05MTIsMTYgKzg2NCwxMyBAQAogICAgICAgICAgICAgbV9lbmQuY2xlYXIoKTsKICAg
ICAgICAgfQogICAgICAgICBtX2Jhc2VJc1N0YXJ0ID0gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZSBp
ZiAobV9iYXNlLmlzTnVsbCgpKSB7CisgICAgfSBlbHNlIGlmIChtX2Jhc2UuaXNOdWxsKCkpIHsK
ICAgICAgICAgbV9iYXNlID0gbV9leHRlbnQ7CiAgICAgICAgIG1fYmFzZUlzU3RhcnQgPSB0cnVl
OwotICAgIH0KLSAgICBlbHNlIGlmIChtX2V4dGVudC5pc051bGwoKSkgeworICAgIH0gZWxzZSBp
ZiAobV9leHRlbnQuaXNOdWxsKCkpIHsKICAgICAgICAgbV9leHRlbnQgPSBtX2Jhc2U7CiAgICAg
ICAgIG1fYmFzZUlzU3RhcnQgPSB0cnVlOwotICAgIH0KLSAgICBlbHNlIHsKKyAgICB9IGVsc2Ug
ewogICAgICAgICBtX2Jhc2VJc1N0YXJ0ID0gUmFuZ2VJbXBsOjpjb21wYXJlQm91bmRhcnlQb2lu
dHMobV9iYXNlLm5vZGUoKSwgbV9iYXNlLm9mZnNldCgpLCBtX2V4dGVudC5ub2RlKCksIG1fZXh0
ZW50Lm9mZnNldCgpKSA8PSAwOwogICAgIH0KIApAQCAtOTMyLDE2ICs4ODEsNjMgQEAKICAgICAg
ICAgbV9zdGFydCA9IG1fZXh0ZW50OwogICAgICAgICBtX2VuZCA9IG1fYmFzZTsKICAgICB9Cisg
ICAgCisgICAgLy8gRXhwYW5kIHRoZSBzZWxlY3Rpb24gaWYgcmVxdWVzdGVkLgorICAgIHN3aXRj
aCAoZ3JhbnVsYXJpdHkpIHsKKyAgICAgICAgY2FzZSBDSEFSQUNURVI6CisgICAgICAgICAgICAv
LyBEb24ndCBkbyBhbnkgZXhwYW5zaW9uLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgV09SRDogeworICAgICAgICAgICAgLy8gR2VuZXJhbCBjYXNlOiBTZWxlY3QgdGhlIHdvcmQg
dGhlIGNhcmV0IGlzIHBvc2l0aW9uZWQgaW5zaWRlIG9mLCBvciBhdCB0aGUgc3RhcnQgb2YgKFJp
Z2h0V29yZElmT25Cb3VuZGFyeSkuCisgICAgICAgICAgICAvLyBFZGdlIGNhc2U6IElmIHRoZSBj
YXJldCBpcyBhZnRlciB0aGUgbGFzdCB3b3JkIGluIGEgc29mdC13cmFwcGVkIGxpbmUgb3IgdGhl
IGxhc3Qgd29yZCBpbgorICAgICAgICAgICAgLy8gdGhlIGRvY3VtZW50LCBzZWxlY3QgdGhhdCBs
YXN0IHdvcmQgKExlZnRXb3JkSWZPbkJvdW5kYXJ5KS4KKyAgICAgICAgICAgIC8vIEVkZ2UgY2Fz
ZTogSWYgdGhlIGNhcmV0IGlzIGFmdGVyIHRoZSBsYXN0IHdvcmQgaW4gYSBwYXJhZ3JhcGgsIHNl
bGVjdCBmcm9tIHRoZSB0aGUgZW5kIG9mIHRoZQorICAgICAgICAgICAgLy8gbGFzdCB3b3JkIHRv
IHRoZSBsaW5lIGJyZWFrIChhbHNvIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gc3RhcnQgPSBWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZp
bml0eSk7CisgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gZW5kICAgPSBWaXNpYmxlUG9zaXRp
b24obV9lbmQsIG1fYWZmaW5pdHkpOworICAgICAgICAgICAgRVdvcmRTaWRlIHNpZGUgPSBSaWdo
dFdvcmRJZk9uQm91bmRhcnk7CisgICAgICAgICAgICBpZiAoaXNFbmRPZkRvY3VtZW50KHN0YXJ0
KSB8fCAoaXNFbmRPZkxpbmUoc3RhcnQpICYmICFpc1N0YXJ0T2ZMaW5lKHN0YXJ0KSAmJiAhaXNF
bmRPZlBhcmFncmFwaChzdGFydCkpKQorICAgICAgICAgICAgICAgIHNpZGUgPSBMZWZ0V29yZElm
T25Cb3VuZGFyeTsKKyAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9mV29yZChzdGFydCwgc2lk
ZSkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgICAgIHNpZGUgPSBSaWdodFdvcmRJZk9uQm91
bmRhcnk7CisgICAgICAgICAgICBpZiAoaXNFbmRPZkRvY3VtZW50KGVuZCkgfHwgKGlzRW5kT2ZM
aW5lKGVuZCkgJiYgIWlzU3RhcnRPZkxpbmUoZW5kKSAmJiAhaXNFbmRPZlBhcmFncmFwaChlbmQp
KSkKKyAgICAgICAgICAgICAgICBzaWRlID0gTGVmdFdvcmRJZk9uQm91bmRhcnk7CisgICAgICAg
ICAgICBtX2VuZCA9IGVuZE9mV29yZChlbmQsIHNpZGUpLmRlZXBFcXVpdmFsZW50KCk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICBjYXNl
IExJTkU6CisgICAgICAgIGNhc2UgTElORV9CT1VOREFSWToKKyAgICAgICAgICAgIG1fc3RhcnQg
PSBzdGFydE9mTGluZShWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSkpLmRlZXBF
cXVpdmFsZW50KCk7CisgICAgICAgICAgICBtX2VuZCA9IGVuZE9mTGluZShWaXNpYmxlUG9zaXRp
b24obV9lbmQsIG1fYWZmaW5pdHkpLCBJbmNsdWRlTGluZUJyZWFrKS5kZWVwRXF1aXZhbGVudCgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUEFSQUdSQVBIOiB7CisgICAgICAg
ICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKG1fc3RhcnQsIG1fYWZmaW5pdHkpOworICAgICAgICAg
ICAgaWYgKGlzU3RhcnRPZkxpbmUocG9zKSAmJiBpc0VuZE9mRG9jdW1lbnQocG9zKSkKKyAgICAg
ICAgICAgICAgICBwb3MgPSBwb3MucHJldmlvdXMoKTsKKyAgICAgICAgICAgIG1fc3RhcnQgPSBz
dGFydE9mUGFyYWdyYXBoKHBvcykuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgICAgIG1fZW5k
ID0gZW5kT2ZQYXJhZ3JhcGgoVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSwgSW5j
bHVkZUxpbmVCcmVhaykuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRE9DVU1FTlRfQk9VTkRBUlk6CisgICAgICAgICAgICBtX3N0
YXJ0ID0gc3RhcnRPZkRvY3VtZW50KFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5
KSkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgICAgIG1fZW5kID0gZW5kT2ZEb2N1bWVudChW
aXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUEFSQUdSQVBIX0JPVU5EQVJZOgorICAgICAg
ICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZQYXJhZ3JhcGgoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQs
IG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICAgICAgbV9lbmQgPSBlbmRP
ZlBhcmFncmFwaChWaXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZh
bGVudCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGFkanVzdEZvckVk
aXRhYmxlQ29udGVudCgpOwogCiAgICAgLy8gYWRqdXN0IHRoZSBzdGF0ZQogICAgIGlmIChtX3N0
YXJ0LmlzTnVsbCgpKSB7CiAgICAgICAgIEFTU0VSVChtX2VuZC5pc051bGwoKSk7CiAgICAgICAg
IG1fc3RhdGUgPSBOT05FOwotICAgIH0KLSAgICBlbHNlIGlmIChtX3N0YXJ0ID09IG1fZW5kIHx8
IG1fc3RhcnQudXBzdHJlYW0oKSA9PSBtX2VuZC51cHN0cmVhbSgpKSB7CisgICAgfSBlbHNlIGlm
IChtX3N0YXJ0ID09IG1fZW5kIHx8IG1fc3RhcnQudXBzdHJlYW0oKSA9PSBtX2VuZC51cHN0cmVh
bSgpKSB7CiAgICAgICAgIG1fc3RhdGUgPSBDQVJFVDsKLSAgICB9Ci0gICAgZWxzZSB7CisgICAg
fSBlbHNlIHsKICAgICAgICAgbV9zdGF0ZSA9IFJBTkdFOwogICAgICAgICAvLyAiQ29uc3RyYWlu
IiB0aGUgc2VsZWN0aW9uIHRvIGJlIHRoZSBzbWFsbGVzdCBlcXVpdmFsZW50IHJhbmdlIG9mIG5v
ZGVzLgogICAgICAgICAvLyBUaGlzIGlzIGEgc29tZXdoYXQgYXJiaXRyYXJ5IGNob2ljZSwgYnV0
IGV4cGVyaWVuY2Ugc2hvd3MgdGhhdCBpdCBpcwpJbmRleDoga2h0bWwvZWRpdGluZy9TZWxlY3Rp
b25Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0
bWwvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
NDYKZGlmZiAtdSAtcjEuNDYgU2VsZWN0aW9uQ29udHJvbGxlci5oCi0tLSBraHRtbC9lZGl0aW5n
L1NlbGVjdGlvbkNvbnRyb2xsZXIuaAk0IERlYyAyMDA1IDAwOjQ4OjA1IC0wMDAwCTEuNDYKKysr
IGtodG1sL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oCTUgRGVjIDIwMDUgMDc6MDg6NTkg
LTAwMDAKQEAgLTEyMSw4ICsxMjEsOCBAQAogICAgIGVudW0gRVBvc2l0aW9uVHlwZSB7IFNUQVJU
LCBFTkQsIEJBU0UsIEVYVEVOVCB9OwogCiAgICAgdm9pZCBpbml0KEVBZmZpbml0eSBhZmZpbml0
eSk7Ci0gICAgdm9pZCB2YWxpZGF0ZSgpOwotICAgIHZvaWQgYWRqdXN0RXh0ZW50Rm9yRWRpdGFi
bGVDb250ZW50KCk7CisgICAgdm9pZCB2YWxpZGF0ZShFVGV4dEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5ID0gQ0hBUkFDVEVSKTsKKyAgICB2b2lkIGFkanVzdEZvckVkaXRhYmxlQ29udGVudCgpOwog
CiAgICAgVmlzaWJsZVBvc2l0aW9uIG1vZGlmeUV4dGVuZGluZ1JpZ2h0Rm9yd2FyZChFVGV4dEdy
YW51bGFyaXR5KTsKICAgICBWaXNpYmxlUG9zaXRpb24gbW9kaWZ5TW92aW5nUmlnaHRGb3J3YXJk
KEVUZXh0R3JhbnVsYXJpdHkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4956</attachid>
            <date>2005-12-05 00:25:54 -0800</date>
            <delta_ts>2005-12-05 06:34:50 -0800</delta_ts>
            <desc>patch</desc>
            <filename>5936.txt</filename>
            <type>text/plain</type>
            <size>14899</size>
            <attacher name="Justin Garcia">justin.garcia</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2todG1sX3BhcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9v
dC9XZWJDb3JlL2todG1sL2todG1sX3BhcnQuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM2
MgpkaWZmIC11IC1yMS4zNjIga2h0bWxfcGFydC5jcHAKLS0tIGtodG1sL2todG1sX3BhcnQuY3Bw
CTIgRGVjIDIwMDUgMDM6NDg6MDMgLTAwMDAJMS4zNjIKKysrIGtodG1sL2todG1sX3BhcnQuY3Bw
CTUgRGVjIDIwMDUgMDg6MjM6NDMgLTAwMDAKQEAgLTI3MzEsMjYgKzI3MzEsMjQgQEAKICAgICAv
LyBkb25lIGluIGtodG1sTW91c2VQcmVzc0V2ZW50LCBidXQgbm90IGlmIHRoZSBtb3VzZSBwcmVz
cyB3YXMgb24gYW4gZXhpc3Rpbmcgc2VsZWN0aW9uLgogICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIg
c2VsID0gc2VsZWN0aW9uKCk7CiAgICAgc2VsLmNsZWFyTW9kaWZ5QmlhcygpOworICAgIAogICAg
IGlmICghZC0+bV9iZWdhblNlbGVjdGluZ1RleHQpIHsKICAgICAgICAgZC0+bV9iZWdhblNlbGVj
dGluZ1RleHQgPSB0cnVlOwogICAgICAgICBzZWwubW92ZVRvKHBvcyk7CiAgICAgfQogCiAgICAg
c2VsLnNldEV4dGVudChwb3MpOwotICAgIGlmIChkLT5tX3NlbGVjdGlvbkdyYW51bGFyaXR5ICE9
IENIQVJBQ1RFUikgeworICAgIGlmIChkLT5tX3NlbGVjdGlvbkdyYW51bGFyaXR5ICE9IENIQVJB
Q1RFUikKICAgICAgICAgc2VsLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoZC0+bV9zZWxlY3Rpb25H
cmFudWxhcml0eSk7Ci0gICAgfQogCi0gICAgaWYgKHNob3VsZENoYW5nZVNlbGVjdGlvbihzZWwp
KSB7CisgICAgaWYgKHNob3VsZENoYW5nZVNlbGVjdGlvbihzZWwpKQogICAgICAgICBzZXRTZWxl
Y3Rpb24oc2VsKTsKLSAgICB9CiAKICNlbmRpZiAvLyBLSFRNTF9OT19TRUxFQ1RJT04KIH0KIAog
dm9pZCBLSFRNTFBhcnQ6OmtodG1sTW91c2VNb3ZlRXZlbnQoa2h0bWw6Ok1vdXNlTW92ZUV2ZW50
ICpldmVudCkKIHsKLQogICAgIGhhbmRsZU1vdXNlTW92ZUV2ZW50U2VsZWN0aW9uKGV2ZW50KTsJ
CQogfQogCkluZGV4OiBraHRtbC9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL2VkaXRpbmcvU2VsZWN0aW9u
Q29udHJvbGxlci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTA0CmRpZmYgLXUgLXIxLjEw
NCBTZWxlY3Rpb25Db250cm9sbGVyLmNwcAotLS0ga2h0bWwvZWRpdGluZy9TZWxlY3Rpb25Db250
cm9sbGVyLmNwcAk0IERlYyAyMDA1IDAwOjQ4OjA1IC0wMDAwCTEuMTA0CisrKyBraHRtbC9lZGl0
aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCTUgRGVjIDIwMDUgMDg6MjM6NDMgLTAwMDAKQEAg
LTEwMiw3ICsxMDIsNyBAQAogICAgIDogbV9iYXNlKG8ubV9iYXNlKSwgbV9leHRlbnQoby5tX2V4
dGVudCkKICAgICAsIG1fc3RhcnQoby5tX3N0YXJ0KSwgbV9lbmQoby5tX2VuZCkKICAgICAsIG1f
c3RhdGUoby5tX3N0YXRlKSwgbV9hZmZpbml0eShvLm1fYWZmaW5pdHkpCi0gICAgLCBtX2Jhc2VJ
c1N0YXJ0KG8ubV9iYXNlSXNTdGFydCkKKyAgICAsIG1fYmFzZUlzRmlyc3Qoby5tX2Jhc2VJc0Zp
cnN0KQogICAgICwgbV9uZWVkc0xheW91dChvLm1fbmVlZHNMYXlvdXQpCiAgICAgLCBtX21vZGlm
eUJpYXNTZXQoby5tX21vZGlmeUJpYXNTZXQpCiB7CkBAIC0xMjEsNyArMTIxLDcgQEAKIHsKICAg
ICAvLyBGSVhNRTogc2V0IGV4dGVudEFmZmluaXR5CiAgICAgbV9zdGF0ZSA9IE5PTkU7IAotICAg
IG1fYmFzZUlzU3RhcnQgPSB0cnVlOworICAgIG1fYmFzZUlzRmlyc3QgPSB0cnVlOwogICAgIG1f
YWZmaW5pdHkgPSBhZmZpbml0eTsKICAgICBtX25lZWRzTGF5b3V0ID0gdHJ1ZTsKICAgICBtX21v
ZGlmeUJpYXNTZXQgPSBmYWxzZTsKQEAgLTEzNyw3ICsxMzcsNyBAQAogICAgIG1fc3RhdGUgPSBv
Lm1fc3RhdGU7CiAgICAgbV9hZmZpbml0eSA9IG8ubV9hZmZpbml0eTsKIAotICAgIG1fYmFzZUlz
U3RhcnQgPSBvLm1fYmFzZUlzU3RhcnQ7CisgICAgbV9iYXNlSXNGaXJzdCA9IG8ubV9iYXNlSXNG
aXJzdDsKICAgICBtX25lZWRzTGF5b3V0ID0gby5tX25lZWRzTGF5b3V0OwogICAgIG1fbW9kaWZ5
Qmlhc1NldCA9IG8ubV9tb2RpZnlCaWFzU2V0OwogICAgIApAQCAtNDkxLDYxICs0OTEsOCBAQAog
ewogICAgIGlmIChpc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3dpdGNo
IChncmFudWxhcml0eSkgewotICAgICAgICBjYXNlIENIQVJBQ1RFUjoKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFdPUkQ6IHsKLSAgICAgICAgICAgIC8vIEdlbmVyYWwgY2FzZTog
U2VsZWN0IHRoZSB3b3JkIHRoZSBjYXJldCBpcyBwb3NpdGlvbmVkIGluc2lkZSBvZiwgb3IgYXQg
dGhlIHN0YXJ0IG9mIChSaWdodFdvcmRJZk9uQm91bmRhcnkpLgotICAgICAgICAgICAgLy8gRWRn
ZSBjYXNlOiBJZiB0aGUgY2FyZXQgaXMgYWZ0ZXIgdGhlIGxhc3Qgd29yZCBpbiBhIHNvZnQtd3Jh
cHBlZCBsaW5lIG9yIHRoZSBsYXN0IHdvcmQgaW4KLSAgICAgICAgICAgIC8vIHRoZSBkb2N1bWVu
dCwgc2VsZWN0IHRoYXQgbGFzdCB3b3JkIChMZWZ0V29yZElmT25Cb3VuZGFyeSkuCi0gICAgICAg
ICAgICAvLyBFZGdlIGNhc2U6IElmIHRoZSBjYXJldCBpcyBhZnRlciB0aGUgbGFzdCB3b3JkIGlu
IGEgcGFyYWdyYXBoLCBzZWxlY3QgZnJvbSB0aGUgdGhlIGVuZCBvZiB0aGUKLSAgICAgICAgICAg
IC8vIGxhc3Qgd29yZCB0byB0aGUgbGluZSBicmVhayAoYWxzbyBSaWdodFdvcmRJZk9uQm91bmRh
cnkpOwotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0ID0gVmlzaWJsZVBvc2l0aW9u
KG1fc3RhcnQsIG1fYWZmaW5pdHkpOwotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZCAg
ID0gVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KTsKLSAgICAgICAgICAgIEVXb3Jk
U2lkZSBzaWRlID0gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5OwotICAgICAgICAgICAgaWYgKGlzRW5k
T2ZEb2N1bWVudChzdGFydCkgfHwgKGlzRW5kT2ZMaW5lKHN0YXJ0KSAmJiAhaXNTdGFydE9mTGlu
ZShzdGFydCkgJiYgIWlzRW5kT2ZQYXJhZ3JhcGgoc3RhcnQpKSkKLSAgICAgICAgICAgICAgICBz
aWRlID0gTGVmdFdvcmRJZk9uQm91bmRhcnk7Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3RhcnRP
ZldvcmQoc3RhcnQsIHNpZGUpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBzaWRlID0g
UmlnaHRXb3JkSWZPbkJvdW5kYXJ5OwotICAgICAgICAgICAgaWYgKGlzRW5kT2ZEb2N1bWVudChl
bmQpIHx8IChpc0VuZE9mTGluZShlbmQpICYmICFpc1N0YXJ0T2ZMaW5lKGVuZCkgJiYgIWlzRW5k
T2ZQYXJhZ3JhcGgoZW5kKSkpCi0gICAgICAgICAgICAgICAgc2lkZSA9IExlZnRXb3JkSWZPbkJv
dW5kYXJ5OwotICAgICAgICAgICAgbV9lbmQgPSBlbmRPZldvcmQoZW5kLCBzaWRlKS5kZWVwRXF1
aXZhbGVudCgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgY2FzZSBMSU5FOgotICAgICAgICBjYXNlIExJTkVfQk9VTkRBUlk6Ci0gICAg
ICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZkxpbmUoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1f
YWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAgbV9lbmQgPSBlbmRPZkxp
bmUoVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSwgSW5jbHVkZUxpbmVCcmVhayku
ZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBBUkFH
UkFQSDogewotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhtX3N0YXJ0LCBtX2FmZmlu
aXR5KTsKLSAgICAgICAgICAgIGlmIChpc1N0YXJ0T2ZMaW5lKHBvcykgJiYgaXNFbmRPZkRvY3Vt
ZW50KHBvcykpCi0gICAgICAgICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKCk7Ci0gICAgICAg
ICAgICBtX3N0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChwb3MpLmRlZXBFcXVpdmFsZW50KCk7Ci0g
ICAgICAgICAgICBtX2VuZCA9IGVuZE9mUGFyYWdyYXBoKFZpc2libGVQb3NpdGlvbihtX2VuZCwg
bV9hZmZpbml0eSksIEluY2x1ZGVMaW5lQnJlYWspLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIERPQ1VNRU5UX0JPVU5EQVJZOgot
ICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZEb2N1bWVudChWaXNpYmxlUG9zaXRpb24obV9z
dGFydCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBtX2VuZCA9
IGVuZE9mRG9jdW1lbnQoVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSkuZGVlcEVx
dWl2YWxlbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBBUkFHUkFQSF9C
T1VOREFSWToKLSAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKFZpc2libGVQ
b3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAg
ICAgIG1fZW5kID0gZW5kT2ZQYXJhZ3JhcGgoVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmlu
aXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KICAgICAK
LSAgICBpZiAobV9iYXNlSXNTdGFydCkgewotICAgICAgICBtX2Jhc2UgPSBtX3N0YXJ0OwotICAg
ICAgICBtX2V4dGVudCA9IG1fZW5kOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fYmFzZSA9IG1f
ZW5kOwotICAgICAgICBtX2V4dGVudCA9IG1fc3RhcnQ7Ci0gICAgfQotICAgIAotICAgIHZhbGlk
YXRlKCk7CisgICAgdmFsaWRhdGUoZ3JhbnVsYXJpdHkpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC04MjQsNTkgKzc3MSw2NCBAQAogICAgICAgICBwLT5maWxsUmVjdChjYXJldCAmIHJlY3Qs
IFFCcnVzaCgpKTsKIH0KIAotdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjphZGp1c3RFeHRlbnRG
b3JFZGl0YWJsZUNvbnRlbnQoKQordm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjphZGp1c3RGb3JF
ZGl0YWJsZUNvbnRlbnQoKQogewotICAgIFBvc2l0aW9uIGJhc2UgPSB0aGlzLT5iYXNlKCk7Ci0g
ICAgUG9zaXRpb24gZXh0ZW50ID0gdGhpcy0+ZXh0ZW50KCk7Ci0gICAgCi0gICAgaWYgKCFiYXNl
Lm5vZGUoKSB8fCAhZXh0ZW50Lm5vZGUoKSkKKyAgICBpZiAobV9iYXNlLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm47CisKKyAgICBOb2RlSW1wbCAqYmFzZVJvb3QgPSBtX2Jhc2Uubm9kZSgpLT5y
b290RWRpdGFibGVFbGVtZW50KCk7CisgICAgTm9kZUltcGwgKnN0YXJ0Um9vdCA9IG1fc3RhcnQu
bm9kZSgpLT5yb290RWRpdGFibGVFbGVtZW50KCk7CisgICAgTm9kZUltcGwgKmVuZFJvb3QgPSBt
X2VuZC5ub2RlKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKICAgICAKLSAgICBOb2RlSW1wbCAq
YmFzZVJvb3QgPSBiYXNlLm5vZGUoKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwotICAgIE5vZGVJ
bXBsICpleHRlbnRSb290ID0gZXh0ZW50Lm5vZGUoKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwot
ICAgIAotICAgIGlmIChiYXNlUm9vdCA9PSBleHRlbnRSb290KQorICAgIC8vIFRoZSBiYXNlLCBz
dGFydCBhbmQgZW5kIGFyZSBhbGwgaW4gdGhlIHNhbWUgcmVnaW9uLiAgTm8gYWRqdXN0bWVudCBu
ZWNlc3NhcnkuCisgICAgaWYgKGJhc2VSb290ID09IHN0YXJ0Um9vdCAmJiBiYXNlUm9vdCA9PSBl
bmRSb290KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYm9vbCBiYXNlSXNTdGFydCA9IFJh
bmdlSW1wbDo6Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKGJhc2UsIGV4dGVudCkgPD0gMDsKLSAgICAK
LSAgICAvLyBiYXNlIGlzIGluIGFuIGVkaXRhYmxlIHJlZ2lvbiwgYnV0IGV4dGVudCBpcyBub3Qu
CisgICAgLy8gVGhlIHNlbGVjdGlvbiBpcyBiYXNlZCBpbiBhbiBlZGl0YWJsZSBhcmVhLiAgS2Vl
cCBib3RoIHNpZGVzIGZyb20gcmVhY2hpbmcgb3V0c2lkZSB0aGF0IGFyZWEuCiAgICAgaWYgKGJh
c2VSb290KSB7Ci0gICAgICAgIFBvc2l0aW9uIGZpcnN0KFBvc2l0aW9uKGJhc2VSb290LCAwKSk7
Ci0gICAgICAgIFBvc2l0aW9uIGxhc3QoUG9zaXRpb24oYmFzZVJvb3QsIGJhc2VSb290LT5tYXhE
ZWVwT2Zmc2V0KCkpKTsKLSAgICAgICAgCi0gICAgICAgIG1fZXh0ZW50ID0gYmFzZUlzU3RhcnQg
PyBsYXN0IDogZmlyc3Q7Ci0gICAgLy8gZXh0ZW50IGlzIGluIGFuIGVkaXRhYmxlIHJlZ2lvbiwg
YnV0IGJhc2UgaXMgbm90LgorICAgICAgICAvLyBJZiB0aGUgc3RhcnQgaXMgb3V0c2lkZSB0aGUg
YmFzZSdzIGVkaXRhYmxlIHJvb3QsIGNhcCBpdCBhdCB0aGUgc3RhcnQgb2YgdGhhdCBlZGl0YWJs
ZSByb290LgorICAgICAgICBpZiAoYmFzZVJvb3QgIT0gc3RhcnRSb290KSB7CisgICAgICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gZmlyc3QoUG9zaXRpb24oYmFzZVJvb3QsIDApKTsKKyAgICAgICAg
ICAgIG1fc3RhcnQgPSBmaXJzdC5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICB9CisgICAgICAg
IC8vIElmIHRoZSBlbmQgaXMgb3V0c2lkZSB0aGUgYmFzZSdzIGVkaXRhYmxlIHJvb3QsIGNhcCBp
dCBhdCB0aGUgZW5kIG9mIHRoYXQgZWRpdGFibGUgcm9vdC4KKyAgICAgICAgaWYgKGJhc2VSb290
ICE9IGVuZFJvb3QpIHsKKyAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBsYXN0KFBvc2l0aW9u
KGJhc2VSb290LCBiYXNlUm9vdC0+bWF4RGVlcE9mZnNldCgpKSk7CisgICAgICAgICAgICBtX2Vu
ZCA9IGxhc3QuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgfQorICAgIC8vIFRoZSBzZWxlY3Rp
b24gaXMgYmFzZWQgb3V0c2lkZSBlZGl0YWJsZSBjb250ZW50LiAgS2VlcCBib3RoIHNpZGVzIGZy
b20gcmVhY2hpbmcgaW50byBlZGl0YWJsZSBjb250ZW50LgogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlmIChiYXNlSXNTdGFydCkgeworICAgICAgICAvLyBUaGUgc2VsZWN0aW9uIGVuZHMgaW4gZWRp
dGFibGUgY29udGVudCwgbW92ZSBiYWNrd2FyZCB1bnRpbCBub24tZWRpdGFibGUgY29udGVudCBp
cyByZWFjaGVkLgorICAgICAgICBpZiAoZW5kUm9vdCkgewogICAgICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHByZXZpb3VzOwogICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIHByZXZp
b3VzID0gVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKGV4dGVudFJvb3QsIDApKS5wcmV2aW91cygp
OwotICAgICAgICAgICAgICAgIGV4dGVudFJvb3QgPSBwcmV2aW91cy5kZWVwRXF1aXZhbGVudCgp
Lm5vZGUoKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwotICAgICAgICAgICAgfSB3aGlsZSAoZXh0
ZW50Um9vdCk7CisgICAgICAgICAgICAgICAgcHJldmlvdXMgPSBWaXNpYmxlUG9zaXRpb24oUG9z
aXRpb24oZW5kUm9vdCwgMCkpLnByZXZpb3VzKCk7CisgICAgICAgICAgICAgICAgZW5kUm9vdCA9
IHByZXZpb3VzLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpLT5yb290RWRpdGFibGVFbGVtZW50KCk7
CisgICAgICAgICAgICB9IHdoaWxlIChlbmRSb290KTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgLy8gU2luY2Ugd2Uga25vdyB0aGF0IGJhc2UgaXMgYmVmb3JlIGV4dGVudCwgYW5kIHNpbmNl
IHdlIGtub3cgdGhhdCBiYXNlIGlzIG5vdCBpbiBhIGNvbnRlbnQgZWRpdGFibGUgZWxlbWVudCwK
LSAgICAgICAgICAgIC8vIHdlIGtub3cgdGhhdCB3ZSBtdXN0IGhhdmUgcmVhY2hlZCBub24gZWRp
dGFibGUgY29udGVudC4KICAgICAgICAgICAgIEFTU0VSVCghcHJldmlvdXMuaXNOdWxsKCkpOwot
ICAgICAgICAgICAgbV9leHRlbnQgPSBwcmV2aW91cy5kZWVwRXF1aXZhbGVudCgpOwotICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV9lbmQgPSBwcmV2aW91cy5kZWVwRXF1aXZhbGVudCgp
OworICAgICAgICB9CisgICAgICAgIC8vIFRoZSBzZWxlY3Rpb24gc3RhcnRzIGluIGVkaXRhYmxl
IGNvbnRlbnQsIG1vdmUgZm9yd2FyZCB1bnRpbCBub24tZWRpdGFibGUgY29udGVudCBpcyByZWFj
aGVkLgorICAgICAgICBpZiAoYmFzZVJvb3QgIT0gc3RhcnRSb290KSB7CiAgICAgICAgICAgICBW
aXNpYmxlUG9zaXRpb24gbmV4dDsKICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBu
ZXh0ID0gVmlzaWJsZVBvc2l0aW9uKFBvc2l0aW9uKGV4dGVudFJvb3QsIGV4dGVudFJvb3QtPm1h
eERlZXBPZmZzZXQoKSkpLm5leHQoKTsKLSAgICAgICAgICAgICAgICBleHRlbnRSb290ID0gbmV4
dC5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwotICAgICAg
ICAgICAgfSB3aGlsZSAoZXh0ZW50Um9vdCk7CisgICAgICAgICAgICAgICAgbmV4dCA9IFZpc2li
bGVQb3NpdGlvbihQb3NpdGlvbihzdGFydFJvb3QsIHN0YXJ0Um9vdC0+bWF4RGVlcE9mZnNldCgp
KSkubmV4dCgpOworICAgICAgICAgICAgICAgIHN0YXJ0Um9vdCA9IG5leHQuZGVlcEVxdWl2YWxl
bnQoKS5ub2RlKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKKyAgICAgICAgICAgIH0gd2hpbGUg
KHN0YXJ0Um9vdCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFNpbmNlIHdlIGtub3cg
dGhhdCBleHRlbnQgaXMgYmVmb3JlIGJhc2UsIGFuZCBzaW5jZSB3ZSBrbm93IHRoYXQgZXh0ZW50
IGlzIG5vdCBpbiBhIGNvbnRlbnQgZWRpdGFibGUgZWxlbWVudCwKLSAgICAgICAgICAgIC8vIHdl
IGtub3cgdGhhdCB3ZSBtdXN0IGhhdmUgcmVhY2hlZCBub24gZWRpdGFibGUgY29udGVudC4KICAg
ICAgICAgICAgIEFTU0VSVCghbmV4dC5pc051bGwoKSk7Ci0gICAgICAgICAgICBtX2V4dGVudCA9
IG5leHQuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgICAgIG1fc3RhcnQgPSBuZXh0LmRlZXBF
cXVpdmFsZW50KCk7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgLy8gQ29ycmVjdCB0aGUg
ZXh0ZW50IGlmIG5lY2Vzc2FyeS4KKyAgICBpZiAoYmFzZVJvb3QgIT0gbV9leHRlbnQubm9kZSgp
LT5yb290RWRpdGFibGVFbGVtZW50KCkpCisgICAgICAgIG1fZXh0ZW50ID0gbV9iYXNlSXNGaXJz
dCA/IG1fZW5kIDogbV9zdGFydDsKIH0KIAotdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjp2YWxp
ZGF0ZSgpCit2b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnZhbGlkYXRlKEVUZXh0R3JhbnVsYXJp
dHkgZ3JhbnVsYXJpdHkpCiB7Ci0gICAgYWRqdXN0RXh0ZW50Rm9yRWRpdGFibGVDb250ZW50KCk7
CiAgICAgLy8gTW92ZSB0aGUgc2VsZWN0aW9uIHRvIHJlbmRlcmVkIHBvc2l0aW9ucywgaWYgcG9z
c2libGUuCiAgICAgUG9zaXRpb24gb3JpZ2luYWxCYXNlKG1fYmFzZSk7CiAgICAgYm9vbCBiYXNl
QW5kRXh0ZW50RXF1YWwgPSBtX2Jhc2UgPT0gbV9leHRlbnQ7CkBAIC05MTEsMzcgKzg2Myw4MSBA
QAogICAgICAgICAgICAgbV9zdGFydC5jbGVhcigpOwogICAgICAgICAgICAgbV9lbmQuY2xlYXIo
KTsKICAgICAgICAgfQotICAgICAgICBtX2Jhc2VJc1N0YXJ0ID0gdHJ1ZTsKLSAgICB9Ci0gICAg
ZWxzZSBpZiAobV9iYXNlLmlzTnVsbCgpKSB7CisgICAgICAgIG1fYmFzZUlzRmlyc3QgPSB0cnVl
OworICAgIH0gZWxzZSBpZiAobV9iYXNlLmlzTnVsbCgpKSB7CiAgICAgICAgIG1fYmFzZSA9IG1f
ZXh0ZW50OwotICAgICAgICBtX2Jhc2VJc1N0YXJ0ID0gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZSBp
ZiAobV9leHRlbnQuaXNOdWxsKCkpIHsKKyAgICAgICAgbV9iYXNlSXNGaXJzdCA9IHRydWU7Cisg
ICAgfSBlbHNlIGlmIChtX2V4dGVudC5pc051bGwoKSkgewogICAgICAgICBtX2V4dGVudCA9IG1f
YmFzZTsKLSAgICAgICAgbV9iYXNlSXNTdGFydCA9IHRydWU7Ci0gICAgfQotICAgIGVsc2Ugewot
ICAgICAgICBtX2Jhc2VJc1N0YXJ0ID0gUmFuZ2VJbXBsOjpjb21wYXJlQm91bmRhcnlQb2ludHMo
bV9iYXNlLm5vZGUoKSwgbV9iYXNlLm9mZnNldCgpLCBtX2V4dGVudC5ub2RlKCksIG1fZXh0ZW50
Lm9mZnNldCgpKSA8PSAwOworICAgICAgICBtX2Jhc2VJc0ZpcnN0ID0gdHJ1ZTsKKyAgICB9IGVs
c2UgeworICAgICAgICBtX2Jhc2VJc0ZpcnN0ID0gUmFuZ2VJbXBsOjpjb21wYXJlQm91bmRhcnlQ
b2ludHMobV9iYXNlLm5vZGUoKSwgbV9iYXNlLm9mZnNldCgpLCBtX2V4dGVudC5ub2RlKCksIG1f
ZXh0ZW50Lm9mZnNldCgpKSA8PSAwOwogICAgIH0KIAotICAgIGlmIChtX2Jhc2VJc1N0YXJ0KSB7
CisgICAgaWYgKG1fYmFzZUlzRmlyc3QpIHsKICAgICAgICAgbV9zdGFydCA9IG1fYmFzZTsKICAg
ICAgICAgbV9lbmQgPSBtX2V4dGVudDsKICAgICB9IGVsc2UgewogICAgICAgICBtX3N0YXJ0ID0g
bV9leHRlbnQ7CiAgICAgICAgIG1fZW5kID0gbV9iYXNlOwogICAgIH0KKyAgICAKKyAgICAvLyBF
eHBhbmQgdGhlIHNlbGVjdGlvbiBpZiByZXF1ZXN0ZWQuCisgICAgc3dpdGNoIChncmFudWxhcml0
eSkgeworICAgICAgICBjYXNlIENIQVJBQ1RFUjoKKyAgICAgICAgICAgIC8vIERvbid0IGRvIGFu
eSBleHBhbnNpb24uCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXT1JEOiB7Cisg
ICAgICAgICAgICAvLyBHZW5lcmFsIGNhc2U6IFNlbGVjdCB0aGUgd29yZCB0aGUgY2FyZXQgaXMg
cG9zaXRpb25lZCBpbnNpZGUgb2YsIG9yIGF0IHRoZSBzdGFydCBvZiAoUmlnaHRXb3JkSWZPbkJv
dW5kYXJ5KS4KKyAgICAgICAgICAgIC8vIEVkZ2UgY2FzZTogSWYgdGhlIGNhcmV0IGlzIGFmdGVy
IHRoZSBsYXN0IHdvcmQgaW4gYSBzb2Z0LXdyYXBwZWQgbGluZSBvciB0aGUgbGFzdCB3b3JkIGlu
CisgICAgICAgICAgICAvLyB0aGUgZG9jdW1lbnQsIHNlbGVjdCB0aGF0IGxhc3Qgd29yZCAoTGVm
dFdvcmRJZk9uQm91bmRhcnkpLgorICAgICAgICAgICAgLy8gRWRnZSBjYXNlOiBJZiB0aGUgY2Fy
ZXQgaXMgYWZ0ZXIgdGhlIGxhc3Qgd29yZCBpbiBhIHBhcmFncmFwaCwgc2VsZWN0IGZyb20gdGhl
IHRoZSBlbmQgb2YgdGhlCisgICAgICAgICAgICAvLyBsYXN0IHdvcmQgdG8gdGhlIGxpbmUgYnJl
YWsgKGFsc28gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKKyAgICAgICAgICAgIFZpc2libGVQb3Np
dGlvbiBzdGFydCA9IFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KTsKKyAgICAg
ICAgICAgIFZpc2libGVQb3NpdGlvbiBlbmQgICA9IFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9h
ZmZpbml0eSk7CisgICAgICAgICAgICBFV29yZFNpZGUgc2lkZSA9IFJpZ2h0V29yZElmT25Cb3Vu
ZGFyeTsKKyAgICAgICAgICAgIGlmIChpc0VuZE9mRG9jdW1lbnQoc3RhcnQpIHx8IChpc0VuZE9m
TGluZShzdGFydCkgJiYgIWlzU3RhcnRPZkxpbmUoc3RhcnQpICYmICFpc0VuZE9mUGFyYWdyYXBo
KHN0YXJ0KSkpCisgICAgICAgICAgICAgICAgc2lkZSA9IExlZnRXb3JkSWZPbkJvdW5kYXJ5Owor
ICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZXb3JkKHN0YXJ0LCBzaWRlKS5kZWVwRXF1aXZh
bGVudCgpOworICAgICAgICAgICAgc2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFyeTsKKyAgICAg
ICAgICAgIGlmIChpc0VuZE9mRG9jdW1lbnQoZW5kKSB8fCAoaXNFbmRPZkxpbmUoZW5kKSAmJiAh
aXNTdGFydE9mTGluZShlbmQpICYmICFpc0VuZE9mUGFyYWdyYXBoKGVuZCkpKQorICAgICAgICAg
ICAgICAgIHNpZGUgPSBMZWZ0V29yZElmT25Cb3VuZGFyeTsKKyAgICAgICAgICAgIG1fZW5kID0g
ZW5kT2ZXb3JkKGVuZCwgc2lkZSkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgTElORToKKyAgICAg
ICAgY2FzZSBMSU5FX0JPVU5EQVJZOgorICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZMaW5l
KFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsK
KyAgICAgICAgICAgIG1fZW5kID0gZW5kT2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9h
ZmZpbml0eSksIEluY2x1ZGVMaW5lQnJlYWspLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBQQVJBR1JBUEg6IHsKKyAgICAgICAgICAgIFZpc2libGVQ
b3NpdGlvbiBwb3MobV9zdGFydCwgbV9hZmZpbml0eSk7CisgICAgICAgICAgICBpZiAoaXNTdGFy
dE9mTGluZShwb3MpICYmIGlzRW5kT2ZEb2N1bWVudChwb3MpKQorICAgICAgICAgICAgICAgIHBv
cyA9IHBvcy5wcmV2aW91cygpOworICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZQYXJhZ3Jh
cGgocG9zKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICAgICAgbV9lbmQgPSBlbmRPZlBhcmFn
cmFwaChWaXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpLCBJbmNsdWRlTGluZUJyZWFr
KS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBET0NVTUVOVF9CT1VOREFSWToKKyAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9m
RG9jdW1lbnQoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZh
bGVudCgpOworICAgICAgICAgICAgbV9lbmQgPSBlbmRPZkRvY3VtZW50KFZpc2libGVQb3NpdGlv
bihtX2VuZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBQQVJBR1JBUEhfQk9VTkRBUlk6CisgICAgICAgICAgICBtX3N0YXJ0
ID0gc3RhcnRPZlBhcmFncmFwaChWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSkp
LmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgICAgICBtX2VuZCA9IGVuZE9mUGFyYWdyYXBoKFZp
c2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgYWRqdXN0Rm9yRWRpdGFibGVDb250ZW50
KCk7CiAKICAgICAvLyBhZGp1c3QgdGhlIHN0YXRlCiAgICAgaWYgKG1fc3RhcnQuaXNOdWxsKCkp
IHsKICAgICAgICAgQVNTRVJUKG1fZW5kLmlzTnVsbCgpKTsKICAgICAgICAgbV9zdGF0ZSA9IE5P
TkU7Ci0gICAgfQotICAgIGVsc2UgaWYgKG1fc3RhcnQgPT0gbV9lbmQgfHwgbV9zdGFydC51cHN0
cmVhbSgpID09IG1fZW5kLnVwc3RyZWFtKCkpIHsKKyAgICB9IGVsc2UgaWYgKG1fc3RhcnQgPT0g
bV9lbmQgfHwgbV9zdGFydC51cHN0cmVhbSgpID09IG1fZW5kLnVwc3RyZWFtKCkpIHsKICAgICAg
ICAgbV9zdGF0ZSA9IENBUkVUOwotICAgIH0KLSAgICBlbHNlIHsKKyAgICB9IGVsc2UgewogICAg
ICAgICBtX3N0YXRlID0gUkFOR0U7CiAgICAgICAgIC8vICJDb25zdHJhaW4iIHRoZSBzZWxlY3Rp
b24gdG8gYmUgdGhlIHNtYWxsZXN0IGVxdWl2YWxlbnQgcmFuZ2Ugb2Ygbm9kZXMuCiAgICAgICAg
IC8vIFRoaXMgaXMgYSBzb21ld2hhdCBhcmJpdHJhcnkgY2hvaWNlLCBidXQgZXhwZXJpZW5jZSBz
aG93cyB0aGF0IGl0IGlzCkluZGV4OiBraHRtbC9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9lZGl0aW5nL1Nl
bGVjdGlvbkNvbnRyb2xsZXIuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40NgpkaWZmIC11IC1y
MS40NiBTZWxlY3Rpb25Db250cm9sbGVyLmgKLS0tIGtodG1sL2VkaXRpbmcvU2VsZWN0aW9uQ29u
dHJvbGxlci5oCTQgRGVjIDIwMDUgMDA6NDg6MDUgLTAwMDAJMS40NgorKysga2h0bWwvZWRpdGlu
Zy9TZWxlY3Rpb25Db250cm9sbGVyLmgJNSBEZWMgMjAwNSAwODoyMzo0NCAtMDAwMApAQCAtMTIx
LDggKzEyMSw4IEBACiAgICAgZW51bSBFUG9zaXRpb25UeXBlIHsgU1RBUlQsIEVORCwgQkFTRSwg
RVhURU5UIH07CiAKICAgICB2b2lkIGluaXQoRUFmZmluaXR5IGFmZmluaXR5KTsKLSAgICB2b2lk
IHZhbGlkYXRlKCk7Ci0gICAgdm9pZCBhZGp1c3RFeHRlbnRGb3JFZGl0YWJsZUNvbnRlbnQoKTsK
KyAgICB2b2lkIHZhbGlkYXRlKEVUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBDSEFSQUNU
RVIpOworICAgIHZvaWQgYWRqdXN0Rm9yRWRpdGFibGVDb250ZW50KCk7CiAKICAgICBWaXNpYmxl
UG9zaXRpb24gbW9kaWZ5RXh0ZW5kaW5nUmlnaHRGb3J3YXJkKEVUZXh0R3JhbnVsYXJpdHkpOwog
ICAgIFZpc2libGVQb3NpdGlvbiBtb2RpZnlNb3ZpbmdSaWdodEZvcndhcmQoRVRleHRHcmFudWxh
cml0eSk7CkBAIC0xNTEsNyArMTUxLDcgQEAKICAgICAvLyBUaGlzIGlzIGZhc3RlciB0aGFuIGRv
aW5nIGFub3RoZXIgbGF5b3V0KCkuCiAgICAgUVBvaW50IG1fY2FyZXRQb3NpdGlvbk9uTGF5b3V0
OwogICAgIAotICAgIGJvb2wgbV9iYXNlSXNTdGFydCA6IDE7ICAgICAgIC8vIHRydWUgaWYgYmFz
ZSBub2RlIGlzIGJlZm9yZSB0aGUgZXh0ZW50IG5vZGUKKyAgICBib29sIG1fYmFzZUlzRmlyc3Qg
OiAxOyAgICAgICAvLyB0cnVlIGlmIGJhc2UgaXMgYmVmb3JlIHRoZSBleHRlbnQKICAgICBib29s
IG1fbmVlZHNMYXlvdXQgOiAxOyAgICAgICAvLyB0cnVlIGlmIHRoZSBjYXJldCBhbmQgZXhwZWN0
ZWRWaXNpYmxlIHJlY3RhbmdsZXMgbmVlZCB0byBiZSBjYWxjdWxhdGVkCiAgICAgYm9vbCBtX21v
ZGlmeUJpYXNTZXQgOiAxOyAgICAgLy8gdHJ1ZSBpZiB0aGUgc2VsZWN0aW9uIGhhcyBiZWVuIGhv
cml6b250YWxseSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2RpZmll
ZCB3aXRoIEVBbHRlcjo6RVhURU5ECg==
</data>
<flag name="review"
          id="960"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>