<html>
<head>
<style>
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{
    margin:0;
    padding:0;
    border:0;
    outline:0;
    font-weight:inherit;
    font-style:inherit;
    font-size:100%;
    font-family:inherit;
    vertical-align:baseline
}
p{margin-top:5px;margin-bottom:10px}
a{color:#f33e1b;text-decoration:none}
span{padding-bottom:10px;height:53px;font-family:Helvetica;font-weight:300}
a.subtle{text-decoration:none;color:inherit}
.twitter_username,a.twitter_username{font-size:small;font-weight:bold;color:#555; text-decoration:none}
.tweet_text_big a.very_subtle{visibility:hidden;text-decoration:none}
.tweet_text_big{width:600px;margin-bottom:5px;left:160px;float:left}
.tweet_subtext{display:block;margin-top:3px;padding-bottom:4px;font-size:small;color:#666}
.tweet_subtext span.favoriteers-header{float:left;display:block;margin-top:8px;padding-top:8px;padding-right:5px}
</style>
</head>
<body style="font-family: 'Helvetica'">
<p>This is the test case for bug <a href="<rdar://problem/7615758>">7615758</a></p>
<p class="tweet_text_big">
    
    Guys, is it okay that I kinda hate the obsequious rhetorical questions people ask when they want to sound like a wry, world-weary populist?
    <br>
    <span class="tweet_subtext">
        by <a href="http://twitter.com/hotdogsladies" class="twitter_username">hotdogsladies</a> (Merlin Mann),
        <a href="http://twitter.com/hotdogsladies/status/8639030323" class="subtle">11 hours, 31 minutes ago</a>.
        <a href="/tweet/8639030323" title="Permalink" class="very_subtle">¶</a>
        <br>
        <span class="favoriteers-header">Favorited by</span>
    </span>
    </p>
</body>
<script>
    if (window.testRunner)
        testRunner.dumpAsText();

    document.execCommand("FindString", false, "populist");
    var sel = getSelection();
    sel.modify("extend", "forward", "line");
    sel.modify("extend", "forward", "line");
    document.write("PASS");
    sel.modify("extend", "backward", "line");
    document.write("PASS");
</script>
</html>
