<?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>24107</bug_id>
          
          <creation_ts>2009-02-23 15:19:10 -0800</creation_ts>
          <short_desc>Fixed elements have 0 as an offsetLeft property</short_desc>
          <delta_ts>2009-02-27 17:29:43 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://download.pureftpd.org/misc/bugs/webkit/fixed-element-has-no-offsetleft.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Frank DENIS">webkit</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>pennig</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>110649</commentid>
    <comment_count>0</comment_count>
    <who name="Frank DENIS">webkit</who>
    <bug_when>2009-02-23 15:19:10 -0800</bug_when>
    <thetext>In recent webkit revisions, fixed elements always have 0 as an offsetLeft property regardless of their actual position.

It doesn&apos;t match the behavior of IE 7, Safar 3.2.1 and Opera 10a.

&lt;!doctype html&gt;
&lt;html&gt;
&lt;body onload=&quot;alert(document.getElementById(&apos;hop&apos;).offsetLeft);&quot;&gt;
  &lt;div id=&quot;hop&quot; style=&quot;position:fixed; right: 0;&quot;&gt;Test&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110680</commentid>
    <comment_count>1</comment_count>
      <attachid>27902</attachid>
    <who name="Matt Pennig">pennig</who>
    <bug_when>2009-02-23 20:49:35 -0800</bug_when>
    <thetext>Created attachment 27902
Modifies offsetTop/Left</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110690</commentid>
    <comment_count>2</comment_count>
      <attachid>27905</attachid>
    <who name="Matt Pennig">pennig</who>
    <bug_when>2009-02-23 22:41:27 -0800</bug_when>
    <thetext>Created attachment 27905
Modifies offsetTop/Left

Previous patch had an issue with borders on the body and static- and relative-positioned elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110716</commentid>
    <comment_count>3</comment_count>
    <who name="Frank DENIS">webkit</who>
    <bug_when>2009-02-24 02:41:50 -0800</bug_when>
    <thetext>I successfully tested the second patch, and it actually fixes the test case as well as the real-world issue it was based upon.

Thank you, pennig@</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111340</commentid>
    <comment_count>4</comment_count>
      <attachid>27905</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-02-26 15:41:35 -0800</bug_when>
    <thetext>Comment on attachment 27905
Modifies offsetTop/Left

I&apos;d like a root element test as well, since in theory that was broken also. Can you add that please?  Make a test with &lt;html&gt; that is positioned:

&lt;html style=&quot;position:absolute;border:10px solid black;width:100px;height:100px;left:200px;top:200px&quot;&gt;&lt;/html&gt;

I&apos;m betting we return 0 for left/top prior to your patch and that you just fixed it.  Might want to double-check that the spec says the root element should return the offset from the canvas origin also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111388</commentid>
    <comment_count>5</comment_count>
    <who name="Matt Pennig">pennig</who>
    <bug_when>2009-02-26 21:09:07 -0800</bug_when>
    <thetext>The spec says that &quot;If the offsetParent of element A is null&quot;, then get the offset from the canvas origin, and  the offsetParent for the root element is null. Seems clear enough. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111389</commentid>
    <comment_count>6</comment_count>
      <attachid>28063</attachid>
    <who name="Matt Pennig">pennig</who>
    <bug_when>2009-02-26 21:19:35 -0800</bug_when>
    <thetext>Created attachment 28063
offsetLeft/Top patch + 2 tests

Includes additional test case as requested to check for proper behavior of offsetLeft/Top on positioned &lt;html&gt; elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111508</commentid>
    <comment_count>7</comment_count>
      <attachid>28063</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-02-27 11:53:47 -0800</bug_when>
    <thetext>Comment on attachment 28063
offsetLeft/Top patch + 2 tests

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111572</commentid>
    <comment_count>8</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-27 16:10:07 -0800</bug_when>
    <thetext>Assigning to levin for committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111590</commentid>
    <comment_count>9</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-27 17:29:43 -0800</bug_when>
    <thetext>Committed as r41312.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27902</attachid>
            <date>2009-02-23 20:49:35 -0800</date>
            <delta_ts>2009-02-23 22:41:27 -0800</delta_ts>
            <desc>Modifies offsetTop/Left</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>9619</size>
            <attacher name="Matt Pennig">pennig</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTE2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDItMjMgIE1hdHQgUGVubmlnICA8cGVubmlnQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQxMDcKKyAgICAgICAgRml4ZWQg
ZWxlbWVudHMgaGF2ZSAwIGFzIGFuIG9mZnNldExlZnQgcHJvcGVydHkKKyAgICAgICAgCisgICAg
ICAgIEJyaW5ncyBvZmZzZXRMZWZ0L1RvcCBtb3JlIGluIGxpbmUgd2l0aCBXM0Mgc3BlYworICAg
ICAgICAKKyAgICAgICAgVGVzdDogZmFzdC9kb20vRWxlbWVudC9maXhlZC1wb3NpdGlvbi1vZmZz
ZXQtcGFyZW50Lmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6b2Zmc2V0TGVm
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6b2Zmc2V0VG9wKToK
KwogMjAwOS0wMi0yMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZp
eCBRdCBidWlsZC4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAJKHJldmlzaW9uIDQxMTY5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNDggKzEzMiw2OSBAQCBpbnQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnJlbGF0aXZlUG9zaXRpCiAKIGludCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6b2Zmc2V0TGVmdCgpIGNvbnN0CiB7Ci0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9m
ZnNldFBhciA9IG9mZnNldFBhcmVudCgpOwotICAgIGlmICghb2Zmc2V0UGFyKQorICAgIC8vIElm
IHRoZSBlbGVtZW50IGlzIHRoZSBIVE1MIGJvZHkgZWxlbWVudCBvciBkb2VzIG5vdCBoYXZlIGFu
IGFzc29jaWF0ZWQgYm94CisgICAgLy8gcmV0dXJuIDAgYW5kIHN0b3AgdGhpcyBhbGdvcml0aG0u
CisgICAgaWYgKGlzQm9keSgpIHx8ICFpc0JveE1vZGVsT2JqZWN0KCkpCiAgICAgICAgIHJldHVy
biAwOworICAgIAorICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBvZmZzZXRQYXIgPSBvZmZzZXRQ
YXJlbnQoKTsKICAgICBpbnQgeFBvcyA9IChpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPngo
KSA6IDApOwotICAgIGlmIChvZmZzZXRQYXItPmlzQm94KCkpCi0gICAgICAgIHhQb3MgLT0gdG9S
ZW5kZXJCb3gob2Zmc2V0UGFyKS0+Ym9yZGVyTGVmdCgpOwotICAgIGlmICghaXNQb3NpdGlvbmVk
KCkpIHsKLSAgICAgICAgaWYgKGlzUmVsUG9zaXRpb25lZCgpKQotICAgICAgICAgICAgeFBvcyAr
PSByZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0WCgpOwotICAgICAgICBSZW5kZXJPYmplY3QqIGN1cnIg
PSBwYXJlbnQoKTsKLSAgICAgICAgd2hpbGUgKGN1cnIgJiYgY3VyciAhPSBvZmZzZXRQYXIpIHsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBXaGF0IGFyZSB3ZSBzdXBwb3NlZCB0byBkbyBpbnNpZGUg
U1ZHIGNvbnRlbnQ/Ci0gICAgICAgICAgICBpZiAoY3Vyci0+aXNCb3goKSAmJiAhY3Vyci0+aXNU
YWJsZVJvdygpKQotICAgICAgICAgICAgICAgIHhQb3MgKz0gdG9SZW5kZXJCb3goY3VyciktPngo
KTsKLSAgICAgICAgICAgIGN1cnIgPSBjdXJyLT5wYXJlbnQoKTsKKyAgICAKKyAgICAvLyBJZiB0
aGUgb2Zmc2V0UGFyZW50IG9mIHRoZSBlbGVtZW50IGlzIG51bGwsIHJldHVybiB0aGUgZGlzdGFu
Y2UgYmV0d2VlbiAKKyAgICAvLyB0aGUgY2FudmFzIG9yaWdpbiBhbmQgdGhlIGxlZnQgYm9yZGVy
IGVkZ2Ugb2YgdGhlIGVsZW1lbnQgYW5kIHN0b3AgdGhpcyBhbGdvcml0aG0KKyAgICBpZiAoIW9m
ZnNldFBhcikgeworICAgICAgICB4UG9zIC09IChpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcykt
PmJvcmRlckxlZnQoKSA6IDApOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChvZmZzZXRQYXIt
PmlzQm94KCkpCisgICAgICAgICAgICB4UG9zIC09IHRvUmVuZGVyQm94KG9mZnNldFBhciktPmJv
cmRlckxlZnQoKTsKKyAgICAgICAgaWYgKCFpc1Bvc2l0aW9uZWQoKSkgeworICAgICAgICAgICAg
aWYgKGlzUmVsUG9zaXRpb25lZCgpKQorICAgICAgICAgICAgICAgIHhQb3MgKz0gcmVsYXRpdmVQ
b3NpdGlvbk9mZnNldFgoKTsKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogY3VyciA9IHBhcmVu
dCgpOworICAgICAgICAgICAgd2hpbGUgKGN1cnIgJiYgY3VyciAhPSBvZmZzZXRQYXIpIHsKKyAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogV2hhdCBhcmUgd2Ugc3VwcG9zZWQgdG8gZG8gaW5zaWRl
IFNWRyBjb250ZW50PworICAgICAgICAgICAgICAgIGlmIChjdXJyLT5pc0JveCgpICYmICFjdXJy
LT5pc1RhYmxlUm93KCkpCisgICAgICAgICAgICAgICAgICAgIHhQb3MgKz0gdG9SZW5kZXJCb3go
Y3VyciktPngoKTsKKyAgICAgICAgICAgICAgICBjdXJyID0gY3Vyci0+cGFyZW50KCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAob2Zmc2V0UGFyLT5pc0JveCgpICYmIG9mZnNldFBh
ci0+aXNCb2R5KCkgJiYgIW9mZnNldFBhci0+aXNSZWxQb3NpdGlvbmVkKCkgJiYgIW9mZnNldFBh
ci0+aXNQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICAgICAgeFBvcyArPSB0b1JlbmRlckJveChv
ZmZzZXRQYXIpLT54KCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG9mZnNldFBhci0+aXNCb3go
KSAmJiBvZmZzZXRQYXItPmlzQm9keSgpICYmICFvZmZzZXRQYXItPmlzUmVsUG9zaXRpb25lZCgp
ICYmICFvZmZzZXRQYXItPmlzUG9zaXRpb25lZCgpKQotICAgICAgICAgICAgeFBvcyArPSB0b1Jl
bmRlckJveChvZmZzZXRQYXIpLT54KCk7CiAgICAgfQorCiAgICAgcmV0dXJuIHhQb3M7CiB9CiAK
IGludCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6b2Zmc2V0VG9wKCkgY29uc3QKIHsKLSAgICBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogb2Zmc2V0UGFyID0gb2Zmc2V0UGFyZW50KCk7Ci0gICAgaWYgKCFv
ZmZzZXRQYXIpCisgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgdGhlIEhUTUwgYm9keSBlbGVtZW50
IG9yIGRvZXMgbm90IGhhdmUgYW4gYXNzb2NpYXRlZCBib3gKKyAgICAvLyByZXR1cm4gMCBhbmQg
c3RvcCB0aGlzIGFsZ29yaXRobS4KKyAgICBpZiAoaXNCb2R5KCkgfHwgIWlzQm94TW9kZWxPYmpl
Y3QoKSkKICAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IG9mZnNldFBhciA9IG9mZnNldFBhcmVudCgpOwogICAgIGludCB5UG9zID0gKGlzQm94KCkgPyB0
b1JlbmRlckJveCh0aGlzKS0+eSgpIDogMCk7Ci0gICAgaWYgKG9mZnNldFBhci0+aXNCb3goKSkK
LSAgICAgICAgeVBvcyAtPSB0b1JlbmRlckJveChvZmZzZXRQYXIpLT5ib3JkZXJUb3AoKTsKLSAg
ICBpZiAoIWlzUG9zaXRpb25lZCgpKSB7Ci0gICAgICAgIGlmIChpc1JlbFBvc2l0aW9uZWQoKSkK
LSAgICAgICAgICAgIHlQb3MgKz0gcmVsYXRpdmVQb3NpdGlvbk9mZnNldFkoKTsKLSAgICAgICAg
UmVuZGVyT2JqZWN0KiBjdXJyID0gcGFyZW50KCk7Ci0gICAgICAgIHdoaWxlIChjdXJyICYmIGN1
cnIgIT0gb2Zmc2V0UGFyKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2hhdCBhcmUgd2Ugc3Vw
cG9zZWQgdG8gZG8gaW5zaWRlIFNWRyBjb250ZW50PwotICAgICAgICAgICAgaWYgKGN1cnItPmlz
Qm94KCkgJiYgIWN1cnItPmlzVGFibGVSb3coKSkKLSAgICAgICAgICAgICAgICB5UG9zICs9IHRv
UmVuZGVyQm94KGN1cnIpLT55KCk7Ci0gICAgICAgICAgICBjdXJyID0gY3Vyci0+cGFyZW50KCk7
CisgICAgCisgICAgLy8gSWYgdGhlIG9mZnNldFBhcmVudCBvZiB0aGUgZWxlbWVudCBpcyBudWxs
LCByZXR1cm4gdGhlIGRpc3RhbmNlIGJldHdlZW4gCisgICAgLy8gdGhlIGNhbnZhcyBvcmlnaW4g
YW5kIHRoZSBsZWZ0IGJvcmRlciBlZGdlIG9mIHRoZSBlbGVtZW50IGFuZCBzdG9wIHRoaXMgYWxn
b3JpdGhtCisgICAgaWYgKCFvZmZzZXRQYXIpIHsKKyAgICAgICAgeVBvcyAtPSAoaXNCb3goKSA/
IHRvUmVuZGVyQm94KHRoaXMpLT5ib3JkZXJUb3AoKSA6IDApOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGlmIChvZmZzZXRQYXItPmlzQm94KCkpCisgICAgICAgICAgICB5UG9zIC09IHRvUmVuZGVy
Qm94KG9mZnNldFBhciktPmJvcmRlclRvcCgpOworICAgICAgICBpZiAoIWlzUG9zaXRpb25lZCgp
KSB7CisgICAgICAgICAgICBpZiAoaXNSZWxQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICAgICAg
eVBvcyArPSByZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0WSgpOworICAgICAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBjdXJyID0gcGFyZW50KCk7CisgICAgICAgICAgICB3aGlsZSAoY3VyciAmJiBjdXJyICE9
IG9mZnNldFBhcikgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGF0IGFyZSB3ZSBzdXBw
b3NlZCB0byBkbyBpbnNpZGUgU1ZHIGNvbnRlbnQ/CisgICAgICAgICAgICAgICAgaWYgKGN1cnIt
PmlzQm94KCkgJiYgIWN1cnItPmlzVGFibGVSb3coKSkKKyAgICAgICAgICAgICAgICAgICAgeVBv
cyArPSB0b1JlbmRlckJveChjdXJyKS0+eSgpOworICAgICAgICAgICAgICAgIGN1cnIgPSBjdXJy
LT5wYXJlbnQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvZmZzZXRQYXItPmlz
Qm94KCkgJiYgb2Zmc2V0UGFyLT5pc0JvZHkoKSAmJiAhb2Zmc2V0UGFyLT5pc1JlbFBvc2l0aW9u
ZWQoKSAmJiAhb2Zmc2V0UGFyLT5pc1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgICAgICB5UG9z
ICs9IHRvUmVuZGVyQm94KG9mZnNldFBhciktPnkoKTsKICAgICAgICAgfQotICAgICAgICBpZiAo
b2Zmc2V0UGFyLT5pc0JveCgpICYmIG9mZnNldFBhci0+aXNCb2R5KCkgJiYgIW9mZnNldFBhci0+
aXNSZWxQb3NpdGlvbmVkKCkgJiYgIW9mZnNldFBhci0+aXNQb3NpdGlvbmVkKCkpCi0gICAgICAg
ICAgICB5UG9zICs9IHRvUmVuZGVyQm94KG9mZnNldFBhciktPnkoKTsKICAgICB9CiAgICAgcmV0
dXJuIHlQb3M7CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0MTE2OSkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDA5LTAyLTIzICBNYXR0
IFBlbm5pZyAgPHBlbm5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI0MTA3CisgICAgICAgIEZpeGVkIGVsZW1lbnRzIGhhdmUgMCBhcyBhbiBvZmZzZXRMZWZ0
IHByb3BlcnR5CisgICAgICAgIAorICAgICAgICBCcmluZ3Mgb2Zmc2V0TGVmdC9Ub3AgbW9yZSBp
biBsaW5lIHdpdGggVzNDIHNwZWMKKyAgICAgICAgCisgICAgICAgICogZmFzdC9kb20vRWxlbWVu
dC9maXhlZC1wb3NpdGlvbi1vZmZzZXQtcGFyZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vRWxlbWVudC9maXhlZC1wb3NpdGlvbi1vZmZzZXQtcGFyZW50Lmh0bWw6
IEFkZGVkLgorCiAyMDA5LTAyLTIzICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vRWxlbWVudC9maXhlZC1wb3NpdGlvbi1vZmZzZXQtcGFyZW50LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2ZpeGVk
LXBvc2l0aW9uLW9mZnNldC1wYXJlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9maXhlZC1wb3NpdGlvbi1vZmZzZXQtcGFyZW50LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorVGhpcyB0ZXN0IGNoZWNr
cyBpZiBvZmZzZXRQYXJlbnQgaXMgYWx3YXlzIG51bGwgd2hlbiBhY2Nlc3NlZCBmcm9tIHRoZSBI
VE1MIDxib2R5PiBhbmQgZnJvbSBlbGVtZW50cyB3aXRoIENTUyBwcm9wZXJ0eSBwb3NpdGlvbjpm
aXhlZC4gVG8gZW5zdXJlIHZhbHVlcyBtYXRjaCBsYXlvdXQsIHRoaXMgdGVzdCBhbHNvIGNoZWNr
cyBvZmZzZXRUb3AgYW5kIG9mZnNldExlZnQuCisKK0luIGFkZGl0aW9uIHRvIHRoZSBIVE1MIDxi
b2R5PiwgdHdvIGVsZW1lbnRzIHdpdGggQ1NTIHByb3BlcnR5IHBvc2l0aW9uOmZpeGVkIGFyZSB0
ZXN0ZWQ6IE9uZSB3aXRoaW4gdGhlIGJvZHksIGFuZCBvbmUgd2l0aGluIGFuIGVsZW1lbnQgd2l0
aCBDU1MgcHJvcGVydHkgcG9zaXRpb246YWJzb2x1dGUuCisKK0V4cGVjdGVkIHZhbHVlcyBhcmUg
cGFyZW50aGVzaXplZC4gVGVzdCBoYXMgcGFzc2VkIGlmIGFsbCB2YWx1ZXMgbWF0Y2guCisKK0Zp
cnN0IEZpeGVkIG9mZnNldFBhcmVudCAobnVsbCk6IG51bGwKKworRmlyc3QgRml4ZWQgb2Zmc2V0
VG9wICgxMCk6IDEwCisKK0ZpcnN0IEZpeGVkIG9mZnNldExlZnQgKDIwKTogMjAKKworU2Vjb25k
IEZpeGVkIG9mZnNldFBhcmVudCAobnVsbCk6IG51bGwKKworU2Vjb25kIEZpeGVkIG9mZnNldFRv
cCAoMTUpOiAxNQorCitTZWNvbmQgRml4ZWQgb2Zmc2V0TGVmdCAoMzApOiAzMAorCitCb2R5IG9m
ZnNldFBhcmVudCAobnVsbCk6IG51bGwKKworQm9keSBvZmZzZXRUb3AgKDApOiAwCisKK0JvZHkg
b2Zmc2V0TGVmdCAoMCk6IDAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvZml4
ZWQtcG9zaXRpb24tb2Zmc2V0LXBhcmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0VsZW1lbnQvZml4ZWQtcG9zaXRpb24tb2Zmc2V0LXBhcmVudC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9maXhlZC1wb3NpdGlvbi1v
ZmZzZXQtcGFyZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKzxodG1sPgor
PGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBwcmludChtZXNzYWdlKQorICAgIHsK
KyAgICAgICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKKyAg
ICAgICAgcGFyYWdyYXBoLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3Nh
Z2UpKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRD
aGlsZChwYXJhZ3JhcGgpOworICAgIH0KKyAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICB7CisgICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgCisgICAgICAgIHZhciBmaXJzdEZpeGVk
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpeGVkMScpOworICAgICAgICB2YXIgc2Vjb25k
Rml4ZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZml4ZWQyJyk7CisgICAgICAgIHZhciBi
b2R5ID0gZG9jdW1lbnQuYm9keTsKKyAgICAgICAgcHJpbnQoIkZpcnN0IEZpeGVkIG9mZnNldFBh
cmVudCAobnVsbCk6ICIrZmlyc3RGaXhlZC5vZmZzZXRQYXJlbnQpOworICAgICAgICBwcmludCgi
Rmlyc3QgRml4ZWQgb2Zmc2V0VG9wICgxMCk6ICIrZmlyc3RGaXhlZC5vZmZzZXRUb3ApOworICAg
ICAgICBwcmludCgiRmlyc3QgRml4ZWQgb2Zmc2V0TGVmdCAoMjApOiAiK2ZpcnN0Rml4ZWQub2Zm
c2V0TGVmdCk7CisgICAgICAgIHByaW50KCJTZWNvbmQgRml4ZWQgb2Zmc2V0UGFyZW50IChudWxs
KTogIitzZWNvbmRGaXhlZC5vZmZzZXRQYXJlbnQpOworICAgICAgICBwcmludCgiU2Vjb25kIEZp
eGVkIG9mZnNldFRvcCAoMTUpOiAiK3NlY29uZEZpeGVkLm9mZnNldFRvcCk7CisgICAgICAgIHBy
aW50KCJTZWNvbmQgRml4ZWQgb2Zmc2V0TGVmdCAoMzApOiAiK3NlY29uZEZpeGVkLm9mZnNldExl
ZnQpOworICAgICAgICBwcmludCgiQm9keSBvZmZzZXRQYXJlbnQgKG51bGwpOiAiK2JvZHkub2Zm
c2V0UGFyZW50KTsKKyAgICAgICAgcHJpbnQoIkJvZHkgb2Zmc2V0VG9wICgwKTogIitib2R5Lm9m
ZnNldFRvcCk7CisgICAgICAgIHByaW50KCJCb2R5IG9mZnNldExlZnQgKDApOiAiK2JvZHkub2Zm
c2V0TGVmdCk7CisgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0
ZXN0KCkiIHN0eWxlPSJtYXJnaW46MTBweDtib3JkZXI6NXB4IHNvbGlkIHdoaXRlIj4KKyAgICA8
ZGl2IGlkPSJmaXhlZDEiIHN0eWxlPSJwb3NpdGlvbjpmaXhlZDt0b3A6MTBweDtsZWZ0OjIwcHgi
PjwvZGl2PgorICAgIDxkaXYgaWQ9ImFic29sdXRlIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGUi
PjxkaXYgaWQ9ImZpeGVkMiIgc3R5bGU9InBvc2l0aW9uOmZpeGVkO3RvcDoxNXB4O2xlZnQ6MzBw
eCI+PC9kaXY+PC9kaXY+CisgICAgPHA+VGhpcyB0ZXN0IGNoZWNrcyBpZiA8Y29kZT5vZmZzZXRQ
YXJlbnQ8L2NvZGU+IGlzIGFsd2F5cyA8Y29kZT5udWxsPC9jb2RlPiB3aGVuIGFjY2Vzc2VkIGZy
b20gdGhlIEhUTUwgPGNvZGU+Jmx0O2JvZHkmZ3Q7PC9jb2RlPiBhbmQgZnJvbSBlbGVtZW50cyB3
aXRoIENTUyBwcm9wZXJ0eSA8Y29kZT5wb3NpdGlvbjpmaXhlZDwvY29kZT4uIFRvIGVuc3VyZSB2
YWx1ZXMgbWF0Y2ggbGF5b3V0LCB0aGlzIHRlc3QgYWxzbyBjaGVja3MgPGNvZGU+b2Zmc2V0VG9w
PC9jb2RlPiBhbmQgPGNvZGU+b2Zmc2V0TGVmdDwvY29kZT4uPC9wPgorICAgIDxwPkluIGFkZGl0
aW9uIHRvIHRoZSBIVE1MIDxjb2RlPiZsdDtib2R5Jmd0OzwvY29kZT4sIHR3byBlbGVtZW50cyB3
aXRoIENTUyBwcm9wZXJ0eSA8Y29kZT5wb3NpdGlvbjpmaXhlZDwvY29kZT4gYXJlIHRlc3RlZDog
T25lIHdpdGhpbiB0aGUgYm9keSwgYW5kIG9uZSB3aXRoaW4gYW4gZWxlbWVudCB3aXRoIENTUyBw
cm9wZXJ0eSA8Y29kZT5wb3NpdGlvbjphYnNvbHV0ZTwvY29kZT4uPC9wPgorICAgIDxwPkV4cGVj
dGVkIHZhbHVlcyBhcmUgcGFyZW50aGVzaXplZC4gVGVzdCBoYXMgcGFzc2VkIGlmIGFsbCB2YWx1
ZXMgbWF0Y2guPC9wPgorICAgIDxocj4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27905</attachid>
            <date>2009-02-23 22:41:27 -0800</date>
            <delta_ts>2009-02-26 21:19:35 -0800</delta_ts>
            <desc>Modifies offsetTop/Left</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>10712</size>
            <attacher name="Matt Pennig">pennig</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTE2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDItMjMgIE1hdHQgUGVubmlnICA8cGVubmlnQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQxMDcKKyAgICAgICAgRml4ZWQg
ZWxlbWVudHMgaGF2ZSAwIGFzIGFuIG9mZnNldExlZnQgcHJvcGVydHkKKyAgICAgICAgCisgICAg
ICAgIEJyaW5ncyBvZmZzZXRMZWZ0L1RvcCBtb3JlIGluIGxpbmUgd2l0aCBXM0Mgc3BlYworICAg
ICAgICAKKyAgICAgICAgVGVzdDogZmFzdC9kb20vRWxlbWVudC9maXhlZC1wb3NpdGlvbi1vZmZz
ZXQtcGFyZW50Lmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6b2Zmc2V0TGVm
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6b2Zmc2V0VG9wKToK
KwogMjAwOS0wMi0yMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZp
eCBRdCBidWlsZC4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAJKHJldmlzaW9uIDQxMTY5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNDggKzEzMiw2NyBAQCBpbnQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnJlbGF0aXZlUG9zaXRpCiAKIGludCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6b2Zmc2V0TGVmdCgpIGNvbnN0CiB7Ci0gICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9m
ZnNldFBhciA9IG9mZnNldFBhcmVudCgpOwotICAgIGlmICghb2Zmc2V0UGFyKQorICAgIC8vIElm
IHRoZSBlbGVtZW50IGlzIHRoZSBIVE1MIGJvZHkgZWxlbWVudCBvciBkb2VzIG5vdCBoYXZlIGFu
IGFzc29jaWF0ZWQgYm94CisgICAgLy8gcmV0dXJuIDAgYW5kIHN0b3AgdGhpcyBhbGdvcml0aG0u
CisgICAgaWYgKGlzQm9keSgpKQogICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBSZW5kZXJC
b3hNb2RlbE9iamVjdCogb2Zmc2V0UGFyID0gb2Zmc2V0UGFyZW50KCk7CiAgICAgaW50IHhQb3Mg
PSAoaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT54KCkgOiAwKTsKLSAgICBpZiAob2Zmc2V0
UGFyLT5pc0JveCgpKQotICAgICAgICB4UG9zIC09IHRvUmVuZGVyQm94KG9mZnNldFBhciktPmJv
cmRlckxlZnQoKTsKLSAgICBpZiAoIWlzUG9zaXRpb25lZCgpKSB7Ci0gICAgICAgIGlmIChpc1Jl
bFBvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIHhQb3MgKz0gcmVsYXRpdmVQb3NpdGlvbk9mZnNl
dFgoKTsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBjdXJyID0gcGFyZW50KCk7Ci0gICAgICAgIHdo
aWxlIChjdXJyICYmIGN1cnIgIT0gb2Zmc2V0UGFyKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTog
V2hhdCBhcmUgd2Ugc3VwcG9zZWQgdG8gZG8gaW5zaWRlIFNWRyBjb250ZW50PwotICAgICAgICAg
ICAgaWYgKGN1cnItPmlzQm94KCkgJiYgIWN1cnItPmlzVGFibGVSb3coKSkKLSAgICAgICAgICAg
ICAgICB4UG9zICs9IHRvUmVuZGVyQm94KGN1cnIpLT54KCk7Ci0gICAgICAgICAgICBjdXJyID0g
Y3Vyci0+cGFyZW50KCk7CisgICAgCisgICAgLy8gSWYgdGhlIG9mZnNldFBhcmVudCBvZiB0aGUg
ZWxlbWVudCBpcyBudWxsLCBvciBpcyB0aGUgSFRNTCBib2R5IGVsZW1lbnQsCisgICAgLy8gcmV0
dXJuIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBjYW52YXMgb3JpZ2luIGFuZCB0aGUgbGVmdCBi
b3JkZXIgZWRnZSAKKyAgICAvLyBvZiB0aGUgZWxlbWVudCBhbmQgc3RvcCB0aGlzIGFsZ29yaXRo
bS4KKyAgICBpZiAob2Zmc2V0UGFyKSB7CisgICAgICAgIGlmIChvZmZzZXRQYXItPmlzQm94KCkg
JiYgIW9mZnNldFBhci0+aXNCb2R5KCkpCisgICAgICAgICAgICB4UG9zIC09IHRvUmVuZGVyQm94
KG9mZnNldFBhciktPmJvcmRlckxlZnQoKTsKKyAgICAgICAgaWYgKCFpc1Bvc2l0aW9uZWQoKSkg
eworICAgICAgICAgICAgaWYgKGlzUmVsUG9zaXRpb25lZCgpKQorICAgICAgICAgICAgICAgIHhQ
b3MgKz0gcmVsYXRpdmVQb3NpdGlvbk9mZnNldFgoKTsKKyAgICAgICAgICAgIFJlbmRlck9iamVj
dCogY3VyciA9IHBhcmVudCgpOworICAgICAgICAgICAgd2hpbGUgKGN1cnIgJiYgY3VyciAhPSBv
ZmZzZXRQYXIpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hhdCBhcmUgd2Ugc3VwcG9z
ZWQgdG8gZG8gaW5zaWRlIFNWRyBjb250ZW50PworICAgICAgICAgICAgICAgIGlmIChjdXJyLT5p
c0JveCgpICYmICFjdXJyLT5pc1RhYmxlUm93KCkpCisgICAgICAgICAgICAgICAgICAgIHhQb3Mg
Kz0gdG9SZW5kZXJCb3goY3VyciktPngoKTsKKyAgICAgICAgICAgICAgICBjdXJyID0gY3Vyci0+
cGFyZW50KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAob2Zmc2V0UGFyLT5pc0Jv
eCgpICYmIG9mZnNldFBhci0+aXNCb2R5KCkgJiYgIW9mZnNldFBhci0+aXNSZWxQb3NpdGlvbmVk
KCkgJiYgIW9mZnNldFBhci0+aXNQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICAgICAgeFBvcyAr
PSB0b1JlbmRlckJveChvZmZzZXRQYXIpLT54KCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG9m
ZnNldFBhci0+aXNCb3goKSAmJiBvZmZzZXRQYXItPmlzQm9keSgpICYmICFvZmZzZXRQYXItPmlz
UmVsUG9zaXRpb25lZCgpICYmICFvZmZzZXRQYXItPmlzUG9zaXRpb25lZCgpKQotICAgICAgICAg
ICAgeFBvcyArPSB0b1JlbmRlckJveChvZmZzZXRQYXIpLT54KCk7CiAgICAgfQorCiAgICAgcmV0
dXJuIHhQb3M7CiB9CiAKIGludCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6b2Zmc2V0VG9wKCkgY29u
c3QKIHsKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2Zmc2V0UGFyID0gb2Zmc2V0UGFyZW50
KCk7Ci0gICAgaWYgKCFvZmZzZXRQYXIpCisgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgdGhlIEhU
TUwgYm9keSBlbGVtZW50IG9yIGRvZXMgbm90IGhhdmUgYW4gYXNzb2NpYXRlZCBib3gKKyAgICAv
LyByZXR1cm4gMCBhbmQgc3RvcCB0aGlzIGFsZ29yaXRobS4KKyAgICBpZiAoaXNCb2R5KCkpCiAg
ICAgICAgIHJldHVybiAwOworICAgIAorICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBvZmZzZXRQ
YXIgPSBvZmZzZXRQYXJlbnQoKTsKICAgICBpbnQgeVBvcyA9IChpc0JveCgpID8gdG9SZW5kZXJC
b3godGhpcyktPnkoKSA6IDApOwotICAgIGlmIChvZmZzZXRQYXItPmlzQm94KCkpCi0gICAgICAg
IHlQb3MgLT0gdG9SZW5kZXJCb3gob2Zmc2V0UGFyKS0+Ym9yZGVyVG9wKCk7Ci0gICAgaWYgKCFp
c1Bvc2l0aW9uZWQoKSkgewotICAgICAgICBpZiAoaXNSZWxQb3NpdGlvbmVkKCkpCi0gICAgICAg
ICAgICB5UG9zICs9IHJlbGF0aXZlUG9zaXRpb25PZmZzZXRZKCk7Ci0gICAgICAgIFJlbmRlck9i
amVjdCogY3VyciA9IHBhcmVudCgpOwotICAgICAgICB3aGlsZSAoY3VyciAmJiBjdXJyICE9IG9m
ZnNldFBhcikgewotICAgICAgICAgICAgLy8gRklYTUU6IFdoYXQgYXJlIHdlIHN1cHBvc2VkIHRv
IGRvIGluc2lkZSBTVkcgY29udGVudD8KLSAgICAgICAgICAgIGlmIChjdXJyLT5pc0JveCgpICYm
ICFjdXJyLT5pc1RhYmxlUm93KCkpCi0gICAgICAgICAgICAgICAgeVBvcyArPSB0b1JlbmRlckJv
eChjdXJyKS0+eSgpOwotICAgICAgICAgICAgY3VyciA9IGN1cnItPnBhcmVudCgpOworICAgIAor
ICAgIC8vIElmIHRoZSBvZmZzZXRQYXJlbnQgb2YgdGhlIGVsZW1lbnQgaXMgbnVsbCwgb3IgaXMg
dGhlIEhUTUwgYm9keSBlbGVtZW50LAorICAgIC8vIHJldHVybiB0aGUgZGlzdGFuY2UgYmV0d2Vl
biB0aGUgY2FudmFzIG9yaWdpbiBhbmQgdGhlIHRvcCBib3JkZXIgZWRnZSAKKyAgICAvLyBvZiB0
aGUgZWxlbWVudCBhbmQgc3RvcCB0aGlzIGFsZ29yaXRobS4KKyAgICBpZiAob2Zmc2V0UGFyKSB7
CisgICAgICAgIGlmIChvZmZzZXRQYXItPmlzQm94KCkgJiYgIW9mZnNldFBhci0+aXNCb2R5KCkp
CisgICAgICAgICAgICB5UG9zIC09IHRvUmVuZGVyQm94KG9mZnNldFBhciktPmJvcmRlclRvcCgp
OworICAgICAgICBpZiAoIWlzUG9zaXRpb25lZCgpKSB7CisgICAgICAgICAgICBpZiAoaXNSZWxQ
b3NpdGlvbmVkKCkpCisgICAgICAgICAgICAgICAgeVBvcyArPSByZWxhdGl2ZVBvc2l0aW9uT2Zm
c2V0WSgpOworICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBjdXJyID0gcGFyZW50KCk7CisgICAg
ICAgICAgICB3aGlsZSAoY3VyciAmJiBjdXJyICE9IG9mZnNldFBhcikgeworICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBXaGF0IGFyZSB3ZSBzdXBwb3NlZCB0byBkbyBpbnNpZGUgU1ZHIGNvbnRl
bnQ/CisgICAgICAgICAgICAgICAgaWYgKGN1cnItPmlzQm94KCkgJiYgIWN1cnItPmlzVGFibGVS
b3coKSkKKyAgICAgICAgICAgICAgICAgICAgeVBvcyArPSB0b1JlbmRlckJveChjdXJyKS0+eSgp
OworICAgICAgICAgICAgICAgIGN1cnIgPSBjdXJyLT5wYXJlbnQoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChvZmZzZXRQYXItPmlzQm94KCkgJiYgb2Zmc2V0UGFyLT5pc0JvZHko
KSAmJiAhb2Zmc2V0UGFyLT5pc1JlbFBvc2l0aW9uZWQoKSAmJiAhb2Zmc2V0UGFyLT5pc1Bvc2l0
aW9uZWQoKSkKKyAgICAgICAgICAgICAgICB5UG9zICs9IHRvUmVuZGVyQm94KG9mZnNldFBhcikt
PnkoKTsKICAgICAgICAgfQotICAgICAgICBpZiAob2Zmc2V0UGFyLT5pc0JveCgpICYmIG9mZnNl
dFBhci0+aXNCb2R5KCkgJiYgIW9mZnNldFBhci0+aXNSZWxQb3NpdGlvbmVkKCkgJiYgIW9mZnNl
dFBhci0+aXNQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICB5UG9zICs9IHRvUmVuZGVyQm94KG9m
ZnNldFBhciktPnkoKTsKICAgICB9CiAgICAgcmV0dXJuIHlQb3M7CiB9CkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA0MTE2OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE1IEBACisyMDA5LTAyLTIzICBNYXR0IFBlbm5pZyAgPHBlbm5pZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MTA3CisgICAgICAgIEZpeGVkIGVs
ZW1lbnRzIGhhdmUgMCBhcyBhbiBvZmZzZXRMZWZ0IHByb3BlcnR5CisgICAgICAgIAorICAgICAg
ICBCcmluZ3Mgb2Zmc2V0TGVmdC9Ub3AgbW9yZSBpbiBsaW5lIHdpdGggVzNDIHNwZWMKKyAgICAg
ICAgCisgICAgICAgICogZmFzdC9kb20vRWxlbWVudC9maXhlZC1wb3NpdGlvbi1vZmZzZXQtcGFy
ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRWxlbWVudC9maXhl
ZC1wb3NpdGlvbi1vZmZzZXQtcGFyZW50Lmh0bWw6IEFkZGVkLgorCiAyMDA5LTAyLTIzICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9maXhl
ZC1wb3NpdGlvbi1vZmZzZXQtcGFyZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2ZpeGVkLXBvc2l0aW9uLW9mZnNldC1wYXJlbnQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9m
aXhlZC1wb3NpdGlvbi1vZmZzZXQtcGFyZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzNyBAQAorVGhpcyB0ZXN0IGNoZWNrcyBpZiBvZmZzZXRQYXJlbnQgaXMgYWx3YXlz
IG51bGwgd2hlbiBhY2Nlc3NlZCBmcm9tIHRoZSBIVE1MIDxib2R5PiBhbmQgZnJvbSBlbGVtZW50
cyB3aXRoIENTUyBwcm9wZXJ0eSBwb3NpdGlvbjpmaXhlZC4gVG8gZW5zdXJlIHZhbHVlcyBtYXRj
aCBsYXlvdXQsIHRoaXMgdGVzdCBhbHNvIGNoZWNrcyBvZmZzZXRUb3AgYW5kIG9mZnNldExlZnQu
CisKK0luIGFkZGl0aW9uIHRvIHRoZSBIVE1MIDxib2R5PiwgdHdvIGVsZW1lbnRzIHdpdGggQ1NT
IHByb3BlcnR5IHBvc2l0aW9uOmZpeGVkIGFyZSB0ZXN0ZWQ6IE9uZSB3aXRoaW4gdGhlIGJvZHks
IGFuZCBvbmUgd2l0aGluIGFuIGVsZW1lbnQgd2l0aCBDU1MgcHJvcGVydHkgcG9zaXRpb246YWJz
b2x1dGUuCisKK0ZpbmFsbHksIGEgc3RhdGljLSBhbmQgcmVsYXRpdmUtcG9zaXRpb25lZCBlbGVt
ZW50IGFyZSB0ZXN0ZWQgZm9yIHNhbml0eSBhbmQgc3BlYyBhZGhlcmVuY2UuCisKK0V4cGVjdGVk
IHZhbHVlcyBhcmUgcGFyZW50aGVzaXplZC4gVGVzdCBoYXMgcGFzc2VkIGlmIGFsbCB2YWx1ZXMg
bWF0Y2guCisKK0ZpcnN0IEZpeGVkIG9mZnNldFBhcmVudCAobnVsbCk6IG51bGwKKworRmlyc3Qg
Rml4ZWQgb2Zmc2V0VG9wICgxMCk6IDEwCisKK0ZpcnN0IEZpeGVkIG9mZnNldExlZnQgKDIwKTog
MjAKKworU2Vjb25kIEZpeGVkIG9mZnNldFBhcmVudCAobnVsbCk6IG51bGwKKworU2Vjb25kIEZp
eGVkIG9mZnNldFRvcCAoMTUpOiAxNQorCitTZWNvbmQgRml4ZWQgb2Zmc2V0TGVmdCAoMzApOiAz
MAorCitCb2R5IG9mZnNldFBhcmVudCAobnVsbCk6IG51bGwKKworQm9keSBvZmZzZXRUb3AgKDAp
OiAwCisKK0JvZHkgb2Zmc2V0TGVmdCAoMCk6IDAKKworU3RhdGljIG9mZnNldFBhcmVudCAoW29i
amVjdCBIVE1MQm9keUVsZW1lbnRdKTogW29iamVjdCBIVE1MQm9keUVsZW1lbnRdCisKK1N0YXRp
YyBvZmZzZXRUb3AgKDE1KTogMTUKKworU3RhdGljIG9mZnNldExlZnQgKDE1KTogMTUKKworUmVs
YXRpdmUgb2Zmc2V0UGFyZW50IChbb2JqZWN0IEhUTUxCb2R5RWxlbWVudF0pOiBbb2JqZWN0IEhU
TUxCb2R5RWxlbWVudF0KKworUmVsYXRpdmUgb2Zmc2V0VG9wICgxMyk6IDEzCisKK1JlbGF0aXZl
IG9mZnNldExlZnQgKDE5KTogMTkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQv
Zml4ZWQtcG9zaXRpb24tb2Zmc2V0LXBhcmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0VsZW1lbnQvZml4ZWQtcG9zaXRpb24tb2Zmc2V0LXBhcmVudC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9maXhlZC1wb3NpdGlv
bi1vZmZzZXQtcGFyZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKzxodG1s
PgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBwcmludChtZXNzYWdlKQorICAg
IHsKKyAgICAgICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsK
KyAgICAgICAgcGFyYWdyYXBoLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1l
c3NhZ2UpKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBl
bmRDaGlsZChwYXJhZ3JhcGgpOworICAgIH0KKyAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICB7Cisg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgCisgICAgICAgIHZhciBzdGF0aWsg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdGljJyk7CisgICAgICAgIHZhciByZWxhdGl2
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWxhdGl2ZScpOworICAgICAgICB2YXIgZmly
c3RGaXhlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaXhlZDEnKTsKKyAgICAgICAgdmFy
IHNlY29uZEZpeGVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpeGVkMicpOworICAgICAg
ICB2YXIgYm9keSA9IGRvY3VtZW50LmJvZHk7CisgICAgICAgIHByaW50KCJGaXJzdCBGaXhlZCBv
ZmZzZXRQYXJlbnQgKG51bGwpOiAiK2ZpcnN0Rml4ZWQub2Zmc2V0UGFyZW50KTsKKyAgICAgICAg
cHJpbnQoIkZpcnN0IEZpeGVkIG9mZnNldFRvcCAoMTApOiAiK2ZpcnN0Rml4ZWQub2Zmc2V0VG9w
KTsKKyAgICAgICAgcHJpbnQoIkZpcnN0IEZpeGVkIG9mZnNldExlZnQgKDIwKTogIitmaXJzdEZp
eGVkLm9mZnNldExlZnQpOworICAgICAgICBwcmludCgiU2Vjb25kIEZpeGVkIG9mZnNldFBhcmVu
dCAobnVsbCk6ICIrc2Vjb25kRml4ZWQub2Zmc2V0UGFyZW50KTsKKyAgICAgICAgcHJpbnQoIlNl
Y29uZCBGaXhlZCBvZmZzZXRUb3AgKDE1KTogIitzZWNvbmRGaXhlZC5vZmZzZXRUb3ApOworICAg
ICAgICBwcmludCgiU2Vjb25kIEZpeGVkIG9mZnNldExlZnQgKDMwKTogIitzZWNvbmRGaXhlZC5v
ZmZzZXRMZWZ0KTsKKyAgICAgICAgcHJpbnQoIkJvZHkgb2Zmc2V0UGFyZW50IChudWxsKTogIiti
b2R5Lm9mZnNldFBhcmVudCk7CisgICAgICAgIHByaW50KCJCb2R5IG9mZnNldFRvcCAoMCk6ICIr
Ym9keS5vZmZzZXRUb3ApOworICAgICAgICBwcmludCgiQm9keSBvZmZzZXRMZWZ0ICgwKTogIiti
b2R5Lm9mZnNldExlZnQpOworICAgICAgICBwcmludCgiU3RhdGljIG9mZnNldFBhcmVudCAoW29i
amVjdCBIVE1MQm9keUVsZW1lbnRdKTogIitzdGF0aWsub2Zmc2V0UGFyZW50KTsKKyAgICAgICAg
cHJpbnQoIlN0YXRpYyBvZmZzZXRUb3AgKDE1KTogIitzdGF0aWsub2Zmc2V0VG9wKTsKKyAgICAg
ICAgcHJpbnQoIlN0YXRpYyBvZmZzZXRMZWZ0ICgxNSk6ICIrc3RhdGlrLm9mZnNldExlZnQpOwor
ICAgICAgICBwcmludCgiUmVsYXRpdmUgb2Zmc2V0UGFyZW50IChbb2JqZWN0IEhUTUxCb2R5RWxl
bWVudF0pOiAiK3JlbGF0aXZlLm9mZnNldFBhcmVudCk7CisgICAgICAgIHByaW50KCJSZWxhdGl2
ZSBvZmZzZXRUb3AgKDEzKTogIityZWxhdGl2ZS5vZmZzZXRUb3ApOworICAgICAgICBwcmludCgi
UmVsYXRpdmUgb2Zmc2V0TGVmdCAoMTkpOiAiK3JlbGF0aXZlLm9mZnNldExlZnQpOworICAgIH0K
KyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIiBzdHlsZT0ibWFy
Z2luOjEwcHg7Ym9yZGVyOjVweCBzb2xpZCB3aGl0ZSI+CisgICAgPGRpdiBpZD0ic3RhdGljIiBz
dHlsZT0iYm9yZGVyOjFweCBzb2xpZCBncmVlbiI+PC9kaXY+CisgICAgPGRpdiBpZD0icmVsYXRp
dmUiIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LTRweDtsZWZ0OjRweDtib3JkZXI6MXB4
IHNvbGlkIGJsdWUiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImZpeGVkMSIgc3R5bGU9InBvc2l0aW9u
OmZpeGVkO3RvcDoxMHB4O2xlZnQ6MjBweDtib3JkZXI6MXB4IHNvbGlkIHJlZCI+PC9kaXY+Cisg
ICAgPGRpdiBpZD0iYWJzb2x1dGUiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZSI+PGRpdiBpZD0i
Zml4ZWQyIiBzdHlsZT0icG9zaXRpb246Zml4ZWQ7dG9wOjE1cHg7bGVmdDozMHB4Ij48L2Rpdj48
L2Rpdj4KKyAgICA8cD5UaGlzIHRlc3QgY2hlY2tzIGlmIDxjb2RlPm9mZnNldFBhcmVudDwvY29k
ZT4gaXMgYWx3YXlzIDxjb2RlPm51bGw8L2NvZGU+IHdoZW4gYWNjZXNzZWQgZnJvbSB0aGUgSFRN
TCA8Y29kZT4mbHQ7Ym9keSZndDs8L2NvZGU+IGFuZCBmcm9tIGVsZW1lbnRzIHdpdGggQ1NTIHBy
b3BlcnR5IDxjb2RlPnBvc2l0aW9uOmZpeGVkPC9jb2RlPi4gVG8gZW5zdXJlIHZhbHVlcyBtYXRj
aCBsYXlvdXQsIHRoaXMgdGVzdCBhbHNvIGNoZWNrcyA8Y29kZT5vZmZzZXRUb3A8L2NvZGU+IGFu
ZCA8Y29kZT5vZmZzZXRMZWZ0PC9jb2RlPi48L3A+CisgICAgPHA+SW4gYWRkaXRpb24gdG8gdGhl
IEhUTUwgPGNvZGU+Jmx0O2JvZHkmZ3Q7PC9jb2RlPiwgdHdvIGVsZW1lbnRzIHdpdGggQ1NTIHBy
b3BlcnR5IDxjb2RlPnBvc2l0aW9uOmZpeGVkPC9jb2RlPiBhcmUgdGVzdGVkOiBPbmUgd2l0aGlu
IHRoZSBib2R5LCBhbmQgb25lIHdpdGhpbiBhbiBlbGVtZW50IHdpdGggQ1NTIHByb3BlcnR5IDxj
b2RlPnBvc2l0aW9uOmFic29sdXRlPC9jb2RlPi48L3A+CisgICAgPHA+RmluYWxseSwgYSBzdGF0
aWMtIGFuZCByZWxhdGl2ZS1wb3NpdGlvbmVkIGVsZW1lbnQgYXJlIHRlc3RlZCBmb3Igc2FuaXR5
IGFuZCBzcGVjIGFkaGVyZW5jZS48L3A+CisgICAgPHA+RXhwZWN0ZWQgdmFsdWVzIGFyZSBwYXJl
bnRoZXNpemVkLiBUZXN0IGhhcyBwYXNzZWQgaWYgYWxsIHZhbHVlcyBtYXRjaC48L3A+CisgICAg
PGhyPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="13587"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28063</attachid>
            <date>2009-02-26 21:19:35 -0800</date>
            <delta_ts>2009-02-27 11:53:47 -0800</delta_ts>
            <desc>offsetLeft/Top patch + 2 tests</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>13281</size>
            <attacher name="Matt Pennig">pennig</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTI3OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMDktMDItMjYgIE1hdHQgUGVubmlnICA8cGVubmlnQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXNv
bHZlczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MTA3CisgICAg
ICAgICJGaXhlZCBlbGVtZW50cyBoYXZlIDAgYXMgYW4gb2Zmc2V0TGVmdCBwcm9wZXJ0eSIKKyAg
ICAgICAgCisgICAgICAgIENvZGUgYWxzbyBicmluZ3Mgb2Zmc2V0TGVmdC9Ub3AgaW4gZnVsbCBj
b25mb3JtYW5jZSB3aXRoIHRoZSBzcGVjLgorICAgICAgICBBZGRlZCB0d28gdGVzdHMsIG9uZSBm
b3IgZml4ZWQtcG9zaXRpb24gZWxlbWVudHMsIGFuZCBvbmUgZm9yIDxodG1sPi4KKyAgICAgICAg
CisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9FbGVtZW50L2ZpeGVkLXBvc2l0aW9uLW9mZnNldC1w
YXJlbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vRWxlbWVudC9vZmZzZXRMZWZ0LW9m
ZnNldFRvcC1odG1sLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6b2Zmc2V0
TGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6b2Zmc2V0VG9w
KToKKwogMjAwOS0wMi0yNiAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDQxMjc2KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzcsNDggKzEzNyw2NyBAQCBpbnQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnJlbGF0aXZlUG9z
aXRpCiAKIGludCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6b2Zmc2V0TGVmdCgpIGNvbnN0CiB7Ci0g
ICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9mZnNldFBhciA9IG9mZnNldFBhcmVudCgpOwotICAg
IGlmICghb2Zmc2V0UGFyKQorICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIHRoZSBIVE1MIGJvZHkg
ZWxlbWVudCBvciBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgYm94CisgICAgLy8gcmV0dXJu
IDAgYW5kIHN0b3AgdGhpcyBhbGdvcml0aG0uCisgICAgaWYgKGlzQm9keSgpKQogICAgICAgICBy
ZXR1cm4gMDsKKyAgICAKKyAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2Zmc2V0UGFyID0gb2Zm
c2V0UGFyZW50KCk7CiAgICAgaW50IHhQb3MgPSAoaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMp
LT54KCkgOiAwKTsKLSAgICBpZiAob2Zmc2V0UGFyLT5pc0JveCgpKQotICAgICAgICB4UG9zIC09
IHRvUmVuZGVyQm94KG9mZnNldFBhciktPmJvcmRlckxlZnQoKTsKLSAgICBpZiAoIWlzUG9zaXRp
b25lZCgpKSB7Ci0gICAgICAgIGlmIChpc1JlbFBvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIHhQ
b3MgKz0gcmVsYXRpdmVQb3NpdGlvbk9mZnNldFgoKTsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBj
dXJyID0gcGFyZW50KCk7Ci0gICAgICAgIHdoaWxlIChjdXJyICYmIGN1cnIgIT0gb2Zmc2V0UGFy
KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2hhdCBhcmUgd2Ugc3VwcG9zZWQgdG8gZG8gaW5z
aWRlIFNWRyBjb250ZW50PwotICAgICAgICAgICAgaWYgKGN1cnItPmlzQm94KCkgJiYgIWN1cnIt
PmlzVGFibGVSb3coKSkKLSAgICAgICAgICAgICAgICB4UG9zICs9IHRvUmVuZGVyQm94KGN1cnIp
LT54KCk7Ci0gICAgICAgICAgICBjdXJyID0gY3Vyci0+cGFyZW50KCk7CisgICAgCisgICAgLy8g
SWYgdGhlIG9mZnNldFBhcmVudCBvZiB0aGUgZWxlbWVudCBpcyBudWxsLCBvciBpcyB0aGUgSFRN
TCBib2R5IGVsZW1lbnQsCisgICAgLy8gcmV0dXJuIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBj
YW52YXMgb3JpZ2luIGFuZCB0aGUgbGVmdCBib3JkZXIgZWRnZSAKKyAgICAvLyBvZiB0aGUgZWxl
bWVudCBhbmQgc3RvcCB0aGlzIGFsZ29yaXRobS4KKyAgICBpZiAob2Zmc2V0UGFyKSB7CisgICAg
ICAgIGlmIChvZmZzZXRQYXItPmlzQm94KCkgJiYgIW9mZnNldFBhci0+aXNCb2R5KCkpCisgICAg
ICAgICAgICB4UG9zIC09IHRvUmVuZGVyQm94KG9mZnNldFBhciktPmJvcmRlckxlZnQoKTsKKyAg
ICAgICAgaWYgKCFpc1Bvc2l0aW9uZWQoKSkgeworICAgICAgICAgICAgaWYgKGlzUmVsUG9zaXRp
b25lZCgpKQorICAgICAgICAgICAgICAgIHhQb3MgKz0gcmVsYXRpdmVQb3NpdGlvbk9mZnNldFgo
KTsKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogY3VyciA9IHBhcmVudCgpOworICAgICAgICAg
ICAgd2hpbGUgKGN1cnIgJiYgY3VyciAhPSBvZmZzZXRQYXIpIHsKKyAgICAgICAgICAgICAgICAv
LyBGSVhNRTogV2hhdCBhcmUgd2Ugc3VwcG9zZWQgdG8gZG8gaW5zaWRlIFNWRyBjb250ZW50Pwor
ICAgICAgICAgICAgICAgIGlmIChjdXJyLT5pc0JveCgpICYmICFjdXJyLT5pc1RhYmxlUm93KCkp
CisgICAgICAgICAgICAgICAgICAgIHhQb3MgKz0gdG9SZW5kZXJCb3goY3VyciktPngoKTsKKyAg
ICAgICAgICAgICAgICBjdXJyID0gY3Vyci0+cGFyZW50KCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAob2Zmc2V0UGFyLT5pc0JveCgpICYmIG9mZnNldFBhci0+aXNCb2R5KCkgJiYg
IW9mZnNldFBhci0+aXNSZWxQb3NpdGlvbmVkKCkgJiYgIW9mZnNldFBhci0+aXNQb3NpdGlvbmVk
KCkpCisgICAgICAgICAgICAgICAgeFBvcyArPSB0b1JlbmRlckJveChvZmZzZXRQYXIpLT54KCk7
CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG9mZnNldFBhci0+aXNCb3goKSAmJiBvZmZzZXRQYXIt
PmlzQm9keSgpICYmICFvZmZzZXRQYXItPmlzUmVsUG9zaXRpb25lZCgpICYmICFvZmZzZXRQYXIt
PmlzUG9zaXRpb25lZCgpKQotICAgICAgICAgICAgeFBvcyArPSB0b1JlbmRlckJveChvZmZzZXRQ
YXIpLT54KCk7CiAgICAgfQorCiAgICAgcmV0dXJuIHhQb3M7CiB9CiAKIGludCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6b2Zmc2V0VG9wKCkgY29uc3QKIHsKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVj
dCogb2Zmc2V0UGFyID0gb2Zmc2V0UGFyZW50KCk7Ci0gICAgaWYgKCFvZmZzZXRQYXIpCisgICAg
Ly8gSWYgdGhlIGVsZW1lbnQgaXMgdGhlIEhUTUwgYm9keSBlbGVtZW50IG9yIGRvZXMgbm90IGhh
dmUgYW4gYXNzb2NpYXRlZCBib3gKKyAgICAvLyByZXR1cm4gMCBhbmQgc3RvcCB0aGlzIGFsZ29y
aXRobS4KKyAgICBpZiAoaXNCb2R5KCkpCiAgICAgICAgIHJldHVybiAwOworICAgIAorICAgIFJl
bmRlckJveE1vZGVsT2JqZWN0KiBvZmZzZXRQYXIgPSBvZmZzZXRQYXJlbnQoKTsKICAgICBpbnQg
eVBvcyA9IChpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPnkoKSA6IDApOwotICAgIGlmIChv
ZmZzZXRQYXItPmlzQm94KCkpCi0gICAgICAgIHlQb3MgLT0gdG9SZW5kZXJCb3gob2Zmc2V0UGFy
KS0+Ym9yZGVyVG9wKCk7Ci0gICAgaWYgKCFpc1Bvc2l0aW9uZWQoKSkgewotICAgICAgICBpZiAo
aXNSZWxQb3NpdGlvbmVkKCkpCi0gICAgICAgICAgICB5UG9zICs9IHJlbGF0aXZlUG9zaXRpb25P
ZmZzZXRZKCk7Ci0gICAgICAgIFJlbmRlck9iamVjdCogY3VyciA9IHBhcmVudCgpOwotICAgICAg
ICB3aGlsZSAoY3VyciAmJiBjdXJyICE9IG9mZnNldFBhcikgewotICAgICAgICAgICAgLy8gRklY
TUU6IFdoYXQgYXJlIHdlIHN1cHBvc2VkIHRvIGRvIGluc2lkZSBTVkcgY29udGVudD8KLSAgICAg
ICAgICAgIGlmIChjdXJyLT5pc0JveCgpICYmICFjdXJyLT5pc1RhYmxlUm93KCkpCi0gICAgICAg
ICAgICAgICAgeVBvcyArPSB0b1JlbmRlckJveChjdXJyKS0+eSgpOwotICAgICAgICAgICAgY3Vy
ciA9IGN1cnItPnBhcmVudCgpOworICAgIAorICAgIC8vIElmIHRoZSBvZmZzZXRQYXJlbnQgb2Yg
dGhlIGVsZW1lbnQgaXMgbnVsbCwgb3IgaXMgdGhlIEhUTUwgYm9keSBlbGVtZW50LAorICAgIC8v
IHJldHVybiB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgY2FudmFzIG9yaWdpbiBhbmQgdGhlIHRv
cCBib3JkZXIgZWRnZSAKKyAgICAvLyBvZiB0aGUgZWxlbWVudCBhbmQgc3RvcCB0aGlzIGFsZ29y
aXRobS4KKyAgICBpZiAob2Zmc2V0UGFyKSB7CisgICAgICAgIGlmIChvZmZzZXRQYXItPmlzQm94
KCkgJiYgIW9mZnNldFBhci0+aXNCb2R5KCkpCisgICAgICAgICAgICB5UG9zIC09IHRvUmVuZGVy
Qm94KG9mZnNldFBhciktPmJvcmRlclRvcCgpOworICAgICAgICBpZiAoIWlzUG9zaXRpb25lZCgp
KSB7CisgICAgICAgICAgICBpZiAoaXNSZWxQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICAgICAg
eVBvcyArPSByZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0WSgpOworICAgICAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBjdXJyID0gcGFyZW50KCk7CisgICAgICAgICAgICB3aGlsZSAoY3VyciAmJiBjdXJyICE9
IG9mZnNldFBhcikgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGF0IGFyZSB3ZSBzdXBw
b3NlZCB0byBkbyBpbnNpZGUgU1ZHIGNvbnRlbnQ/CisgICAgICAgICAgICAgICAgaWYgKGN1cnIt
PmlzQm94KCkgJiYgIWN1cnItPmlzVGFibGVSb3coKSkKKyAgICAgICAgICAgICAgICAgICAgeVBv
cyArPSB0b1JlbmRlckJveChjdXJyKS0+eSgpOworICAgICAgICAgICAgICAgIGN1cnIgPSBjdXJy
LT5wYXJlbnQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvZmZzZXRQYXItPmlz
Qm94KCkgJiYgb2Zmc2V0UGFyLT5pc0JvZHkoKSAmJiAhb2Zmc2V0UGFyLT5pc1JlbFBvc2l0aW9u
ZWQoKSAmJiAhb2Zmc2V0UGFyLT5pc1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgICAgICB5UG9z
ICs9IHRvUmVuZGVyQm94KG9mZnNldFBhciktPnkoKTsKICAgICAgICAgfQotICAgICAgICBpZiAo
b2Zmc2V0UGFyLT5pc0JveCgpICYmIG9mZnNldFBhci0+aXNCb2R5KCkgJiYgIW9mZnNldFBhci0+
aXNSZWxQb3NpdGlvbmVkKCkgJiYgIW9mZnNldFBhci0+aXNQb3NpdGlvbmVkKCkpCi0gICAgICAg
ICAgICB5UG9zICs9IHRvUmVuZGVyQm94KG9mZnNldFBhciktPnkoKTsKICAgICB9CiAgICAgcmV0
dXJuIHlQb3M7CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0MTI3OCkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA5LTAyLTI2ICBNYXR0
IFBlbm5pZyAgPHBlbm5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGRlZCB0d28gdGVzdHM6CisgICAgICAgICAg
ICAxLiBUZXN0cyBvZmZzZXRQYXJlbnQsIG9mZnNldExlZnQgYW5kIG9mZnNldFRvcCBvbiBmaXhl
ZC1wb3NpdGlvbiBlbGVtZW50cy4KKyAgICAgICAgICAgIDIuIFRlc3RzIG9mZnNldExlZnQgYW5k
IG9mZnNldFRvcCBvbiBzdGF0aWMgYW5kIHBvc2l0aW9uZWQgPGh0bWw+IGVsZW1lbnRzLgorCisg
ICAgICAgICogZmFzdC9kb20vRWxlbWVudC9maXhlZC1wb3NpdGlvbi1vZmZzZXQtcGFyZW50LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vRWxlbWVudC9maXhlZC1wb3Np
dGlvbi1vZmZzZXQtcGFyZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0VsZW1l
bnQvb2Zmc2V0TGVmdC1vZmZzZXRUb3AtaHRtbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL0VsZW1lbnQvb2Zmc2V0TGVmdC1vZmZzZXRUb3AtaHRtbC5odG1sOiBBZGRl
ZC4KKwogMjAwOS0wMi0yNiAgQWRlbGUgUGV0ZXJzb24gIDxhZGVsZUBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQWxpY2UgTGl1LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
RWxlbWVudC9maXhlZC1wb3NpdGlvbi1vZmZzZXQtcGFyZW50LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L2ZpeGVkLXBvc2l0aW9uLW9mZnNl
dC1wYXJlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vRWxlbWVudC9maXhlZC1wb3NpdGlvbi1vZmZzZXQtcGFyZW50LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzNyBAQAorVGhpcyB0ZXN0IGNoZWNrcyBpZiBvZmZzZXRQYXJl
bnQgaXMgYWx3YXlzIG51bGwgd2hlbiBhY2Nlc3NlZCBmcm9tIHRoZSBIVE1MIDxib2R5PiBhbmQg
ZnJvbSBlbGVtZW50cyB3aXRoIENTUyBwcm9wZXJ0eSBwb3NpdGlvbjpmaXhlZC4gVG8gZW5zdXJl
IHZhbHVlcyBtYXRjaCBsYXlvdXQsIHRoaXMgdGVzdCBhbHNvIGNoZWNrcyBvZmZzZXRUb3AgYW5k
IG9mZnNldExlZnQuCisKK0luIGFkZGl0aW9uIHRvIHRoZSBIVE1MIDxib2R5PiwgdHdvIGVsZW1l
bnRzIHdpdGggQ1NTIHByb3BlcnR5IHBvc2l0aW9uOmZpeGVkIGFyZSB0ZXN0ZWQ6IE9uZSB3aXRo
aW4gdGhlIGJvZHksIGFuZCBvbmUgd2l0aGluIGFuIGVsZW1lbnQgd2l0aCBDU1MgcHJvcGVydHkg
cG9zaXRpb246YWJzb2x1dGUuCisKK0ZpbmFsbHksIGEgc3RhdGljLSBhbmQgcmVsYXRpdmUtcG9z
aXRpb25lZCBlbGVtZW50IGFyZSB0ZXN0ZWQgZm9yIHNhbml0eSBhbmQgc3BlYyBhZGhlcmVuY2Uu
CisKK0V4cGVjdGVkIHZhbHVlcyBhcmUgcGFyZW50aGVzaXplZC4gVGVzdCBoYXMgcGFzc2VkIGlm
IGFsbCB2YWx1ZXMgbWF0Y2guCisKK0ZpcnN0IEZpeGVkIG9mZnNldFBhcmVudCAobnVsbCk6IG51
bGwKKworRmlyc3QgRml4ZWQgb2Zmc2V0VG9wICgxMCk6IDEwCisKK0ZpcnN0IEZpeGVkIG9mZnNl
dExlZnQgKDIwKTogMjAKKworU2Vjb25kIEZpeGVkIG9mZnNldFBhcmVudCAobnVsbCk6IG51bGwK
KworU2Vjb25kIEZpeGVkIG9mZnNldFRvcCAoMTUpOiAxNQorCitTZWNvbmQgRml4ZWQgb2Zmc2V0
TGVmdCAoMzApOiAzMAorCitCb2R5IG9mZnNldFBhcmVudCAobnVsbCk6IG51bGwKKworQm9keSBv
ZmZzZXRUb3AgKDApOiAwCisKK0JvZHkgb2Zmc2V0TGVmdCAoMCk6IDAKKworU3RhdGljIG9mZnNl
dFBhcmVudCAoW29iamVjdCBIVE1MQm9keUVsZW1lbnRdKTogW29iamVjdCBIVE1MQm9keUVsZW1l
bnRdCisKK1N0YXRpYyBvZmZzZXRUb3AgKDE1KTogMTUKKworU3RhdGljIG9mZnNldExlZnQgKDE1
KTogMTUKKworUmVsYXRpdmUgb2Zmc2V0UGFyZW50IChbb2JqZWN0IEhUTUxCb2R5RWxlbWVudF0p
OiBbb2JqZWN0IEhUTUxCb2R5RWxlbWVudF0KKworUmVsYXRpdmUgb2Zmc2V0VG9wICgxMyk6IDEz
CisKK1JlbGF0aXZlIG9mZnNldExlZnQgKDE5KTogMTkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0VsZW1lbnQvZml4ZWQtcG9zaXRpb24tb2Zmc2V0LXBhcmVudC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0VsZW1lbnQvZml4ZWQtcG9zaXRpb24tb2Zmc2V0LXBh
cmVudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9m
aXhlZC1wb3NpdGlvbi1vZmZzZXQtcGFyZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTAgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBwcmludCht
ZXNzYWdlKQorICAgIHsKKyAgICAgICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInAiKTsKKyAgICAgICAgcGFyYWdyYXBoLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNv
bnNvbGUiKS5hcHBlbmRDaGlsZChwYXJhZ3JhcGgpOworICAgIH0KKyAgICBmdW5jdGlvbiB0ZXN0
KCkKKyAgICB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgCisgICAgICAg
IHZhciBzdGF0aWsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdGljJyk7CisgICAgICAg
IHZhciByZWxhdGl2ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWxhdGl2ZScpOworICAg
ICAgICB2YXIgZmlyc3RGaXhlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaXhlZDEnKTsK
KyAgICAgICAgdmFyIHNlY29uZEZpeGVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpeGVk
MicpOworICAgICAgICB2YXIgYm9keSA9IGRvY3VtZW50LmJvZHk7CisgICAgICAgIHByaW50KCJG
aXJzdCBGaXhlZCBvZmZzZXRQYXJlbnQgKG51bGwpOiAiK2ZpcnN0Rml4ZWQub2Zmc2V0UGFyZW50
KTsKKyAgICAgICAgcHJpbnQoIkZpcnN0IEZpeGVkIG9mZnNldFRvcCAoMTApOiAiK2ZpcnN0Rml4
ZWQub2Zmc2V0VG9wKTsKKyAgICAgICAgcHJpbnQoIkZpcnN0IEZpeGVkIG9mZnNldExlZnQgKDIw
KTogIitmaXJzdEZpeGVkLm9mZnNldExlZnQpOworICAgICAgICBwcmludCgiU2Vjb25kIEZpeGVk
IG9mZnNldFBhcmVudCAobnVsbCk6ICIrc2Vjb25kRml4ZWQub2Zmc2V0UGFyZW50KTsKKyAgICAg
ICAgcHJpbnQoIlNlY29uZCBGaXhlZCBvZmZzZXRUb3AgKDE1KTogIitzZWNvbmRGaXhlZC5vZmZz
ZXRUb3ApOworICAgICAgICBwcmludCgiU2Vjb25kIEZpeGVkIG9mZnNldExlZnQgKDMwKTogIitz
ZWNvbmRGaXhlZC5vZmZzZXRMZWZ0KTsKKyAgICAgICAgcHJpbnQoIkJvZHkgb2Zmc2V0UGFyZW50
IChudWxsKTogIitib2R5Lm9mZnNldFBhcmVudCk7CisgICAgICAgIHByaW50KCJCb2R5IG9mZnNl
dFRvcCAoMCk6ICIrYm9keS5vZmZzZXRUb3ApOworICAgICAgICBwcmludCgiQm9keSBvZmZzZXRM
ZWZ0ICgwKTogIitib2R5Lm9mZnNldExlZnQpOworICAgICAgICBwcmludCgiU3RhdGljIG9mZnNl
dFBhcmVudCAoW29iamVjdCBIVE1MQm9keUVsZW1lbnRdKTogIitzdGF0aWsub2Zmc2V0UGFyZW50
KTsKKyAgICAgICAgcHJpbnQoIlN0YXRpYyBvZmZzZXRUb3AgKDE1KTogIitzdGF0aWsub2Zmc2V0
VG9wKTsKKyAgICAgICAgcHJpbnQoIlN0YXRpYyBvZmZzZXRMZWZ0ICgxNSk6ICIrc3RhdGlrLm9m
ZnNldExlZnQpOworICAgICAgICBwcmludCgiUmVsYXRpdmUgb2Zmc2V0UGFyZW50IChbb2JqZWN0
IEhUTUxCb2R5RWxlbWVudF0pOiAiK3JlbGF0aXZlLm9mZnNldFBhcmVudCk7CisgICAgICAgIHBy
aW50KCJSZWxhdGl2ZSBvZmZzZXRUb3AgKDEzKTogIityZWxhdGl2ZS5vZmZzZXRUb3ApOworICAg
ICAgICBwcmludCgiUmVsYXRpdmUgb2Zmc2V0TGVmdCAoMTkpOiAiK3JlbGF0aXZlLm9mZnNldExl
ZnQpOworICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgp
IiBzdHlsZT0ibWFyZ2luOjEwcHg7Ym9yZGVyOjVweCBzb2xpZCB3aGl0ZSI+CisgICAgPGRpdiBp
ZD0ic3RhdGljIiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCBncmVlbiI+PC9kaXY+CisgICAgPGRp
diBpZD0icmVsYXRpdmUiIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6LTRweDtsZWZ0OjRw
eDtib3JkZXI6MXB4IHNvbGlkIGJsdWUiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImZpeGVkMSIgc3R5
bGU9InBvc2l0aW9uOmZpeGVkO3RvcDoxMHB4O2xlZnQ6MjBweDtib3JkZXI6MXB4IHNvbGlkIHJl
ZCI+PC9kaXY+CisgICAgPGRpdiBpZD0iYWJzb2x1dGUiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0
ZSI+PGRpdiBpZD0iZml4ZWQyIiBzdHlsZT0icG9zaXRpb246Zml4ZWQ7dG9wOjE1cHg7bGVmdDoz
MHB4Ij48L2Rpdj48L2Rpdj4KKyAgICA8cD5UaGlzIHRlc3QgY2hlY2tzIGlmIDxjb2RlPm9mZnNl
dFBhcmVudDwvY29kZT4gaXMgYWx3YXlzIDxjb2RlPm51bGw8L2NvZGU+IHdoZW4gYWNjZXNzZWQg
ZnJvbSB0aGUgSFRNTCA8Y29kZT4mbHQ7Ym9keSZndDs8L2NvZGU+IGFuZCBmcm9tIGVsZW1lbnRz
IHdpdGggQ1NTIHByb3BlcnR5IDxjb2RlPnBvc2l0aW9uOmZpeGVkPC9jb2RlPi4gVG8gZW5zdXJl
IHZhbHVlcyBtYXRjaCBsYXlvdXQsIHRoaXMgdGVzdCBhbHNvIGNoZWNrcyA8Y29kZT5vZmZzZXRU
b3A8L2NvZGU+IGFuZCA8Y29kZT5vZmZzZXRMZWZ0PC9jb2RlPi48L3A+CisgICAgPHA+SW4gYWRk
aXRpb24gdG8gdGhlIEhUTUwgPGNvZGU+Jmx0O2JvZHkmZ3Q7PC9jb2RlPiwgdHdvIGVsZW1lbnRz
IHdpdGggQ1NTIHByb3BlcnR5IDxjb2RlPnBvc2l0aW9uOmZpeGVkPC9jb2RlPiBhcmUgdGVzdGVk
OiBPbmUgd2l0aGluIHRoZSBib2R5LCBhbmQgb25lIHdpdGhpbiBhbiBlbGVtZW50IHdpdGggQ1NT
IHByb3BlcnR5IDxjb2RlPnBvc2l0aW9uOmFic29sdXRlPC9jb2RlPi48L3A+CisgICAgPHA+Rmlu
YWxseSwgYSBzdGF0aWMtIGFuZCByZWxhdGl2ZS1wb3NpdGlvbmVkIGVsZW1lbnQgYXJlIHRlc3Rl
ZCBmb3Igc2FuaXR5IGFuZCBzcGVjIGFkaGVyZW5jZS48L3A+CisgICAgPHA+RXhwZWN0ZWQgdmFs
dWVzIGFyZSBwYXJlbnRoZXNpemVkLiBUZXN0IGhhcyBwYXNzZWQgaWYgYWxsIHZhbHVlcyBtYXRj
aC48L3A+CisgICAgPGhyPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9vZmZzZXRMZWZ0LW9m
ZnNldFRvcC1odG1sLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9FbGVtZW50L29mZnNldExlZnQtb2Zmc2V0VG9wLWh0bWwtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vRWxlbWVudC9vZmZzZXRMZWZ0LW9mZnNl
dFRvcC1odG1sLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitjb250
cm9sOiAoMCwgMCkKK3N0YXRpYzogKDEwLCAxMCkKK2Fic29sdXRlOiAoMjAsIDEwKQorIAorIAor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L29mZnNldExlZnQtb2Zmc2V0VG9w
LWh0bWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9FbGVtZW50L29m
ZnNldExlZnQtb2Zmc2V0VG9wLWh0bWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0VsZW1lbnQvb2Zmc2V0TGVmdC1vZmZzZXRUb3AtaHRtbC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUzIEBACis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQ+CisgICAg
ICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgY29u
c29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIik7CisgICAgICAgICAgICBj
b25zb2xlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAiXG4i
KSk7CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gdGVzdEZyYW1lKG5hbWUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGZyYW1lID0gZnJhbWVzW25hbWVdOworICAgICAgICAgICAgdmFyIGRv
YyA9IGZyYW1lLmRvY3VtZW50OworICAgICAgICAgICAgdmFyIHRhcmdldCA9IGRvYy5nZXRFbGVt
ZW50QnlJZCgidGFyZ2V0Iik7CisgICAgICAgICAgICBsb2cobmFtZSArICI6ICgiICsgdGFyZ2V0
Lm9mZnNldExlZnQgKyAiLCAiICsgdGFyZ2V0Lm9mZnNldFRvcCArICIpIik7CisgICAgICAgIH0K
KyAgICAgICAgZnVuY3Rpb24gdGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgICAgICB0ZXN0RnJhbWUoImNvbnRyb2wiKTsK
KyAgICAgICAgICAgIHRlc3RGcmFtZSgic3RhdGljIik7CisgICAgICAgICAgICB0ZXN0RnJhbWUo
ImFic29sdXRlIik7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgICA8c3R5bGU+CisgICAg
ICAgIGlmcmFtZSB7IGJvcmRlcjogdGhpbiBzb2xpZDsgaGVpZ2h0OiAxMDBweDsgfQorICAgIDwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0icGFkZGluZzogOXB4OyBtYXJnaW46IDEwcHgi
IG9ubG9hZD0idGVzdCgpIj4KKyAgICA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKworICAgIDxp
ZnJhbWUgbmFtZT0iY29udHJvbCIgc3JjPSdkYXRhOnRleHQvaHRtbCwKKyAgICAgICAgPGh0bWwg
aWQ9InRhcmdldCI+PC9odG1sPgorICAgICc+CisgICAgPC9pZnJhbWU+CisKKyAgICA8YnI+Cisg
ICAgPGlmcmFtZSBuYW1lPSJzdGF0aWMiIHNyYz0nZGF0YTp0ZXh0L2h0bWwsCisgICAgICAgIDxo
dG1sIGlkPSJ0YXJnZXQiIHN0eWxlPSJwYWRkaW5nOiAxMHB4OyBtYXJnaW46IDEwcHg7IGJvcmRl
cjogMTBweCBzb2xpZCBibHVlOyI+CisgICAgICAgIDwvaHRtbD4KKyAgICAnPgorICAgIDwvaWZy
YW1lPgorCisgICAgPGJyPgorCisgICAgPGlmcmFtZSBuYW1lPSJhYnNvbHV0ZSIgc3JjPSdkYXRh
OnRleHQvaHRtbCwKKyAgICAgICAgPGh0bWwgaWQ9InRhcmdldCIgc3R5bGU9InBvc2l0aW9uOiBh
YnNvbHV0ZTsgbGVmdDogMjBweDsgdG9wOiAxMHB4OyB3aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4
OyBwYWRkaW5nOiAxMHB4OyBtYXJnaW46IDBweDsgYm9yZGVyOiAxMHB4IHNvbGlkIGJsdWUiPgor
ICAgICAgICA8L2h0bWw+CisgICAgJz4KKyAgICA8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="13690"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>