summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorFiveFilters.org <[email protected]>2021-08-11 23:46:14 +0200
committerFiveFilters.org <[email protected]>2021-08-11 23:46:14 +0200
commit618a3c5a2c7e15efc7957dcb8c5da62526681dbc (patch)
treea41461fe6604e03b626fb3af5ee76b25c6d5ba71 /test
parent70287db73ace7e97dd4367f30208a792f4bafb63 (diff)
Update test pages to use HTML5PHP output as expected output
Diffstat (limited to 'test')
-rw-r--r--test/test-pages/001/expected.html18
-rw-r--r--test/test-pages/002/expected.html163
-rw-r--r--test/test-pages/aclu/expected.html2
-rw-r--r--test/test-pages/ars-1/expected.html10
-rw-r--r--test/test-pages/base-url-base-element-relative/expected.html11
-rw-r--r--test/test-pages/base-url-base-element/expected.html11
-rw-r--r--test/test-pages/base-url/expected.html11
-rw-r--r--test/test-pages/bbc-1/expected.html11
-rw-r--r--test/test-pages/blogger/expected.html63
-rw-r--r--test/test-pages/breitbart/expected.html14
-rw-r--r--test/test-pages/bug-1255978/expected.html24
-rw-r--r--test/test-pages/buzzfeed-1/expected.html5
-rw-r--r--test/test-pages/clean-links/expected.html10
-rw-r--r--test/test-pages/cnet-svg-classes/expected-metadata.json4
-rw-r--r--test/test-pages/cnet-svg-classes/expected.html22
-rw-r--r--test/test-pages/cnet/expected-metadata.json4
-rw-r--r--test/test-pages/cnet/expected.html17
-rw-r--r--test/test-pages/cnn/expected.html7
-rw-r--r--test/test-pages/daringfireball-1/expected.html21
-rw-r--r--test/test-pages/different-sources-for-images/expected.html11
-rw-r--r--test/test-pages/ehow-1/expected.html62
-rw-r--r--test/test-pages/ehow-2/expected.html104
-rw-r--r--test/test-pages/embedded-videos/expected.html11
-rw-r--r--test/test-pages/engadget/expected.html114
-rw-r--r--test/test-pages/fortressofsolitude/expected-metadata.json2
-rw-r--r--test/test-pages/fortressofsolitude/expected.html2
-rw-r--r--test/test-pages/gmw/expected.html8
-rw-r--r--test/test-pages/heise/expected.html26
-rw-r--r--test/test-pages/herald-sun-1/expected.html3
-rw-r--r--test/test-pages/hukumusume/expected.html47
-rw-r--r--test/test-pages/iab-1/expected.html11
-rw-r--r--test/test-pages/ietf-1/expected.html139
-rw-r--r--test/test-pages/infobae/expected.html2
-rw-r--r--test/test-pages/keep-images/expected.html266
-rw-r--r--test/test-pages/la-nacion/expected.html19
-rw-r--r--test/test-pages/lemonde-1/expected-metadata.json2
-rw-r--r--test/test-pages/lemonde-1/expected.html39
-rw-r--r--test/test-pages/lemonde-2/expected-metadata.json2
-rw-r--r--test/test-pages/lemonde-2/expected.html17
-rw-r--r--test/test-pages/liberation-1/expected-metadata.json2
-rw-r--r--test/test-pages/liberation-1/expected.html23
-rw-r--r--test/test-pages/lifehacker-post-comment-load/expected.html211
-rw-r--r--test/test-pages/lifehacker-working/expected.html211
-rw-r--r--test/test-pages/links-in-tables/expected-metadata.json2
-rw-r--r--test/test-pages/links-in-tables/expected.html29
-rw-r--r--test/test-pages/lwn-1/expected.html439
-rw-r--r--test/test-pages/marketwatch/expected.html2
-rw-r--r--test/test-pages/medium-1/expected.html230
-rw-r--r--test/test-pages/medium-2/expected.html2
-rw-r--r--test/test-pages/medium-3/expected.html431
-rw-r--r--test/test-pages/mozilla-1/expected.html68
-rw-r--r--test/test-pages/mozilla-2/expected.html54
-rw-r--r--test/test-pages/msn/expected.html14
-rw-r--r--test/test-pages/nytimes-1/expected.html19
-rw-r--r--test/test-pages/nytimes-2/expected.html16
-rw-r--r--test/test-pages/pixnet/expected.html106
-rw-r--r--test/test-pages/reordering-paragraphs/expected.html4
-rw-r--r--test/test-pages/replace-brs/expected.html14
-rw-r--r--test/test-pages/salon-1/expected.html4
-rw-r--r--test/test-pages/simplyfound-1/expected.html8
-rw-r--r--test/test-pages/svg-parsing/expected.html8
-rw-r--r--test/test-pages/table-style-attributes/expected.html56
-rw-r--r--test/test-pages/telegraph/expected-metadata.json2
-rw-r--r--test/test-pages/tmz-1/expected.html13
-rw-r--r--test/test-pages/tumblr/expected.html2
-rw-r--r--test/test-pages/uses-getfirstelementchild-function/expected.html155
-rw-r--r--test/test-pages/wapo-1/expected.html5
-rw-r--r--test/test-pages/wapo-2/expected.html8
-rw-r--r--test/test-pages/webmd-2/expected.html9
-rw-r--r--test/test-pages/wikia/expected.html25
-rw-r--r--test/test-pages/wikipedia/expected.html205
-rw-r--r--test/test-pages/wordpress/expected.html20
-rw-r--r--test/test-pages/yahoo-1/expected.html76
-rw-r--r--test/test-pages/yahoo-2/expected.html3
-rw-r--r--test/test-pages/yahoo-3/expected-metadata.json2
-rw-r--r--test/test-pages/yahoo-3/expected.html36
-rw-r--r--test/test-pages/yahoo-4/expected-metadata.json2
-rw-r--r--test/test-pages/youth/expected.html6
78 files changed, 2528 insertions, 1309 deletions
diff --git a/test/test-pages/001/expected.html b/test/test-pages/001/expected.html
index e05810f..0998436 100644
--- a/test/test-pages/001/expected.html
+++ b/test/test-pages/001/expected.html
@@ -1,4 +1,5 @@
-<section><p><strong>So finally you're <a href="http://fakehost/code/2013/testing-frontend-javascript-code-using-mocha-chai-and-sinon/">testing your frontend JavaScript code</a>? Great! The more you
+<section>
+ <p><strong>So finally you're <a href="http://fakehost/code/2013/testing-frontend-javascript-code-using-mocha-chai-and-sinon/">testing your frontend JavaScript code</a>? Great! The more you
write tests, the more confident you are with your code… but how much precisely?
That's where <a href="http://en.wikipedia.org/wiki/Code_coverage">code coverage</a> might
help.</strong>
@@ -15,9 +16,9 @@ help.</strong>
actually works…</p>
<blockquote>
<p>Drinking game for web devs:
- <br></br>(1) Think of a noun
- <br></br>(2) Google "&lt;noun&gt;.js"
- <br></br>(3) If a library with that name exists - drink</p>— Shay Friedman (@ironshay)
+ <br>(1) Think of a noun
+ <br>(2) Google "&lt;noun&gt;.js"
+ <br>(3) If a library with that name exists - drink</p>— Shay Friedman (@ironshay)
<a href="https://twitter.com/ironshay/statuses/370525864523743232">August 22, 2013</a>
</blockquote>
<p><strong><a href="http://blanketjs.org/">Blanket.js</a></strong> is an <em>easy to install, easy to configure,
@@ -105,13 +106,16 @@ describe("Cow", function() {
</code></pre>
<p><strong>Notes</strong>:</p>
- <ul><li>Notice the <code>data-cover</code> attribute we added to the script tag
+ <ul>
+ <li>Notice the <code>data-cover</code> attribute we added to the script tag
loading the source of our library;</li>
<li>The HTML test file <em>must</em> be served over HTTP for the adapter to
be loaded.</li>
- </ul><p>Running the tests now gives us something like this:</p>
+ </ul>
+ <p>Running the tests now gives us something like this:</p>
<p>
- <img alt="screenshot" src="http://fakehost/static/code/2013/blanket-coverage.png"></img></p>
+ <img alt="screenshot" src="http://fakehost/static/code/2013/blanket-coverage.png">
+ </p>
<p>As you can see, the report at the bottom highlights that we haven't actually
tested the case where an error is raised in case a target name is missing.
We've been informed of that, nothing more, nothing less. We simply know
diff --git a/test/test-pages/002/expected.html b/test/test-pages/002/expected.html
index 0525100..301628c 100644
--- a/test/test-pages/002/expected.html
+++ b/test/test-pages/002/expected.html
@@ -1,4 +1,6 @@
-<div id="content-main"><article role="article"><p>For more than a decade the Web has used XMLHttpRequest (XHR) to achieve
+<div id="content-main">
+ <article role="article">
+ <p>For more than a decade the Web has used XMLHttpRequest (XHR) to achieve
asynchronous requests in JavaScript. While very useful, XHR is not a very
nice API. It suffers from lack of separation of concerns. The input, output
and state are all managed by interacting with one object, and state is
@@ -13,10 +15,12 @@
<p>The <a href="https://fetch.spec.whatwg.org">Fetch specification</a>, which
defines the API, nails down the semantics of a user agent fetching a resource.
This, combined with ServiceWorkers, is an attempt to:</p>
- <ol><li>Improve the offline experience.</li>
+ <ol>
+ <li>Improve the offline experience.</li>
<li>Expose the building blocks of the Web to the platform as part of the
<a href="https://extensiblewebmanifesto.org/">extensible web movement</a>.</li>
- </ol><p>As of this writing, the Fetch API is available in Firefox 39 (currently
+ </ol>
+ <p>As of this writing, the Fetch API is available in Firefox 39 (currently
Nightly) and Chrome 42 (currently dev). Github has a <a href="https://github.com/github/fetch">Fetch polyfill</a>.</p>
<h2>Feature detection</h2>
@@ -42,7 +46,8 @@
<span>}</span><span>,</span> <span>function</span><span>(</span>e<span>)</span> <span>{</span>
console.<span>log</span><span>(</span><span>"Fetch failed!"</span><span>,</span> e<span>)</span><span>;</span>
<span>}</span><span>)</span><span>;</span></pre>
- </div></div>
+ </div>
+ </div>
<p>Submitting some parameters, it would look like this:</p>
<div>
<div><pre>fetch<span>(</span><span>"http://www.example.org/submit.php"</span><span>,</span> <span>{</span>
@@ -60,20 +65,23 @@
<span>}</span><span>,</span> <span>function</span><span>(</span>e<span>)</span> <span>{</span>
alert<span>(</span><span>"Error submitting form!"</span><span>)</span><span>;</span>
<span>}</span><span>)</span><span>;</span></pre>
- </div></div>
+ </div>
+ </div>
<p>The <code>fetch()</code> function’s arguments are the same as those passed
to the
- <br></br><code>Request()</code> constructor, so you may directly pass arbitrarily
+ <br>
+<code>Request()</code> constructor, so you may directly pass arbitrarily
complex requests to <code>fetch()</code> as discussed below.</p>
<h2>Headers</h2>
<p>Fetch introduces 3 interfaces. These are <code>Headers</code>, <code>Request</code> and
- <br></br><code>Response</code>. They map directly to the underlying HTTP concepts,
+ <br>
+<code>Response</code>. They map directly to the underlying HTTP concepts,
but have
- <br></br>certain visibility filters in place for privacy and security reasons,
+ <br>certain visibility filters in place for privacy and security reasons,
such as
- <br></br>supporting CORS rules and ensuring cookies aren’t readable by third parties.</p>
+ <br>supporting CORS rules and ensuring cookies aren’t readable by third parties.</p>
<p>The <a href="https://fetch.spec.whatwg.org/#headers-class">Headers interface</a> is
a simple multi-map of names to values:</p>
<div>
@@ -82,48 +90,53 @@
reqHeaders.<span>append</span><span>(</span><span>"Content-Type"</span><span>,</span> <span>"text/plain"</span>
reqHeaders.<span>append</span><span>(</span><span>"Content-Length"</span><span>,</span> content.<span>length</span>.<span>toString</span><span>(</span><span>)</span><span>)</span><span>;</span>
reqHeaders.<span>append</span><span>(</span><span>"X-Custom-Header"</span><span>,</span> <span>"ProcessThisImmediately"</span><span>)</span><span>;</span></pre>
- </div></div>
+ </div>
+ </div>
<p>The same can be achieved by passing an array of arrays or a JS object
literal
- <br></br>to the constructor:</p>
+ <br>to the constructor:</p>
<div>
<div><pre>reqHeaders <span>=</span> <span>new</span> Headers<span>(</span><span>{</span>
<span>"Content-Type"</span><span>:</span> <span>"text/plain"</span><span>,</span>
<span>"Content-Length"</span><span>:</span> content.<span>length</span>.<span>toString</span><span>(</span><span>)</span><span>,</span>
<span>"X-Custom-Header"</span><span>:</span> <span>"ProcessThisImmediately"</span><span>,</span>
<span>}</span><span>)</span><span>;</span></pre>
- </div></div>
+ </div>
+ </div>
<p>The contents can be queried and retrieved:</p>
<div>
<div><pre>console.<span>log</span><span>(</span>reqHeaders.<span>has</span><span>(</span><span>"Content-Type"</span><span>)</span><span>)</span><span>;</span> <span>// true</span>
console.<span>log</span><span>(</span>reqHeaders.<span>has</span><span>(</span><span>"Set-Cookie"</span><span>)</span><span>)</span><span>;</span> <span>// false</span>
reqHeaders.<span>set</span><span>(</span><span>"Content-Type"</span><span>,</span> <span>"text/html"</span><span>)</span><span>;</span>
reqHeaders.<span>append</span><span>(</span><span>"X-Custom-Header"</span><span>,</span> <span>"AnotherValue"</span><span>)</span><span>;</span>
+&nbsp;
console.<span>log</span><span>(</span>reqHeaders.<span>get</span><span>(</span><span>"Content-Length"</span><span>)</span><span>)</span><span>;</span> <span>// 11</span>
console.<span>log</span><span>(</span>reqHeaders.<span>getAll</span><span>(</span><span>"X-Custom-Header"</span><span>)</span><span>)</span><span>;</span> <span>// ["ProcessThisImmediately", "AnotherValue"]</span>
+&nbsp;
reqHeaders.<span>delete</span><span>(</span><span>"X-Custom-Header"</span><span>)</span><span>;</span>
console.<span>log</span><span>(</span>reqHeaders.<span>getAll</span><span>(</span><span>"X-Custom-Header"</span><span>)</span><span>)</span><span>;</span> <span>// []</span></pre>
- </div></div>
+ </div>
+ </div>
<p>Some of these operations are only useful in ServiceWorkers, but they provide
- <br></br>a much nicer API to Headers.</p>
+ <br>a much nicer API to Headers.</p>
<p>Since Headers can be sent in requests, or received in responses, and have
various limitations about what information can and should be mutable, <code>Headers</code> objects
have a <strong>guard</strong> property. This is not exposed to the Web, but
it affects which mutation operations are allowed on the Headers object.
- <br></br>Possible values are:</p>
- <ul><li>“none”: default.</li>
+ <br>Possible values are:</p>
+ <ul>
+ <li>“none”: default.</li>
<li>“request”: guard for a Headers object obtained from a Request (<code>Request.headers</code>).</li>
<li>“request-no-cors”: guard for a Headers object obtained from a Request
created
- <br></br>with mode “no-cors”.</li>
+ <br>with mode “no-cors”.</li>
<li>“response”: naturally, for Headers obtained from Response (<code>Response.headers</code>).</li>
<li>“immutable”: Mostly used for ServiceWorkers, renders a Headers object
- <br></br>read-only.</li>
- </ul><p>The details of how each guard affects the behaviors of the Headers object
+ <br>read-only.</li>
+ </ul>
+ <p>The details of how each guard affects the behaviors of the Headers object
are
- <br></br>in the <a href="https://fetch.spec.whatwg.org">specification</a>. For example,
+ <br>in the <a href="https://fetch.spec.whatwg.org">specification</a>. For example,
you may not append or set a “request” guarded Headers’ “Content-Length”
header. Similarly, inserting “Set-Cookie” into a Response header is not
allowed so that ServiceWorkers may not set cookies via synthesized Responses.</p>
@@ -137,7 +150,8 @@ console.<span>log</span><span>(</span>reqHeaders.<span>getAll</span><span>(</spa
<span>}</span> <span>catch</span><span>(</span>e<span>)</span> <span>{</span>
console.<span>log</span><span>(</span><span>"Cannot pretend to be a bank!"</span><span>)</span><span>;</span>
<span>}</span></pre>
- </div></div>
+ </div>
+ </div>
<h2>Request</h2>
@@ -150,21 +164,23 @@ console.<span>log</span><span>(</span>reqHeaders.<span>getAll</span><span>(</spa
<div><pre><span>var</span> req <span>=</span> <span>new</span> Request<span>(</span><span>"/index.html"</span><span>)</span><span>;</span>
console.<span>log</span><span>(</span>req.<span>method</span><span>)</span><span>;</span> <span>// "GET"</span>
console.<span>log</span><span>(</span>req.<span>url</span><span>)</span><span>;</span> <span>// "http://example.com/index.html"</span></pre>
- </div></div>
+ </div>
+ </div>
<p>You may also pass a Request to the <code>Request()</code> constructor to
create a copy.
- <br></br>(This is not the same as calling the <code>clone()</code> method, which
+ <br>(This is not the same as calling the <code>clone()</code> method, which
is covered in
- <br></br>the “Reading bodies” section.).</p>
+ <br>the “Reading bodies” section.).</p>
<div>
<div><pre><span>var</span> copy <span>=</span> <span>new</span> Request<span>(</span>req<span>)</span><span>;</span>
console.<span>log</span><span>(</span>copy.<span>method</span><span>)</span><span>;</span> <span>// "GET"</span>
console.<span>log</span><span>(</span>copy.<span>url</span><span>)</span><span>;</span> <span>// "http://example.com/index.html"</span></pre>
- </div></div>
+ </div>
+ </div>
<p>Again, this form is probably only useful in ServiceWorkers.</p>
<p>The non-URL attributes of the <code>Request</code> can only be set by passing
initial
- <br></br>values as a second argument to the constructor. This argument is a dictionary.</p>
+ <br>values as a second argument to the constructor. This argument is a dictionary.</p>
<div>
<div><pre><span>var</span> uploadReq <span>=</span> <span>new</span> Request<span>(</span><span>"/uploadImage"</span><span>,</span> <span>{</span>
method<span>:</span> <span>"POST"</span><span>,</span>
@@ -173,7 +189,8 @@ console.<span>log</span><span>(</span>copy.<span>url</span><span>)</span><span>;
<span>}</span><span>,</span>
body<span>:</span> <span>"image data"</span>
<span>}</span><span>)</span><span>;</span></pre>
- </div></div>
+ </div>
+ </div>
<p>The Request’s mode is used to determine if cross-origin requests lead
to valid responses, and which properties on the response are readable.
Legal mode values are <code>"same-origin"</code>, <code>"no-cors"</code> (default)
@@ -181,7 +198,7 @@ console.<span>log</span><span>(</span>copy.<span>url</span><span>)</span><span>;
<p>The <code>"same-origin"</code> mode is simple, if a request is made to another
origin with this mode set, the result is simply an error. You could use
this to ensure that
- <br></br>a request is always being made to your origin.</p>
+ <br>a request is always being made to your origin.</p>
<div>
<div><pre><span>var</span> arbitraryUrl <span>=</span> document.<span>getElementById</span><span>(</span><span>"url-input"</span><span>)</span>.<span>value</span><span>;</span>
fetch<span>(</span>arbitraryUrl<span>,</span> <span>{</span> mode<span>:</span> <span>"same-origin"</span> <span>}</span><span>)</span>.<span>then</span><span>(</span><span>function</span><span>(</span>res<span>)</span> <span>{</span>
@@ -189,7 +206,8 @@ fetch<span>(</span>arbitraryUrl<span>,</span> <span>{</span> mode<span>:</span>
<span>}</span><span>,</span> <span>function</span><span>(</span>e<span>)</span> <span>{</span>
console.<span>log</span><span>(</span><span>"Please enter a same-origin URL!"</span><span>)</span><span>;</span>
<span>}</span><span>)</span><span>;</span></pre>
- </div></div>
+ </div>
+ </div>
<p>The <code>"no-cors"</code> mode captures what the web platform does by default
for scripts you import from CDNs, images hosted on other domains, and so
on. First, it prevents the method from being anything other than “HEAD”,
@@ -202,7 +220,7 @@ fetch<span>(</span>arbitraryUrl<span>,</span> <span>{</span> mode<span>:</span>
<p><code>"cors"</code> mode is what you’ll usually use to make known cross-origin
requests to access various APIs offered by other vendors. These are expected
to adhere to
- <br></br>the <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS">CORS protocol</a>.
+ <br>the <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS">CORS protocol</a>.
Only a <a href="https://fetch.spec.whatwg.org/#concept-filtered-response-cors">limited set</a> of
headers is exposed in the Response, but the body is readable. For example,
you could get a list of Flickr’s <a href="https://www.flickr.com/services/api/flickr.interestingness.getList.html">most interesting</a> photos
@@ -213,9 +231,9 @@ u.<span>append</span><span>(</span><span>'method'</span><span>,</span> <span>'fl
u.<span>append</span><span>(</span><span>'api_key'</span><span>,</span> <span>'&lt;insert api key here&gt;'</span><span>)</span><span>;</span>
u.<span>append</span><span>(</span><span>'format'</span><span>,</span> <span>'json'</span><span>)</span><span>;</span>
u.<span>append</span><span>(</span><span>'nojsoncallback'</span><span>,</span> <span>'1'</span><span>)</span><span>;</span>
+&nbsp;
<span>var</span> apiCall <span>=</span> fetch<span>(</span><span>'https://api.flickr.com/services/rest?'</span> <span>+</span> u<span>)</span><span>;</span>
+&nbsp;
apiCall.<span>then</span><span>(</span><span>function</span><span>(</span>response<span>)</span> <span>{</span>
<span>return</span> response.<span>json</span><span>(</span><span>)</span>.<span>then</span><span>(</span><span>function</span><span>(</span>json<span>)</span> <span>{</span>
<span>// photo is a list of photos.</span>
@@ -226,25 +244,29 @@ apiCall.<span>then</span><span>(</span><span>function</span><span>(</span>respon
console.<span>log</span><span>(</span>photo.<span>title</span><span>)</span><span>;</span>
<span>}</span><span>)</span><span>;</span>
<span>}</span><span>)</span><span>;</span></pre>
- </div></div>
+ </div>
+ </div>
<p>You may not read out the “Date” header since Flickr does not allow it
via
- <br></br><code>Access-Control-Expose-Headers</code>.</p>
+ <br>
+<code>Access-Control-Expose-Headers</code>.</p>
<div>
<div><pre>response.<span>headers</span>.<span>get</span><span>(</span><span>"Date"</span><span>)</span><span>;</span> <span>// null</span></pre>
- </div></div>
+ </div>
+ </div>
<p>The <code>credentials</code> enumeration determines if cookies for the other
domain are
- <br></br>sent to cross-origin requests. This is similar to XHR’s <code>withCredentials</code>
- <br></br>flag, but tri-valued as <code>"omit"</code> (default), <code>"same-origin"</code> and <code>"include"</code>.</p>
+ <br>sent to cross-origin requests. This is similar to XHR’s <code>withCredentials</code>
+ <br>flag, but tri-valued as <code>"omit"</code> (default), <code>"same-origin"</code> and <code>"include"</code>.</p>
<p>The Request object will also give the ability to offer caching hints to
the user-agent. This is currently undergoing some <a href="https://github.com/slightlyoff/ServiceWorker/issues/585">security review</a>.
Firefox exposes the attribute, but it has no effect.</p>
<p>Requests have two read-only attributes that are relevant to ServiceWorkers
- <br></br>intercepting them. There is the string <code>referrer</code>, which is
+ <br>intercepting them. There is the string <code>referrer</code>, which is
set by the UA to be
- <br></br>the referrer of the Request. This may be an empty string. The other is
- <br></br><code>context</code> which is a rather <a href="https://fetch.spec.whatwg.org/#requestcredentials">large enumeration</a> defining
+ <br>the referrer of the Request. This may be an empty string. The other is
+ <br>
+<code>context</code> which is a rather <a href="https://fetch.spec.whatwg.org/#requestcredentials">large enumeration</a> defining
what sort of resource is being fetched. This could be “image” if the request
is from an
&lt;img&gt;tag in the controlled document, “worker” if it is an attempt to load a
@@ -265,24 +287,26 @@ apiCall.<span>then</span><span>(</span><span>function</span><span>(</span>respon
The <code>url</code> attribute reflects the URL of the corresponding request.</p>
<p>Response also has a <code>type</code>, which is “basic”, “cors”, “default”,
“error” or
- <br></br>“opaque”.</p>
- <ul><li><code>"basic"</code>: normal, same origin response, with all headers exposed
+ <br>“opaque”.</p>
+ <ul>
+ <li><code>"basic"</code>: normal, same origin response, with all headers exposed
except
- <br></br>“Set-Cookie” and “Set-Cookie2″.</li>
+ <br>“Set-Cookie” and “Set-Cookie2″.</li>
<li><code>"cors"</code>: response was received from a valid cross-origin request.
<a href="https://fetch.spec.whatwg.org/#concept-filtered-response-cors">Certain headers and the body</a>may be accessed.</li>
<li><code>"error"</code>: network error. No useful information describing
the error is available. The Response’s status is 0, headers are empty and
immutable. This is the type for a Response obtained from <code>Response.error()</code>.</li>
<li><code>"opaque"</code>: response for “no-cors” request to cross-origin
- resource. <a href="https://fetch.spec.whatwg.org/#concept-filtered-response-opaque">Severely<br></br>
+ resource. <a href="https://fetch.spec.whatwg.org/#concept-filtered-response-opaque">Severely<br>
restricted</a>
</li>
- </ul><p>The “error” type results in the <code>fetch()</code> Promise rejecting with
+ </ul>
+ <p>The “error” type results in the <code>fetch()</code> Promise rejecting with
TypeError.</p>
<p>There are certain attributes that are useful only in a ServiceWorker scope.
The
- <br></br>idiomatic way to return a Response to an intercepted request in ServiceWorkers
+ <br>idiomatic way to return a Response to an intercepted request in ServiceWorkers
is:</p>
<div>
<div><pre>addEventListener<span>(</span><span>'fetch'</span><span>,</span> <span>function</span><span>(</span>event<span>)</span> <span>{</span>
@@ -290,14 +314,15 @@ apiCall.<span>then</span><span>(</span><span>function</span><span>(</span>respon
headers<span>:</span> <span>{</span> <span>"Content-Type"</span> <span>:</span> <span>"text/plain"</span> <span>}</span>
<span>}</span><span>)</span><span>;</span>
<span>}</span><span>)</span><span>;</span></pre>
- </div></div>
+ </div>
+ </div>
<p>As you can see, Response has a two argument constructor, where both arguments
are optional. The first argument is a body initializer, and the second
is a dictionary to set the <code>status</code>, <code>statusText</code> and <code>headers</code>.</p>
<p>The static method <code>Response.error()</code> simply returns an error
response. Similarly, <code>Response.redirect(url, status)</code> returns
a Response resulting in
- <br></br>a redirect to <code>url</code>.</p>
+ <br>a redirect to <code>url</code>.</p>
<h2>Dealing with bodies</h2>
@@ -305,7 +330,8 @@ apiCall.<span>then</span><span>(</span><span>function</span><span>(</span>respon
over it because of the various data types body may contain, but we will
cover it in detail now.</p>
<p>A body is an instance of any of the following types.</p>
- <ul><li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer">ArrayBuffer</a>
+ <ul>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer">ArrayBuffer</a>
</li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView">ArrayBufferView</a> (Uint8Array
and friends)</li>
@@ -318,10 +344,12 @@ apiCall.<span>then</span><span>(</span><span>function</span><span>(</span>respon
<li><a href="https://developer.mozilla.org/en-US/docs/Web/API/FormData">FormData</a> –
currently not supported by either Gecko or Blink. Firefox expects to ship
this in version 39 along with the rest of Fetch.</li>
- </ul><p>In addition, Request and Response both offer the following methods to
+ </ul>
+ <p>In addition, Request and Response both offer the following methods to
extract their body. These all return a Promise that is eventually resolved
with the actual content.</p>
- <ul><li><code>arrayBuffer()</code>
+ <ul>
+ <li><code>arrayBuffer()</code>
</li>
<li><code>blob()</code>
</li>
@@ -331,7 +359,8 @@ apiCall.<span>then</span><span>(</span><span>function</span><span>(</span>respon
</li>
<li><code>formData()</code>
</li>
- </ul><p>This is a significant improvement over XHR in terms of ease of use of
+ </ul>
+ <p>This is a significant improvement over XHR in terms of ease of use of
non-text data!</p>
<p>Request bodies can be set by passing <code>body</code> parameters:</p>
<div>
@@ -340,12 +369,14 @@ fetch<span>(</span><span>"/login"</span><span>,</span> <span>{</span>
method<span>:</span> <span>"POST"</span><span>,</span>
body<span>:</span> form
<span>}</span><span>)</span></pre>
- </div></div>
+ </div>
+ </div>
<p>Responses take the first argument as the body.</p>
<div>
<div><pre><span>var</span> res <span>=</span> <span>new</span> Response<span>(</span><span>new</span> File<span>(</span><span>[</span><span>"chunk"</span><span>,</span> <span>"chunk"</span><span>]</span><span>,</span> <span>"archive.zip"</span><span>,</span>
<span>{</span> type<span>:</span> <span>"application/zip"</span> <span>}</span><span>)</span><span>)</span><span>;</span></pre>
- </div></div>
+ </div>
+ </div>
<p>Both Request and Response (and by extension the <code>fetch()</code> function),
will try to intelligently <a href="https://fetch.spec.whatwg.org/#concept-bodyinit-extract">determine the content type</a>.
Request will also automatically set a “Content-Type” header if none is
@@ -363,11 +394,12 @@ res.<span>text</span><span>(</span><span>)</span>.<span>then</span><span>(</span
console.<span>log</span><span>(</span>res.<span>bodyUsed</span><span>)</span><span>;</span> <span>// true</span>
<span>}</span><span>)</span><span>;</span>
console.<span>log</span><span>(</span>res.<span>bodyUsed</span><span>)</span><span>;</span> <span>// true</span>
+&nbsp;
res.<span>text</span><span>(</span><span>)</span>.<span>catch</span><span>(</span><span>function</span><span>(</span>e<span>)</span> <span>{</span>
console.<span>log</span><span>(</span><span>"Tried to read already consumed Response"</span><span>)</span><span>;</span>
<span>}</span><span>)</span><span>;</span></pre>
- </div></div>
+ </div>
+ </div>
<p>This decision allows easing the transition to an eventual <a href="https://streams.spec.whatwg.org/">stream-based</a> Fetch
API. The intention is to let applications consume data as it arrives, allowing
for JavaScript to deal with larger files like videos, and perform things
@@ -387,16 +419,17 @@ res.<span>text</span><span>(</span><span>)</span>.<span>catch</span><span>(</spa
console.<span>log</span><span>(</span>sheep.<span>bodyUsed</span><span>)</span><span>;</span> <span>// false</span>
<span>var</span> clone <span>=</span> sheep.<span>clone</span><span>(</span><span>)</span><span>;</span>
console.<span>log</span><span>(</span>clone.<span>bodyUsed</span><span>)</span><span>;</span> <span>// false</span>
+&nbsp;
clone.<span>text</span><span>(</span><span>)</span><span>;</span>
console.<span>log</span><span>(</span>sheep.<span>bodyUsed</span><span>)</span><span>;</span> <span>// false</span>
console.<span>log</span><span>(</span>clone.<span>bodyUsed</span><span>)</span><span>;</span> <span>// true</span>
+&nbsp;
evt.<span>respondWith</span><span>(</span>cache.<span>add</span><span>(</span>sheep.<span>clone</span><span>(</span><span>)</span><span>)</span>.<span>then</span><span>(</span><span>function</span><span>(</span>e<span>)</span> <span>{</span>
<span>return</span> sheep<span>;</span>
<span>}</span><span>)</span><span>;</span>
<span>}</span><span>)</span><span>;</span></pre>
- </div></div>
+ </div>
+ </div>
<h2>Future improvements</h2>
@@ -409,7 +442,11 @@ res.<span>text</span><span>(</span><span>)</span>.<span>catch</span><span>(</spa
in the issues in the <a href="https://www.w3.org/Bugs/Public/buglist.cgi?product=WHATWG&amp;component=Fetch&amp;resolution=---">Fetch</a> and
<a href="https://github.com/slightlyoff/ServiceWorker/issues">ServiceWorker</a>specifications.</p>
<p>For a better web!</p>
- <p><em>The author would like to thank Andrea Marchesini, Anne van Kesteren and Ben<br></br>
+ <p><em>The author would like to thank Andrea Marchesini, Anne van Kesteren and Ben<br>
Kelly for helping with the specification and implementation.</em>
</p>
- </article></div> \ No newline at end of file
+
+ </article>
+
+
+ </div> \ No newline at end of file
diff --git a/test/test-pages/aclu/expected.html b/test/test-pages/aclu/expected.html
index 1580143..8efcda5 100644
--- a/test/test-pages/aclu/expected.html
+++ b/test/test-pages/aclu/expected.html
@@ -107,7 +107,7 @@
<strong>Opting out?</strong>
</h3>
<p>
- Some advertisers claim that you can "opt out" of their targeted advertising, and even offer <a href="http://optout.aboutads.info/">a centralized place meant to help you do so</a>. However, my experience with these tools isn't a positive one. They don't appear to work all of the time. (In a recent experiment I conducted, two advertisers’ opt-out mechanisms failed to take effect.) And while advertisers claim to allow the user to opt out of "interest-based ads," it's not clear that the opt-outs govern data collection itself, rather than just the use of the collected data for displaying ads. Moreover, opting out on their terms requires the use of third-party cookies, thereby enabling another mechanism that other advertisers can then exploit.
+ Some advertisers claim that you can "opt out" of their targeted advertising, and even offer <a href="http://optout.aboutads.info/">a centralized place meant to help you do so</a>.&nbsp;However, my experience with these tools isn't a positive one. They don't appear to work all of the time. (In a recent experiment I conducted, two advertisers’ opt-out mechanisms failed to take effect.) And while advertisers claim to allow the user to opt out of "interest-based ads," it's not clear that the opt-outs govern data collection itself, rather than just the use of the collected data for displaying ads. Moreover, opting out on their terms requires the use of third-party cookies, thereby enabling another mechanism that other advertisers can then exploit.
</p>
<p>
It's also not clear how they function over time: How frequently do I need to take these steps? Do they expire? How often should I check back to make sure I’m still opted out? I'd much prefer an approach requiring me to opt <em>in</em> to surveillance and targeting.
diff --git a/test/test-pages/ars-1/expected.html b/test/test-pages/ars-1/expected.html
index 0aecf6e..30ab17d 100644
--- a/test/test-pages/ars-1/expected.html
+++ b/test/test-pages/ars-1/expected.html
@@ -1,6 +1,12 @@
<div itemprop="articleBody">
- <figure><img height="331" src="http://cdn.arstechnica.net/wp-content/uploads/2015/04/server-crash-640x426.jpg" width="640"></img><figcaption>
- </figcaption></figure><p>A flaw in the wildly popular online game <em>Minecraft</em> makes it easy for just about anyone to crash the server hosting the game, according to a computer programmer who has released proof-of-concept code that exploits the vulnerability.</p>
+ <figure> <img src="http://cdn.arstechnica.net/wp-content/uploads/2015/04/server-crash-640x426.jpg" width="640" height="331">
+ <figcaption>
+
+ </figcaption>
+ </figure>
+
+
+ <p>A flaw in the wildly popular online game <em>Minecraft</em> makes it easy for just about anyone to crash the server hosting the game, according to a computer programmer who has released proof-of-concept code that exploits the vulnerability.</p>
<p>"I thought a lot before writing this post," Pakistan-based developer Ammar Askar wrote in a <a href="http://blog.ammaraskar.com/minecraft-vulnerability-advisory">blog post published Thursday</a>, 21 months, he said, after privately reporting the bug to <em>Minecraft</em> developer Mojang. "On the one hand I don't want to expose thousands of servers to a major vulnerability, yet on the other hand Mojang has failed to act on it."</p>
<p>The bug resides in the <a href="https://github.com/ammaraskar/pyCraft">networking internals of the <em>Minecraft </em>protocol</a>. It allows the contents of inventory slots to be exchanged, so that, among other things, items in players' hotbars are displayed automatically after logging in. <em>Minecraft</em> items can also store arbitrary metadata in a file format known as <a href="http://wiki.vg/NBT">Named Binary Tag (NBT)</a>, which allows complex data structures to be kept in hierarchical nests. Askar has released <a href="https://github.com/ammaraskar/pyCraft/tree/nbt_exploit">proof-of-concept attack code</a> he said exploits the vulnerability to crash any server hosting the game. Here's how it works.</p>
<blockquote>
diff --git a/test/test-pages/base-url-base-element-relative/expected.html b/test/test-pages/base-url-base-element-relative/expected.html
index 14d23f6..44ae2de 100644
--- a/test/test-pages/base-url-base-element-relative/expected.html
+++ b/test/test-pages/base-url-base-element-relative/expected.html
@@ -1,4 +1,5 @@
<article>
+
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
@@ -17,11 +18,11 @@
<p><a href="http://test/foo/bar/baz.html">link</a></p>
<p><a href="https://test/foo/bar/baz.html">link</a></p>
<p>Images</p>
- <p><img src="http://fakehost/test/base/foo/bar/baz.png"></img></p>
- <p><img src="http://fakehost/test/base/foo/bar/baz.png"></img></p>
- <p><img src="http://fakehost/foo/bar/baz.png"></img></p>
- <p><img src="http://test/foo/bar/baz.png"></img></p>
- <p><img src="https://test/foo/bar/baz.png"></img></p>
+ <p><img src="http://fakehost/test/base/foo/bar/baz.png"></p>
+ <p><img src="http://fakehost/test/base/foo/bar/baz.png"></p>
+ <p><img src="http://fakehost/foo/bar/baz.png"></p>
+ <p><img src="http://test/foo/bar/baz.png"></p>
+ <p><img src="https://test/foo/bar/baz.png"></p>
<h2>Foo</h2>
<p>
Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
diff --git a/test/test-pages/base-url-base-element/expected.html b/test/test-pages/base-url-base-element/expected.html
index 5037eb2..3bc1ab4 100644
--- a/test/test-pages/base-url-base-element/expected.html
+++ b/test/test-pages/base-url-base-element/expected.html
@@ -1,4 +1,5 @@
<article>
+
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
@@ -17,11 +18,11 @@
<p><a href="http://test/foo/bar/baz.html">link</a></p>
<p><a href="https://test/foo/bar/baz.html">link</a></p>
<p>Images</p>
- <p><img src="http://fakehost/foo/bar/baz.png"></img></p>
- <p><img src="http://fakehost/foo/bar/baz.png"></img></p>
- <p><img src="http://fakehost/foo/bar/baz.png"></img></p>
- <p><img src="http://test/foo/bar/baz.png"></img></p>
- <p><img src="https://test/foo/bar/baz.png"></img></p>
+ <p><img src="http://fakehost/foo/bar/baz.png"></p>
+ <p><img src="http://fakehost/foo/bar/baz.png"></p>
+ <p><img src="http://fakehost/foo/bar/baz.png"></p>
+ <p><img src="http://test/foo/bar/baz.png"></p>
+ <p><img src="https://test/foo/bar/baz.png"></p>
<h2>Foo</h2>
<p>
Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
diff --git a/test/test-pages/base-url/expected.html b/test/test-pages/base-url/expected.html
index 36981e1..504b249 100644
--- a/test/test-pages/base-url/expected.html
+++ b/test/test-pages/base-url/expected.html
@@ -1,4 +1,5 @@
<article>
+
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
@@ -17,11 +18,11 @@
<p><a href="http://test/foo/bar/baz.html">link</a></p>
<p><a href="https://test/foo/bar/baz.html">link</a></p>
<p>Images</p>
- <p><img src="http://fakehost/test/foo/bar/baz.png"></img></p>
- <p><img src="http://fakehost/test/foo/bar/baz.png"></img></p>
- <p><img src="http://fakehost/foo/bar/baz.png"></img></p>
- <p><img src="http://test/foo/bar/baz.png"></img></p>
- <p><img src="https://test/foo/bar/baz.png"></img></p>
+ <p><img src="http://fakehost/test/foo/bar/baz.png"></p>
+ <p><img src="http://fakehost/test/foo/bar/baz.png"></p>
+ <p><img src="http://fakehost/foo/bar/baz.png"></p>
+ <p><img src="http://test/foo/bar/baz.png"></p>
+ <p><img src="https://test/foo/bar/baz.png"></p>
<h2>Foo</h2>
<p>
Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
diff --git a/test/test-pages/bbc-1/expected.html b/test/test-pages/bbc-1/expected.html
index ca646fe..1e3c6d3 100644
--- a/test/test-pages/bbc-1/expected.html
+++ b/test/test-pages/bbc-1/expected.html
@@ -1,5 +1,6 @@
<div property="articleBody">
- <p>President Barack Obama has admitted that his failure to pass "common sense gun safety laws" in the US is the greatest frustration of his presidency. </p><p>In an interview with the BBC, Mr Obama said it was "distressing" not to have made progress on the issue "even in the face of repeated mass killings".</p><p>He vowed to keep trying, but the BBC's North America editor Jon Sopel said the president did not sound very confident. </p><p>However, Mr Obama said race relations had improved during his presidency. </p><p>Hours after the interview, a gunman opened fire at a cinema in the US state of Louisiana, killing two people and injuring several others before shooting himself.</p><p>In a wide-ranging interview, President Obama also said:</p><ul><li>
+ <p>President Barack Obama has admitted that his failure to pass "common sense gun safety laws" in the US is the greatest frustration of his presidency. </p><p>In an interview with the BBC, Mr Obama said it was "distressing" not to have made progress on the issue "even in the face of repeated mass killings".</p><p>He vowed to keep trying, but the BBC's North America editor Jon Sopel said the president did not sound very confident. </p><p>However, Mr Obama said race relations had improved during his presidency. </p><p>Hours after the interview, a gunman opened fire at a cinema in the US state of Louisiana, killing two people and injuring several others before shooting himself.</p><p>In a wide-ranging interview, President Obama also said:</p><ul>
+<li>
<a href="http://www.bbc.co.uk/news/uk-politics-33647154">The UK must stay in the EU</a> to have influence on the world stage</li>
<li>He is confident the Iran nuclear deal will be passed by Congress </li>
<li>Syria needs a political solution in order to defeat the Islamic State group</li>
@@ -7,10 +8,14 @@
</li>
<li>He would defend his advocacy of gay rights following protests in Kenya</li>
<li>Despite racial tensions, the US is becoming more diverse and more tolerant</li>
-</ul><p><a href="http://www.bbc.co.uk/news/world-us-canada-33646542">Read the full transcript of his interview</a></p><p>Mr Obama lands in Kenya later on Friday for his first visit since becoming president. </p><p>But with just 18 months left in power, he said gun control was the area where he has been "most frustrated and most stymied" since coming to power in 2009.</p><p>"If you look at the number of Americans killed since 9/11 by terrorism, it's less than 100. If you look at the number that have been killed by gun violence, it's in the tens of thousands," Mr Obama said. </p><figure><img alt="Gun control campaigners protest in McPhearson Square in Washington DC - 25 April 2013" datasrc="http://ichef.bbci.co.uk/news/976/cpsprodpb/462D/production/_84456971_gettyimages-167501087.jpg" height="549" src="http://ichef.bbci.co.uk/news/555/cpsprodpb/462D/production/_84456971_gettyimages-167501087.jpg" width="976"></img><figcaption><span>
+</ul><p><a href="http://www.bbc.co.uk/news/world-us-canada-33646542">Read the full transcript of his interview</a></p><p>Mr Obama lands in Kenya later on Friday for his first visit since becoming president. </p><p>But with just 18 months left in power, he said gun control was the area where he has been "most frustrated and most stymied" since coming to power in 2009.</p><p>"If you look at the number of Americans killed since 9/11 by terrorism, it's less than 100. If you look at the number that have been killed by gun violence, it's in the tens of thousands," Mr Obama said. </p><figure><img src="http://ichef.bbci.co.uk/news/555/cpsprodpb/462D/production/_84456971_gettyimages-167501087.jpg" datasrc="http://ichef.bbci.co.uk/news/976/cpsprodpb/462D/production/_84456971_gettyimages-167501087.jpg" alt="Gun control campaigners protest in McPhearson Square in Washington DC - 25 April 2013" height="549" width="976">
+ <figcaption>
+ <span>
The president said he would continue fighting for greater gun control laws
</span>
- </figcaption></figure><p>"For us not to be able to resolve that issue has been something that is distressing," he added. </p><p>Mr Obama has pushed for stricter gun control throughout his presidency but has been unable to secure any significant changes to the laws. </p><p>After nine African-American churchgoers were killed in South Carolina in June, he admitted "politics in this town" meant there were few options available.</p><figure><img alt="line" datasrc="http://ichef.bbci.co.uk/news/464/media/images/76020000/jpg/_76020974_line976.jpg" height="2" src="http://ichef.bbci.co.uk/news/555/media/images/76020000/jpg/_76020974_line976.jpg" width="464"></img></figure><h2>Analysis: Jon Sopel, BBC News, Washington</h2><figure><img alt="President Barack Obama participates in an interview with Jon Sopel of BBC in the Roosevelt Room of the White House - 23 July 2015" datasrc="http://ichef-1.bbci.co.uk/news/976/cpsprodpb/6D3D/production/_84456972_p072315al-0500.jpg" height="549" src="http://ichef-1.bbci.co.uk/news/555/cpsprodpb/6D3D/production/_84456972_p072315al-0500.jpg" width="976"></img></figure><p>Nine months ago, the president seemed like a spent force, after taking a beating in the midterm elections, during which members of his own party were reluctant to campaign on his record. </p><p>But the man sat before me today was relaxed and confident, buoyed by a string of "wins" on healthcare, Cuba and Iran, after bitter and ongoing battles with his many critics. </p><p>The only body swerve the president performed was when I asked him <a href="http://www.bbc.co.uk/news/world-us-canada-33643168"> how many minds he had changed on the Iran nuclear deal </a>after an intense sell aimed at Gulf allies and members of US Congress who remain implacably opposed. </p><p>There was a momentary flicker across the president's face as if to say "You think you got me?" before his smile returned and he proceeded to talk about how Congress would come round.</p><p>But notably, he did not give a direct answer to that question, which leaves me with the impression that he has persuaded precisely zero.</p><p><a href="http://www.bbc.co.uk/news/world-us-canada-33646875">Five things we learned from Obama interview</a></p><p><a href="http://www.bbc.co.uk/news/world-us-canada-33646545">The presidential body swerve</a></p><figure><img alt="line" datasrc="http://ichef.bbci.co.uk/news/464/media/images/76020000/jpg/_76020974_line976.jpg" height="2" src="http://ichef.bbci.co.uk/news/555/media/images/76020000/jpg/_76020974_line976.jpg" width="464"></img></figure><p>On race relations, Mr Obama said recent concerns around policing and mass incarcerations were "legitimate and deserve intense attention" but insisted progress had been made. </p><p>Children growing up during the eight years of his presidency "will have a different view of race relations in this country and what's possible," he said. </p><p>"There are going to be tensions that arise. But if you look at my daughters' generation, they have an attitude about race that's entirely different than even my generation."</p><p>Talking about how he was feeling after his recent successes, he said "every president, every leader has strengths and weaknesses". </p><p>"One of my strengths is I have a pretty even temperament. I don't get too high when it's high and I don't get too low when it's low," he said. </p><figure><img alt="Customer looks at Obama shirts at a stall in Nairobi's Kibera slums, 23 July 2015" datasrc="http://ichef-1.bbci.co.uk/news/976/cpsprodpb/142FD/production/_84458628_shirtreuters.jpg" height="549" src="http://ichef-1.bbci.co.uk/news/555/cpsprodpb/142FD/production/_84458628_shirtreuters.jpg" width="976"></img><figcaption><span>
+ </figcaption></figure><p>"For us not to be able to resolve that issue has been something that is distressing," he added. </p><p>Mr Obama has pushed for stricter gun control throughout his presidency but has been unable to secure any significant changes to the laws. </p><p>After nine African-American churchgoers were killed in South Carolina in June, he admitted "politics in this town" meant there were few options available.</p><figure><img src="http://ichef.bbci.co.uk/news/555/media/images/76020000/jpg/_76020974_line976.jpg" datasrc="http://ichef.bbci.co.uk/news/464/media/images/76020000/jpg/_76020974_line976.jpg" alt="line" height="2" width="464"></figure><h2>Analysis: Jon Sopel, BBC News, Washington</h2><figure><img src="http://ichef-1.bbci.co.uk/news/555/cpsprodpb/6D3D/production/_84456972_p072315al-0500.jpg" datasrc="http://ichef-1.bbci.co.uk/news/976/cpsprodpb/6D3D/production/_84456972_p072315al-0500.jpg" alt="President Barack Obama participates in an interview with Jon Sopel of BBC in the Roosevelt Room of the White House - 23 July 2015" height="549" width="976"></figure><p>Nine months ago, the president seemed like a spent force, after taking a beating in the midterm elections, during which members of his own party were reluctant to campaign on his record. </p><p>But the man sat before me today was relaxed and confident, buoyed by a string of "wins" on healthcare, Cuba and Iran, after bitter and ongoing battles with his many critics. </p><p>The only body swerve the president performed was when I asked him <a href="http://www.bbc.co.uk/news/world-us-canada-33643168"> how many minds he had changed on the Iran nuclear deal </a>after an intense sell aimed at Gulf allies and members of US Congress who remain implacably opposed. </p><p>There was a momentary flicker across the president's face as if to say "You think you got me?" before his smile returned and he proceeded to talk about how Congress would come round.</p><p>But notably, he did not give a direct answer to that question, which leaves me with the impression that he has persuaded precisely zero.</p><p><a href="http://www.bbc.co.uk/news/world-us-canada-33646875">Five things we learned from Obama interview</a></p><p><a href="http://www.bbc.co.uk/news/world-us-canada-33646545">The presidential body swerve</a></p><figure><img src="http://ichef.bbci.co.uk/news/555/media/images/76020000/jpg/_76020974_line976.jpg" datasrc="http://ichef.bbci.co.uk/news/464/media/images/76020000/jpg/_76020974_line976.jpg" alt="line" height="2" width="464"></figure><p>On race relations, Mr Obama said recent concerns around policing and mass incarcerations were "legitimate and deserve intense attention" but insisted progress had been made. </p><p>Children growing up during the eight years of his presidency "will have a different view of race relations in this country and what's possible," he said. </p><p>"There are going to be tensions that arise. But if you look at my daughters' generation, they have an attitude about race that's entirely different than even my generation."</p><p>Talking about how he was feeling after his recent successes, he said "every president, every leader has strengths and weaknesses". </p><p>"One of my strengths is I have a pretty even temperament. I don't get too high when it's high and I don't get too low when it's low," he said. </p><figure><img src="http://ichef-1.bbci.co.uk/news/555/cpsprodpb/142FD/production/_84458628_shirtreuters.jpg" datasrc="http://ichef-1.bbci.co.uk/news/976/cpsprodpb/142FD/production/_84458628_shirtreuters.jpg" alt="Customer looks at Obama shirts at a stall in Nairobi's Kibera slums, 23 July 2015" height="549" width="976">
+ <figcaption>
+ <span>
Kenya is getting ready to welcome the US president
</span>
</figcaption></figure><h2>Kenya trip</h2><p>Mr Obama was speaking to the BBC at the White House before departing for Kenya.</p><p>His father was Kenyan and the president is expected to meet relatives in Nairobi.</p><p>Mr Obama has faced criticism in the country after the US legalised gay marriage. However, in his interview, the president said he would not fall silent on the issue.</p><p>"I am not a fan of discrimination and bullying of anybody on the basis of race, on the basis of religion, on the basis of sexual orientation or gender," he said.</p><p>The president also admitted that some African governments, including Kenya's, needed to improve their records on human rights and democracy. However, he defended his decision to engage with and visit those governments. </p><p>"Well, they're not ideal institutions. But what we found is, is that when we combined blunt talk with engagement, that gives us the best opportunity to influence and open up space for civil society." </p><p>Mr Obama will become the first US president to address the African Union when he travels on to Ethiopia on Sunday.</p>
diff --git a/test/test-pages/blogger/expected.html b/test/test-pages/blogger/expected.html
index ec3a02a..20d9033 100644
--- a/test/test-pages/blogger/expected.html
+++ b/test/test-pages/blogger/expected.html
@@ -1,46 +1,73 @@
<div id="post-body-932306423056216142" itemprop="description articleBody"><p>
I've written a couple of posts in the past few months but they were all for <a href="http://blog.ioactive.com/search/label/Andrew%20Zonenberg">the blog at work</a> so I figured I'm long overdue for one on Silicon Exposed.</p><h2>
So what's a GreenPak?</h2>
- <p> Silego Technology is a fabless semiconductor company located in the SF Bay area, which makes (among other things) a line of programmable logic devices known as GreenPak. Their <a href="http://www.silego.com/products/greenpak5.html">5th generation parts</a> were just announced, but I started this project before that happened so I'm still targeting the <a href="http://www.silego.com/products/greenpak4.html">4th generation</a>.</p><p> GreenPak devices are kind of like itty bitty <a href="http://www.cypress.com/products/32-bit-arm-cortex-m-psoc">PSoCs</a> - they have a mixed signal fabric with an ADC, DACs, comparators, voltage references, plus a digital LUT/FF fabric and some typical digital MCU peripherals like counters and oscillators (but no CPU).</p><p> It's actually an interesting architecture - FPGAs (including some devices marketed as CPLDs) are a 2D array of LUTs connected via wires to adjacent cells, and true (product term) CPLDs are a star topology of AND-OR arrays connected by a crossbar. GreenPak, on the other hand, is a star topology of LUTs, flipflops, and analog/digital hard IP connected to a crossbar.</p><p> Without further ado, here's a block diagram showing all the cool stuff you get in the SLG46620V:</p><table readabilityDataTable="0"><tbody><tr><td>
- <a href="https://1.bp.blogspot.com/-YIPC5jkXkDE/Vy7YPSqFKWI/AAAAAAAAAxI/a7D6Ji2GxoUvcrwUkI4RLZcr2LFQEJCTACLcB/s1600/block-diagram.png" imageanchor="1"><img height="512" src="https://1.bp.blogspot.com/-YIPC5jkXkDE/Vy7YPSqFKWI/AAAAAAAAAxI/a7D6Ji2GxoUvcrwUkI4RLZcr2LFQEJCTACLcB/s640/block-diagram.png" width="640"></img></a>
+ <p> Silego Technology is a fabless semiconductor company located in the SF Bay area, which makes (among other things) a line of programmable logic devices known as GreenPak. Their <a href="http://www.silego.com/products/greenpak5.html">5th generation parts</a> were just announced, but I started this project before that happened so I'm still targeting the <a href="http://www.silego.com/products/greenpak4.html">4th generation</a>.</p><p> GreenPak devices are kind of like itty bitty <a href="http://www.cypress.com/products/32-bit-arm-cortex-m-psoc">PSoCs</a> - they have a mixed signal fabric with an ADC, DACs, comparators, voltage references, plus a digital LUT/FF fabric and some typical digital MCU peripherals like counters and oscillators (but no CPU).</p><p> It's actually an interesting architecture - FPGAs (including some devices marketed as CPLDs) are a 2D array of LUTs connected via wires to adjacent cells, and true (product term) CPLDs are a star topology of AND-OR arrays connected by a crossbar. GreenPak, on the other hand, is a star topology of LUTs, flipflops, and analog/digital hard IP connected to a crossbar.</p><p> Without further ado, here's a block diagram showing all the cool stuff you get in the SLG46620V:</p><table readabilityDataTable="0">
+ <tbody>
+ <tr>
+ <td>
+ <a href="https://1.bp.blogspot.com/-YIPC5jkXkDE/Vy7YPSqFKWI/AAAAAAAAAxI/a7D6Ji2GxoUvcrwUkI4RLZcr2LFQEJCTACLcB/s1600/block-diagram.png" imageanchor="1"><img height="512" src="https://1.bp.blogspot.com/-YIPC5jkXkDE/Vy7YPSqFKWI/AAAAAAAAAxI/a7D6Ji2GxoUvcrwUkI4RLZcr2LFQEJCTACLcB/s640/block-diagram.png" width="640"></a>
</td>
- </tr><tr><td>SLG46620V block diagram (from device datasheet)</td>
- </tr></tbody></table><p>
- They're also tiny (the SLG46620V is a 20-pin 0.4mm pitch STQFN measuring 2x3 mm, and the lower gate count SLG46140V is a mere 1.6x2 mm) and probably the cheapest programmable logic device on the market - $0.50 in low volume and less than $0.40 in larger quantities.</p><p> The Vdd range of GreenPak4 is huge, more like what you'd expect from an MCU than an FPGA! It can run on anything from 1.8 to 5V, although performance is only specified at 1.8, 3.3, and 5V nominal voltages. There's also a dual-rail version that trades one of the GPIO pins for a second power supply pin, allowing you to interface to logic at two different voltage levels.</p><p> To support low-cost/space-constrained applications, they even have the configuration memory on die. It's one-time programmable and needs external Vpp to program (presumably Silego didn't want to waste die area on charge pumps that would only be used once) but has a SRAM programming mode for prototyping.</p><p> The best part is that the development software (GreenPak Designer) is free of charge and provided for all major operating systems including Linux! Unfortunately, the only supported design entry method is schematic entry and there's no way to write your design in a HDL.</p><p> While schematics may be fine for quick tinkering on really simple designs, they quickly get unwieldy. The nightmare of a circuit shown below is just a bunch of counters hooked up to LEDs that blink at various rates.</p><table readabilityDataTable="0"><tbody><tr><td>
- <a href="https://1.bp.blogspot.com/-k3naUT3uXao/Vy7WFac246I/AAAAAAAAAw8/mePy_ostO8QJra5ZJrbP2WGhTlJ0B_r8gCLcB/s1600/schematic-from-hell.png" imageanchor="1"><img height="334" src="https://1.bp.blogspot.com/-k3naUT3uXao/Vy7WFac246I/AAAAAAAAAw8/mePy_ostO8QJra5ZJrbP2WGhTlJ0B_r8gCLcB/s640/schematic-from-hell.png" width="640"></img></a>
+ </tr>
+ <tr>
+ <td>SLG46620V block diagram (from device datasheet)</td>
+ </tr>
+ </tbody>
+ </table><p>
+ They're also tiny (the SLG46620V is a 20-pin 0.4mm pitch STQFN measuring 2x3 mm, and the lower gate count SLG46140V is a mere 1.6x2 mm) and probably the cheapest programmable logic device on the market - $0.50 in low volume and less than $0.40 in larger quantities.</p><p> The Vdd range of GreenPak4 is huge, more like what you'd expect from an MCU than an FPGA! It can run on anything from 1.8 to 5V, although performance is only specified at 1.8, 3.3, and 5V nominal voltages. There's also a dual-rail version that trades one of the GPIO pins for a second power supply pin, allowing you to interface to logic at two different voltage levels.</p><p> To support low-cost/space-constrained applications, they even have the configuration memory on die. It's one-time programmable and needs external Vpp to program (presumably Silego didn't want to waste die area on charge pumps that would only be used once) but has a SRAM programming mode for prototyping.</p><p> The best part is that the development software (GreenPak Designer) is free of charge and provided for all major operating systems including Linux! Unfortunately, the only supported design entry method is schematic entry and there's no way to write your design in a HDL.</p><p> While schematics may be fine for quick tinkering on really simple designs, they quickly get unwieldy. The nightmare of a circuit shown below is just a bunch of counters hooked up to LEDs that blink at various rates.</p><table readabilityDataTable="0">
+ <tbody>
+ <tr>
+ <td>
+ <a href="https://1.bp.blogspot.com/-k3naUT3uXao/Vy7WFac246I/AAAAAAAAAw8/mePy_ostO8QJra5ZJrbP2WGhTlJ0B_r8gCLcB/s1600/schematic-from-hell.png" imageanchor="1"><img height="334" src="https://1.bp.blogspot.com/-k3naUT3uXao/Vy7WFac246I/AAAAAAAAAw8/mePy_ostO8QJra5ZJrbP2WGhTlJ0B_r8gCLcB/s640/schematic-from-hell.png" width="640"></a>
</td>
- </tr><tr><td>Schematic from hell!</td>
- </tr></tbody></table><p>
+ </tr>
+ <tr>
+ <td>Schematic from hell!</td>
+ </tr>
+ </tbody>
+ </table><p>
As if this wasn't enough of a problem, the largest GreenPak4 device (the SLG46620V) is split into two halves with limited routing between them, and the GUI doesn't help the user manage this complexity at all - you have to draw your schematic in two halves and add "cross connections" between them.</p><p> The icing on the cake is that schematics are a pain to diff and collaborate on. Although GreenPak schematics are XML based, which is a touch better than binary, who wants to read a giant XML diff and try to figure out what's going on in the circuit?</p><p> This isn't going to be a post on the quirks of Silego's software, though - that would be boring. As it turns out, there's one more exciting feature of these chips that I didn't mention earlier: the configuration bitstream is 100% documented in the device datasheet! This is unheard of in the programmable logic world. As Nick of Arachnid Labs <a href="http://www.arachnidlabs.com/blog/2015/03/30/greenpak/">says</a>, the chip is "just dying for someone to write a VHDL or Verilog compiler for it". As you can probably guess by from the title of this post, I've been busy doing exactly that.</p><h2>
Great! How does it work?</h2>
- <p> Rather than wasting time writing a synthesizer, I decided to write a GreenPak technology library for Clifford Wolf's excellent open source synthesis tool, <a href="http://www.clifford.at/yosys/">Yosys</a>, and then make a place-and-route tool to turn that into a final netlist. The post-PAR netlist can then be loaded into GreenPak Designer in order to program the device.</p><p> The first step of the process is to run the "synth_greenpak4" Yosys flow on the Verilog source. This runs a generic RTL synthesis pass, then some coarse-grained extraction passes to infer shift register and counter cells from behavioral logic, and finally maps the remaining logic to LUT/FF cells and outputs a JSON-formatted netlist.</p><p> Once the design has been synthesized, my tool (named, surprisingly, gp4par) is then launched on the netlist. It begins by parsing the JSON and constructing a directed graph of cell objects in memory. A second graph, containing all of the primitives in the device and the legal connections between them, is then created based on the device specified on the command line. (As of now only the SLG46620V is supported; the SLG46621V can be added fairly easily but the SLG46140V has a slightly different microarchitecture which will require a bit more work to support.)</p><p> After the graphs are generated, each node in the netlist graph is assigned a numeric label identifying the type of cell and each node in the device graph is assigned a list of legal labels: for example, an I/O buffer site is legal for an input buffer, output buffer, or bidirectional buffer.</p><table readabilityDataTable="0"><tbody><tr><td>
- <a href="https://2.bp.blogspot.com/-kIekczO693g/Vy7dBqYifXI/AAAAAAAAAxc/hMNJBs5bedIQOrBzzkhq4gbmhR-n58EQwCLcB/s1600/graph-labels.png" imageanchor="1"><img height="141" src="https://2.bp.blogspot.com/-kIekczO693g/Vy7dBqYifXI/AAAAAAAAAxc/hMNJBs5bedIQOrBzzkhq4gbmhR-n58EQwCLcB/s400/graph-labels.png" width="400"></img></a>
+ <p> Rather than wasting time writing a synthesizer, I decided to write a GreenPak technology library for Clifford Wolf's excellent open source synthesis tool, <a href="http://www.clifford.at/yosys/">Yosys</a>, and then make a place-and-route tool to turn that into a final netlist. The post-PAR netlist can then be loaded into GreenPak Designer in order to program the device.</p><p> The first step of the process is to run the "synth_greenpak4" Yosys flow on the Verilog source. This runs a generic RTL synthesis pass, then some coarse-grained extraction passes to infer shift register and counter cells from behavioral logic, and finally maps the remaining logic to LUT/FF cells and outputs a JSON-formatted netlist.</p><p> Once the design has been synthesized, my tool (named, surprisingly, gp4par) is then launched on the netlist. It begins by parsing the JSON and constructing a directed graph of cell objects in memory. A second graph, containing all of the primitives in the device and the legal connections between them, is then created based on the device specified on the command line. (As of now only the SLG46620V is supported; the SLG46621V can be added fairly easily but the SLG46140V has a slightly different microarchitecture which will require a bit more work to support.)</p><p> After the graphs are generated, each node in the netlist graph is assigned a numeric label identifying the type of cell and each node in the device graph is assigned a list of legal labels: for example, an I/O buffer site is legal for an input buffer, output buffer, or bidirectional buffer.</p><table readabilityDataTable="0">
+ <tbody>
+ <tr>
+ <td>
+ <a href="https://2.bp.blogspot.com/-kIekczO693g/Vy7dBqYifXI/AAAAAAAAAxc/hMNJBs5bedIQOrBzzkhq4gbmhR-n58EQwCLcB/s1600/graph-labels.png" imageanchor="1"><img height="141" src="https://2.bp.blogspot.com/-kIekczO693g/Vy7dBqYifXI/AAAAAAAAAxc/hMNJBs5bedIQOrBzzkhq4gbmhR-n58EQwCLcB/s400/graph-labels.png" width="400"></a>
</td>
- </tr><tr><td>Example labeling for a subset of the netlist and device graphs</td>
- </tr></tbody></table><p>
- The labeled nodes now need to be placed. The initial placement uses a simple greedy algorithm to create a valid (although not necessarily optimal or even routable) placement:</p><ol><li>Loop over the cells in the netlist. If any cell has a LOC constraint, which locks the cell to a specific physical site, attempt to assign the node to the specified site. If the specified node is the wrong type, doesn't exist, or is already used by another constrained node, the constraint is invalid so fail with an error.</li>
+ </tr>
+ <tr>
+ <td>Example labeling for a subset of the netlist and device graphs</td>
+ </tr>
+ </tbody>
+ </table><p>
+ The labeled nodes now need to be placed. The initial placement uses a simple greedy algorithm to create a valid (although not necessarily optimal or even routable) placement:</p><ol>
+ <li>Loop over the cells in the netlist. If any cell has a LOC constraint, which locks the cell to a specific physical site, attempt to assign the node to the specified site. If the specified node is the wrong type, doesn't exist, or is already used by another constrained node, the constraint is invalid so fail with an error.</li>
<li>Loop over all of the unconstrained cells in the netlist and assign them to the first unused site with the right label. If none are available, the design is too big for the device so fail with an error.</li>
</ol><p>
- Once the design is placed, the placement optimizer then loops over the design and attempts to improve it. A simulated annealing algorithm is used, where changes to the design are accepted unconditionally if they make the placement better, and with a random, gradually decreasing probability if they make it worse. The optimizer terminates when the design receives a perfect score (indicating an optimal placement) or if it stops making progress for several iterations. Each iteration does the following:</p><ol><li>Compute a score for the current design based on the number of unroutable nets, the amount of routing congestion (number of nets crossing between halves of the device), and static timing analysis (not yet implemented, always zero).</li>
+ Once the design is placed, the placement optimizer then loops over the design and attempts to improve it. A simulated annealing algorithm is used, where changes to the design are accepted unconditionally if they make the placement better, and with a random, gradually decreasing probability if they make it worse. The optimizer terminates when the design receives a perfect score (indicating an optimal placement) or if it stops making progress for several iterations. Each iteration does the following:</p><ol>
+ <li>Compute a score for the current design based on the number of unroutable nets, the amount of routing congestion (number of nets crossing between halves of the device), and static timing analysis (not yet implemented, always zero).</li>
<li>Make a list of nodes that contributed to this score in some way (having some attached nets unroutable, crossing to the other half of the device, or failing timing).</li>
<li>Remove nodes from the list that are LOC'd to a specific location since we're not allowed to move them.</li>
<li>Remove nodes from the list that have only one legal placement in the device (for example, oscillator hard IP) since there's nowhere else for them to go.</li>
<li>Pick a node from the remainder of the list at random. Call this our pivot.</li>
<li>Find a list of candidate placements for the pivot: </li>
- <ol><li>Consider all routable placements in the other half of the device.</li>
+ <ol>
+ <li>Consider all routable placements in the other half of the device.</li>
<li>If none were found, consider all routable placements anywhere in the device.</li>
<li>If none were found, consider all placements anywhere in the device even if they're not routable.</li>
- </ol><li>Pick one of the candidates at random and move the pivot to that location. If another cell in the netlist is already there, put it in the vacant site left by the pivot.</li>
+ </ol>
+ <li>Pick one of the candidates at random and move the pivot to that location. If another cell in the netlist is already there, put it in the vacant site left by the pivot.</li>
<li>Re-compute the score for the design. If it's better, accept this change and start the next iteration.</li>
<li>If the score is worse, accept it with a random probability which decreases as the iteration number goes up. If the change is not accepted, restore the previous placement.</li>
</ol><p>
- After optimization, the design is checked for routability. If any edges in the netlist graph don't correspond to edges in the device graph, the user probably asked for something impossible (for example, trying to hook a flipflop's output to a comparator's reference voltage input) so fail with an error.</p><p> The design is then routed. This is quite simple due to the crossbar structure of the device. For each edge in the netlist:</p><ol><li>If dedicated (non-fabric) routing is used for this path, configure the destination's input mux appropriately and stop.</li>
+ After optimization, the design is checked for routability. If any edges in the netlist graph don't correspond to edges in the device graph, the user probably asked for something impossible (for example, trying to hook a flipflop's output to a comparator's reference voltage input) so fail with an error.</p><p> The design is then routed. This is quite simple due to the crossbar structure of the device. For each edge in the netlist:</p><ol>
+ <li>If dedicated (non-fabric) routing is used for this path, configure the destination's input mux appropriately and stop.</li>
<li>If the source and destination are in the same half of the device, configure the destination's input mux appropriately and stop.</li>
<li>A cross-connection must be used. Check if we already used one to bring the source signal to the other half of the device. If found, configure the destination to route from that cross-connection and stop.</li>
<li>Check if we have any cross-connections left going in this direction. If they're all used, the design is unroutable due to congestion so fail with an error.</li>
<li>Pick the next unused cross-connection and configure it to route from the source. Configure the destination to route from the cross-connection and stop.</li>
</ol><p>
- Once routing is finished, run a series of post-PAR design rule checks. These currently include the following:</p><ul><li>If any node has no loads, generate a warning</li>
+ Once routing is finished, run a series of post-PAR design rule checks. These currently include the following:</p><ul>
+ <li>If any node has no loads, generate a warning</li>
<li>If an I/O buffer is connected to analog hard IP, fail with an error if it's not configured in analog mode.</li>
<li>Some signals (such as comparator inputs and oscillator power-down controls) are generated by a shared mux and fed to many loads. If different loads require conflicting settings for the shared mux, fail with an error.</li>
</ul><p>
diff --git a/test/test-pages/breitbart/expected.html b/test/test-pages/breitbart/expected.html
index e2f04c7..b4a000f 100644
--- a/test/test-pages/breitbart/expected.html
+++ b/test/test-pages/breitbart/expected.html
@@ -1,9 +1,15 @@
<div>
- <figure><div><p><img alt="Supporters of Republican presidential nominee Donald Trump cheer during election night at the New York Hilton Midtown in New York on November 9, 2016. / AFP / JIM WATSON (Photo credit should read JIM WATSON/AFP/Getty Images)" height="480" itemprop="image" src="http://media.breitbart.com/media/2016/11/GettyImages-621866810-640x480.jpg" width="640"></img></p><p>JIM WATSON/AFP/Getty Images</p>
+
+ <figure>
+ <div><p><img itemprop="image" src="http://media.breitbart.com/media/2016/11/GettyImages-621866810-640x480.jpg" alt="Supporters of Republican presidential nominee Donald Trump cheer during election night at the New York Hilton Midtown in New York on November 9, 2016. / AFP / JIM WATSON (Photo credit should read JIM WATSON/AFP/Getty Images)" width="640" height="480"></p><p>JIM WATSON/AFP/Getty Images</p>
</div>
- </figure> <time datetime="2016-12-22T10:43:37Z">22 Dec, 2016</time><time datetime="2016-12-22T18:59:12Z">22 Dec, 2016</time></div><div>
+ </figure>
+ <time datetime="2016-12-22T10:43:37Z">22 Dec, 2016</time>
+ <time datetime="2016-12-22T18:59:12Z">22 Dec, 2016</time>
+ </div><div>
+
<div id="EmailOptin">
<p><span>SIGN UP</span> FOR OUR NEWSLETTER</p>
@@ -15,7 +21,7 @@
<p><span>SIGN UP</span> FOR OUR NEWSLETTER</p>
</div>
- <p><span>The tweet from Vulture magazine reads, “</span><a href="https://twitter.com/hashtag/Hamilton?src=hash" rel="noopener" target="_blank"><span>#Hamilton</span></a><span> Chicago show interrupted by angry Trump supporter.” Emery retweeted the story, saying, “Are there un-angry Trump supporters?”</span></p>
+ <p><span>The tweet from Vulture magazine reads, “</span><a href="https://twitter.com/hashtag/Hamilton?src=hash" target="_blank" rel="noopener"><span>#Hamilton</span></a><span> Chicago show interrupted by angry Trump supporter.” Emery retweeted the story, saying, “Are there un-angry Trump supporters?”</span></p>
@@ -33,7 +39,7 @@
<p><span>Facebook believe that Emery, along with other Snopes writers, ABC News, and </span><a href="http://www.breitbart.com/tech/2016/12/16/flashback-weekly-standard-data-shows-politifact-has-it-out-for-republicans/"><span>Politifact</span></a><span> are impartial enough to label and silence what they believe to be “fake news” on social media. </span></p>
- <p><i><span>Lucas Nolan is a reporter for Breitbart Tech covering issues of free speech and online censorship. Follow him on Twitter </span></i><a href="http://twitter.com/lucasnolan_" rel="noopener" target="_blank"><i><span>@LucasNolan_</span></i></a><i><span> or email him at </span></i><a href="http://www.breitbart.com/wp-admin/blank"><i><span>[email protected]</span></i></a></p>
+ <p><i><span>Lucas Nolan is a reporter for Breitbart Tech covering issues of free speech and online censorship. Follow him on Twitter </span></i><a href="http://twitter.com/lucasnolan_" target="_blank" rel="noopener"><i><span>@LucasNolan_</span></i></a><i><span> or email him at </span></i><a href="http://www.breitbart.com/wp-admin/blank"><i><span>[email protected]</span></i></a></p>
diff --git a/test/test-pages/bug-1255978/expected.html b/test/test-pages/bug-1255978/expected.html
index c281eef..706ede4 100644
--- a/test/test-pages/bug-1255978/expected.html
+++ b/test/test-pages/bug-1255978/expected.html
@@ -1,4 +1,4 @@
-<div id="gigya-share-btns-2_gig_containerParent" itemprop="articleBody">
+<div itemprop="articleBody" id="gigya-share-btns-2_gig_containerParent">
<p>Most people go to hotels for the pleasure of sleeping in a giant bed with clean white sheets and waking up to fresh towels in the morning.</p>
<p>But those towels and sheets might not be as clean as they look, according to the hotel bosses that responded to an online thread about the things hotel owners don’t want you to know.</p>
@@ -14,7 +14,7 @@
<div>
<div>
- <p><img alt="bandb2.jpg" height="423" src="https://static.independent.co.uk/s3fs-public/styles/story_medium/public/thumbnails/image/2014/03/18/10/bandb2.jpg" title="bandb2.jpg" width="564"></img></p>
+ <p><img src="https://static.independent.co.uk/s3fs-public/styles/story_medium/public/thumbnails/image/2014/03/18/10/bandb2.jpg" alt="bandb2.jpg" title="bandb2.jpg" width="564" height="423"></p>
</div>
<div>
@@ -37,7 +37,7 @@
<div>
<div>
- <p><img alt="hotel-door-getty.jpg" height="423" src="https://static.independent.co.uk/s3fs-public/styles/story_medium/public/thumbnails/image/2015/05/26/11/hotel-door-getty.jpg" title="hotel-door-getty.jpg" width="564"></img></p>
+ <p><img src="https://static.independent.co.uk/s3fs-public/styles/story_medium/public/thumbnails/image/2015/05/26/11/hotel-door-getty.jpg" alt="hotel-door-getty.jpg" title="hotel-door-getty.jpg" width="564" height="423"></p>
</div>
<div>
@@ -55,7 +55,7 @@
<div>
<div>
- <p><img alt="luggage-3.jpg" height="423" src="https://static.independent.co.uk/s3fs-public/styles/story_medium/public/thumbnails/image/2013/07/31/15/luggage-3.jpg" title="luggage-3.jpg" width="564"></img></p>
+ <p><img src="https://static.independent.co.uk/s3fs-public/styles/story_medium/public/thumbnails/image/2013/07/31/15/luggage-3.jpg" alt="luggage-3.jpg" title="luggage-3.jpg" width="564" height="423"></p>
</div>
@@ -70,7 +70,7 @@
<div>
<div>
- <p><img alt="Lifestyle-hotels.jpg" height="423" src="https://static.independent.co.uk/s3fs-public/styles/story_medium/public/thumbnails/image/2015/04/13/11/Lifestyle-hotels.jpg" title="Lifestyle-hotels.jpg" width="564"></img></p>
+ <p><img src="https://static.independent.co.uk/s3fs-public/styles/story_medium/public/thumbnails/image/2015/04/13/11/Lifestyle-hotels.jpg" alt="Lifestyle-hotels.jpg" title="Lifestyle-hotels.jpg" width="564" height="423"></p>
</div>
<div>
@@ -94,6 +94,7 @@
<div>
<div>
+
<div data-scald-gallery="3739501">
<h2><span></span>Business news in pictures</h2>
@@ -114,7 +115,7 @@
<div>
<div>
- <p><img alt="agenda7.jpg" height="423" src="https://static.independent.co.uk/s3fs-public/styles/story_medium/public/thumbnails/image/2014/03/13/16/agenda7.jpg" title="agenda7.jpg" width="564"></img></p>
+ <p><img src="https://static.independent.co.uk/s3fs-public/styles/story_medium/public/thumbnails/image/2014/03/13/16/agenda7.jpg" alt="agenda7.jpg" title="agenda7.jpg" width="564" height="423"></p>
</div>
<div>
@@ -126,11 +127,14 @@
<p>7. Always made sure the hand towels are clean when you arrive</p>
<p>Forrest Jones made a discovery when he was helping out with the housekeepers. “You know where you almost always find a hand towel in any recently-vacated hotel room that was occupied by a guy? On the floor, next to the bed, about halfway down, maybe a little toward the foot of the bed. Same spot in the floor, next to almost every bed occupied by a man, in every room. I'll leave the rest to your imagination,” he said.</p>
- <meta content="2016-05-08T10:11:51+01:00" itemprop="datePublished"></meta><ul><li>
+ <meta itemprop="datePublished" content="2016-05-08T10:11:51+01:00">
+ <ul>
+ <li>
More about:
</li>
- <li><a href="http://fakehost/topic/Hotels" itemprop="keywords">Hotels</a></li>
- <li><a href="http://fakehost/topic/Hygiene" itemprop="keywords">Hygiene</a></li>
+ <li><a itemprop="keywords" href="http://fakehost/topic/Hotels">Hotels</a></li>
+ <li><a itemprop="keywords" href="http://fakehost/topic/Hygiene">Hygiene</a></li>
</ul>
- <p><a href="http://fakehost/syndication/reuse-permision-form?url=http://www.independent.co.uk/news/business/news/seven-secrets-that-hotel-owners-dont-want-you-to-know-10506160.html" target="_blank"><img src="http://fakehost/sites/all/themes/ines_themes/independent_theme/img/reuse.png" width="25"></img>Reuse content</a>
+
+ <p><a href="http://fakehost/syndication/reuse-permision-form?url=http://www.independent.co.uk/news/business/news/seven-secrets-that-hotel-owners-dont-want-you-to-know-10506160.html" target="_blank"><img src="http://fakehost/sites/all/themes/ines_themes/independent_theme/img/reuse.png" width="25">Reuse content</a>
</p></div> \ No newline at end of file
diff --git a/test/test-pages/buzzfeed-1/expected.html b/test/test-pages/buzzfeed-1/expected.html
index 46a3f32..2321ff7 100644
--- a/test/test-pages/buzzfeed-1/expected.html
+++ b/test/test-pages/buzzfeed-1/expected.html
@@ -15,13 +15,13 @@
<div>
<div>
<div>
- <p><img height="412" rel:bf_image_src="http://ak-hdl.buzzfed.com/static/2015-04/21/5/enhanced/webdr12/grid-cell-2501-1429608056-15.jpg" src="http://ak-hdl.buzzfed.com/static/2015-04/21/5/enhanced/webdr12/grid-cell-2501-1429608056-15.jpg" width="203"></img></p>
+ <p><img src="http://ak-hdl.buzzfed.com/static/2015-04/21/5/enhanced/webdr12/grid-cell-2501-1429608056-15.jpg" rel:bf_image_src="http://ak-hdl.buzzfed.com/static/2015-04/21/5/enhanced/webdr12/grid-cell-2501-1429608056-15.jpg" height="412" width="203"></p>
</div>
<p>Facebook</p>
</div>
<div>
<div>
- <p><img height="412" rel:bf_image_src="http://ak-hdl.buzzfed.com/static/2015-04/21/5/enhanced/webdr12/grid-cell-2501-1429608057-18.jpg" src="http://ak-hdl.buzzfed.com/static/2015-04/21/5/enhanced/webdr12/grid-cell-2501-1429608057-18.jpg" width="412"></img></p>
+ <p><img src="http://ak-hdl.buzzfed.com/static/2015-04/21/5/enhanced/webdr12/grid-cell-2501-1429608057-18.jpg" rel:bf_image_src="http://ak-hdl.buzzfed.com/static/2015-04/21/5/enhanced/webdr12/grid-cell-2501-1429608057-18.jpg" height="412" width="412"></p>
</div>
<p>Facebook</p>
</div>
@@ -36,6 +36,7 @@
</div>
<div id="superlist_3758406_5547219" rel:buzz_num="5">
<h2>Fiona Parry issued a plea for people to stay away from pills containing the chemical.</h2>
+
<p>“[Eloise] just never really understood how dangerous the tablets that she took were,” she said. “Most of us don’t believe that a slimming tablet could possibly kill us.</p>
<p>“DNP is not a miracle slimming pill. It is a deadly toxin.”</p>
</div>
diff --git a/test/test-pages/clean-links/expected.html b/test/test-pages/clean-links/expected.html
index 8c1b8b1..c02410e 100644
--- a/test/test-pages/clean-links/expected.html
+++ b/test/test-pages/clean-links/expected.html
@@ -1,9 +1,12 @@
<div>
<div>
<h3>Study Webtext</h3>
- <h2><span color="Maroon&#xA; " face="Lucida Handwriting ">"Bartleby the Scrivener: A Story of Wall-Street " </span>(1853) <br></br>
+ <h2><span face="Lucida Handwriting " color="Maroon
+ ">"Bartleby the Scrivener: A Story of Wall-Street " </span>(1853)&nbsp;<br>
Herman Melville</h2>
- <h2><a href="http://www.vcu.edu/engweb/webtexts/bartleby.html&#xA; " target="_blank "><img alt="To the story text without notes&#xA; " height="38 " src="http://fakehost/test/hmhome.gif " width="38 "></img></a>
+ <h2><a href="http://www.vcu.edu/engweb/webtexts/bartleby.html
+ " target="_blank "><img src="http://fakehost/test/hmhome.gif " alt="To the story text without notes
+ " height="38 " width="38 "></a>
</h2>
<h3>Prepared by <a href="http://www.vcu.edu/engweb ">Ann
Woodlief,</a> Virginia Commonwealth University</h3>
@@ -1383,4 +1386,5 @@
</p>
<p> Ah
Bartleby! Ah humanity!</p>
- </div></div> \ No newline at end of file
+ </div>
+ </div> \ No newline at end of file
diff --git a/test/test-pages/cnet-svg-classes/expected-metadata.json b/test/test-pages/cnet-svg-classes/expected-metadata.json
index be68e31..632df58 100644
--- a/test/test-pages/cnet-svg-classes/expected-metadata.json
+++ b/test/test-pages/cnet-svg-classes/expected-metadata.json
@@ -1,8 +1,8 @@
{
- "Author": null,
+ "Author": "por \n \n \n César Salza",
"Direction": null,
"Excerpt": "Twitter Lite llega a 11 países de América Latina, para ayudar a los usuarios con mala señal de sus redes móviles.",
"Image": "https:\/\/cdn1.cnet.com\/img\/JumVcu1ZSLtPP8ui0UWaSlgi5RU=\/670x503\/2017\/12\/01\/b36ce794-e0b8-495c-a198-184923a8f4e9\/twitter-lite.jpg",
"Title": "Twitter Lite se estrena en México, Venezuela y otros nueve países",
"SiteName": "CNET en Español"
-}
+} \ No newline at end of file
diff --git a/test/test-pages/cnet-svg-classes/expected.html b/test/test-pages/cnet-svg-classes/expected.html
index 1b63512..58f78ea 100644
--- a/test/test-pages/cnet-svg-classes/expected.html
+++ b/test/test-pages/cnet-svg-classes/expected.html
@@ -1,23 +1,29 @@
-<div data-component="lazyloadImages" itemprop="articleBody">
- <figure section="shortcodeImage"><span><span itemprop="image" itemscope="" itemtype="https://schema.org/ImageObject"><img alt="twitter-lite" class="" height="0" src="https://cdn2.cnet.com/img/LI8y19stcvIQUdzbYdH4-DAigtc=/fit-in/570x0/2017/12/01/b36ce794-e0b8-495c-a198-184923a8f4e9/twitter-lite.jpg" width="570"></img><meta content="https://cdn2.cnet.com/img/LI8y19stcvIQUdzbYdH4-DAigtc=/fit-in/570x0/2017/12/01/b36ce794-e0b8-495c-a198-184923a8f4e9/twitter-lite.jpg" itemprop="url"></meta><meta content="0" itemprop="height"></meta><meta content="570" itemprop="width"></meta></span></span>
+<div itemprop="articleBody" data-component="lazyloadImages" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <figure section="shortcodeImage"><span><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img src="https://cdn2.cnet.com/img/LI8y19stcvIQUdzbYdH4-DAigtc=/fit-in/570x0/2017/12/01/b36ce794-e0b8-495c-a198-184923a8f4e9/twitter-lite.jpg" class alt="twitter-lite" height="0" width="570"><meta itemprop="url" content="https://cdn2.cnet.com/img/LI8y19stcvIQUdzbYdH4-DAigtc=/fit-in/570x0/2017/12/01/b36ce794-e0b8-495c-a198-184923a8f4e9/twitter-lite.jpg"><meta itemprop="height" content="0"><meta itemprop="width" content="570"></span></span>
<figcaption><span><p>Twitter Lite estará disponible en Google Play Store en 11 países de América Latina.</p></span><span>
Twitter
- </span></figcaption></figure><p>Twitter ha dado a conocer que Twitter Lite llegará a un total de 24 nuevos países a partir de hoy, 11 de ellos de América Latina. </p>
- <p>Según explicó en un <a data-component="externalLink" href="https://blog.twitter.com/official/en_us/topics/product/2017/twitter-lite-in-the-google-play-store-in-24-more-countries.html#" target="_blank">comunicado</a> <span section="shortcodeLink"><a href="http://fakehost/es/noticias/twitter-estrena-twitter-lite/">Twitter Lite</a></span> ahora estará disponible en Bolivia, Brasil, Chile, Colombia, Costa Rica, Ecuador, México, Panamá, Perú, El Salvador y Venezuela.</p>
+ </span></figcaption>
+ </figure>
+ <p>Twitter ha dado a conocer que Twitter Lite llegará a un total de 24 nuevos países a partir de hoy, 11 de ellos de América Latina. </p>
+ <p>Según explicó en un <a href="https://blog.twitter.com/official/en_us/topics/product/2017/twitter-lite-in-the-google-play-store-in-24-more-countries.html#" target="_blank" data-component="externalLink">comunicado</a> <span section="shortcodeLink"><a href="http://fakehost/es/noticias/twitter-estrena-twitter-lite/">Twitter Lite</a></span> ahora estará disponible en Bolivia, Brasil, Chile, Colombia, Costa Rica, Ecuador, México, Panamá, Perú, El Salvador y Venezuela.</p>
<p>Twitter Lite es la versión ligera de la aplicación de la red social para Android, disponible en la Google Play Store. Con este app los usuarios que experimentan fallos de red o que viven en países con redes con poca velocidad de conexión como Venezuela podrán descargar los tuits de forma más rápida.</p>
<p>Entre sus novedades, Twitter Lite permite la carga rápida de tuits en redes 2G y 3G, y ofrece ayuda offline en caso de que pierdas tu conexión; a eso debemos sumar que minimiza el uso de datos y ofrece un modo de ahorro, en el que únicamente se descargan las fotos o videos de los tuits que quieres ver.</p>
<p>Además, el app ocupa menos espacio en tu teléfono móvil, al reducir a 3MB su peso.</p>
- <p>Twitter dio a conocer Twitter Lite en abril en India, y desde entonces ha estado trabajando para llevarlo a más países. La empresa en los últimos meses también se ha involucrado de forma definitiva en la <span section="shortcodeLink"><a href="http://fakehost/es/noticias/twitter-hemos-progresado-en-nuestra-batalla-contra-el-abuso/">eliminación de los abusos en la red social</a></span>, tomando medidas incluso en la <span section="shortcodeLink"><a href="http://fakehost/es/noticias/twitter-elimina-verificacion-a-cuentas-ofensivas/">verificación de cuentas.</a></span></p><svg><symbol id="play" viewbox="0 0 26.6 32"><path d="M0,2.6c0-2.4,1.6-3.3,3.7-2L25,13.7c2,1.3,2,3.2,0,4.5L3.7,31.4c-2,1.3-3.7,0.3-3.7-2C0,29.4,0,2.6,0,2.6z"></path></symbol><symbol id="pause" viewbox="0 0 26.6 32"><g><polygon points="16,32 26.5,32 26.5,8.8 26.5,0 16,0"></polygon><rect height="32" width="10.6" x="0.1" y="0"></rect></g></symbol><symbol id="playlist" viewbox="0 0 32 22.9"><g><circle cx="2.3" cy="20.6" r="2.3"></circle><circle cx="2.3" cy="11.4" r="2.3"></circle><circle cx="2.3" cy="2.3" r="2.3"></circle><path d="M32,1.1C32,0.5,31.5,0,30.9,0H10.3C9.7,0,9.1,0.5,9.1,1.1v2.3c0,0.6,0.5,1.1,1.1,1.1h20.6c0.6,0,1.1-0.5,1.1-1.1V1.1z"></path><path d="M32,10.3c0-0.6-0.5-1.1-1.1-1.1H10.3c-0.6,0-1.1,0.5-1.1,1.1v2.3c0,0.6,0.5,1.1,1.1,1.1h20.6c0.6,0,1.1-0.5,1.1-1.1V10.3z"></path><path d="M32,19.4c0-0.6-0.5-1.1-1.1-1.1H10.3c-0.6,0-1.1,0.5-1.1,1.1v2.3c0,0.6,0.5,1.1,1.1,1.1h20.6c0.6,0,1.1-0.5,1.1-1.1V19.4z"></path></g></symbol><symbol id="speaker-on" viewbox="0 0 32 28.1"><g><g><path d="M12.6,5L6.3,8.7H0.6C0.3,8.7,0,9,0,9.3V19c0,0.4,0.3,0.7,0.6,0.7h5.9l6.1,3.4c1.3,0.8,1.5,0.2,1.5-1.5V6.5C14.2,4.8,13.9,4.2,12.6,5z"></path></g><path d="M18,23.1v-2.8c2.6,0,4.7-2.8,4.7-6.2S20.6,7.8,18,7.8V5c4.2,0,7.5,4,7.5,9S22.1,23.1,18,23.1z"></path><path d="M21.3,28.1v-2.8c4.4,0,7.9-5,7.9-11.2S25.6,2.8,21.3,2.8V0C27.2,0,32,6.3,32,14C32,21.8,27.2,28.1,21.3,28.1z"></path></g></symbol><symbol id="speaker-off" viewbox="0 0 32 18.8"><g><g><path d="M12.6,0.4L6.3,4H0.6C0.3,4,0,4.3,0,4.7v9.7c0,0.4,0.3,0.7,0.6,0.7h5.9l6.1,3.4c1.3,0.8,1.5,0.2,1.5-1.5V1.8C14.2,0.2,13.9-0.5,12.6,0.4z"></path></g><polygon points="32,4.5 30.2,2.7 25.3,7.6 20.4,2.7 18.6,4.5 23.5,9.4 18.6,14.3 20.4,16.1 25.3,11.2 30.2,16.1 32,14.3 27.1,9.4 "></polygon></g></symbol><symbol id="captions" viewbox="0 0 32 16.2"><g><path d="M8.6,16.2c-1.2,0-2.4-0.2-3.4-0.6c-1.1-0.4-2-0.9-2.7-1.6c-0.8-0.7-1.4-1.6-1.8-2.6C0.2,10.4,0,9.3,0,8.1c0-1.2,0.2-2.3,0.7-3.3s1-1.8,1.8-2.6C3.2,1.5,4.1,1,5.2,0.6S7.4,0,8.6,0c1,0,1.9,0.1,2.7,0.4c0.8,0.3,1.4,0.6,2,1.1c0.6,0.4,1.1,0.9,1.4,1.5c0.4,0.5,0.7,1.1,0.9,1.6l-4.1,1.9c-0.1-0.3-0.2-0.6-0.4-0.9C11,5.3,10.8,5,10.5,4.8c-0.3-0.2-0.6-0.4-0.9-0.5c-0.3-0.1-0.7-0.2-1-0.2C8,4.2,7.5,4.3,7,4.5C6.6,4.7,6.2,5,5.8,5.3C5.5,5.7,5.2,6.1,5.1,6.5C4.9,7,4.8,7.5,4.8,8.1c0,0.5,0.1,1.1,0.3,1.5c0.2,0.5,0.4,0.9,0.8,1.2c0.3,0.4,0.7,0.6,1.2,0.8C7.5,11.9,8,12,8.6,12c0.3,0,0.7-0.1,1-0.2c0.3-0.1,0.6-0.3,0.9-0.5c0.3-0.2,0.5-0.4,0.7-0.7c0.2-0.3,0.3-0.6,0.4-0.9l4.1,1.9c-0.2,0.5-0.5,1-0.9,1.6c-0.4,0.5-0.9,1-1.4,1.5c-0.6,0.4-1.2,0.8-2,1.1C10.5,16,9.6,16.2,8.6,16.2z"></path><path d="M24.9,16.2c-1.2,0-2.4-0.2-3.4-0.6c-1.1-0.4-2-0.9-2.7-1.6c-0.8-0.7-1.4-1.6-1.8-2.6c-0.4-1-0.7-2.1-0.7-3.3c0-1.2,0.2-2.3,0.7-3.3c0.4-1,1-1.8,1.8-2.6c0.8-0.7,1.7-1.3,2.7-1.7C22.6,0.2,23.7,0,24.9,0c1,0,1.9,0.1,2.7,0.4c0.8,0.3,1.4,0.6,2,1.1c0.6,0.4,1.1,0.9,1.4,1.5C31.5,3.5,31.8,4,32,4.5l-4.1,1.9c-0.1-0.3-0.2-0.6-0.4-0.9c-0.2-0.3-0.4-0.5-0.7-0.7c-0.3-0.2-0.6-0.4-0.9-0.5c-0.3-0.1-0.7-0.2-1-0.2c-0.6,0-1.1,0.1-1.5,0.3c-0.5,0.2-0.9,0.5-1.2,0.8c-0.3,0.4-0.6,0.8-0.8,1.2c-0.2,0.5-0.3,1-0.3,1.5c0,0.5,0.1,1.1,0.3,1.5c0.2,0.5,0.4,0.9,0.8,1.2c0.3,0.4,0.7,0.6,1.2,0.8c0.5,0.2,1,0.3,1.5,0.3c0.3,0,0.7-0.1,1-0.2c0.3-0.1,0.6-0.3,0.9-0.5c0.3-0.2,0.5-0.4,0.7-0.7c0.2-0.3,0.3-0.6,0.4-0.9l4.1,1.9c-0.2,0.5-0.5,1-0.9,1.6c-0.4,0.5-0.9,1-1.4,1.5c-0.6,0.4-1.2,0.8-2,1.1C26.8,16,25.9,16.2,24.9,16.2z"></path></g></symbol><symbol id="fullscreen" viewbox="0 0 32 32"><g><g><polygon points="11.4,0 0,0 0,11.4 3.4,8 9.1,13.7 13.7,9.1 8,3.4 &#x9;&#x9;&#x9;"></polygon></g><g><polygon points="20.6,32 32,32 32,20.6 28.6,24 22.9,18.3 18.3,22.9 24,28.6 &#x9;&#x9;&#x9;"></polygon></g><g><polygon points="32,11.4 32,0 20.6,0 24,3.4 18.3,9.1 22.9,13.7 28.6,8 &#x9;&#x9;&#x9;"></polygon></g><g><polygon points="0,20.6 0,32 11.4,32 8,28.6 13.7,22.9 9.1,18.3 3.4,24 &#x9;&#x9;&#x9;"></polygon></g></g></symbol><symbol id="video" viewbox="0 0 32 22"><g><path d="M29,2.2c-0.7,0.2-4.6,3-7.9,5.3V2.1C21.1,1,20.1,0,19,0H2.1C1,0,0,1,0,2.1v17.7C0,21,1,22,2.1,22H19c1.2,0,2.1-1,2.1-2.1v-5.9c3.3,2.4,7.4,5.4,8.2,5.6c1.4,0.4,2.7-0.1,2.7-0.1V2.2C32,2.2,30.1,1.8,29,2.2z"></path></g></symbol></svg><div data-load-playlist="[{&quot;id&quot;:&quot;dc362fcb-cba9-4bf6-b62d-aa7e39a092c7&quot;,&quot;title&quot;:&quot;Google Assistant mejora, hay m\u00e1s cambios en Twitter y llega el OnePlus 5T&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #163] Esta semana hablamos de las caracter\u00edsticas del OnePlus 5T, las novedades de Google Assistant y los cambios que ha hecho Twitter a su proceso de verificaci\u00f3n.&quot;,&quot;slug&quot;:&quot;google-assistant-mejora-hay-mas-cambios-en-twitter-y-llega-el-oneplus-5t&quot;,&quot;chapters&quot;:{&quot;data&quot;:[],&quot;paging&quot;:{&quot;total&quot;:0,&quot;limit&quot;:15,&quot;offset&quot;:0}},&quot;duration&quot;:489,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:&quot;&quot;,&quot;mpxRefId&quot;:&quot;38uKprB1_hIkwXffuj20eMptuapoWX4K&quot;,&quot;ratingVChip&quot;:&quot;TV-14&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;1c0fd1cb-c387-11e2-8208-0291187b029a&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;6a9b3b6b-575a-4b66-b4b2-4aedee01be6d&quot;,&quot;firstName&quot;:&quot;Gabriel&quot;,&quot;lastName&quot;:&quot;Sama&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:&quot;La semana&quot;},&quot;image&quot;:{&quot;id&quot;:&quot;70540d7a-cbc5-4563-ab86-b5549ef68168&quot;,&quot;filename&quot;:&quot;oneplus-5t-product-21.jpg&quot;,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-11-13 17:56:07&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;alt&quot;:&quot;oneplus-5t-product-21&quot;,&quot;credits&quot;:&quot;Andrew Hoyle\/CNET&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/EcEJ76YiEastX8yctETLURpwICc=\/2017\/11\/13\/70540d7a-cbc5-4563-ab86-b5549ef68168\/oneplus-5t-product-21.jpg&quot;,&quot;cropGravity&quot;:0,&quot;crop&quot;:null,&quot;typeName&quot;:&quot;content_image&quot;},&quot;thumbnail&quot;:&quot;https:\/\/cdn1.cnet.com\/img\/xTOX9ZdBnxWFXxkzSLG6dBydTMg=\/fit-in\/194x109\/2017\/11\/13\/70540d7a-cbc5-4563-ab86-b5549ef68168\/oneplus-5t-product-21.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/google-assistant-mejora-hay-mas-cambios-en-twitter-y-llega-el-oneplus-5t.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/11\/17\/1098353731717\/es_lasemana16novFINAL_1265786_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/google-assistant-mejora-hay-mas-cambios-en-twitter-y-llega-el-oneplus-5t\/&quot;},{&quot;id&quot;:&quot;7097a578-8dc8-48b8-9bea-bc0dcabdb558&quot;,&quot;title&quot;:&quot;El \u0027bug\u0027 de MacOS High Sierra y la expansi\u00f3n de Huawei en Latinoam\u00e9rica&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #165] Apple solucion\u00f3 el problema de que se pod\u00eda acceder a algunas Mac sin contrase\u00f1a. Huawei adelant\u00f3 planes para la regi\u00f3n.&quot;,&quot;slug&quot;:&quot;bug-de-macos-high-sierra-expansion-huawei-en-latinoamerica&quot;,&quot;chapters&quot;:&quot;&quot;,&quot;duration&quot;:550,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:1107731523514,&quot;mpxRefId&quot;:&quot;IwoiIhK2JgjRf8oj2sS99ClHB2K8w8uw&quot;,&quot;ratingVChip&quot;:&quot;&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;272ff2eb-03d3-4e24-9b55-09f4633368f9&quot;,&quot;firstName&quot;:&quot;Mariana&quot;,&quot;lastName&quot;:&quot;Marcaletti&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:[&quot;La semana&quot;]},&quot;image&quot;:{&quot;id&quot;:&quot;1934b65e-89f2-4449-ae15-61584288ed9d&quot;,&quot;name&quot;:&quot;macos-high-sierra-image&quot;,&quot;filename&quot;:&quot;macos-high-sierra-image.jpg&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/bmNGTUwxlWz6QUuj1pUj2G90QUE=\/2017\/09\/27\/1934b65e-89f2-4449-ae15-61584288ed9d\/macos-high-sierra-image.jpg&quot;,&quot;size&quot;:1306802,&quot;height&quot;:1080,&quot;width&quot;:1920,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-09-27 17:49:57&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;dateUpdated&quot;:{&quot;date&quot;:&quot;2017-09-27 17:49:57&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;needsModeration&quot;:0,&quot;mimeType&quot;:&quot;image\/jpeg&quot;,&quot;deleted&quot;:0,&quot;preferred&quot;:0,&quot;watermark&quot;:0,&quot;alt&quot;:&quot;macos-high-sierra-image&quot;,&quot;cropGravity&quot;:0},&quot;thumbnail&quot;:&quot;https:\/\/cdn3.cnet.com\/img\/C6S9ny6QsPl0M4RazJBreX1ZaO8=\/fit-in\/194x109\/2017\/09\/27\/1934b65e-89f2-4449-ae15-61584288ed9d\/macos-high-sierra-image.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/bug-de-macos-high-sierra-expansion-huawei-en-latinoamerica.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/12\/01\/1107731523514\/es_lasemana1diciembre_1275504_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/bug-de-macos-high-sierra-expansion-huawei-en-latinoamerica\/&quot;},{&quot;id&quot;:&quot;41e31d24-ab17-445d-8841-ceb86ae9044f&quot;,&quot;title&quot;:&quot;Nuestros consejos para la temporada de ofertas&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #164] Nada de madrugar, hacer filas largas y estresarte. Esta semana te compartimos sugerencias puntuales para que le saques m\u00e1s jugo a las compras de Black Friday y Cyber Monday.&quot;,&quot;slug&quot;:&quot;consejos-ofertas-viernes-negro&quot;,&quot;chapters&quot;:&quot;&quot;,&quot;duration&quot;:441,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:1102073923731,&quot;mpxRefId&quot;:&quot;5XzHm1c3DBSxFhifEcVyEyTaNwlg6R0a&quot;,&quot;ratingVChip&quot;:&quot;&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;272ff2eb-03d3-4e24-9b55-09f4633368f9&quot;,&quot;firstName&quot;:&quot;Mariana&quot;,&quot;lastName&quot;:&quot;Marcaletti&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:[&quot;La semana&quot;]},&quot;image&quot;:{&quot;id&quot;:&quot;154d2576-1ff8-41d8-ac2a-414450d5ee6c&quot;,&quot;name&quot;:&quot;viernesnegro&quot;,&quot;filename&quot;:&quot;viernesnegro.jpg&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/e6vO1LTPdKpSs3924nDWctNCZMY=\/2017\/11\/22\/154d2576-1ff8-41d8-ac2a-414450d5ee6c\/viernesnegro.jpg&quot;,&quot;size&quot;:278742,&quot;height&quot;:900,&quot;width&quot;:1600,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-11-22 22:32:03&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;dateUpdated&quot;:{&quot;date&quot;:&quot;2017-11-22 22:32:03&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;needsModeration&quot;:0,&quot;mimeType&quot;:&quot;image\/jpeg&quot;,&quot;deleted&quot;:0,&quot;preferred&quot;:0,&quot;watermark&quot;:0,&quot;alt&quot;:&quot;viernesnegro&quot;},&quot;thumbnail&quot;:&quot;https:\/\/cdn4.cnet.com\/img\/fcY_4UWuEddB5TbPXMSaNvgfcec=\/fit-in\/194x109\/2017\/11\/22\/154d2576-1ff8-41d8-ac2a-414450d5ee6c\/viernesnegro.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/consejos-ofertas-viernes-negro.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/11\/22\/1102073923731\/semana_nov22_1270073_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/consejos-ofertas-viernes-negro\/&quot;},{&quot;id&quot;:&quot;db8b62cc-68fc-4f96-8fbc-bcbe5d4f8a1c&quot;,&quot;title&quot;:&quot;El desembarco de Xiaomi en Espa\u00f1a y la previa del OnePlus 5T&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #162] La fabricante de celulares china llega a Espa\u00f1a con m\u00e1s de seis tel\u00e9fonos de menos de 300 euros, y el OnePlus 5T se presentar\u00e1 el 16 de noviembre en Estados Unidos.&quot;,&quot;slug&quot;:&quot;el-desembarco-de-xiaomi-en-espana-y-la-previa-del-oneplus-5t&quot;,&quot;chapters&quot;:&quot;&quot;,&quot;duration&quot;:500,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:1093211715579,&quot;mpxRefId&quot;:&quot;APQJZKaXzbhmwxYJcFFg_AHYIHfLWNU6&quot;,&quot;ratingVChip&quot;:&quot;&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;272ff2eb-03d3-4e24-9b55-09f4633368f9&quot;,&quot;firstName&quot;:&quot;Mariana&quot;,&quot;lastName&quot;:&quot;Marcaletti&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:[&quot;La semana&quot;]},&quot;image&quot;:{&quot;id&quot;:&quot;96ec74ea-1acb-48be-b74e-816ba301d19a&quot;,&quot;name&quot;:&quot;oneplus-5t&quot;,&quot;filename&quot;:&quot;oneplus-5t.jpg&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/KK0CqnMaqMxZ9bC-3jbAiQhnutM=\/2017\/10\/30\/96ec74ea-1acb-48be-b74e-816ba301d19a\/oneplus-5t.jpg&quot;,&quot;caption&quot;:&quot;&lt;p>Una supuesta foto del OnePlus 5T filtrada en China.&lt;\/p>&quot;,&quot;size&quot;:41019,&quot;height&quot;:592,&quot;width&quot;:690,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-10-30 19:55:39&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;dateUpdated&quot;:{&quot;date&quot;:&quot;2017-10-30 19:56:18&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;needsModeration&quot;:0,&quot;mimeType&quot;:&quot;image\/jpeg&quot;,&quot;deleted&quot;:0,&quot;preferred&quot;:0,&quot;watermark&quot;:0,&quot;credits&quot;:&quot;Weibo&quot;,&quot;alt&quot;:&quot;oneplus-5t&quot;},&quot;thumbnail&quot;:&quot;https:\/\/cdn2.cnet.com\/img\/9CtVwepYPv7fktP5LlCjoAjq0is=\/fit-in\/194x109\/2017\/10\/30\/96ec74ea-1acb-48be-b74e-816ba301d19a\/oneplus-5t.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/el-desembarco-de-xiaomi-en-espana-y-la-previa-del-oneplus-5t.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/11\/10\/1093211715579\/es_lasemana_9noviembre02_1259372_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/el-desembarco-de-xiaomi-en-espana-y-la-previa-del-oneplus-5t\/&quot;},{&quot;id&quot;:&quot;283c729a-eeeb-454b-ae03-d1d95229031d&quot;,&quot;title&quot;:&quot;Google Assistant habla espa\u00f1ol y el iPhone X presenta un nuevo idioma de dise\u00f1o&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #161] El asistente virtual de Google ahora domina el idioma de Cervantes, y el iPhone X inaugura nuevos gestos y un nuevo lenguaje de dise\u00f1o de la marca.&quot;,&quot;slug&quot;:&quot;google-assistant-habla-espanol-y-el-iphone-x-un-nuevo-idioma&quot;,&quot;chapters&quot;:&quot;&quot;,&quot;duration&quot;:683,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:1087923267594,&quot;mpxRefId&quot;:&quot;jCXv62P0jCNTJB3jKuthMzA3CV0ghejk&quot;,&quot;ratingVChip&quot;:&quot;&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;272ff2eb-03d3-4e24-9b55-09f4633368f9&quot;,&quot;firstName&quot;:&quot;Mariana&quot;,&quot;lastName&quot;:&quot;Marcaletti&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:[&quot;La semana&quot;]},&quot;image&quot;:{&quot;id&quot;:&quot;0d404b1c-30e9-4ccf-9901-d2125b2b23f2&quot;,&quot;name&quot;:&quot;iphone-x-67&quot;,&quot;filename&quot;:&quot;iphone-x-67.jpg&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/JoewZeNO5ePGyD5iGiD7VM32i9w=\/2017\/11\/03\/0d404b1c-30e9-4ccf-9901-d2125b2b23f2\/iphone-x-67.jpg&quot;,&quot;size&quot;:153088,&quot;height&quot;:900,&quot;width&quot;:1600,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-11-03 16:19:37&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;dateUpdated&quot;:{&quot;date&quot;:&quot;2017-11-03 16:19:37&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;needsModeration&quot;:0,&quot;mimeType&quot;:&quot;image\/jpeg&quot;,&quot;deleted&quot;:0,&quot;preferred&quot;:0,&quot;watermark&quot;:0,&quot;alt&quot;:&quot;iphone-x-67&quot;},&quot;thumbnail&quot;:&quot;https:\/\/cdn3.cnet.com\/img\/6fdfuTdyxV3t7waWLSKyE6df3fY=\/fit-in\/194x109\/2017\/11\/03\/0d404b1c-30e9-4ccf-9901-d2125b2b23f2\/iphone-x-67.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/google-assistant-habla-espanol-y-el-iphone-x-un-nuevo-idioma.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/11\/03\/1087923267594\/semananov2_1253191_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/google-assistant-habla-espanol-y-el-iphone-x-un-nuevo-idioma\/&quot;},{&quot;id&quot;:&quot;a3c0de25-3d75-44b9-9c83-6925dbd3ebb2&quot;,&quot;title&quot;:&quot;La pantalla del Pixel 2 XL, la llave maestra de Amazon y el inminente iPhone X&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #160] Analizamos los problemas con el panel OLED del tel\u00e9fono de Google, los env\u00edos de Amazon entran en tu hogar y ya est\u00e1 a la puerta el nuevo tel\u00e9fono de Apple.&quot;,&quot;slug&quot;:&quot;la-pantalla-de-pixel-2-xl-la-llave-maestra-de-amazon-y-el-inminente-iphone-x&quot;,&quot;chapters&quot;:&quot;&quot;,&quot;duration&quot;:574,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:1082906179568,&quot;mpxRefId&quot;:&quot;t4LPcFt8Hmm8Vg7U8o4s4_E0Xn_xqxAj&quot;,&quot;ratingVChip&quot;:&quot;&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;272ff2eb-03d3-4e24-9b55-09f4633368f9&quot;,&quot;firstName&quot;:&quot;Mariana&quot;,&quot;lastName&quot;:&quot;Marcaletti&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:[&quot;La semana&quot;]},&quot;image&quot;:{&quot;id&quot;:&quot;00597069-4f14-41dd-b1f1-e7bc413d4e17&quot;,&quot;name&quot;:&quot;Google Pixel 2 XL screen burn-in&quot;,&quot;filename&quot;:&quot;screen-problems-2405-001.jpg&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/zM13Oy086Lnor1efnDjx0mVca88=\/2017\/10\/23\/00597069-4f14-41dd-b1f1-e7bc413d4e17\/screen-problems-2405-001.jpg&quot;,&quot;caption&quot;:&quot;&lt;p>&lt;\/p>&quot;,&quot;size&quot;:1865911,&quot;height&quot;:1467,&quot;width&quot;:2200,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-10-23 19:09:04&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;dateUpdated&quot;:{&quot;date&quot;:&quot;2017-10-23 19:09:23&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;needsModeration&quot;:0,&quot;mimeType&quot;:&quot;image\/jpeg&quot;,&quot;deleted&quot;:0,&quot;preferred&quot;:0,&quot;watermark&quot;:1,&quot;credits&quot;:&quot;Josh Miller\/CNET&quot;,&quot;alt&quot;:&quot;Google Pixel 2 XL screen burn-in&quot;},&quot;thumbnail&quot;:&quot;https:\/\/cdn4.cnet.com\/img\/XTHaIZ7ZBuXvKPKB5niFqcP_23M=\/fit-in\/194x109\/2017\/10\/23\/00597069-4f14-41dd-b1f1-e7bc413d4e17\/screen-problems-2405-001.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/la-pantalla-de-pixel-2-xl-la-llave-maestra-de-amazon-y-el-inminente-iphone-x.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/10\/27\/1082906179568\/es_lasemana27october_1247416_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/la-pantalla-de-pixel-2-xl-la-llave-maestra-de-amazon-y-el-inminente-iphone-x\/&quot;},{&quot;id&quot;:&quot;ae23b111-1e88-4edd-b1b5-dfed3e0cb061&quot;,&quot;title&quot;:&quot;Se consolida el hogar inteligente y aparece el fallo KRACK&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #159] Esta semana hablamos de la nueva plataforma de Samsung para el Internet de las Cosas, de la vulnerabilidad KRACK y de los nuevos tel\u00e9fonos en el mercado.&quot;,&quot;slug&quot;:&quot;la-semana-oct-19-cnet-espanol&quot;,&quot;chapters&quot;:&quot;&quot;,&quot;duration&quot;:691,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:1077887555736,&quot;mpxRefId&quot;:&quot;H4gkX0JjbU6b4gxZOkirySjFp3Z845dA&quot;,&quot;ratingVChip&quot;:&quot;&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;6a9b3b6b-575a-4b66-b4b2-4aedee01be6d&quot;,&quot;firstName&quot;:&quot;Gabriel&quot;,&quot;lastName&quot;:&quot;Sama&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:[&quot;La semana&quot;]},&quot;image&quot;:{&quot;id&quot;:&quot;d704b38b-cafe-414b-879b-459dd712796c&quot;,&quot;name&quot;:&quot;zte-axon-m-9755-024&quot;,&quot;filename&quot;:&quot;zte-axon-m-9755-024.jpg&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/VAqXY-db6xzcKly6P5BNqbaHpQw=\/2017\/10\/20\/d704b38b-cafe-414b-879b-459dd712796c\/zte-axon-m-9755-024.jpg&quot;,&quot;size&quot;:87148,&quot;height&quot;:900,&quot;width&quot;:1600,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-10-20 16:33:13&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;dateUpdated&quot;:{&quot;date&quot;:&quot;2017-10-20 16:33:13&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;needsModeration&quot;:0,&quot;mimeType&quot;:&quot;image\/jpeg&quot;,&quot;deleted&quot;:0,&quot;preferred&quot;:0,&quot;watermark&quot;:0,&quot;alt&quot;:&quot;zte-axon-m-9755-024&quot;},&quot;thumbnail&quot;:&quot;https:\/\/cdn3.cnet.com\/img\/ReV56T1ZCShd3YWImeR2IWEqAXU=\/fit-in\/194x109\/2017\/10\/20\/d704b38b-cafe-414b-879b-459dd712796c\/zte-axon-m-9755-024.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/la-semana-oct-19-cnet-espanol.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/10\/20\/1077887555736\/semana_oct19_1241505_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/la-semana-oct-19-cnet-espanol\/&quot;},{&quot;id&quot;:&quot;4cb73b8d-1b2f-40ef-bb98-6b093198c681&quot;,&quot;title&quot;:&quot;Un nuevo Kindle y se asoman las nuevas gafas VR de Oculus&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #158] Esta semana, lleg\u00f3 el Kindle Oasis impermeable, se anunciaron las Oculus Go y Santa Cruz para realidad virtual y hubo un problemita con la Google Home Mini.&quot;,&quot;slug&quot;:&quot;un-nuevo-kindle-y-nuevas-gafas-vr-de-oculus-se-asoman&quot;,&quot;chapters&quot;:&quot;&quot;,&quot;duration&quot;:422,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:1072264259697,&quot;mpxRefId&quot;:&quot;8RTAYZ4ou1BgXXiybOYiclkJ6avdl6SM&quot;,&quot;ratingVChip&quot;:&quot;&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;272ff2eb-03d3-4e24-9b55-09f4633368f9&quot;,&quot;firstName&quot;:&quot;Mariana&quot;,&quot;lastName&quot;:&quot;Marcaletti&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:[&quot;La semana&quot;]},&quot;image&quot;:{&quot;id&quot;:&quot;4514916c-88c7-4c00-8324-9d522e0b3047&quot;,&quot;name&quot;:&quot;kindle-oasis-covers&quot;,&quot;filename&quot;:&quot;kindle-oasis-covers.jpg&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/el7STcxt2T02OoIFWp08KB2D1Bk=\/2017\/10\/05\/4514916c-88c7-4c00-8324-9d522e0b3047\/kindle-oasis-covers.jpg&quot;,&quot;caption&quot;:&quot;&lt;p>The optional covers start at $40 and come in nylon or leather.&lt;\/p>&quot;,&quot;size&quot;:4432570,&quot;height&quot;:3024,&quot;width&quot;:4032,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-10-05 19:52:22&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;dateUpdated&quot;:{&quot;date&quot;:&quot;2017-10-05 19:53:38&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;startDate&quot;:{&quot;date&quot;:&quot;2017-10-11 13:00:00&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;needsModeration&quot;:0,&quot;mimeType&quot;:&quot;image\/jpeg&quot;,&quot;deleted&quot;:0,&quot;preferred&quot;:0,&quot;watermark&quot;:1,&quot;credits&quot;:&quot;David Carnoy\/CNET&quot;,&quot;alt&quot;:&quot;kindle-oasis-covers&quot;},&quot;thumbnail&quot;:&quot;https:\/\/cdn3.cnet.com\/img\/vDQrwxSq2oDqDHdtnPLwD_eJR98=\/fit-in\/194x109\/2017\/10\/05\/4514916c-88c7-4c00-8324-9d522e0b3047\/kindle-oasis-covers.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/un-nuevo-kindle-y-nuevas-gafas-vr-de-oculus-se-asoman.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/10\/13\/1072264259697\/es_lasemana12_oct_1235274_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/un-nuevo-kindle-y-nuevas-gafas-vr-de-oculus-se-asoman\/&quot;},{&quot;id&quot;:&quot;09051611-4cd7-4384-a459-b4a1050b5c1c&quot;,&quot;title&quot;:&quot;Google Pixel 2 y lo que nos dej\u00f3 la temporada de s\u00faper tel\u00e9fonos&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #157] La gigante de las b\u00fasquedas se anima con todo al hardware, y sus tel\u00e9fonos marcan el fin de una \u00e9poca de grandes anuncios.&quot;,&quot;slug&quot;:&quot;google-pixel-2-lo-que-nos-dejo-la-temporada-de-super-telefonos&quot;,&quot;chapters&quot;:&quot;&quot;,&quot;duration&quot;:598,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:1064365123530,&quot;mpxRefId&quot;:&quot;Us3jKld5gPd3TfSG9QLLbD5jw_vdMyds&quot;,&quot;ratingVChip&quot;:&quot;&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;272ff2eb-03d3-4e24-9b55-09f4633368f9&quot;,&quot;firstName&quot;:&quot;Mariana&quot;,&quot;lastName&quot;:&quot;Marcaletti&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:[&quot;La semana&quot;]},&quot;image&quot;:{&quot;id&quot;:&quot;d077c3c0-c88f-492f-a8a2-8b043af04f0e&quot;,&quot;name&quot;:&quot;100417-google-pixel-2-7126&quot;,&quot;filename&quot;:&quot;100417-google-pixel-2-7126.jpg&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/BNbeNYmhimN2Z_KulzpEpn0l7AI=\/2017\/10\/05\/d077c3c0-c88f-492f-a8a2-8b043af04f0e\/100417-google-pixel-2-7126.jpg&quot;,&quot;size&quot;:52547,&quot;height&quot;:467,&quot;width&quot;:830,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-10-05 23:35:43&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;dateUpdated&quot;:{&quot;date&quot;:&quot;2017-10-05 23:35:43&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;needsModeration&quot;:0,&quot;mimeType&quot;:&quot;image\/jpeg&quot;,&quot;deleted&quot;:0,&quot;preferred&quot;:0,&quot;watermark&quot;:0,&quot;alt&quot;:&quot;100417-google-pixel-2-7126&quot;},&quot;thumbnail&quot;:&quot;https:\/\/cdn2.cnet.com\/img\/5-e1P5u3K43hFHiSjBjhdB3f1lI=\/fit-in\/194x109\/2017\/10\/05\/d077c3c0-c88f-492f-a8a2-8b043af04f0e\/100417-google-pixel-2-7126.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/google-pixel-2-lo-que-nos-dejo-la-temporada-de-super-telefonos.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/10\/06\/1064365123530\/semana_oct5_1229769_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/google-pixel-2-lo-que-nos-dejo-la-temporada-de-super-telefonos\/&quot;},{&quot;id&quot;:&quot;4bb8f3fd-304c-495e-8b83-57fcea47b89b&quot;,&quot;title&quot;:&quot;La avalancha de productos de Amazon, y tuits de 280 caracteres&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #156] Esta semana vimos nuevas bocinas de Amazon; una nueva c\u00e1mara GoPro y Twitter dijo que duplicar\u00e1 el l\u00edmite de caracteres en tuits.&quot;,&quot;slug&quot;:&quot;amazon-nuevos-productos-twitter-280-caracteres&quot;,&quot;chapters&quot;:&quot;&quot;,&quot;duration&quot;:673,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:1057969219682,&quot;mpxRefId&quot;:&quot;IUOzQ0y6ps_ludp4UH9c1EZFCsJNA7X8&quot;,&quot;ratingVChip&quot;:&quot;&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;272ff2eb-03d3-4e24-9b55-09f4633368f9&quot;,&quot;firstName&quot;:&quot;Mariana&quot;,&quot;lastName&quot;:&quot;Marcaletti&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:[&quot;La semana&quot;]},&quot;image&quot;:{&quot;id&quot;:&quot;194498de-a074-4687-ab0d-d880d5ee05de&quot;,&quot;name&quot;:&quot;amazon-spot-1&quot;,&quot;filename&quot;:&quot;amazon-spot-1.jpg&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/MLV0Q7ERz3liDf123UtGhwIuMjU=\/2017\/09\/28\/194498de-a074-4687-ab0d-d880d5ee05de\/amazon-spot-1.jpg&quot;,&quot;size&quot;:850748,&quot;height&quot;:1080,&quot;width&quot;:1920,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-09-28 05:39:36&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;dateUpdated&quot;:{&quot;date&quot;:&quot;2017-09-28 05:39:36&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;needsModeration&quot;:0,&quot;mimeType&quot;:&quot;image\/jpeg&quot;,&quot;deleted&quot;:0,&quot;preferred&quot;:0,&quot;watermark&quot;:0,&quot;alt&quot;:&quot;amazon-spot-1&quot;},&quot;thumbnail&quot;:&quot;https:\/\/cdn1.cnet.com\/img\/0t12kUyxiPUjjBEvghADT8bfI1Q=\/fit-in\/194x109\/2017\/09\/28\/194498de-a074-4687-ab0d-d880d5ee05de\/amazon-spot-1.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/amazon-nuevos-productos-twitter-280-caracteres.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/09\/29\/1057969219682\/es_lasemana_28septiembre_1223993_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/amazon-nuevos-productos-twitter-280-caracteres\/&quot;}]">
+ <p>Twitter dio a conocer Twitter Lite en abril en India, y desde entonces ha estado trabajando para llevarlo a más países. La empresa en los últimos meses también se ha involucrado de forma definitiva en la <span section="shortcodeLink"><a href="http://fakehost/es/noticias/twitter-hemos-progresado-en-nuestra-batalla-contra-el-abuso/">eliminación de los abusos en la red social</a></span>, tomando medidas incluso en la <span section="shortcodeLink"><a href="http://fakehost/es/noticias/twitter-elimina-verificacion-a-cuentas-ofensivas/">verificación de cuentas.</a></span></p><svg><symbol id="play" viewBox="0 0 26.6 32"><path d="M0,2.6c0-2.4,1.6-3.3,3.7-2L25,13.7c2,1.3,2,3.2,0,4.5L3.7,31.4c-2,1.3-3.7,0.3-3.7-2C0,29.4,0,2.6,0,2.6z" /></symbol><symbol id="pause" viewBox="0 0 26.6 32"><g><polygon points="16,32 26.5,32 26.5,8.8 26.5,0 16,0" /><rect x="0.1" y="0" width="10.6" height="32" /></g></symbol><symbol id="playlist" viewBox="0 0 32 22.9"><g><circle cx="2.3" cy="20.6" r="2.3" /><circle cx="2.3" cy="11.4" r="2.3" /><circle cx="2.3" cy="2.3" r="2.3" /><path d="M32,1.1C32,0.5,31.5,0,30.9,0H10.3C9.7,0,9.1,0.5,9.1,1.1v2.3c0,0.6,0.5,1.1,1.1,1.1h20.6c0.6,0,1.1-0.5,1.1-1.1V1.1z" /><path d="M32,10.3c0-0.6-0.5-1.1-1.1-1.1H10.3c-0.6,0-1.1,0.5-1.1,1.1v2.3c0,0.6,0.5,1.1,1.1,1.1h20.6c0.6,0,1.1-0.5,1.1-1.1V10.3z" /><path d="M32,19.4c0-0.6-0.5-1.1-1.1-1.1H10.3c-0.6,0-1.1,0.5-1.1,1.1v2.3c0,0.6,0.5,1.1,1.1,1.1h20.6c0.6,0,1.1-0.5,1.1-1.1V19.4z" /></g></symbol><symbol id="speaker-on" viewBox="0 0 32 28.1"><g><g><path d="M12.6,5L6.3,8.7H0.6C0.3,8.7,0,9,0,9.3V19c0,0.4,0.3,0.7,0.6,0.7h5.9l6.1,3.4c1.3,0.8,1.5,0.2,1.5-1.5V6.5C14.2,4.8,13.9,4.2,12.6,5z" /></g><path d="M18,23.1v-2.8c2.6,0,4.7-2.8,4.7-6.2S20.6,7.8,18,7.8V5c4.2,0,7.5,4,7.5,9S22.1,23.1,18,23.1z" /><path d="M21.3,28.1v-2.8c4.4,0,7.9-5,7.9-11.2S25.6,2.8,21.3,2.8V0C27.2,0,32,6.3,32,14C32,21.8,27.2,28.1,21.3,28.1z" /></g></symbol><symbol id="speaker-off" viewBox="0 0 32 18.8"><g><g><path d="M12.6,0.4L6.3,4H0.6C0.3,4,0,4.3,0,4.7v9.7c0,0.4,0.3,0.7,0.6,0.7h5.9l6.1,3.4c1.3,0.8,1.5,0.2,1.5-1.5V1.8C14.2,0.2,13.9-0.5,12.6,0.4z" /></g><polygon points="32,4.5 30.2,2.7 25.3,7.6 20.4,2.7 18.6,4.5 23.5,9.4 18.6,14.3 20.4,16.1 25.3,11.2 30.2,16.1 32,14.3 27.1,9.4 " /></g></symbol><symbol id="captions" viewBox="0 0 32 16.2"><g><path d="M8.6,16.2c-1.2,0-2.4-0.2-3.4-0.6c-1.1-0.4-2-0.9-2.7-1.6c-0.8-0.7-1.4-1.6-1.8-2.6C0.2,10.4,0,9.3,0,8.1c0-1.2,0.2-2.3,0.7-3.3s1-1.8,1.8-2.6C3.2,1.5,4.1,1,5.2,0.6S7.4,0,8.6,0c1,0,1.9,0.1,2.7,0.4c0.8,0.3,1.4,0.6,2,1.1c0.6,0.4,1.1,0.9,1.4,1.5c0.4,0.5,0.7,1.1,0.9,1.6l-4.1,1.9c-0.1-0.3-0.2-0.6-0.4-0.9C11,5.3,10.8,5,10.5,4.8c-0.3-0.2-0.6-0.4-0.9-0.5c-0.3-0.1-0.7-0.2-1-0.2C8,4.2,7.5,4.3,7,4.5C6.6,4.7,6.2,5,5.8,5.3C5.5,5.7,5.2,6.1,5.1,6.5C4.9,7,4.8,7.5,4.8,8.1c0,0.5,0.1,1.1,0.3,1.5c0.2,0.5,0.4,0.9,0.8,1.2c0.3,0.4,0.7,0.6,1.2,0.8C7.5,11.9,8,12,8.6,12c0.3,0,0.7-0.1,1-0.2c0.3-0.1,0.6-0.3,0.9-0.5c0.3-0.2,0.5-0.4,0.7-0.7c0.2-0.3,0.3-0.6,0.4-0.9l4.1,1.9c-0.2,0.5-0.5,1-0.9,1.6c-0.4,0.5-0.9,1-1.4,1.5c-0.6,0.4-1.2,0.8-2,1.1C10.5,16,9.6,16.2,8.6,16.2z" /><path d="M24.9,16.2c-1.2,0-2.4-0.2-3.4-0.6c-1.1-0.4-2-0.9-2.7-1.6c-0.8-0.7-1.4-1.6-1.8-2.6c-0.4-1-0.7-2.1-0.7-3.3c0-1.2,0.2-2.3,0.7-3.3c0.4-1,1-1.8,1.8-2.6c0.8-0.7,1.7-1.3,2.7-1.7C22.6,0.2,23.7,0,24.9,0c1,0,1.9,0.1,2.7,0.4c0.8,0.3,1.4,0.6,2,1.1c0.6,0.4,1.1,0.9,1.4,1.5C31.5,3.5,31.8,4,32,4.5l-4.1,1.9c-0.1-0.3-0.2-0.6-0.4-0.9c-0.2-0.3-0.4-0.5-0.7-0.7c-0.3-0.2-0.6-0.4-0.9-0.5c-0.3-0.1-0.7-0.2-1-0.2c-0.6,0-1.1,0.1-1.5,0.3c-0.5,0.2-0.9,0.5-1.2,0.8c-0.3,0.4-0.6,0.8-0.8,1.2c-0.2,0.5-0.3,1-0.3,1.5c0,0.5,0.1,1.1,0.3,1.5c0.2,0.5,0.4,0.9,0.8,1.2c0.3,0.4,0.7,0.6,1.2,0.8c0.5,0.2,1,0.3,1.5,0.3c0.3,0,0.7-0.1,1-0.2c0.3-0.1,0.6-0.3,0.9-0.5c0.3-0.2,0.5-0.4,0.7-0.7c0.2-0.3,0.3-0.6,0.4-0.9l4.1,1.9c-0.2,0.5-0.5,1-0.9,1.6c-0.4,0.5-0.9,1-1.4,1.5c-0.6,0.4-1.2,0.8-2,1.1C26.8,16,25.9,16.2,24.9,16.2z" /></g></symbol><symbol id="fullscreen" viewBox="0 0 32 32"><g><g><polygon points="11.4,0 0,0 0,11.4 3.4,8 9.1,13.7 13.7,9.1 8,3.4 " /></g><g><polygon points="20.6,32 32,32 32,20.6 28.6,24 22.9,18.3 18.3,22.9 24,28.6 " /></g><g><polygon points="32,11.4 32,0 20.6,0 24,3.4 18.3,9.1 22.9,13.7 28.6,8 " /></g><g><polygon points="0,20.6 0,32 11.4,32 8,28.6 13.7,22.9 9.1,18.3 3.4,24 " /></g></g></symbol><symbol id="video" viewBox="0 0 32 22"><g><path d="M29,2.2c-0.7,0.2-4.6,3-7.9,5.3V2.1C21.1,1,20.1,0,19,0H2.1C1,0,0,1,0,2.1v17.7C0,21,1,22,2.1,22H19c1.2,0,2.1-1,2.1-2.1v-5.9c3.3,2.4,7.4,5.4,8.2,5.6c1.4,0.4,2.7-0.1,2.7-0.1V2.2C32,2.2,30.1,1.8,29,2.2z" /></g></symbol></svg>
+ <div data-load-playlist="[{&quot;id&quot;:&quot;dc362fcb-cba9-4bf6-b62d-aa7e39a092c7&quot;,&quot;title&quot;:&quot;Google Assistant mejora, hay m\u00e1s cambios en Twitter y llega el OnePlus 5T&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #163] Esta semana hablamos de las caracter\u00edsticas del OnePlus 5T, las novedades de Google Assistant y los cambios que ha hecho Twitter a su proceso de verificaci\u00f3n.&quot;,&quot;slug&quot;:&quot;google-assistant-mejora-hay-mas-cambios-en-twitter-y-llega-el-oneplus-5t&quot;,&quot;chapters&quot;:{&quot;data&quot;:[],&quot;paging&quot;:{&quot;total&quot;:0,&quot;limit&quot;:15,&quot;offset&quot;:0}},&quot;duration&quot;:489,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:&quot;&quot;,&quot;mpxRefId&quot;:&quot;38uKprB1_hIkwXffuj20eMptuapoWX4K&quot;,&quot;ratingVChip&quot;:&quot;TV-14&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;1c0fd1cb-c387-11e2-8208-0291187b029a&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;6a9b3b6b-575a-4b66-b4b2-4aedee01be6d&quot;,&quot;firstName&quot;:&quot;Gabriel&quot;,&quot;lastName&quot;:&quot;Sama&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:&quot;La semana&quot;},&quot;image&quot;:{&quot;id&quot;:&quot;70540d7a-cbc5-4563-ab86-b5549ef68168&quot;,&quot;filename&quot;:&quot;oneplus-5t-product-21.jpg&quot;,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-11-13 17:56:07&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;alt&quot;:&quot;oneplus-5t-product-21&quot;,&quot;credits&quot;:&quot;Andrew Hoyle\/CNET&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/EcEJ76YiEastX8yctETLURpwICc=\/2017\/11\/13\/70540d7a-cbc5-4563-ab86-b5549ef68168\/oneplus-5t-product-21.jpg&quot;,&quot;cropGravity&quot;:0,&quot;crop&quot;:null,&quot;typeName&quot;:&quot;content_image&quot;},&quot;thumbnail&quot;:&quot;https:\/\/cdn1.cnet.com\/img\/xTOX9ZdBnxWFXxkzSLG6dBydTMg=\/fit-in\/194x109\/2017\/11\/13\/70540d7a-cbc5-4563-ab86-b5549ef68168\/oneplus-5t-product-21.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/google-assistant-mejora-hay-mas-cambios-en-twitter-y-llega-el-oneplus-5t.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/11\/17\/1098353731717\/es_lasemana16novFINAL_1265786_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/google-assistant-mejora-hay-mas-cambios-en-twitter-y-llega-el-oneplus-5t\/&quot;},{&quot;id&quot;:&quot;7097a578-8dc8-48b8-9bea-bc0dcabdb558&quot;,&quot;title&quot;:&quot;El \u0027bug\u0027 de MacOS High Sierra y la expansi\u00f3n de Huawei en Latinoam\u00e9rica&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #165] Apple solucion\u00f3 el problema de que se pod\u00eda acceder a algunas Mac sin contrase\u00f1a. Huawei adelant\u00f3 planes para la regi\u00f3n.&quot;,&quot;slug&quot;:&quot;bug-de-macos-high-sierra-expansion-huawei-en-latinoamerica&quot;,&quot;chapters&quot;:&quot;&quot;,&quot;duration&quot;:550,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:1107731523514,&quot;mpxRefId&quot;:&quot;IwoiIhK2JgjRf8oj2sS99ClHB2K8w8uw&quot;,&quot;ratingVChip&quot;:&quot;&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;272ff2eb-03d3-4e24-9b55-09f4633368f9&quot;,&quot;firstName&quot;:&quot;Mariana&quot;,&quot;lastName&quot;:&quot;Marcaletti&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:[&quot;La semana&quot;]},&quot;image&quot;:{&quot;id&quot;:&quot;1934b65e-89f2-4449-ae15-61584288ed9d&quot;,&quot;name&quot;:&quot;macos-high-sierra-image&quot;,&quot;filename&quot;:&quot;macos-high-sierra-image.jpg&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/bmNGTUwxlWz6QUuj1pUj2G90QUE=\/2017\/09\/27\/1934b65e-89f2-4449-ae15-61584288ed9d\/macos-high-sierra-image.jpg&quot;,&quot;size&quot;:1306802,&quot;height&quot;:1080,&quot;width&quot;:1920,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-09-27 17:49:57&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;dateUpdated&quot;:{&quot;date&quot;:&quot;2017-09-27 17:49:57&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;needsModeration&quot;:0,&quot;mimeType&quot;:&quot;image\/jpeg&quot;,&quot;deleted&quot;:0,&quot;preferred&quot;:0,&quot;watermark&quot;:0,&quot;alt&quot;:&quot;macos-high-sierra-image&quot;,&quot;cropGravity&quot;:0},&quot;thumbnail&quot;:&quot;https:\/\/cdn3.cnet.com\/img\/C6S9ny6QsPl0M4RazJBreX1ZaO8=\/fit-in\/194x109\/2017\/09\/27\/1934b65e-89f2-4449-ae15-61584288ed9d\/macos-high-sierra-image.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/bug-de-macos-high-sierra-expansion-huawei-en-latinoamerica.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/12\/01\/1107731523514\/es_lasemana1diciembre_1275504_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/bug-de-macos-high-sierra-expansion-huawei-en-latinoamerica\/&quot;},{&quot;id&quot;:&quot;41e31d24-ab17-445d-8841-ceb86ae9044f&quot;,&quot;title&quot;:&quot;Nuestros consejos para la temporada de ofertas&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #164] Nada de madrugar, hacer filas largas y estresarte. Esta semana te compartimos sugerencias puntuales para que le saques m\u00e1s jugo a las compras de Black Friday y Cyber Monday.&quot;,&quot;slug&quot;:&quot;consejos-ofertas-viernes-negro&quot;,&quot;chapters&quot;:&quot;&quot;,&quot;duration&quot;:441,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:1102073923731,&quot;mpxRefId&quot;:&quot;5XzHm1c3DBSxFhifEcVyEyTaNwlg6R0a&quot;,&quot;ratingVChip&quot;:&quot;&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;272ff2eb-03d3-4e24-9b55-09f4633368f9&quot;,&quot;firstName&quot;:&quot;Mariana&quot;,&quot;lastName&quot;:&quot;Marcaletti&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:[&quot;La semana&quot;]},&quot;image&quot;:{&quot;id&quot;:&quot;154d2576-1ff8-41d8-ac2a-414450d5ee6c&quot;,&quot;name&quot;:&quot;viernesnegro&quot;,&quot;filename&quot;:&quot;viernesnegro.jpg&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/e6vO1LTPdKpSs3924nDWctNCZMY=\/2017\/11\/22\/154d2576-1ff8-41d8-ac2a-414450d5ee6c\/viernesnegro.jpg&quot;,&quot;size&quot;:278742,&quot;height&quot;:900,&quot;width&quot;:1600,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-11-22 22:32:03&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;dateUpdated&quot;:{&quot;date&quot;:&quot;2017-11-22 22:32:03&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;needsModeration&quot;:0,&quot;mimeType&quot;:&quot;image\/jpeg&quot;,&quot;deleted&quot;:0,&quot;preferred&quot;:0,&quot;watermark&quot;:0,&quot;alt&quot;:&quot;viernesnegro&quot;},&quot;thumbnail&quot;:&quot;https:\/\/cdn4.cnet.com\/img\/fcY_4UWuEddB5TbPXMSaNvgfcec=\/fit-in\/194x109\/2017\/11\/22\/154d2576-1ff8-41d8-ac2a-414450d5ee6c\/viernesnegro.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/consejos-ofertas-viernes-negro.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/11\/22\/1102073923731\/semana_nov22_1270073_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/consejos-ofertas-viernes-negro\/&quot;},{&quot;id&quot;:&quot;db8b62cc-68fc-4f96-8fbc-bcbe5d4f8a1c&quot;,&quot;title&quot;:&quot;El desembarco de Xiaomi en Espa\u00f1a y la previa del OnePlus 5T&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #162] La fabricante de celulares china llega a Espa\u00f1a con m\u00e1s de seis tel\u00e9fonos de menos de 300 euros, y el OnePlus 5T se presentar\u00e1 el 16 de noviembre en Estados Unidos.&quot;,&quot;slug&quot;:&quot;el-desembarco-de-xiaomi-en-espana-y-la-previa-del-oneplus-5t&quot;,&quot;chapters&quot;:&quot;&quot;,&quot;duration&quot;:500,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:1093211715579,&quot;mpxRefId&quot;:&quot;APQJZKaXzbhmwxYJcFFg_AHYIHfLWNU6&quot;,&quot;ratingVChip&quot;:&quot;&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;272ff2eb-03d3-4e24-9b55-09f4633368f9&quot;,&quot;firstName&quot;:&quot;Mariana&quot;,&quot;lastName&quot;:&quot;Marcaletti&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:[&quot;La semana&quot;]},&quot;image&quot;:{&quot;id&quot;:&quot;96ec74ea-1acb-48be-b74e-816ba301d19a&quot;,&quot;name&quot;:&quot;oneplus-5t&quot;,&quot;filename&quot;:&quot;oneplus-5t.jpg&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/KK0CqnMaqMxZ9bC-3jbAiQhnutM=\/2017\/10\/30\/96ec74ea-1acb-48be-b74e-816ba301d19a\/oneplus-5t.jpg&quot;,&quot;caption&quot;:&quot;<p>Una supuesta foto del OnePlus 5T filtrada en China.<\/p>&quot;,&quot;size&quot;:41019,&quot;height&quot;:592,&quot;width&quot;:690,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-10-30 19:55:39&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;dateUpdated&quot;:{&quot;date&quot;:&quot;2017-10-30 19:56:18&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;needsModeration&quot;:0,&quot;mimeType&quot;:&quot;image\/jpeg&quot;,&quot;deleted&quot;:0,&quot;preferred&quot;:0,&quot;watermark&quot;:0,&quot;credits&quot;:&quot;Weibo&quot;,&quot;alt&quot;:&quot;oneplus-5t&quot;},&quot;thumbnail&quot;:&quot;https:\/\/cdn2.cnet.com\/img\/9CtVwepYPv7fktP5LlCjoAjq0is=\/fit-in\/194x109\/2017\/10\/30\/96ec74ea-1acb-48be-b74e-816ba301d19a\/oneplus-5t.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/el-desembarco-de-xiaomi-en-espana-y-la-previa-del-oneplus-5t.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/11\/10\/1093211715579\/es_lasemana_9noviembre02_1259372_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/el-desembarco-de-xiaomi-en-espana-y-la-previa-del-oneplus-5t\/&quot;},{&quot;id&quot;:&quot;283c729a-eeeb-454b-ae03-d1d95229031d&quot;,&quot;title&quot;:&quot;Google Assistant habla espa\u00f1ol y el iPhone X presenta un nuevo idioma de dise\u00f1o&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #161] El asistente virtual de Google ahora domina el idioma de Cervantes, y el iPhone X inaugura nuevos gestos y un nuevo lenguaje de dise\u00f1o de la marca.&quot;,&quot;slug&quot;:&quot;google-assistant-habla-espanol-y-el-iphone-x-un-nuevo-idioma&quot;,&quot;chapters&quot;:&quot;&quot;,&quot;duration&quot;:683,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:1087923267594,&quot;mpxRefId&quot;:&quot;jCXv62P0jCNTJB3jKuthMzA3CV0ghejk&quot;,&quot;ratingVChip&quot;:&quot;&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;272ff2eb-03d3-4e24-9b55-09f4633368f9&quot;,&quot;firstName&quot;:&quot;Mariana&quot;,&quot;lastName&quot;:&quot;Marcaletti&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:[&quot;La semana&quot;]},&quot;image&quot;:{&quot;id&quot;:&quot;0d404b1c-30e9-4ccf-9901-d2125b2b23f2&quot;,&quot;name&quot;:&quot;iphone-x-67&quot;,&quot;filename&quot;:&quot;iphone-x-67.jpg&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/JoewZeNO5ePGyD5iGiD7VM32i9w=\/2017\/11\/03\/0d404b1c-30e9-4ccf-9901-d2125b2b23f2\/iphone-x-67.jpg&quot;,&quot;size&quot;:153088,&quot;height&quot;:900,&quot;width&quot;:1600,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-11-03 16:19:37&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;dateUpdated&quot;:{&quot;date&quot;:&quot;2017-11-03 16:19:37&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;needsModeration&quot;:0,&quot;mimeType&quot;:&quot;image\/jpeg&quot;,&quot;deleted&quot;:0,&quot;preferred&quot;:0,&quot;watermark&quot;:0,&quot;alt&quot;:&quot;iphone-x-67&quot;},&quot;thumbnail&quot;:&quot;https:\/\/cdn3.cnet.com\/img\/6fdfuTdyxV3t7waWLSKyE6df3fY=\/fit-in\/194x109\/2017\/11\/03\/0d404b1c-30e9-4ccf-9901-d2125b2b23f2\/iphone-x-67.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/google-assistant-habla-espanol-y-el-iphone-x-un-nuevo-idioma.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/11\/03\/1087923267594\/semananov2_1253191_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/google-assistant-habla-espanol-y-el-iphone-x-un-nuevo-idioma\/&quot;},{&quot;id&quot;:&quot;a3c0de25-3d75-44b9-9c83-6925dbd3ebb2&quot;,&quot;title&quot;:&quot;La pantalla del Pixel 2 XL, la llave maestra de Amazon y el inminente iPhone X&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #160] Analizamos los problemas con el panel OLED del tel\u00e9fono de Google, los env\u00edos de Amazon entran en tu hogar y ya est\u00e1 a la puerta el nuevo tel\u00e9fono de Apple.&quot;,&quot;slug&quot;:&quot;la-pantalla-de-pixel-2-xl-la-llave-maestra-de-amazon-y-el-inminente-iphone-x&quot;,&quot;chapters&quot;:&quot;&quot;,&quot;duration&quot;:574,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:1082906179568,&quot;mpxRefId&quot;:&quot;t4LPcFt8Hmm8Vg7U8o4s4_E0Xn_xqxAj&quot;,&quot;ratingVChip&quot;:&quot;&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;272ff2eb-03d3-4e24-9b55-09f4633368f9&quot;,&quot;firstName&quot;:&quot;Mariana&quot;,&quot;lastName&quot;:&quot;Marcaletti&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:[&quot;La semana&quot;]},&quot;image&quot;:{&quot;id&quot;:&quot;00597069-4f14-41dd-b1f1-e7bc413d4e17&quot;,&quot;name&quot;:&quot;Google Pixel 2 XL screen burn-in&quot;,&quot;filename&quot;:&quot;screen-problems-2405-001.jpg&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/zM13Oy086Lnor1efnDjx0mVca88=\/2017\/10\/23\/00597069-4f14-41dd-b1f1-e7bc413d4e17\/screen-problems-2405-001.jpg&quot;,&quot;caption&quot;:&quot;<p><\/p>&quot;,&quot;size&quot;:1865911,&quot;height&quot;:1467,&quot;width&quot;:2200,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-10-23 19:09:04&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;dateUpdated&quot;:{&quot;date&quot;:&quot;2017-10-23 19:09:23&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;needsModeration&quot;:0,&quot;mimeType&quot;:&quot;image\/jpeg&quot;,&quot;deleted&quot;:0,&quot;preferred&quot;:0,&quot;watermark&quot;:1,&quot;credits&quot;:&quot;Josh Miller\/CNET&quot;,&quot;alt&quot;:&quot;Google Pixel 2 XL screen burn-in&quot;},&quot;thumbnail&quot;:&quot;https:\/\/cdn4.cnet.com\/img\/XTHaIZ7ZBuXvKPKB5niFqcP_23M=\/fit-in\/194x109\/2017\/10\/23\/00597069-4f14-41dd-b1f1-e7bc413d4e17\/screen-problems-2405-001.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/la-pantalla-de-pixel-2-xl-la-llave-maestra-de-amazon-y-el-inminente-iphone-x.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/10\/27\/1082906179568\/es_lasemana27october_1247416_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/la-pantalla-de-pixel-2-xl-la-llave-maestra-de-amazon-y-el-inminente-iphone-x\/&quot;},{&quot;id&quot;:&quot;ae23b111-1e88-4edd-b1b5-dfed3e0cb061&quot;,&quot;title&quot;:&quot;Se consolida el hogar inteligente y aparece el fallo KRACK&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #159] Esta semana hablamos de la nueva plataforma de Samsung para el Internet de las Cosas, de la vulnerabilidad KRACK y de los nuevos tel\u00e9fonos en el mercado.&quot;,&quot;slug&quot;:&quot;la-semana-oct-19-cnet-espanol&quot;,&quot;chapters&quot;:&quot;&quot;,&quot;duration&quot;:691,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:1077887555736,&quot;mpxRefId&quot;:&quot;H4gkX0JjbU6b4gxZOkirySjFp3Z845dA&quot;,&quot;ratingVChip&quot;:&quot;&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;6a9b3b6b-575a-4b66-b4b2-4aedee01be6d&quot;,&quot;firstName&quot;:&quot;Gabriel&quot;,&quot;lastName&quot;:&quot;Sama&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:[&quot;La semana&quot;]},&quot;image&quot;:{&quot;id&quot;:&quot;d704b38b-cafe-414b-879b-459dd712796c&quot;,&quot;name&quot;:&quot;zte-axon-m-9755-024&quot;,&quot;filename&quot;:&quot;zte-axon-m-9755-024.jpg&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/VAqXY-db6xzcKly6P5BNqbaHpQw=\/2017\/10\/20\/d704b38b-cafe-414b-879b-459dd712796c\/zte-axon-m-9755-024.jpg&quot;,&quot;size&quot;:87148,&quot;height&quot;:900,&quot;width&quot;:1600,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-10-20 16:33:13&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;dateUpdated&quot;:{&quot;date&quot;:&quot;2017-10-20 16:33:13&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;needsModeration&quot;:0,&quot;mimeType&quot;:&quot;image\/jpeg&quot;,&quot;deleted&quot;:0,&quot;preferred&quot;:0,&quot;watermark&quot;:0,&quot;alt&quot;:&quot;zte-axon-m-9755-024&quot;},&quot;thumbnail&quot;:&quot;https:\/\/cdn3.cnet.com\/img\/ReV56T1ZCShd3YWImeR2IWEqAXU=\/fit-in\/194x109\/2017\/10\/20\/d704b38b-cafe-414b-879b-459dd712796c\/zte-axon-m-9755-024.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/la-semana-oct-19-cnet-espanol.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/10\/20\/1077887555736\/semana_oct19_1241505_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/la-semana-oct-19-cnet-espanol\/&quot;},{&quot;id&quot;:&quot;4cb73b8d-1b2f-40ef-bb98-6b093198c681&quot;,&quot;title&quot;:&quot;Un nuevo Kindle y se asoman las nuevas gafas VR de Oculus&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #158] Esta semana, lleg\u00f3 el Kindle Oasis impermeable, se anunciaron las Oculus Go y Santa Cruz para realidad virtual y hubo un problemita con la Google Home Mini.&quot;,&quot;slug&quot;:&quot;un-nuevo-kindle-y-nuevas-gafas-vr-de-oculus-se-asoman&quot;,&quot;chapters&quot;:&quot;&quot;,&quot;duration&quot;:422,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:1072264259697,&quot;mpxRefId&quot;:&quot;8RTAYZ4ou1BgXXiybOYiclkJ6avdl6SM&quot;,&quot;ratingVChip&quot;:&quot;&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;272ff2eb-03d3-4e24-9b55-09f4633368f9&quot;,&quot;firstName&quot;:&quot;Mariana&quot;,&quot;lastName&quot;:&quot;Marcaletti&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:[&quot;La semana&quot;]},&quot;image&quot;:{&quot;id&quot;:&quot;4514916c-88c7-4c00-8324-9d522e0b3047&quot;,&quot;name&quot;:&quot;kindle-oasis-covers&quot;,&quot;filename&quot;:&quot;kindle-oasis-covers.jpg&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/el7STcxt2T02OoIFWp08KB2D1Bk=\/2017\/10\/05\/4514916c-88c7-4c00-8324-9d522e0b3047\/kindle-oasis-covers.jpg&quot;,&quot;caption&quot;:&quot;<p>The optional covers start at $40 and come in nylon or leather.<\/p>&quot;,&quot;size&quot;:4432570,&quot;height&quot;:3024,&quot;width&quot;:4032,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-10-05 19:52:22&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;dateUpdated&quot;:{&quot;date&quot;:&quot;2017-10-05 19:53:38&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;startDate&quot;:{&quot;date&quot;:&quot;2017-10-11 13:00:00&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;needsModeration&quot;:0,&quot;mimeType&quot;:&quot;image\/jpeg&quot;,&quot;deleted&quot;:0,&quot;preferred&quot;:0,&quot;watermark&quot;:1,&quot;credits&quot;:&quot;David Carnoy\/CNET&quot;,&quot;alt&quot;:&quot;kindle-oasis-covers&quot;},&quot;thumbnail&quot;:&quot;https:\/\/cdn3.cnet.com\/img\/vDQrwxSq2oDqDHdtnPLwD_eJR98=\/fit-in\/194x109\/2017\/10\/05\/4514916c-88c7-4c00-8324-9d522e0b3047\/kindle-oasis-covers.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/un-nuevo-kindle-y-nuevas-gafas-vr-de-oculus-se-asoman.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/10\/13\/1072264259697\/es_lasemana12_oct_1235274_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/un-nuevo-kindle-y-nuevas-gafas-vr-de-oculus-se-asoman\/&quot;},{&quot;id&quot;:&quot;09051611-4cd7-4384-a459-b4a1050b5c1c&quot;,&quot;title&quot;:&quot;Google Pixel 2 y lo que nos dej\u00f3 la temporada de s\u00faper tel\u00e9fonos&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #157] La gigante de las b\u00fasquedas se anima con todo al hardware, y sus tel\u00e9fonos marcan el fin de una \u00e9poca de grandes anuncios.&quot;,&quot;slug&quot;:&quot;google-pixel-2-lo-que-nos-dejo-la-temporada-de-super-telefonos&quot;,&quot;chapters&quot;:&quot;&quot;,&quot;duration&quot;:598,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:1064365123530,&quot;mpxRefId&quot;:&quot;Us3jKld5gPd3TfSG9QLLbD5jw_vdMyds&quot;,&quot;ratingVChip&quot;:&quot;&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;272ff2eb-03d3-4e24-9b55-09f4633368f9&quot;,&quot;firstName&quot;:&quot;Mariana&quot;,&quot;lastName&quot;:&quot;Marcaletti&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:[&quot;La semana&quot;]},&quot;image&quot;:{&quot;id&quot;:&quot;d077c3c0-c88f-492f-a8a2-8b043af04f0e&quot;,&quot;name&quot;:&quot;100417-google-pixel-2-7126&quot;,&quot;filename&quot;:&quot;100417-google-pixel-2-7126.jpg&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/BNbeNYmhimN2Z_KulzpEpn0l7AI=\/2017\/10\/05\/d077c3c0-c88f-492f-a8a2-8b043af04f0e\/100417-google-pixel-2-7126.jpg&quot;,&quot;size&quot;:52547,&quot;height&quot;:467,&quot;width&quot;:830,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-10-05 23:35:43&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;dateUpdated&quot;:{&quot;date&quot;:&quot;2017-10-05 23:35:43&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;needsModeration&quot;:0,&quot;mimeType&quot;:&quot;image\/jpeg&quot;,&quot;deleted&quot;:0,&quot;preferred&quot;:0,&quot;watermark&quot;:0,&quot;alt&quot;:&quot;100417-google-pixel-2-7126&quot;},&quot;thumbnail&quot;:&quot;https:\/\/cdn2.cnet.com\/img\/5-e1P5u3K43hFHiSjBjhdB3f1lI=\/fit-in\/194x109\/2017\/10\/05\/d077c3c0-c88f-492f-a8a2-8b043af04f0e\/100417-google-pixel-2-7126.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/google-pixel-2-lo-que-nos-dejo-la-temporada-de-super-telefonos.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/10\/06\/1064365123530\/semana_oct5_1229769_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/google-pixel-2-lo-que-nos-dejo-la-temporada-de-super-telefonos\/&quot;},{&quot;id&quot;:&quot;4bb8f3fd-304c-495e-8b83-57fcea47b89b&quot;,&quot;title&quot;:&quot;La avalancha de productos de Amazon, y tuits de 280 caracteres&quot;,&quot;description&quot;:&quot;[La semana en CNET en Espa\u00f1ol #156] Esta semana vimos nuevas bocinas de Amazon; una nueva c\u00e1mara GoPro y Twitter dijo que duplicar\u00e1 el l\u00edmite de caracteres en tuits.&quot;,&quot;slug&quot;:&quot;amazon-nuevos-productos-twitter-280-caracteres&quot;,&quot;chapters&quot;:&quot;&quot;,&quot;duration&quot;:673,&quot;hasCaptions&quot;:true,&quot;mpxId&quot;:1057969219682,&quot;mpxRefId&quot;:&quot;IUOzQ0y6ps_ludp4UH9c1EZFCsJNA7X8&quot;,&quot;ratingVChip&quot;:&quot;&quot;,&quot;primaryTopic&quot;:{&quot;id&quot;:&quot;&quot;},&quot;author&quot;:{&quot;id&quot;:&quot;272ff2eb-03d3-4e24-9b55-09f4633368f9&quot;,&quot;firstName&quot;:&quot;Mariana&quot;,&quot;lastName&quot;:&quot;Marcaletti&quot;},&quot;primaryCollection&quot;:{&quot;id&quot;:&quot;b45f7536-5ba2-40d8-a054-40341b279649&quot;,&quot;title&quot;:[&quot;La semana&quot;]},&quot;image&quot;:{&quot;id&quot;:&quot;194498de-a074-4687-ab0d-d880d5ee05de&quot;,&quot;name&quot;:&quot;amazon-spot-1&quot;,&quot;filename&quot;:&quot;amazon-spot-1.jpg&quot;,&quot;path&quot;:&quot;https:\/\/cnet4.cbsistatic.com\/img\/MLV0Q7ERz3liDf123UtGhwIuMjU=\/2017\/09\/28\/194498de-a074-4687-ab0d-d880d5ee05de\/amazon-spot-1.jpg&quot;,&quot;size&quot;:850748,&quot;height&quot;:1080,&quot;width&quot;:1920,&quot;dateCreated&quot;:{&quot;date&quot;:&quot;2017-09-28 05:39:36&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;dateUpdated&quot;:{&quot;date&quot;:&quot;2017-09-28 05:39:36&quot;,&quot;timezone_type&quot;:3,&quot;timezone&quot;:&quot;UTC&quot;},&quot;needsModeration&quot;:0,&quot;mimeType&quot;:&quot;image\/jpeg&quot;,&quot;deleted&quot;:0,&quot;preferred&quot;:0,&quot;watermark&quot;:0,&quot;alt&quot;:&quot;amazon-spot-1&quot;},&quot;thumbnail&quot;:&quot;https:\/\/cdn1.cnet.com\/img\/0t12kUyxiPUjjBEvghADT8bfI1Q=\/fit-in\/194x109\/2017\/09\/28\/194498de-a074-4687-ab0d-d880d5ee05de\/amazon-spot-1.jpg&quot;,&quot;isVertical&quot;:false,&quot;m3u8&quot;:&quot;\/es\/videos\/manifest\/amazon-nuevos-productos-twitter-280-caracteres.m3u8&quot;,&quot;mp4&quot;:&quot;https:\/\/cnetmedia-a.akamaihd.net\/21923\/2017\/09\/29\/1057969219682\/es_lasemana_28septiembre_1223993_740.mp4&quot;,&quot;selector&quot;:&quot;\/es\/videos\/selector\/amazon-nuevos-productos-twitter-280-caracteres\/&quot;}]">
<div>
- <div> <svg><use aria-hidden="false" xlink:href="#play"></use></svg><svg><use aria-hidden="false" xlink:href="#pause"></use></svg><figure><img alt="" height="96" src="https://cdn1.cnet.com/img/mWcZaiA8Ngv61OQcpdoh6Ra9nY0=/170x96/2017/11/13/70540d7a-cbc5-4563-ab86-b5549ef68168/oneplus-5t-product-21.jpg" width="170"></img></figure></div>
+ <div> <svg><use aria-hidden="false" xlink:href="#play" /></svg><svg><use aria-hidden="false" xlink:href="#pause" /></svg>
+ <figure><img src="https://cdn1.cnet.com/img/mWcZaiA8Ngv61OQcpdoh6Ra9nY0=/170x96/2017/11/13/70540d7a-cbc5-4563-ab86-b5549ef68168/oneplus-5t-product-21.jpg" alt height="96" width="170"></figure>
+ </div>
<p><span>
<span>Reproduciendo:</span> <span>Mira esto:</span> </span> Google Assistant mejora, hay más cambios en Twitter y... </p>
<p><span>
- 8:09 <svg><use aria-hidden="false" xlink:href="#video"></use></svg></span> </p>
+ 8:09 <svg><use aria-hidden="false" xlink:href="#video" /></svg></span> </p>
</div>
</div>
- </div> \ No newline at end of file
+
+ </div> \ No newline at end of file
diff --git a/test/test-pages/cnet/expected-metadata.json b/test/test-pages/cnet/expected-metadata.json
index 773cbb9..d51b852 100644
--- a/test/test-pages/cnet/expected-metadata.json
+++ b/test/test-pages/cnet/expected-metadata.json
@@ -1,8 +1,8 @@
{
- "Author": "Steven Musil",
+ "Author": "by \n\n \n Steven Musil\n \n\n\n January 18, 2017 11:00 PM PST\n \n \n \n \n \n \n\n \n @stevenmusil",
"Direction": null,
"Excerpt": "Facebook CEO says be a friend and have a shared vision, but scare them when you have to and move fast.",
"Image": "https:\/\/cnet3.cbsistatic.com\/img\/1JaRRjqhoGxDVkFxTRRWkZgyK2Q=\/670x503\/2014\/03\/21\/863df5d9-e8b8-4b38-851b-5e3f77f2cf0e\/mark-zuckerberg-facebook-home-10671610x407.jpg",
"Title": "Zuckerberg offers peek at Facebook's acquisition strategies",
"SiteName": "CNET"
-}
+} \ No newline at end of file
diff --git a/test/test-pages/cnet/expected.html b/test/test-pages/cnet/expected.html
index 4f401da..f9a3b74 100644
--- a/test/test-pages/cnet/expected.html
+++ b/test/test-pages/cnet/expected.html
@@ -1,15 +1,17 @@
-<div data-component="lazyloadImages" itemprop="articleBody">
+<div itemprop="articleBody" data-component="lazyloadImages">
- <figure section="shortcodeImage"><span><span itemprop="image" itemscope="" itemtype="https://schema.org/ImageObject"><img alt="" class="" height="0" src="https://cnet1.cbsistatic.com/img/nAMdBzIE1ogVw5bOBZBaiJCt3Ro=/570x0/2014/03/21/863df5d9-e8b8-4b38-851b-5e3f77f2cf0e/mark-zuckerberg-facebook-home-10671610x407.jpg" width="570"></img><meta content="https://cnet1.cbsistatic.com/img/nAMdBzIE1ogVw5bOBZBaiJCt3Ro=/570x0/2014/03/21/863df5d9-e8b8-4b38-851b-5e3f77f2cf0e/mark-zuckerberg-facebook-home-10671610x407.jpg" itemprop="url"></meta><meta content="0" itemprop="height"></meta><meta content="570" itemprop="width"></meta></span></span>
+ <figure section="shortcodeImage"><span><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img src="https://cnet1.cbsistatic.com/img/nAMdBzIE1ogVw5bOBZBaiJCt3Ro=/570x0/2014/03/21/863df5d9-e8b8-4b38-851b-5e3f77f2cf0e/mark-zuckerberg-facebook-home-10671610x407.jpg" class alt width="570" height="0"><meta itemprop="url" content="https://cnet1.cbsistatic.com/img/nAMdBzIE1ogVw5bOBZBaiJCt3Ro=/570x0/2014/03/21/863df5d9-e8b8-4b38-851b-5e3f77f2cf0e/mark-zuckerberg-facebook-home-10671610x407.jpg"><meta itemprop="height" content="0"><meta itemprop="width" content="570"></span></span>
<figcaption><span><p>Facebook CEO Mark Zuckerberg, the man with the acquisition plan.</p></span><span>Photo by James Martin/CNET
- </span></figcaption></figure><p>Anyone who has ever been involved in closing a billion-dollar acquisition deal will tell you that you don't go in without a clear, well thought out plan.</p>
+ </span></figcaption>
+ </figure>
+ <p>Anyone who has ever been involved in closing a billion-dollar acquisition deal will tell you that you don't go in without a clear, well thought out plan.</p>
<p>Facebook CEO Mark Zuckerberg knows a thing or two about how to seal the deal on blockbuster buys. After all, he's the man behind his company's <a href="https://www.cnet.com/news/facebook-closes-19-billion-deal-for-whatsapp/" target="_blank">$19 billion acquisition</a> of WhatsApp, he <a href="https://www.cnet.com/news/zuckerberg-did-1-billion-instagram-deal-on-his-own/" target="_blank">personally brokered</a> its $1 billion buyout of <a href="https://www.cnet.com/news/why-facebook-plunked-down-1-billion-to-buy-instagram/" target="_blank">Instagram</a> and closed the <a href="https://www.cnet.com/news/facebook-to-buy-oculus-for-2-billion/" target="_blank">$3 billion deal</a> to buy Oculus VR.</p>
- <p>Zuckerberg offered a primer on the strategies he and his company employ when they see an attractive target during testimony Tuesday <a href="https://www.cnet.com/news/zenimax-sues-oculus-over-virtual-reality-rift-tech/">in a lawsuit with ZeniMax Media</a>, which accuses Oculus and Facebook of "misappropriating" trade secrets and copyright infringement. At the heart of the lawsuit is technology that helped create liftoff for virtual reality, one of the <a data-component="externalLink" href="http://www.cbsnews.com/videos/the-reality-of-the-virtual-world/" target="_blank">hottest gadget trends today.</a></p>
- <p>A key Facebook approach is building a long-term relationship with your target, Zuckerberg said at the trial. These deals don't just pop up over night, he said according to a transcript reviewed by <a data-component="externalLink" href="http://www.businessinsider.com/mark-zuckerberg-explains-facebooks-acquisition-strategy-2017-1" target="_blank">Business Insider</a>. They take time to cultivate. </p>
+ <p>Zuckerberg offered a primer on the strategies he and his company employ when they see an attractive target during testimony Tuesday <a href="https://www.cnet.com/news/zenimax-sues-oculus-over-virtual-reality-rift-tech/">in a lawsuit with ZeniMax Media</a>, which accuses Oculus and Facebook of "misappropriating" trade secrets and copyright infringement. At the heart of the lawsuit is technology that helped create liftoff for virtual reality, one of the <a href="http://www.cbsnews.com/videos/the-reality-of-the-virtual-world/" target="_blank" data-component="externalLink">hottest gadget trends today.</a></p>
+ <p>A key Facebook approach is building a long-term relationship with your target, Zuckerberg said at the trial. These deals don't just pop up over night, he said according to a transcript reviewed by <a href="http://www.businessinsider.com/mark-zuckerberg-explains-facebooks-acquisition-strategy-2017-1" target="_blank" data-component="externalLink">Business Insider</a>. They take time to cultivate. </p>
<blockquote>
<p>I've been building relationships, at least in Instagram and the WhatsApp cases, for years with the founders and the people that are involved in these companies, which made [it] so that when it became time or when we thought it was the right time to move, we felt like we had a good amount of context and had good relationships so that we could move quickly, which was competitively important and why a lot of these acquisitions, I think, came to us instead of our competitors and ended up being very good acquisitions over time that a lot of competitors wished they had gotten instead. </p>
</blockquote>
@@ -32,7 +34,7 @@
- <p><em><strong>Tech Enabled:</strong> CNET chronicles tech's role in providing new kinds of accessibility. Check it out <a href="https://www.cnet.com/tech-enabled/">here</a>.</em><em><strong><br></br></strong></em></p>
+ <p><em><strong>Tech Enabled:</strong> CNET chronicles tech's role in providing new kinds of accessibility. Check it out <a href="https://www.cnet.com/tech-enabled/">here</a>.</em><em><strong><br></strong></em></p>
<p><em><strong>Technically Literate:</strong> Original works of short fiction with unique perspectives on tech, exclusively on CNET. <a href="https://www.cnet.com/technically-literate/">Here</a>.</em></p>
@@ -40,4 +42,5 @@
- </div> \ No newline at end of file
+
+ </div> \ No newline at end of file
diff --git a/test/test-pages/cnn/expected.html b/test/test-pages/cnn/expected.html
index 552455f..b61239b 100644
--- a/test/test-pages/cnn/expected.html
+++ b/test/test-pages/cnn/expected.html
@@ -10,6 +10,11 @@
<div>
<div id="smartasset-article">
<div>
+
+
+
+
+
<p>
Powered by SmartAsset.com
</p>
@@ -32,7 +37,7 @@
<p> The report also suggested the U.S. might not be the "jobs machine" it thinks it is, when compared to other countries. </p>
<p> It ranked near the bottom of the pack based on the levels of unemployment among men and women of prime working age. The study determined this by taking the ratio of employed men and women between the ages of 25 and 54 compared to the total population of each country. </p>
- <p> The overall rankings of the countries were as follows:<span> <br></br>1. Finland <span> <br></br>2. Norway<span> <br></br>3. Australia <span> <br></br>4. Canada<span> <br></br>5. Germany<span> <br></br>6. France<span> <br></br>7. United Kingdom <span> <br></br>8. Italy<span> <br></br>9. Spain<span> <br></br>10. United States </span></span>
+ <p> The overall rankings of the countries were as follows:<span> <br>1. Finland <span> <br>2. Norway<span> <br>3. Australia <span> <br>4. Canada<span> <br>5. Germany<span> <br>6. France<span> <br>7. United Kingdom <span> <br>8. Italy<span> <br>9. Spain<span> <br>10. United States </span></span>
</span>
</span>
</span>
diff --git a/test/test-pages/daringfireball-1/expected.html b/test/test-pages/daringfireball-1/expected.html
index 6c3f154..2c0b309 100644
--- a/test/test-pages/daringfireball-1/expected.html
+++ b/test/test-pages/daringfireball-1/expected.html
@@ -7,10 +7,11 @@
<p>Daring Fireball is written and produced by John Gruber.</p>
<p>
- <a href="http://fakehost/graphics/author/addison-bw.jpg"> <img alt="Photograph of the author." src="http://fakehost/graphics/author/addison-bw-425.jpg"></img></a>
- <br></br><em>Portrait by <a href="http://superbiate.com/inquiries/">George Del Barrio</a></em> </p>
+ <a href="http://fakehost/graphics/author/addison-bw.jpg"> <img src="http://fakehost/graphics/author/addison-bw-425.jpg" alt="Photograph of the author."></a>
+ <br><em>Portrait by <a href="http://superbiate.com/inquiries/">George Del Barrio</a></em> </p>
<h2>Mac Apps</h2>
- <ul><li><a href="http://www.barebones.com/products/bbedit/">BBEdit</a></li>
+ <ul>
+ <li><a href="http://www.barebones.com/products/bbedit/">BBEdit</a></li>
<li><a href="http://www.flyingmeat.com/acorn/">Acorn</a></li>
<li><a href="http://www.red-sweater.com/marsedit/">MarsEdit</a></li>
<li><a href="http://aged-and-distilled.com/napkin/">Napkin</a></li>
@@ -19,9 +20,12 @@
<li><a href="http://latenightsw.com/sd4/index.html">Script Debugger</a></li>
<li><a href="http://www.ambrosiasw.com/utilities/snapzprox/">Snapz Pro X</a></li>
<li><a href="http://nightly.webkit.org/">WebKit</a></li>
- </ul><h2>iPhone Apps</h2>
- <ul><li><a href="http://vesperapp.co/">Vesper</a></li>
- </ul><h2>Server Software</h2>
+ </ul>
+ <h2>iPhone Apps</h2>
+ <ul>
+ <li><a href="http://vesperapp.co/">Vesper</a></li>
+ </ul>
+ <h2>Server Software</h2>
<p>The Daring Fireball website is hosted by <a href="http://joyent.com/">Joyent</a>.</p>
<p>Articles and links are published through <a href="http://movabletype.org/">Movable Type</a>. In addition to my own SmartyPants and Markdown plug-ins, Daring Fireball uses several excellent Movable Type plug-ins, including Brad Choate’s <a href="http://bradchoate.com/weblog/2003/06/24/regular-expressions">MT-Regex</a> and <a href="http://bradchoate.com/weblog/2004/10/20/mtifempty">MT-IfEmpty</a>, and <a href="http://bumppo.net/projects/amputator/">Nat Irons’s Amputator</a>.</p>
<p>Stats are tracked using <a href="http://haveamint.com/">Mint</a>. Additional web nerdery, including the membership system, is fueled by <a href="http://perl.org/">Perl</a>, <a href="http://www.php.net/">PHP</a>, and <a href="http://www.mysql.com/">MySQL</a>.</p>
@@ -33,6 +37,9 @@
- </div>
+
+
+
+ </div>
</div> \ No newline at end of file
diff --git a/test/test-pages/different-sources-for-images/expected.html b/test/test-pages/different-sources-for-images/expected.html
index 93f4c92..aa03b79 100644
--- a/test/test-pages/different-sources-for-images/expected.html
+++ b/test/test-pages/different-sources-for-images/expected.html
@@ -1,4 +1,5 @@
<article>
+
<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
@@ -8,11 +9,11 @@
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
<p>Images</p>
- <p><img src="https://test/foo/bar/src.jpg"></img></p>
- <p><img data-original="https://test/foo/bar/data-original.jpg" src="https://test/foo/bar/data-original.jpg"></img></p>
- <p><img data-orig="https://test/foo/bar/data-orig.jpg" src="https://test/foo/bar/data-orig.jpg"></img></p>
- <p><img data-url="https://test/foo/bar/data-url.jpg" src="https://test/foo/bar/data-url.jpg"></img></p>
- <p><img data-src="https://test/foo/bar/data-src.jpg" src="https://test/foo/bar/data-src.jpg"></img></p>
+ <p><img src="https://test/foo/bar/src.jpg"></p>
+ <p><img data-original="https://test/foo/bar/data-original.jpg" src="https://test/foo/bar/data-original.jpg"></p>
+ <p><img data-orig="https://test/foo/bar/data-orig.jpg" src="https://test/foo/bar/data-orig.jpg"></p>
+ <p><img data-url="https://test/foo/bar/data-url.jpg" src="https://test/foo/bar/data-url.jpg"></p>
+ <p><img data-src="https://test/foo/bar/data-src.jpg" src="https://test/foo/bar/data-src.jpg"></p>
<p>
Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
diff --git a/test/test-pages/ehow-1/expected.html b/test/test-pages/ehow-1/expected.html
index 397322e..a6f0c65 100644
--- a/test/test-pages/ehow-1/expected.html
+++ b/test/test-pages/ehow-1/expected.html
@@ -2,15 +2,20 @@
<header>
- </header><div>
+
+ </header>
+ <div>
<div>
<p>Glass cloche terrariums are not only appealing to the eye, but they also preserve a bit of nature in your home and serve as a simple, yet beautiful, piece of art. Closed terrariums are easy to care for, as they retain much of their own moisture and provide a warm environment with a consistent level of humidity. You won’t have to water the terrariums unless you see that the walls are not misting up. Small growing plants that don’t require a lot of light work best such as succulents, ferns, moss, even orchids.</p>
- <figure><img alt="Glass cloche terrariums" data-credit="Lucy Akins " longdesc="http://s3.amazonaws.com/photography.prod.demandstudios.com/16149374-814f-40bc-baf3-ca20f149f0ba.jpg" src="http://img-aws.ehowcdn.com/640/cme/photography.prod.demandstudios.com/16149374-814f-40bc-baf3-ca20f149f0ba.jpg" title="Glass cloche terrariums"></img></figure><figcaption> Glass cloche terrariums (Lucy Akins) </figcaption></div>
+ <figure> <img src="http://img-aws.ehowcdn.com/640/cme/photography.prod.demandstudios.com/16149374-814f-40bc-baf3-ca20f149f0ba.jpg" alt="Glass cloche terrariums" title="Glass cloche terrariums" data-credit="Lucy Akins " longdesc="http://s3.amazonaws.com/photography.prod.demandstudios.com/16149374-814f-40bc-baf3-ca20f149f0ba.jpg"> </figure>
+ <figcaption> Glass cloche terrariums (Lucy Akins) </figcaption>
+ </div>
</div>
<div>
<div>
- <div> <p><span>What You'll Need:</span></p><ul><li>Cloche</li>
+ <div> <p><span>What You'll Need:</span></p><ul>
+ <li>Cloche</li>
<li>Planter saucer, small shallow dish or desired platform</li>
<li>Floral foam oasis</li>
<li>Ruler </li>
@@ -20,14 +25,17 @@
<li>Moss</li>
<li>Tweezers</li>
<li>Other small decorative items (optional)</li>
- </ul></div>
+ </ul>
+ </div>
</div>
</div>
<div>
<div>
<div> <p><span>Step 1</span></p><p>Measure the circumference of your cloche and cut the foam oasis about 3/4 inch (2 cm) smaller. Place the foam oasis into a container full of water and allow to soak until it sinks to the bottom. Dig out a hole on the oasis large enough to fit your plant, being careful not to pierce all the way through to the bottom.</p>
</div>
- <figure><img alt="Dig a hole in the oasis." data-credit="Lucy Akins" src="http://img-aws.ehowcdn.com/default/cme/photography.prod.demandstudios.com/fc249ef6-4d27-41b4-8c21-15f7a8512b50.jpg"></img></figure><figcaption> Dig a hole in the oasis. (Lucy Akins) </figcaption></div>
+ <figure> <img src="http://img-aws.ehowcdn.com/default/cme/photography.prod.demandstudios.com/fc249ef6-4d27-41b4-8c21-15f7a8512b50.jpg" alt="Dig a hole in the oasis." data-credit="Lucy Akins"> </figure>
+ <figcaption> Dig a hole in the oasis. (Lucy Akins) </figcaption>
+ </div>
</div>
@@ -35,60 +43,82 @@
<div>
<div> <p><span>Step 2</span></p><p>Insert your plant into the hole.</p>
</div>
- <figure><img alt="Orchid in foam oasis" data-credit="Lucy Akins" src="http://img-aws.ehowcdn.com/default/cme/photography.prod.demandstudios.com/aae11d4d-a4aa-4251-a4d9-41023ebf6d84.jpg"></img></figure><figcaption> Orchid in foam oasis (Lucy Akins) </figcaption></div>
+ <figure> <img src="http://img-aws.ehowcdn.com/default/cme/photography.prod.demandstudios.com/aae11d4d-a4aa-4251-a4d9-41023ebf6d84.jpg" alt="Orchid in foam oasis" data-credit="Lucy Akins"> </figure>
+ <figcaption> Orchid in foam oasis (Lucy Akins) </figcaption>
+ </div>
</div>
<div>
<div>
<div> <p><span>Step 3</span></p><p>You can add various plants if you wish.</p>
</div>
- <figure><img alt="Various foliage" data-credit="Lucy Akins" src="http://img-aws.ehowcdn.com/default/cme/photography.prod.demandstudios.com/7afdfa1e-da74-44b5-b89c-ca8123516272.jpg"></img></figure><figcaption> Various foliage (Lucy Akins) </figcaption></div>
+ <figure> <img src="http://img-aws.ehowcdn.com/default/cme/photography.prod.demandstudios.com/7afdfa1e-da74-44b5-b89c-ca8123516272.jpg" alt="Various foliage" data-credit="Lucy Akins"> </figure>
+ <figcaption> Various foliage (Lucy Akins) </figcaption>
+ </div>
</div>
<div>
<div>
<div> <p><span>Step 4</span></p><p>Using floral pins, attach enough moss around the oasis to cover it.</p>
</div>
- <figure><img alt="Attach moss." data-credit="Lucy Akins" src="http://img-aws.ehowcdn.com/default/cme/photography.prod.demandstudios.com/4f6612c0-316a-4c74-bb03-cb4e778f6d72.jpg"></img></figure><figcaption> Attach moss. (Lucy Akins) </figcaption></div>
+ <figure> <img src="http://img-aws.ehowcdn.com/default/cme/photography.prod.demandstudios.com/4f6612c0-316a-4c74-bb03-cb4e778f6d72.jpg" alt="Attach moss." data-credit="Lucy Akins"> </figure>
+ <figcaption> Attach moss. (Lucy Akins) </figcaption>
+ </div>
</div>
<div>
<div>
<div> <p><span>Step 5</span></p><p>Gently place the cloche over the oasis. The glass may push some of the moss upward, exposing some of the foam.</p>
</div>
- <figure><img alt="Place cloche over oasis." data-credit="Lucy Akins" src="http://img-aws.ehowcdn.com/default/cme/photography.prod.demandstudios.com/eeb1e0b4-e573-40a3-8db1-2c76f0b13b84.jpg"></img></figure><figcaption> Place cloche over oasis. (Lucy Akins) </figcaption></div>
+ <figure> <img src="http://img-aws.ehowcdn.com/default/cme/photography.prod.demandstudios.com/eeb1e0b4-e573-40a3-8db1-2c76f0b13b84.jpg" alt="Place cloche over oasis." data-credit="Lucy Akins"> </figure>
+ <figcaption> Place cloche over oasis. (Lucy Akins) </figcaption>
+ </div>
</div>
<div>
<div>
<div> <p><span>Step 6</span></p><p>Simply pull down the moss with tweezers or insert more moss to fill in the empty spaces.</p>
</div>
- <figure><img alt="Rearrange moss." data-credit="Lucy Akins" src="http://img-aws.ehowcdn.com/default/cme/photography.prod.demandstudios.com/812d4649-4152-4363-97c0-f181d02e709a.jpg"></img></figure><figcaption> Rearrange moss. (Lucy Akins) </figcaption></div>
+ <figure> <img src="http://img-aws.ehowcdn.com/default/cme/photography.prod.demandstudios.com/812d4649-4152-4363-97c0-f181d02e709a.jpg" alt="Rearrange moss." data-credit="Lucy Akins"> </figure>
+ <figcaption> Rearrange moss. (Lucy Akins) </figcaption>
+ </div>
</div>
<div>
<div>
<div> <p><span>Step 7</span></p><p>You can use any platform you wish. In this case, a small saucer was used.</p>
</div>
- <figure><img alt="Place cloche on a platform to sit on." data-credit="Lucy Akins" src="http://img-aws.ehowcdn.com/default/cme/photography.prod.demandstudios.com/0cb3988c-9318-47d6-bc9c-c798da1ede72.jpg"></img></figure><figcaption> Place cloche on a platform to sit on. (Lucy Akins) </figcaption></div>
+ <figure> <img src="http://img-aws.ehowcdn.com/default/cme/photography.prod.demandstudios.com/0cb3988c-9318-47d6-bc9c-c798da1ede72.jpg" alt="Place cloche on a platform to sit on." data-credit="Lucy Akins"> </figure>
+ <figcaption> Place cloche on a platform to sit on. (Lucy Akins) </figcaption>
+ </div>
</div>
<div>
<div>
<div> <p><span>Step 8</span></p><p>This particular terrarium rests on a planter saucer and features a small white pumpkin.</p>
</div>
- <figure><img alt="Cloche placed on a terracotta saucer" data-credit="Lucy Akins" src="http://img-aws.ehowcdn.com/640/cme/photography.prod.demandstudios.com/e3e18f0b-ab2c-4ffb-9988-a1ea63faef8b.jpg"></img></figure><figcaption> Cloche placed on a terracotta saucer (Lucy Akins) </figcaption></div>
+ <figure> <img src="http://img-aws.ehowcdn.com/640/cme/photography.prod.demandstudios.com/e3e18f0b-ab2c-4ffb-9988-a1ea63faef8b.jpg" alt="Cloche placed on a terracotta saucer" data-credit="Lucy Akins"> </figure>
+ <figcaption> Cloche placed on a terracotta saucer (Lucy Akins) </figcaption>
+ </div>
</div>
<div>
<div>
<div> <p><span>Step 9</span></p><p>This particular terrarium was placed on a wood slice and a little toy squirrel was placed inside to add a little whimsy.</p>
</div>
- <figure><img alt="Placed on a wooden slice" data-credit="Lucy Akins" src="http://img-aws.ehowcdn.com/640/cme/photography.prod.demandstudios.com/2cd79f8d-0d16-4573-8861-e47fb74b0638.jpg"></img></figure><figcaption> Placed on a wooden slice (Lucy Akins) </figcaption></div>
+ <figure> <img src="http://img-aws.ehowcdn.com/640/cme/photography.prod.demandstudios.com/2cd79f8d-0d16-4573-8861-e47fb74b0638.jpg" alt="Placed on a wooden slice" data-credit="Lucy Akins"> </figure>
+ <figcaption> Placed on a wooden slice (Lucy Akins) </figcaption>
+ </div>
</div>
<div>
<div>
<div> <p><span>Finished Terrarium</span></p><p>Displayed alone or in a group, these pretty arrangements allow you to add a little nature to your decor or tablescape.</p>
</div>
- <figure><img alt="Cloche terrarium" data-credit="Lucy Akins" src="http://img-aws.ehowcdn.com/640/cme/photography.prod.demandstudios.com/78670312-8636-4c42-a75c-3029f7aa6c73.jpg"></img></figure><figcaption> Cloche terrarium (Lucy Akins) </figcaption></div>
+ <figure> <img src="http://img-aws.ehowcdn.com/640/cme/photography.prod.demandstudios.com/78670312-8636-4c42-a75c-3029f7aa6c73.jpg" alt="Cloche terrarium" data-credit="Lucy Akins"> </figure>
+ <figcaption> Cloche terrarium (Lucy Akins) </figcaption>
+ </div>
</div>
- <section data-module="rcp_tombstone" id="FeaturedTombstone"><h2>Featured</h2>
+
+
+ <section id="FeaturedTombstone" data-module="rcp_tombstone">
+ <h2>Featured</h2>
- </section></div> \ No newline at end of file
+ </section>
+ </div> \ No newline at end of file
diff --git a/test/test-pages/ehow-2/expected.html b/test/test-pages/ehow-2/expected.html
index ea7d138..b929634 100644
--- a/test/test-pages/ehow-2/expected.html
+++ b/test/test-pages/ehow-2/expected.html
@@ -1,27 +1,45 @@
-<section data-page-id="inlinetemplate" data-section="body" id="Body">
+<section id="Body" data-page-id="inlinetemplate" data-section="body">
+
+
+
+
<header>
+
<div data-type="AuthorProfile">
<div>
- <p><a href="http://fakehost/contributor/gina_robertsgrey/" id="img-follow-tip" target="_top">
- <img data-failover="//img-aws.ehowcdn.com/60x60/ehow-cdn-assets/test15/media/images/authors/missing-author-image.png" onerror="var failover = this.getAttribute('data-failover');&#xA; if (failover) failover = failover.replace(/^https?:/,'');&#xA; var src = this.src ? this.src.replace(/^https?:/,'') : '';&#xA; if (src != failover){&#xA; this.src = failover;&#xA; }" src="http://img-aws.ehowcdn.com/60x60/cme/cme_public_images/www_demandstudios_com/sitelife.studiod.com/ver1.0/Content/images/store/9/2/d9dd6f61-b183-4893-927f-5b540e45be91.Small.jpg"></img></a></p>
+ <p><a id="img-follow-tip" href="http://fakehost/contributor/gina_robertsgrey/" target="_top">
+ <img src="http://img-aws.ehowcdn.com/60x60/cme/cme_public_images/www_demandstudios_com/sitelife.studiod.com/ver1.0/Content/images/store/9/2/d9dd6f61-b183-4893-927f-5b540e45be91.Small.jpg" data-failover="//img-aws.ehowcdn.com/60x60/ehow-cdn-assets/test15/media/images/authors/missing-author-image.png" onerror="var failover = this.getAttribute('data-failover');
+ if (failover) failover = failover.replace(/^https?:/,'');
+ var src = this.src ? this.src.replace(/^https?:/,'') : '';
+ if (src != failover){
+ this.src = failover;
+ }"> </a></p>
</div>
- <p><time datetime="2016-09-14T07:07:00-04:00" itemprop="dateModified">Last updated September 14, 2016</time></p>
+ <p><time datetime="2016-09-14T07:07:00-04:00" itemprop="dateModified">Last updated September 14, 2016</time>
+ </p>
</div>
- </header><div>
- <article data-type="article"><div>
+ </header>
+
+ <div>
+ <article data-type="article">
+ <div>
<div>
<div>
<p>Graduation parties are a great way to commemorate the years of hard work teens and college co-eds devote to education. They’re also costly for mom and dad.</p>
<p>The average cost of a graduation party in 2013 was a whopping $1,200, according to Graduationparty.com; $700 of that was allocated for food. However that budget was based on Midwestern statistics, and parties in urban areas like New York City are thought to have a much higher price tag.</p>
<p>Thankfully, there are plenty of creative ways to trim a little grad party fat without sacrificing any of the fun or celebratory spirit.</p>
</div>
- <figure><img alt="Graduation" data-credit="Mike Watson Images/Moodboard/Getty " data-pin-ehow-hover="true" data-pin-no-hover="true" longdesc="http://s3.amazonaws.com/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/2F/86/5547EF62-EAF5-4256-945D-0496F61C862F/5547EF62-EAF5-4256-945D-0496F61C862F.jpg" src="http://img-aws.ehowcdn.com/640/cme/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/2F/86/5547EF62-EAF5-4256-945D-0496F61C862F/5547EF62-EAF5-4256-945D-0496F61C862F.jpg" title="Graduation"></img></figure><figcaption>
+ <figure>
+ <img src="http://img-aws.ehowcdn.com/640/cme/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/2F/86/5547EF62-EAF5-4256-945D-0496F61C862F/5547EF62-EAF5-4256-945D-0496F61C862F.jpg" alt="Graduation" title="Graduation" data-credit="Mike Watson Images/Moodboard/Getty " longdesc="http://s3.amazonaws.com/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/2F/86/5547EF62-EAF5-4256-945D-0496F61C862F/5547EF62-EAF5-4256-945D-0496F61C862F.jpg" data-pin-ehow-hover="true" data-pin-no-hover="true">
+ </figure>
+ <figcaption>
(Mike Watson Images/Moodboard/Getty)
- </figcaption></div>
+ </figcaption>
+ </div>
</div>
@@ -30,8 +48,12 @@
<div>
<div>
<p><span><p>Parties hosted at restaurants, clubhouses and country clubs eliminate the need to spend hours cleaning up once party guests have gone home. But that convenience comes with a price tag. A country club may charge as much as $2,000 for room rental and restaurant food and beverage will almost always cost more than food prepped and served at home.</p></span> </p>
- <figure><img alt="Save money hosting the party at home." data-credit="Thomas Jackson/Digital Vision/Getty Images" data-pin-ehow-hover="true" data-pin-no-hover="true" src="http://img-aws.ehowcdn.com/640/cme/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/FE/CB/121569D2-6984-4B2F-83C4-9D2D9A27CBFE/121569D2-6984-4B2F-83C4-9D2D9A27CBFE.jpg"></img></figure><figcaption>
- Thomas Jackson/Digital Vision/Getty Images </figcaption></div>
+ <figure>
+ <img src="http://img-aws.ehowcdn.com/640/cme/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/FE/CB/121569D2-6984-4B2F-83C4-9D2D9A27CBFE/121569D2-6984-4B2F-83C4-9D2D9A27CBFE.jpg" alt="Save money hosting the party at home." data-credit="Thomas Jackson/Digital Vision/Getty Images" data-pin-ehow-hover="true" data-pin-no-hover="true">
+ </figure>
+ <figcaption>
+ Thomas Jackson/Digital Vision/Getty Images </figcaption>
+ </div>
</div>
</span>
</span>
@@ -41,8 +63,12 @@
<div>
<p><span><p>Instead of hiring a DJ, use your iPod or Smartphone to spin the tunes. Both easily hook up to most speakers or mp3 compatible docks to play music from your music library. Or download Pandora, the free online radio app, and play hours of music for free.</p>
<p>Personalize the music with a playlist of the grad’s favorite songs or songs that were big hits during his or her years in school.</p></span> </p>
- <figure><img alt="Online radio can take the place of a hired DJ." data-credit="Spencer Platt/Getty Images News/Getty Images" data-pin-ehow-hover="true" data-pin-no-hover="true" src="http://img-aws.ehowcdn.com/640/cme/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/DF/FC/A05B0252-BD73-4BC7-A09A-96F0A504FCDF/A05B0252-BD73-4BC7-A09A-96F0A504FCDF.jpg"></img></figure><figcaption>
- Spencer Platt/Getty Images News/Getty Images </figcaption></div>
+ <figure>
+ <img src="http://img-aws.ehowcdn.com/640/cme/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/DF/FC/A05B0252-BD73-4BC7-A09A-96F0A504FCDF/A05B0252-BD73-4BC7-A09A-96F0A504FCDF.jpg" alt="Online radio can take the place of a hired DJ." data-credit="Spencer Platt/Getty Images News/Getty Images" data-pin-ehow-hover="true" data-pin-no-hover="true">
+ </figure>
+ <figcaption>
+ Spencer Platt/Getty Images News/Getty Images </figcaption>
+ </div>
</div>
</span>
</span>
@@ -51,8 +77,12 @@
<div>
<div>
<p><span><p>Avoid canned drinks, which guests often open, but don't finish. Serve pitchers of tap water with lemon and cucumber slices or sliced strawberries for an interesting and refreshing flavor. Opt for punches and non-alcoholic drinks for high school graduates that allow guests to dole out the exact amount they want to drink.</p></span> </p>
- <figure><img alt="Serve drinks in pitchers, not in cans." data-credit="evgenyb/iStock/Getty Images" data-pin-ehow-hover="true" data-pin-no-hover="true" src="http://img-aws.ehowcdn.com/640/cme/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/EB/DB/8A04CCA7-3255-4225-B59A-C41441F8DBEB/8A04CCA7-3255-4225-B59A-C41441F8DBEB.jpg"></img></figure><figcaption>
- evgenyb/iStock/Getty Images </figcaption></div>
+ <figure>
+ <img src="http://img-aws.ehowcdn.com/640/cme/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/EB/DB/8A04CCA7-3255-4225-B59A-C41441F8DBEB/8A04CCA7-3255-4225-B59A-C41441F8DBEB.jpg" alt="Serve drinks in pitchers, not in cans." data-credit="evgenyb/iStock/Getty Images" data-pin-ehow-hover="true" data-pin-no-hover="true">
+ </figure>
+ <figcaption>
+ evgenyb/iStock/Getty Images </figcaption>
+ </div>
</div>
</span>
@@ -62,8 +92,12 @@
<div>
<div>
<p><span><p>Instead of inviting everyone you – and the graduate – know or ever knew, scale back the guest list. Forgo inviting guests that you or your grad haven't seen for eons. There is no reason to provide provisions for people who are essentially out of your lives. Sticking to a small, but personal, guest list allows more time to mingle with loved ones during the party, too.</p></span> </p>
- <figure><img alt="Limit guests to those close to the graduate." data-credit="Kane Skennar/Photodisc/Getty Images" data-pin-ehow-hover="true" data-pin-no-hover="true" src="http://img-aws.ehowcdn.com/640/cme/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/94/10/08035476-0167-4A03-AADC-13A7E7AA1094/08035476-0167-4A03-AADC-13A7E7AA1094.jpg"></img></figure><figcaption>
- Kane Skennar/Photodisc/Getty Images </figcaption></div>
+ <figure>
+ <img src="http://img-aws.ehowcdn.com/640/cme/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/94/10/08035476-0167-4A03-AADC-13A7E7AA1094/08035476-0167-4A03-AADC-13A7E7AA1094.jpg" alt="Limit guests to those close to the graduate." data-credit="Kane Skennar/Photodisc/Getty Images" data-pin-ehow-hover="true" data-pin-no-hover="true">
+ </figure>
+ <figcaption>
+ Kane Skennar/Photodisc/Getty Images </figcaption>
+ </div>
</div>
</span>
</span>
@@ -72,8 +106,12 @@
<div>
<div>
<p><span><p>See if your grad and his best friend, girlfriend or close family member would consider hosting a joint party. You can split some of the expenses, especially when the two graduates share mutual friends. You'll also have another parent to bounce ideas off of and to help you stick to your budget when you're tempted to splurge.</p></span> </p>
- <figure><img alt="Throw a joint bash for big savings." data-credit="Mike Watson Images/Moodboard/Getty" data-pin-ehow-hover="true" data-pin-no-hover="true" src="http://img-aws.ehowcdn.com/640/cme/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/06/49/4AD62696-FC95-4DA2-8351-42740C7B4906/4AD62696-FC95-4DA2-8351-42740C7B4906.jpg"></img></figure><figcaption>
- Mike Watson Images/Moodboard/Getty </figcaption></div>
+ <figure>
+ <img src="http://img-aws.ehowcdn.com/640/cme/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/06/49/4AD62696-FC95-4DA2-8351-42740C7B4906/4AD62696-FC95-4DA2-8351-42740C7B4906.jpg" alt="Throw a joint bash for big savings." data-credit="Mike Watson Images/Moodboard/Getty" data-pin-ehow-hover="true" data-pin-no-hover="true">
+ </figure>
+ <figcaption>
+ Mike Watson Images/Moodboard/Getty </figcaption>
+ </div>
</div>
</span>
</span>
@@ -83,8 +121,12 @@
<div>
<p><span><p>Skip carving stations of prime rib and jumbo shrimp as appetizers, especially for high school graduation parties. Instead, serve some of the graduate's favorite side dishes that are cost effective, like a big pot of spaghetti with breadsticks. Opt for easy and simple food such as pizza, finger food and mini appetizers. </p>
<p>Avoid pre-packaged foods and pre-made deli platters. These can be quite costly. Instead, make your own cheese and deli platters for less than half the cost of pre-made.</p></span> </p>
- <figure><img alt="Cost effective appetizers are just as satisfying as pre-made deli platters." data-credit="Mark Stout/iStock/Getty Images" data-pin-ehow-hover="true" data-pin-no-hover="true" src="http://img-aws.ehowcdn.com/640/cme/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/D0/51/B6AED06C-5E19-4A26-9AAD-0E175F6251D0/B6AED06C-5E19-4A26-9AAD-0E175F6251D0.jpg"></img></figure><figcaption>
- Mark Stout/iStock/Getty Images </figcaption></div>
+ <figure>
+ <img src="http://img-aws.ehowcdn.com/640/cme/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/D0/51/B6AED06C-5E19-4A26-9AAD-0E175F6251D0/B6AED06C-5E19-4A26-9AAD-0E175F6251D0.jpg" alt="Cost effective appetizers are just as satisfying as pre-made deli platters." data-credit="Mark Stout/iStock/Getty Images" data-pin-ehow-hover="true" data-pin-no-hover="true">
+ </figure>
+ <figcaption>
+ Mark Stout/iStock/Getty Images </figcaption>
+ </div>
</div>
</span>
</span>
@@ -93,8 +135,12 @@
<div>
<div>
<p><span><p>Instead of an evening dinner party, host a grad lunch or all appetizers party. Brunch and lunch fare or finger food costs less than dinner. Guests also tend to consume less alcohol in the middle of the day, which keeps cost down.</p></span> </p>
- <figure><img alt="A brunch gathering will cost less than a dinner party." data-credit="Mark Stout/iStock/Getty Images" data-pin-ehow-hover="true" data-pin-no-hover="true" src="http://img-aws.ehowcdn.com/640/cme/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/35/B4/DD5FD05A-B631-4AFE-BC8F-FDACAD1EB435/DD5FD05A-B631-4AFE-BC8F-FDACAD1EB435.jpg"></img></figure><figcaption>
- Mark Stout/iStock/Getty Images </figcaption></div>
+ <figure>
+ <img src="http://img-aws.ehowcdn.com/640/cme/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/35/B4/DD5FD05A-B631-4AFE-BC8F-FDACAD1EB435/DD5FD05A-B631-4AFE-BC8F-FDACAD1EB435.jpg" alt="A brunch gathering will cost less than a dinner party." data-credit="Mark Stout/iStock/Getty Images" data-pin-ehow-hover="true" data-pin-no-hover="true">
+ </figure>
+ <figcaption>
+ Mark Stout/iStock/Getty Images </figcaption>
+ </div>
</div>
@@ -105,20 +151,26 @@
<div>
<div>
<p><span><p>Decorate your party in the graduate's current school colors or the colors of the school he or she will be headed to next. Décor that is not specifically graduation-themed may cost a bit less, and any leftovers can be re-used for future parties, picnics and events.</p></span> </p>
- <figure><img alt="Theme the party by color without graduation-specific decor." data-credit="jethuynh/iStock/Getty Images" data-pin-ehow-hover="true" data-pin-no-hover="true" src="http://img-aws.ehowcdn.com/640/cme/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/A1/FA/2C368B34-8F6A-45F6-9DFC-0B0C4E33FAA1/2C368B34-8F6A-45F6-9DFC-0B0C4E33FAA1.jpg"></img></figure><figcaption>
- jethuynh/iStock/Getty Images </figcaption></div>
+ <figure>
+ <img src="http://img-aws.ehowcdn.com/640/cme/cme_public_images/www_ehow_com/cdn-write.demandstudios.com/upload/image/A1/FA/2C368B34-8F6A-45F6-9DFC-0B0C4E33FAA1/2C368B34-8F6A-45F6-9DFC-0B0C4E33FAA1.jpg" alt="Theme the party by color without graduation-specific decor." data-credit="jethuynh/iStock/Getty Images" data-pin-ehow-hover="true" data-pin-no-hover="true">
+ </figure>
+ <figcaption>
+ jethuynh/iStock/Getty Images </figcaption>
+ </div>
</div>
</span>
</span>
<h2>
- <a href="https://www.google.com/adsense/support/bin/request.py?contact=abg_afc&amp;url=http://ehow.com/&amp;hl=en&amp;client=ehow&amp;gl=US" target="_blank">Related Searches</a>
+ <a target="_blank" href="https://www.google.com/adsense/support/bin/request.py?contact=abg_afc&amp;url=http://ehow.com/&amp;hl=en&amp;client=ehow&amp;gl=US">Related Searches</a>
</h2>
<p>Promoted By Zergnet</p>
- </article></div>
+
+ </article>
+ </div>
</section> \ No newline at end of file
diff --git a/test/test-pages/embedded-videos/expected.html b/test/test-pages/embedded-videos/expected.html
index 327e650..5ad8919 100644
--- a/test/test-pages/embedded-videos/expected.html
+++ b/test/test-pages/embedded-videos/expected.html
@@ -1,4 +1,5 @@
<article>
+
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
@@ -7,13 +8,13 @@
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<h2>Videos</h2>
<p>At root</p>
- <iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/LtOGa5M8AuU" width="560"></iframe>
- <iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube-nocookie.com/embed/LtOGa5M8AuU" width="560"></iframe>
- <iframe allowfullscreen="" frameborder="0" height="281" mozallowfullscreen="" src="https://player.vimeo.com/video/32246206?color=ffffff+title=0+byline=0+portrait=0" webkitallowfullscreen="" width="500"></iframe>
+ <iframe width="560" height="315" src="https://www.youtube.com/embed/LtOGa5M8AuU" frameborder="0" allowfullscreen></iframe>
+ <iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/LtOGa5M8AuU" frameborder="0" allowfullscreen></iframe>
+ <iframe src="https://player.vimeo.com/video/32246206?color=ffffff+title=0+byline=0+portrait=0" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
<p>In a paragraph</p>
- <p><iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube-nocookie.com/embed/LtOGa5M8AuU" width="560"></iframe></p>
+ <p><iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/LtOGa5M8AuU" frameborder="0" allowfullscreen></iframe></p>
<p>In a div</p>
- <p><iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/LtOGa5M8AuU" width="560"></iframe></p>
+ <p><iframe width="560" height="315" src="https://www.youtube.com/embed/LtOGa5M8AuU" frameborder="0" allowfullscreen></iframe></p>
<h2>Foo</h2>
<p>
Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
diff --git a/test/test-pages/engadget/expected.html b/test/test-pages/engadget/expected.html
index 44a2afe..4372cdf 100644
--- a/test/test-pages/engadget/expected.html
+++ b/test/test-pages/engadget/expected.html
@@ -1,5 +1,13 @@
-<div role="main"><nav data-behavior="ContextNav" data-context-nav-offset="200">
- </nav><header>
+<div role="main" xmlns:xlink="http://www.w3.org/1999/xlink">
+
+
+ <nav data-behavior="ContextNav" data-context-nav-offset="200">
+
+ </nav>
+
+
+ <header>
+
<p>
<h2> But only hardcore
@@ -11,7 +19,8 @@
<div>
<p><a href="http://fakehost/about/editors/devindra-hardawar/">
- <img src="https://o.aolcdn.com/images/dims?thumbnail=45%2C45&amp;quality=80&amp;image_uri=http%3A%2F%2Fwww.blogcdn.com%2Fwww.engadget.com%2Fmedia%2F2016%2F03%2Fdevindra-engadget-headshot-small.jpg&amp;client=cbc79c14efcebee57402&amp;signature=e6ffba7468c380581b6589a70ce5d7c1ec40cd1d"></img></a></p>
+ <img src="https://o.aolcdn.com/images/dims?thumbnail=45%2C45&amp;quality=80&amp;image_uri=http%3A%2F%2Fwww.blogcdn.com%2Fwww.engadget.com%2Fmedia%2F2016%2F03%2Fdevindra-engadget-headshot-small.jpg&amp;client=cbc79c14efcebee57402&amp;signature=e6ffba7468c380581b6589a70ce5d7c1ec40cd1d">
+ </a></p>
</div>
</div>
@@ -20,11 +29,13 @@
</div>
</div>
- </header><div data-behavior="BreakoutsHandler">
+ </header>
+ <div data-behavior="BreakoutsHandler">
<div>
<div>
- <article><div data-behavior="trigger_contents_nav" id="page_body">
+ <article>
+ <div id="page_body" data-behavior="trigger_contents_nav">
<div>
<div data-behavior="FitVids ">
@@ -57,12 +68,16 @@
<div>
<div>
<div>
- <section><h4> Gallery: Xbox One
+ <section>
+ <h4> Gallery: Xbox One
X | 14 Photos </h4>
- <div data-behavior="lightbox_trigger" data-eng-bang="{&quot;gallery&quot;:803271,&quot;slide&quot;:7142088,&quot;index&quot;:0}" data-eng-mn="93511844" data-engadget-slideshow-id="803271"><p><a data-eng-bang="{&quot;gallery&quot;:803271,&quot;slide&quot;:7142088,&quot;index&quot;:0}" data-engadget-slide-id="7142088" data-index="0" href="#">
- <img src="https://o.aolcdn.com/images/dims?thumbnail=980%2C653&amp;quality=80&amp;image_uri=https%3A%2F%2Fs.blogcdn.com%2Fslideshows%2Fimages%2Fslides%2F714%2F208%2F8%2FS7142088%2Fslug%2Fl%2Fxbox-one-x-review-gallery-1-1.jpg&amp;client=cbc79c14efcebee57402&amp;signature=9bb08b52e12de8e4060f863a52c613489529818d"></img></a></p>
- </div>
- </section></div>
+ <div data-behavior="lightbox_trigger" data-engadget-slideshow-id="803271" data-eng-bang="{&quot;gallery&quot;:803271,&quot;slide&quot;:7142088,&quot;index&quot;:0}" data-eng-mn="93511844"><p><a href="#" data-index="0" data-engadget-slide-id="7142088" data-eng-bang="{&quot;gallery&quot;:803271,&quot;slide&quot;:7142088,&quot;index&quot;:0}">
+ <img src="https://o.aolcdn.com/images/dims?thumbnail=980%2C653&amp;quality=80&amp;image_uri=https%3A%2F%2Fs.blogcdn.com%2Fslideshows%2Fimages%2Fslides%2F714%2F208%2F8%2FS7142088%2Fslug%2Fl%2Fxbox-one-x-review-gallery-1-1.jpg&amp;client=cbc79c14efcebee57402&amp;signature=9bb08b52e12de8e4060f863a52c613489529818d">
+ </a></p>
+
+ </div>
+ </section>
+ </div>
</div>
</div>
@@ -77,7 +92,8 @@
<div>
<div>
- <ul><li>Most
+ <ul>
+ <li>Most
powerful hardware ever in a home console
</li>
<li>Solid
@@ -86,10 +102,12 @@
<li>4K Blu-ray
drive is great for movie fans
</li>
- </ul></div>
+ </ul>
+ </div>
<div>
- <ul><li>Expensive
+ <ul>
+ <li>Expensive
</li>
<li>Not worth
it if you don’t have a 4K TV
@@ -97,7 +115,8 @@
<li>Still no VR
support
</li>
- </ul></div>
+ </ul>
+ </div>
</div>
</div>
<div>
@@ -118,7 +137,7 @@
<div>
<div>
<h3>Hardware</h3>
- <p><img alt="" data-credit="Devindra Hardawar/AOL" data-mep="2181678" src="https://o.aolcdn.com/images/dims?crop=1600%2C1067%2C0%2C0&amp;quality=85&amp;format=jpg&amp;resize=1600%2C1067&amp;image_uri=http%3A%2F%2Fo.aolcdn.com%2Fhss%2Fstorage%2Fmidas%2F93beb86758ae1cf95721699e1e006e35%2F205826074%2FXbox%2BOne%2BX%2Breview%2Bgallery%2B7.jpg&amp;client=a1acac3e1b3290917d92&amp;signature=c0f2d36259c2c1decfb60aae364527cda2560d4a"></img></p>
+ <p><img data-credit="Devindra Hardawar/AOL" data-mep="2181678" src="https://o.aolcdn.com/images/dims?crop=1600%2C1067%2C0%2C0&amp;quality=85&amp;format=jpg&amp;resize=1600%2C1067&amp;image_uri=http%3A%2F%2Fo.aolcdn.com%2Fhss%2Fstorage%2Fmidas%2F93beb86758ae1cf95721699e1e006e35%2F205826074%2FXbox%2BOne%2BX%2Breview%2Bgallery%2B7.jpg&amp;client=a1acac3e1b3290917d92&amp;signature=c0f2d36259c2c1decfb60aae364527cda2560d4a" alt></p>
<p>Despite all the power inside, the One X is
Microsoft's smallest console to date. It looks
similar to the Xbox One S, except it has an entirely
@@ -136,7 +155,7 @@
That additional horsepower means the Xbox One X can
run more games in full native 4K than the Sony's
console.</p>
- <p><img alt="" data-credit="Devindra Hardawar/AOL" data-mep="2182489" src="https://o.aolcdn.com/images/dims?crop=1600%2C949%2C0%2C0&amp;quality=85&amp;format=jpg&amp;resize=1600%2C949&amp;image_uri=http%3A%2F%2Fo.aolcdn.com%2Fhss%2Fstorage%2Fmidas%2F9ece7fdad1e7025dec06ac9bf98688d0%2F205826075%2FXbox%2BOne%2BX%2Breview%2Bgallery%2B5.jpg&amp;client=a1acac3e1b3290917d92&amp;signature=9913883753141e7df322616bfe0bc41c6ecd80c8"></img></p>
+ <p><img data-credit="Devindra Hardawar/AOL" data-mep="2182489" src="https://o.aolcdn.com/images/dims?crop=1600%2C949%2C0%2C0&amp;quality=85&amp;format=jpg&amp;resize=1600%2C949&amp;image_uri=http%3A%2F%2Fo.aolcdn.com%2Fhss%2Fstorage%2Fmidas%2F9ece7fdad1e7025dec06ac9bf98688d0%2F205826075%2FXbox%2BOne%2BX%2Breview%2Bgallery%2B5.jpg&amp;client=a1acac3e1b3290917d92&amp;signature=9913883753141e7df322616bfe0bc41c6ecd80c8" alt></p>
<p>Along the front, there's the slot-loading 4K Blu-ray
drive, a physical power button, a single USB port
and a controller pairing button. And around back,
@@ -155,8 +174,11 @@
<div data-engadget-breakout-type="image">
- <figure><img src="https://o.aolcdn.com/images/dims?resize=980%2C640&amp;quality=100&amp;image_uri=https%3A%2F%2Fo.aolcdn.com%2Fimages%2Fdims%3Fcrop%3D1599%252C1043%252C0%252C0%26quality%3D85%26format%3Djpg%26resize%3D1600%252C1043%26image_uri%3Dhttp%253A%252F%252Fo.aolcdn.com%252Fhss%252Fstorage%252Fmidas%252F8b98ec8f6649158fe7448ac2f2695ac5%252F205826072%252FXbox%252BOne%252BX%252Breview%252Bgallery%252B6.jpg%26client%3Da1acac3e1b3290917d92%26signature%3D353dad1308f98c2c9dfc82c58a540a8b2f1fe63c&amp;client=cbc79c14efcebee57402&amp;signature=60b7c061460d0d45f5d367b8a9c62978af6b76ce"></img><figcaption><span>Devindra Hardawar/AOL</span>
- </figcaption></figure></div>
+ <figure><img src="https://o.aolcdn.com/images/dims?resize=980%2C640&amp;quality=100&amp;image_uri=https%3A%2F%2Fo.aolcdn.com%2Fimages%2Fdims%3Fcrop%3D1599%252C1043%252C0%252C0%26quality%3D85%26format%3Djpg%26resize%3D1600%252C1043%26image_uri%3Dhttp%253A%252F%252Fo.aolcdn.com%252Fhss%252Fstorage%252Fmidas%252F8b98ec8f6649158fe7448ac2f2695ac5%252F205826072%252FXbox%252BOne%252BX%252Breview%252Bgallery%252B6.jpg%26client%3Da1acac3e1b3290917d92%26signature%3D353dad1308f98c2c9dfc82c58a540a8b2f1fe63c&amp;client=cbc79c14efcebee57402&amp;signature=60b7c061460d0d45f5d367b8a9c62978af6b76ce">
+ <figcaption><span>Devindra Hardawar/AOL</span>
+ </figcaption>
+ </figure>
+ </div>
</div>
</div>
<div>
@@ -184,8 +206,11 @@
<div data-engadget-breakout-type="image">
- <figure><img src="https://o.aolcdn.com/images/dims?resize=980%2C640&amp;quality=100&amp;image_uri=https%3A%2F%2Fo.aolcdn.com%2Fimages%2Fdims%3Fcrop%3D1600%252C900%252C0%252C0%26quality%3D85%26format%3Djpg%26resize%3D1600%252C900%26image_uri%3Dhttp%253A%252F%252Fo.aolcdn.com%252Fhss%252Fstorage%252Fmidas%252F1885534bd201fc37481b806645c1fc8b%252F205828119%252FXbox%252Bone%252BX%252Bscreenshot%252Bgallery%252B8.jpg%26client%3Da1acac3e1b3290917d92%26signature%3Df63cf67c88b37fd9424855984e45f6b950c8c11a&amp;client=cbc79c14efcebee57402&amp;signature=0adca80fc8ee26a7353be639082881450a5ad49f"></img><figcaption><span>Devindra Hardawar/AOL</span>
- </figcaption></figure></div>
+ <figure><img src="https://o.aolcdn.com/images/dims?resize=980%2C640&amp;quality=100&amp;image_uri=https%3A%2F%2Fo.aolcdn.com%2Fimages%2Fdims%3Fcrop%3D1600%252C900%252C0%252C0%26quality%3D85%26format%3Djpg%26resize%3D1600%252C900%26image_uri%3Dhttp%253A%252F%252Fo.aolcdn.com%252Fhss%252Fstorage%252Fmidas%252F1885534bd201fc37481b806645c1fc8b%252F205828119%252FXbox%252Bone%252BX%252Bscreenshot%252Bgallery%252B8.jpg%26client%3Da1acac3e1b3290917d92%26signature%3Df63cf67c88b37fd9424855984e45f6b950c8c11a&amp;client=cbc79c14efcebee57402&amp;signature=0adca80fc8ee26a7353be639082881450a5ad49f">
+ <figcaption><span>Devindra Hardawar/AOL</span>
+ </figcaption>
+ </figure>
+ </div>
</div>
</div>
<div>
@@ -235,14 +260,16 @@
<div>
<div>
- <figure><img src="https://o.aolcdn.com/images/dims?crop=1600%2C900%2C0%2C0&amp;quality=85&amp;format=jpg&amp;resize=1600%2C900&amp;image_uri=http%3A%2F%2Fo.aolcdn.com%2Fhss%2Fstorage%2Fmidas%2F8352a8a14e88e2ca2ba5be4d8381a055%2F205828115%2FXbox%2Bone%2BX%2Bscreenshot%2Bgallery%2B1.jpg&amp;client=a1acac3e1b3290917d92&amp;signature=d2ccb22e0eaabeb05bfe46e83dbe26fd07f01da8"></img><div>
+ <figure><img src="https://o.aolcdn.com/images/dims?crop=1600%2C900%2C0%2C0&amp;quality=85&amp;format=jpg&amp;resize=1600%2C900&amp;image_uri=http%3A%2F%2Fo.aolcdn.com%2Fhss%2Fstorage%2Fmidas%2F8352a8a14e88e2ca2ba5be4d8381a055%2F205828115%2FXbox%2Bone%2BX%2Bscreenshot%2Bgallery%2B1.jpg&amp;client=a1acac3e1b3290917d92&amp;signature=d2ccb22e0eaabeb05bfe46e83dbe26fd07f01da8">
+ <div>
<div>
<div>
</div>
</div>
</div>
- </figure></div>
+ </figure>
+ </div>
</div>
</div>
</div>
@@ -285,12 +312,16 @@
<div>
<div>
<div data-engadget-breakout-type="gallery">
- <section><h3> Gallery: Xbox
+ <section>
+ <h3> Gallery: Xbox
One X screenshots | 9 Photos </h3>
- <div data-behavior="lightbox_trigger" data-eng-bang="{&quot;gallery&quot;:803330,&quot;slide&quot;:7142924}" data-eng-mn="93511844" data-engadget-slideshow-id="803330"><p><a data-eng-bang="{&quot;gallery&quot;:803330,&quot;slide&quot;:7142924}" data-engadget-slide-id="7142924" data-index="0" href="#">
- <img src="https://o.aolcdn.com/images/dims?thumbnail=980%2C653&amp;quality=80&amp;image_uri=https%3A%2F%2Fs.blogcdn.com%2Fslideshows%2Fimages%2Fslides%2F714%2F292%2F4%2FS7142924%2Fslug%2Fl%2Fxbox-one-x-screenshot-gallery-2-1.jpg&amp;client=cbc79c14efcebee57402&amp;signature=38c95635c7aad58a8a48038e05589f5cf35b1e28"></img></a></p>
- </div>
- </section></div>
+ <div data-behavior="lightbox_trigger" data-engadget-slideshow-id="803330" data-eng-bang="{&quot;gallery&quot;:803330,&quot;slide&quot;:7142924}" data-eng-mn="93511844"><p><a href="#" data-index="0" data-engadget-slide-id="7142924" data-eng-bang="{&quot;gallery&quot;:803330,&quot;slide&quot;:7142924}">
+ <img src="https://o.aolcdn.com/images/dims?thumbnail=980%2C653&amp;quality=80&amp;image_uri=https%3A%2F%2Fs.blogcdn.com%2Fslideshows%2Fimages%2Fslides%2F714%2F292%2F4%2FS7142924%2Fslug%2Fl%2Fxbox-one-x-screenshot-gallery-2-1.jpg&amp;client=cbc79c14efcebee57402&amp;signature=38c95635c7aad58a8a48038e05589f5cf35b1e28">
+ </a></p>
+
+ </div>
+ </section>
+ </div>
</div>
</div>
<div>
@@ -341,14 +372,16 @@
<div>
<div>
- <figure><img src="https://o.aolcdn.com/images/dims?crop=1600%2C900%2C0%2C0&amp;quality=85&amp;format=jpg&amp;resize=1600%2C900&amp;image_uri=http%3A%2F%2Fo.aolcdn.com%2Fhss%2Fstorage%2Fmidas%2Facb08903fbe26ad77b80db8c8e7e8fb1%2F205828118%2FXbox%2Bone%2BX%2Bscreenshot%2Bgallery%2B7.jpg&amp;client=a1acac3e1b3290917d92&amp;signature=21630fa5ec6d8fdce2c35f7e1f652636a2d8efe7"></img><div>
+ <figure><img src="https://o.aolcdn.com/images/dims?crop=1600%2C900%2C0%2C0&amp;quality=85&amp;format=jpg&amp;resize=1600%2C900&amp;image_uri=http%3A%2F%2Fo.aolcdn.com%2Fhss%2Fstorage%2Fmidas%2Facb08903fbe26ad77b80db8c8e7e8fb1%2F205828118%2FXbox%2Bone%2BX%2Bscreenshot%2Bgallery%2B7.jpg&amp;client=a1acac3e1b3290917d92&amp;signature=21630fa5ec6d8fdce2c35f7e1f652636a2d8efe7">
+ <div>
<div>
<div>
</div>
</div>
</div>
- </figure></div>
+ </figure>
+ </div>
</div>
</div>
</div>
@@ -376,7 +409,7 @@
more widely supported, but it would have been nice
to see Dolby's, too.</p>
<p>
- <iframe allowfullscreen="" frameborder="0" gesture="media" height="360" src="https://www.youtube.com/embed/c8aFcHFu8QM" width="640"></iframe>
+ <iframe allowfullscreen frameborder="0" gesture="media" height="360" src="https://www.youtube.com/embed/c8aFcHFu8QM" width="640"></iframe>
</p>
<p>And speaking of Dolby technology, Microsoft is also
highlighting Atmos support on the One X, just like
@@ -410,8 +443,11 @@
<div data-engadget-breakout-type="image">
- <figure><img src="https://o.aolcdn.com/images/dims?resize=980%2C640&amp;quality=100&amp;image_uri=https%3A%2F%2Fo.aolcdn.com%2Fimages%2Fdims%3Fcrop%3D1600%252C1027%252C0%252C0%26quality%3D85%26format%3Djpg%26resize%3D1600%252C1027%26image_uri%3Dhttp%253A%252F%252Fo.aolcdn.com%252Fhss%252Fstorage%252Fmidas%252Fa2c8ba1caccdbb9e0559797e5141eafd%252F205826078%252FXbox%252BOne%252BX%252Breview%252Bgallery%252B11.jpg%26client%3Da1acac3e1b3290917d92%26signature%3Da11bcddced805c6e3698f8ce0494102aef057265&amp;client=cbc79c14efcebee57402&amp;signature=1e9bd192add2772bc842a34e67b7572cfd1b265a"></img><figcaption><span>Devindra Hardawar/AOL</span>
- </figcaption></figure></div>
+ <figure><img src="https://o.aolcdn.com/images/dims?resize=980%2C640&amp;quality=100&amp;image_uri=https%3A%2F%2Fo.aolcdn.com%2Fimages%2Fdims%3Fcrop%3D1600%252C1027%252C0%252C0%26quality%3D85%26format%3Djpg%26resize%3D1600%252C1027%26image_uri%3Dhttp%253A%252F%252Fo.aolcdn.com%252Fhss%252Fstorage%252Fmidas%252Fa2c8ba1caccdbb9e0559797e5141eafd%252F205826078%252FXbox%252BOne%252BX%252Breview%252Bgallery%252B11.jpg%26client%3Da1acac3e1b3290917d92%26signature%3Da11bcddced805c6e3698f8ce0494102aef057265&amp;client=cbc79c14efcebee57402&amp;signature=1e9bd192add2772bc842a34e67b7572cfd1b265a">
+ <figcaption><span>Devindra Hardawar/AOL</span>
+ </figcaption>
+ </figure>
+ </div>
</div>
</div>
<div>
@@ -449,7 +485,7 @@
PC, you won't be missing out on much by ditching
consoles.</p>
<h3>Wrap-up</h3>
- <p><img alt="" data-credit="Devindra Hardawar/AOL" data-mep="2181681" src="https://o.aolcdn.com/images/dims?crop=1600%2C1028%2C0%2C0&amp;quality=85&amp;format=jpg&amp;resize=1600%2C1028&amp;image_uri=http%3A%2F%2Fo.aolcdn.com%2Fhss%2Fstorage%2Fmidas%2F5396460ef8b6bde7fb7272d9e66a7701%2F205826076%2FXbox%2BOne%2BX%2Breview%2Bgallery%2B9.jpg&amp;client=a1acac3e1b3290917d92&amp;signature=f5b5b4b986c2f8b5031a4469ae0ecec82aff65b0"></img></p>
+ <p><img data-credit="Devindra Hardawar/AOL" data-mep="2181681" src="https://o.aolcdn.com/images/dims?crop=1600%2C1028%2C0%2C0&amp;quality=85&amp;format=jpg&amp;resize=1600%2C1028&amp;image_uri=http%3A%2F%2Fo.aolcdn.com%2Fhss%2Fstorage%2Fmidas%2F5396460ef8b6bde7fb7272d9e66a7701%2F205826076%2FXbox%2BOne%2BX%2Breview%2Bgallery%2B9.jpg&amp;client=a1acac3e1b3290917d92&amp;signature=f5b5b4b986c2f8b5031a4469ae0ecec82aff65b0" alt></p>
<p>Ultimately, the Xbox One X offers some major
performance upgrades that gamers will notice --
especially if you're coming from an original Xbox
@@ -463,17 +499,23 @@
</div>
</div>
- </div>
+
+ </div>
</div>
</div>
</div>
- </article></div>
+ </article>
+ </div>
</div>
</div>
+
+
<p>
<h2> From around the web </h2>
</p>
- </div> \ No newline at end of file
+
+
+ </div> \ No newline at end of file
diff --git a/test/test-pages/fortressofsolitude/expected-metadata.json b/test/test-pages/fortressofsolitude/expected-metadata.json
index 8405f67..6eaca95 100644
--- a/test/test-pages/fortressofsolitude/expected-metadata.json
+++ b/test/test-pages/fortressofsolitude/expected-metadata.json
@@ -1,5 +1,5 @@
{
- "Author": "Written by Edward Wallace",
+ "Author": null,
"Direction": null,
"Excerpt": "Just when you think the marketing behind the film couldn't get any more amazing, they go and release a music video from the Deadpool 2 soundtrack starring Canadian singer Céline Dion.",
"Image": "http:\/\/www.fortressofsolitude.co.za\/wp-content\/uploads\/2018\/05\/Céline-Dion-Belches-Her-Way-Onto-Deadpool-2s-Soundtrack.jpg",
diff --git a/test/test-pages/fortressofsolitude/expected.html b/test/test-pages/fortressofsolitude/expected.html
index 5dc6791..91d6a45 100644
--- a/test/test-pages/fortressofsolitude/expected.html
+++ b/test/test-pages/fortressofsolitude/expected.html
@@ -1 +1 @@
-<div id="primary"><div id="content" role="main"> <article id="post-116764"><p><span> <a href="http://www.fortressofsolitude.co.za/celine-dion-deadpool-2-soundtrack-ashes/" title="Céline Dion Belches Her Way Onto Deadpool 2's Soundtrack"><img alt="Céline Dion Belches Her Way Onto Deadpool 2's Soundtrack" height="400" sizes="(max-width: 750px) 100vw, 750px" src="http://www.fortressofsolitude.co.za/wp-content/uploads/2018/05/Céline-Dion-Belches-Her-Way-Onto-Deadpool-2s-Soundtrack-750x400.jpg" srcset="http://www.fortressofsolitude.co.za/wp-content/uploads/2018/05/Céline-Dion-Belches-Her-Way-Onto-Deadpool-2s-Soundtrack-750x400.jpg 750w, http://www.fortressofsolitude.co.za/wp-content/uploads/2018/05/Céline-Dion-Belches-Her-Way-Onto-Deadpool-2s-Soundtrack-24x14.jpg 24w" width="750"></img></a> </span></p><header></header><div><hr></hr><div><div><p><span>R</span>yan Reynolds never stops surprising fans with his <a href="http://www.fortressofsolitude.co.za/new-deadpool-2-trailer/">Deadpool</a>, a.k.a. the Merc with the Mouth, persona. Just when you think the marketing behind the film couldn’t get any more amazing, they go and release a music video from the <strong><em>Deadpool 2</em></strong> soundtrack starring Canadian singer Céline Dion. Yes, the one who sang the <em>Titanic</em> theme song. Your eyes do not deceive you.</p><center><blockquote data-lang="en"><p dir="ltr" lang="tl">Showtime, Mama. <a href="https://twitter.com/hashtag/EffortMaximal?src=hash&amp;ref_src=twsrc%5Etfw" rel="nofollow" target="_blank">#EffortMaximal</a> <a href="https://twitter.com/hashtag/Deadpool2?src=hash&amp;ref_src=twsrc%5Etfw" rel="nofollow" target="_blank">#Deadpool2</a> <a href="https://t.co/ZKLrucXJO4" rel="nofollow" target="_blank">pic.twitter.com/ZKLrucXJO4</a></p><p>— Ryan Reynolds (@VancityReynolds) <a href="https://twitter.com/VancityReynolds/status/992018849225695242?ref_src=twsrc%5Etfw" rel="nofollow" target="_blank">May 3, 2018</a></p></blockquote></center><p>“What’s left to say? These prayers ain’t working anymore. Every word shot down in flames. What’s left to do with these broken pieces on the floor? I’m losing my voice calling on you,” Dion croons in the video for “Ashes”. Near the end of it, the filthy, foul-mouthed <a href="http://www.fortressofsolitude.co.za/hilarious-deadpool-2-teaser-bob-ross/">Deadpool</a> shows up in a surprising twist mentioning that he should have gotten N’sync instead.</p><h3><strong><em>Deadpool 2</em></strong> opens in theatres on May 18.</h3></div></div></div><hr></hr></article></div></div> \ No newline at end of file
+<div id="primary"><div id="content" role="main"> <article id="post-116764"><p><span> <a href="http://www.fortressofsolitude.co.za/celine-dion-deadpool-2-soundtrack-ashes/" title="Céline Dion Belches Her Way Onto Deadpool 2's Soundtrack"><img width="750" height="400" src="http://www.fortressofsolitude.co.za/wp-content/uploads/2018/05/Céline-Dion-Belches-Her-Way-Onto-Deadpool-2s-Soundtrack-750x400.jpg" alt="Céline Dion Belches Her Way Onto Deadpool 2's Soundtrack" srcset="http://www.fortressofsolitude.co.za/wp-content/uploads/2018/05/Céline-Dion-Belches-Her-Way-Onto-Deadpool-2s-Soundtrack-750x400.jpg 750w, http://www.fortressofsolitude.co.za/wp-content/uploads/2018/05/Céline-Dion-Belches-Her-Way-Onto-Deadpool-2s-Soundtrack-24x14.jpg 24w" sizes="(max-width: 750px) 100vw, 750px"></a> </span></p><div><hr><div><div><p><span>R</span>yan Reynolds never stops surprising fans with his <a href="http://www.fortressofsolitude.co.za/new-deadpool-2-trailer/">Deadpool</a>, a.k.a. the Merc with the Mouth, persona. Just when you think the marketing behind the film couldn’t get any more amazing, they go and release a music video from the <strong><em>Deadpool 2</em></strong> soundtrack starring Canadian singer Céline Dion. Yes, the one who sang the <em>Titanic</em> theme song. Your eyes do not deceive you.</p><center><blockquote data-lang="en"><p lang="tl" dir="ltr">Showtime, Mama. <a rel="nofollow" target="_blank" href="https://twitter.com/hashtag/EffortMaximal?src=hash&amp;ref_src=twsrc%5Etfw">#EffortMaximal</a> <a rel="nofollow" target="_blank" href="https://twitter.com/hashtag/Deadpool2?src=hash&amp;ref_src=twsrc%5Etfw">#Deadpool2</a> <a rel="nofollow" target="_blank" href="https://t.co/ZKLrucXJO4">pic.twitter.com/ZKLrucXJO4</a></p><p>— Ryan Reynolds (@VancityReynolds) <a rel="nofollow" target="_blank" href="https://twitter.com/VancityReynolds/status/992018849225695242?ref_src=twsrc%5Etfw">May 3, 2018</a></p></blockquote></center><p>“What’s left to say? These prayers ain’t working anymore. Every word shot down in flames. What’s left to do with these broken pieces on the floor? I’m losing my voice calling on you,” Dion croons in the video for “Ashes”. Near the end of it, the filthy, foul-mouthed <a href="http://www.fortressofsolitude.co.za/hilarious-deadpool-2-teaser-bob-ross/">Deadpool</a> shows up in a surprising twist mentioning that he should have gotten N’sync instead.</p><h3><strong><em>Deadpool 2</em></strong> opens in theatres on May 18.</h3></div></div></div><hr></article></div></div> \ No newline at end of file
diff --git a/test/test-pages/gmw/expected.html b/test/test-pages/gmw/expected.html
index 1b69754..119205b 100644
--- a/test/test-pages/gmw/expected.html
+++ b/test/test-pages/gmw/expected.html
@@ -6,7 +6,7 @@
<p>  翱翔于距地球数千公里的太空中,进入广袤漆黑的未知领域,是一项艰苦卓绝的工作。这让人感到巨大压力和极度恐慌。那么,为什么不能让宇航员来一杯“地球末日”鸡尾酒来放松一下?</p>
<p>  不幸的是,对于希望能喝上一杯的太空探险者,那些将他们送上太空的政府机构普遍禁止他们染指包括酒在内的含酒精饮料。</p>
<p>  但是,很快普通人都会有机会向人类“最终的边疆”出发——以平民化旅行的形式,去探索和殖民火星。确实,火星之旅将是一次令人感到痛苦的旅行,可能一去不复返并要几年时间才能完成,但是否应该允许参与者在旅程中痛饮一番?或至少携带能在火星上发酵自制酒精饮料的设备?</p>
- <p><img alt="(Credit: Nasa)" id="45395168" src="http://imgtech.gmw.cn/attachement/jpg/site2/20170310/448a5bc1e2861a2c4e5929.jpg" title="宇航员在太空中喝酒会怎么样?后果很严重"></img></p>
+ <p><img id="45395168" alt="(Credit: Nasa)" src="http://imgtech.gmw.cn/attachement/jpg/site2/20170310/448a5bc1e2861a2c4e5929.jpg" title="宇航员在太空中喝酒会怎么样?后果很严重"></p>
<p>
<span face="楷体">  图注:巴兹?奥尔德林(Buzz Aldrin)可能是第二个在月球上行走的人,但他是第一个在月球上喝酒的人</span>
</p>
@@ -21,7 +21,7 @@
<p>  所以,如果酒精对人体的物理效应与海拔高度无关,那么在国际空间站上睡前小饮一杯不应该是一个大问题,对吧?错了。</p>
<p>  美国宇航局约翰逊航天中心发言人丹尼尔·霍特(Daniel Huot)表示:“国际空间站上的宇航员不允许喝酒。在国际空间站上,酒精和其它挥发性化合物的使用受到控制,因为它们的挥发物可能对该站的水回收系统产生影响。”</p>
<p>  为此,国际空间站上的宇航员甚至没有被提供含有酒精的产品,例如漱口水、香水或须后水。如果在国际空间站上饮酒狂欢,溢出的啤酒也可能存在损坏设备的风险。</p>
- <p><img alt="(Credit: iStock)" id="45395150" src="http://imgtech.gmw.cn/attachement/jpg/site2/20170310/448a5bc1e2861a2c4e592a.jpg" title="宇航员在太空中喝酒会怎么样?后果很严重"></img></p>
+ <p><img id="45395150" alt="(Credit: iStock)" src="http://imgtech.gmw.cn/attachement/jpg/site2/20170310/448a5bc1e2861a2c4e592a.jpg" title="宇航员在太空中喝酒会怎么样?后果很严重"></p>
<p>
<span face="楷体">  图注:测试表明,有关人在高空中喝酒更容易醉的传言是不正确的</span>
</p>
@@ -40,7 +40,7 @@
<p>  因此,即使宇航员自己被禁止在地球轨道上饮酒,但他们正在做的工作可以提高在地上消费的酒的质量。</p>
<p>  相比之下,执行登陆火星任务的人将远离家乡几年,而不是几个月,因此可能会有人提出有关禁止饮酒的规定可以放松一些。</p>
<p>  然而,像戴夫?汉森这样的专家认为,继续禁止饮酒并没有什么害处。除了实际的安全问题,饮酒还可能有其它挑战。汉森认为,地球人存在许多社会文化方面的差异,而且人连续几年时间呆在一个狭小的空间里,很容易突然发怒,这些因素都使饮酒问题变得很棘手。</p>
- <p><img alt="(Credit: David Frohman/Peachstate Historical Consulting Inc)" id="45395153" src="http://imgtech.gmw.cn/attachement/jpg/site2/20170310/448a5bc1e2861a2c4e592d.jpg" title="宇航员在太空中喝酒会怎么样?后果很严重"></img></p>
+ <p><img id="45395153" alt="(Credit: David Frohman/Peachstate Historical Consulting Inc)" src="http://imgtech.gmw.cn/attachement/jpg/site2/20170310/448a5bc1e2861a2c4e592d.jpg" title="宇航员在太空中喝酒会怎么样?后果很严重"> </p>
<p>
<span face="楷体">  图注:奥尔德林的圣餐杯回到了地球上</span>
</p>
@@ -49,7 +49,7 @@
<p>  原标题:他晚于阿姆斯特朗登月 却是首个敢在月球喝酒的人</p>
<p><strong>  出品︱网易科学人栏目组 胖胖</strong></p>
<p><strong>  作者︱春春</strong>
- <a href="http://www.gmw.cn" target="_blank"><img src="https://img.gmw.cn/pic/content_logo.png" title="返回光明网首页"></img></a>
+ <a href="http://www.gmw.cn" target="_blank"><img src="https://img.gmw.cn/pic/content_logo.png" title="返回光明网首页"></a>
</p>
<p>[责任编辑:肖春芳]</p>
diff --git a/test/test-pages/heise/expected.html b/test/test-pages/heise/expected.html
index 95ab304..35c7971 100644
--- a/test/test-pages/heise/expected.html
+++ b/test/test-pages/heise/expected.html
@@ -1,20 +1,34 @@
<div>
- <figure><img src="http://3.f.ix.de/scale/geometry/600/q75/imgs/18/1/4/6/2/3/5/1/Barcode-Scanner-With-Border-fc08c913da5cea5d.jpeg"></img><figcaption><p>1Password scannt auch QR-Codes.</p>
+ <figure>
+ <img src="http://3.f.ix.de/scale/geometry/600/q75/imgs/18/1/4/6/2/3/5/1/Barcode-Scanner-With-Border-fc08c913da5cea5d.jpeg">
+
+ <figcaption>
+
+ <p>1Password scannt auch QR-Codes.</p>
<p>(Bild: Hersteller)</p>
- </figcaption></figure><p><strong>Das in der iOS-Version bereits enthaltene TOTP-Feature ist nun auch für OS X 10.10 verfügbar. Zudem gibt es neue Zusatzfelder in der Datenbank und weitere Verbesserungen.</strong></p>
- <p><a href="https://itunes.apple.com/de/app/1password-password-manager/id443987910" rel="external" target="_blank">AgileBits hat Version 5.3 seines bekannten Passwortmanagers 1Password für OS X freigegeben.</a> Mit dem Update wird eine praktische Funktion nachgereicht, die <a href="http://fakehost/mac-and-i/meldung/Passwortmanager-1Password-mit-groesseren-Updates-fuer-OS-X-und-iOS-2529204.html">die iOS-Version der Anwendung bereits seit längerem beherrscht</a>: Das direkte Erstellen von Einmal-Passwörtern. Unterstützt wird dabei der <a href="https://blog.agilebits.com/2015/01/26/totp-for-1password-users/" rel="external" target="_blank">TOTP-Standard</a> (Time-Based One-Time Passwords), den unter anderem Firmen wie Evernote, Dropbox oder Google einsetzen, um ihre Zugänge besser abzusichern. Neben Account und regulärem Passwort wird dabei dann ein Zusatzcode verlangt, der nur kurze Zeit gilt.</p>
-<p>Zur TOTP-Nutzung muss zunächst ein Startwert an 1Password übergeben werden. Das geht unter anderem per QR-Code, den die App über ein neues Scanfenster selbst einlesen kann – etwa aus dem Webbrowser. Eine Einführung in die Technik gibt <a href="http://1pw.ca/TOTPvideoMac" rel="external" target="_blank">ein kurzes Video</a>. Die TOTP-Unterstützung in 1Password erlaubt es, auf ein zusätzliches Gerät (z.B. ein iPhone) neben dem Mac zu verzichten, das den Code liefert – was allerdings auch die Sicherheit verringert, weil es keinen "echten" zweiten Faktor mehr gibt.</p>
+ </figcaption>
+
+ </figure>
+
+
+
+ <p><strong>Das in der iOS-Version bereits enthaltene TOTP-Feature ist nun auch für OS X 10.10 verfügbar. Zudem gibt es neue Zusatzfelder in der Datenbank und weitere Verbesserungen.</strong></p>
+ <p><a rel="external" target="_blank" href="https://itunes.apple.com/de/app/1password-password-manager/id443987910">AgileBits hat Version 5.3 seines bekannten Passwortmanagers 1Password für OS X freigegeben.</a> Mit dem Update wird eine praktische Funktion nachgereicht, die <a href="http://fakehost/mac-and-i/meldung/Passwortmanager-1Password-mit-groesseren-Updates-fuer-OS-X-und-iOS-2529204.html">die iOS-Version der Anwendung bereits seit längerem beherrscht</a>: Das direkte Erstellen von Einmal-Passwörtern. Unterstützt wird dabei der <a rel="external" target="_blank" href="https://blog.agilebits.com/2015/01/26/totp-for-1password-users/">TOTP-Standard</a> (Time-Based One-Time Passwords), den unter anderem Firmen wie Evernote, Dropbox oder Google einsetzen, um ihre Zugänge besser abzusichern. Neben Account und regulärem Passwort wird dabei dann ein Zusatzcode verlangt, der nur kurze Zeit gilt.</p>
+<p>Zur TOTP-Nutzung muss zunächst ein Startwert an 1Password übergeben werden. Das geht unter anderem per QR-Code, den die App über ein neues Scanfenster selbst einlesen kann – etwa aus dem Webbrowser. Eine Einführung in die Technik gibt <a rel="external" target="_blank" href="http://1pw.ca/TOTPvideoMac">ein kurzes Video</a>. Die TOTP-Unterstützung in 1Password erlaubt es, auf ein zusätzliches Gerät (z.B. ein iPhone) neben dem Mac zu verzichten, das den Code liefert – was allerdings auch die Sicherheit verringert, weil es keinen "echten" zweiten Faktor mehr gibt.</p>
<p>Update 5.3 des Passwortmanagers liefert auch noch weitere Verbesserungen. So gibt es die Möglichkeit, FaceTime-Audio- oder Skype-Anrufe aus 1Password zu starten, die Zahl der Zusatzfelder in der Datenbank wurde erweitert und der Umgang mit unterschiedlichen Zeitzonen klappt besser. Die Engine zur Passworteingabe im Browser soll beschleunigt worden sein.</p>
<p>1Password kostet aktuell knapp 50 Euro im Mac App Store und setzt in seiner aktuellen Version mindestens OS X 10.10 voraus.
-<span>(<a href="mailto:[email protected]" title="Ben Schwan">bsc</a>)</span>
-<br></br></p>
+<span>(<a title="Ben Schwan" href="mailto:[email protected]">bsc</a>)</span>
+<br>
+
+
+</p>
</div> \ No newline at end of file
diff --git a/test/test-pages/herald-sun-1/expected.html b/test/test-pages/herald-sun-1/expected.html
index 6896eed..5f13728 100644
--- a/test/test-pages/herald-sun-1/expected.html
+++ b/test/test-pages/herald-sun-1/expected.html
@@ -1,7 +1,8 @@
<div>
<div>
<div>
- <p><img alt="A new Bill would require telecommunications service providers to store so-called ‘metadat" data-src="http://api.news.com.au/content/1.0/heraldsun/images/1227261885862?format=jpg&amp;group=iphone&amp;size=medium" src="http://api.news.com.au/content/1.0/heraldsun/images/1227261885862?format=jpg&amp;group=iphone&amp;size=medium"></img></p>
+ <p><img data-src="http://api.news.com.au/content/1.0/heraldsun/images/1227261885862?format=jpg&amp;group=iphone&amp;size=medium" alt="A new Bill would require telecommunications service providers to store so-called ‘metadat" src="http://api.news.com.au/content/1.0/heraldsun/images/1227261885862?format=jpg&amp;group=iphone&amp;size=medium">
+ </p>
<p>
<span id="imgCaption">A new Bill would require telecommunications service providers to store so-called ‘metadata’ for two years.</span>
<span><em>Source:</em>
diff --git a/test/test-pages/hukumusume/expected.html b/test/test-pages/hukumusume/expected.html
index defbcc1..2547269 100644
--- a/test/test-pages/hukumusume/expected.html
+++ b/test/test-pages/hukumusume/expected.html
@@ -3,11 +3,15 @@
<a href="http://fakehost/test/../../../index.html">福娘童話集</a> &gt; <a href="http://fakehost/test/../index.html">きょうのイソップ童話</a> &gt; <a href="http://fakehost/test/../itiran/01gatu.htm">1月のイソップ童話</a> &gt; 欲張りなイヌ
</p>
<div>
- <p><span color="#FF0000" size="+2">元旦のイソップ童話</span></p><p><img alt="よくばりなイヌ" height="360" src="http://fakehost/test/../../../gazou/pc_gazou/aesop/aesop052.jpg" width="480"></img></p><p>
+ <p><span color="#FF0000" size="+2">元旦のイソップ童話</span></p><p><img src="http://fakehost/test/../../../gazou/pc_gazou/aesop/aesop052.jpg" alt="よくばりなイヌ" width="480" height="360"></p><p>
欲張りなイヌ</p><p><a href="http://hukumusume.com/douwa/English/aesop/01/01_j.html">ひらがな</a> ←→ <a href="http://hukumusume.com/douwa/English/aesop/01/01_j&amp;E.html">日本語・英語</a> ←→ <a href="http://hukumusume.com/douwa/English/aesop/01/01_E.html">English</a></p></div>
<div>
- <table readabilityDataTable="0"><tbody><tr><td>
- <img height="7" src="http://fakehost/test/../../../../366/logo_bana/corner_1.gif" width="7"></img></td>
+ <table readabilityDataTable="0">
+ <tbody>
+ <tr>
+ <td>
+ <img src="http://fakehost/test/../../../../366/logo_bana/corner_1.gif" width="7" height="7">
+ </td>
<td>
<span color="#FF0000"><b>おりがみをつくろう</b></span>
</td>
@@ -15,20 +19,39 @@
<span size="-1">( <a href="http://www.origami-club.com/index.html">おりがみくらぶ</a> より)</span>
</td>
<td>
- <img height="7" src="http://fakehost/test/../../../../366/logo_bana/corner_2.gif" width="7"></img></td>
- </tr><tr><td colspan="4">
+ <img src="http://fakehost/test/../../../../366/logo_bana/corner_2.gif" width="7" height="7">
+ </td>
+ </tr>
+ <tr>
+ <td colspan="4">
<p>
- <a href="http://www.origami-club.com/easy/dogfase/index.html"><span size="+2"><img alt="犬の顔の折り紙" height="51" src="http://fakehost/test/../../../gazou/origami_gazou/kantan/dogface.gif" width="73"></img>いぬのかお</span></a>   <a href="http://www.origami-club.com/easy/dog/index.html"><img alt="犬の顔の紙" height="43" src="http://fakehost/test/../../../gazou/origami_gazou/kantan/dog.gif" width="62"></img><span size="+2">いぬ</span></a>
- </p></td>
- </tr></tbody></table></div><table readabilityDataTable="0"><tbody><tr><td>
+ <a href="http://www.origami-club.com/easy/dogfase/index.html"><span size="+2"><img src="http://fakehost/test/../../../gazou/origami_gazou/kantan/dogface.gif" alt="犬の顔の折り紙" width="73" height="51">いぬのかお</span></a>   <a href="http://www.origami-club.com/easy/dog/index.html"><img src="http://fakehost/test/../../../gazou/origami_gazou/kantan/dog.gif" alt="犬の顔の紙" width="62" height="43"><span size="+2">いぬ</span></a>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <table readabilityDataTable="0">
+ <tbody>
+ <tr>
+ <td>
♪音声配信(html5)
</td>
- </tr><tr><td>
- <audio controls="" src="http://ohanashi2.up.seesaa.net/mp3/ae_0101.mp3"></audio></td>
- </tr><tr><td>
+ </tr>
+ <tr>
+ <td>
+ <audio src="http://ohanashi2.up.seesaa.net/mp3/ae_0101.mp3" controls></audio>
+ </td>
+ </tr>
+ <tr>
+ <td>
<a href="http://www.voiceblog.jp/onokuboaki/"><span size="-1">亜姫の朗読☆ イソップ童話より</span></a>
</td>
- </tr></tbody></table><p>
+ </tr>
+ </tbody>
+ </table>
+ <p>
 肉をくわえたイヌが、橋を渡っていました。  ふと下を見ると、川の中にも肉をくわえたイヌがいます。 イヌはそれを見て、思いました。(あいつの肉の方が、大きそうだ)  イヌは、くやしくてたまりません。 (そうだ、あいつをおどかして、あの肉を取ってやろう)  そこでイヌは、川の中のイヌに向かって思いっきり吠えました。 「ウゥー、ワン!!」  そのとたん、くわえていた肉はポチャンと川の中に落ちてしまいました。 「ああー、ぁぁー」  川の中には、がっかりしたイヌの顔がうつっています。  さっきの川の中のイヌは、水にうつった自分の顔だったのです。  同じ物を持っていても、人が持っている物の方が良く見え、また、欲張るとけっきょく損をするというお話しです。
</p>
<p>
diff --git a/test/test-pages/iab-1/expected.html b/test/test-pages/iab-1/expected.html
index dd4faf3..c9b738d 100644
--- a/test/test-pages/iab-1/expected.html
+++ b/test/test-pages/iab-1/expected.html
@@ -9,7 +9,7 @@
<p>Through our pursuit of further automation and maximization of margins during the industrial age of media technology, we built advertising technology to optimize publishers’ yield of marketing budgets that had eroded after the last recession. Looking back now, our scraping of dimes may have cost us dollars in consumer loyalty. The fast, scalable systems of targeting users with ever-heftier advertisements have slowed down the public internet and drained more than a few batteries. We were so clever and so good at it that we over-engineered the capabilities of the plumbing laid down by, well, ourselves. This steamrolled the users, depleted their devices, and tried their patience.</p>
<p>The rise of ad blocking poses a threat to the internet and could potentially drive users to an enclosed platform world dominated by a few companies. We have let the fine equilibrium of content, commerce, and technology get out of balance in the open web. We had, and still do have, a responsibility to educate the business side, and in some cases to push back. We lost sight of our social and ethical responsibility to provide a safe, usable experience for anyone and everyone wanting to consume the content of their choice.</p>
<p>We need to bring that back into alignment, starting right now.</p>
-<p><a href="http://www.iab.com/wp-content/uploads/2015/10/getting-lean-with-digital-ad-ux.jpg"><img alt="Getting LEAN with Digital Ad UX" height="250" src="http://www.iab.com/wp-content/uploads/2015/10/getting-lean-with-digital-ad-ux-300x250.jpg" width="300"></img></a>Today, the IAB Tech Lab is launching the L.E.A.N. Ads program. Supported by the Executive Committee of the IAB Tech Lab Board, IABs around the world, and hundreds of member companies, L.E.A.N. stands for Light, Encrypted, Ad choice supported, Non-invasive ads. These are principles that will help guide the next phases of advertising technical standards for the global digital advertising supply chain.</p>
+<p><a href="http://www.iab.com/wp-content/uploads/2015/10/getting-lean-with-digital-ad-ux.jpg"><img width="300" height="250" alt="Getting LEAN with Digital Ad UX" src="http://www.iab.com/wp-content/uploads/2015/10/getting-lean-with-digital-ad-ux-300x250.jpg"></a>Today, the IAB Tech Lab is launching the L.E.A.N. Ads program. Supported by the Executive Committee of the IAB Tech Lab Board, IABs around the world, and hundreds of member companies, L.E.A.N. stands for Light, Encrypted, Ad choice supported, Non-invasive ads. These are principles that will help guide the next phases of advertising technical standards for the global digital advertising supply chain.</p>
<p>As with any other industry, standards should be created by non-profit standards-setting bodies, with many diverse voices providing input. We will invite all parties for public comment, and make sure consumer interest groups have the opportunity to provide input.</p>
<p>L.E.A.N. Ads do not replace the current advertising standards many consumers still enjoy and engage with while consuming content on our sites across all IP enabled devices. Rather, these principles will guide an alternative set of standards that provide choice for marketers, content providers, and consumers.</p>
<p>Among the many areas of concentration, we must also address frequency capping on retargeting in Ad Tech and make sure a user is targeted appropriately before, but never AFTER they make a purchase. If we are so good at reach and scale, we can be just as good, if not better, at moderation. Additionally, we must address volume of ads per page as well as continue on the path to viewability. The dependencies here are critical to an optimized user experience.</p>
@@ -18,10 +18,13 @@
<p>Finally, we must do this in an increasingly fragmented market, across screens. We must do this in environments where entire sites are blocked, purposefully or not. Yes, it is disappointing that our development efforts will have to manage with multiple frameworks while we work to supply the economic engine to sustain an open internet. However, our goal is still to provide diverse content and voices to as many connected users as possible around the world.</p>
<p>That is user experience.</p>
-<p>IAB Tech Lab Members can join the IAB Tech Lab Ad Blocking Working Group, please email <a href="mailto:[email protected]">[email protected]</a> for more information.</p><p>Read <a href="http://www.iab.com/insights/ad-blocking/" target="_blank">more about ad blocking here</a>.</p>
+<p>IAB Tech Lab Members can join the IAB Tech Lab Ad Blocking Working Group, please email <a href="mailto:[email protected]">[email protected]</a> for more information.</p>
+<p>Read <a target="_blank" href="http://www.iab.com/insights/ad-blocking/">more about ad blocking here</a>.</p>
</div>
- </div><div id="post-author"><div>
- <figure><img alt="Auto Draft 14" src="http://www.iab.com/wp-content/uploads/2015/05/auto-draft-16-150x150.jpg"></img></figure><div>
+ </div><div id="post-author">
+ <div>
+ <figure><img alt="Auto Draft 14" src="http://www.iab.com/wp-content/uploads/2015/05/auto-draft-16-150x150.jpg"></figure>
+ <div>
<h4>About the author</h4>
<p><strong>Scott Cunningham</strong></p>
<p>Senior Vice President of Technology and Ad Operations at IAB, and General Manager of the IAB Tech Lab</p>
diff --git a/test/test-pages/ietf-1/expected.html b/test/test-pages/ietf-1/expected.html
index ff46f7a..7e67cc9 100644
--- a/test/test-pages/ietf-1/expected.html
+++ b/test/test-pages/ietf-1/expected.html
@@ -1,6 +1,10 @@
<div>
-<span>[<a href="http://fakehost/test/../html/" title="Document search and retrieval page">Docs</a>] [<a href="https://tools.ietf.org/id/draft-dejong-remotestorage-04.txt" title="Plaintext version of this document">txt</a>|<a href="http://fakehost/pdf/draft-dejong-remotestorage-04.txt" title="PDF version of this document">pdf</a>] [<a href="https://datatracker.ietf.org/doc/draft-dejong-remotestorage" title="IESG Datatracker information for this document">Tracker</a>] [<a href="mailto:[email protected]?subject=draft-dejong-remotestorage%20" title="Send email to the document authors">Email</a>] [<a href="http://fakehost/rfcdiff?difftype=--hwdiff&amp;url2=draft-dejong-remotestorage-04.txt" title="Inline diff (wdiff)">Diff1</a>] [<a href="http://fakehost/rfcdiff?url2=draft-dejong-remotestorage-04.txt" title="Side-by-side diff">Diff2</a>] [<a href="http://fakehost/idnits?url=https://tools.ietf.org/id/draft-dejong-remotestorage-04.txt" title="Run an idnits check of this document">Nits</a>] </span><br></br><span> </span><br></br><span>Versions: <a href="http://fakehost/test/draft-dejong-remotestorage-00">00</a> <a href="http://fakehost/test/draft-dejong-remotestorage-01">01</a> <a href="http://fakehost/test/draft-dejong-remotestorage-02">02</a> <a href="http://fakehost/test/draft-dejong-remotestorage-03">03</a> <a href="http://fakehost/test/draft-dejong-remotestorage-04">04</a> </span><br></br><span> </span><br></br><pre>INTERNET DRAFT Michiel B. de Jong
+<span>[<a href="http://fakehost/test/../html/" title="Document search and retrieval page">Docs</a>] [<a href="https://tools.ietf.org/id/draft-dejong-remotestorage-04.txt" title="Plaintext version of this document">txt</a>|<a href="http://fakehost/pdf/draft-dejong-remotestorage-04.txt" title="PDF version of this document">pdf</a>] [<a href="https://datatracker.ietf.org/doc/draft-dejong-remotestorage" title="IESG Datatracker information for this document">Tracker</a>] [<a href="mailto:[email protected]?subject=draft-dejong-remotestorage%20" title="Send email to the document authors">Email</a>] [<a href="http://fakehost/rfcdiff?difftype=--hwdiff&amp;url2=draft-dejong-remotestorage-04.txt" title="Inline diff (wdiff)">Diff1</a>] [<a href="http://fakehost/rfcdiff?url2=draft-dejong-remotestorage-04.txt" title="Side-by-side diff">Diff2</a>] [<a href="http://fakehost/idnits?url=https://tools.ietf.org/id/draft-dejong-remotestorage-04.txt" title="Run an idnits check of this document">Nits</a>] </span><br>
+<span> </span><br>
+<span>Versions: <a href="http://fakehost/test/draft-dejong-remotestorage-00">00</a> <a href="http://fakehost/test/draft-dejong-remotestorage-01">01</a> <a href="http://fakehost/test/draft-dejong-remotestorage-02">02</a> <a href="http://fakehost/test/draft-dejong-remotestorage-03">03</a> <a href="http://fakehost/test/draft-dejong-remotestorage-04">04</a> </span><br>
+<span> </span><br>
+<pre>INTERNET DRAFT Michiel B. de Jong
Document: <a href="http://fakehost/test/draft-dejong-remotestorage-04">draft-dejong-remotestorage-04</a> IndieHosters
F. Kooman
Intended Status: Proposed Standard (independent)
@@ -53,7 +57,7 @@ Copyright Notice
<span>de Jong [Page 1]</span>
-</pre><pre><a href="#page-2" id="page-2" name="page-2"> </a>
+</pre><pre><a name="page-2" id="page-2" href="#page-2"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
@@ -89,7 +93,7 @@ Table of Contents
<a href="#section-18">18</a>. Authors' addresses............................................<a href="#page-22">22</a>
-<span><a href="#section-1" name="section-1">1</a>. Introduction</span>
+<span><a name="section-1" href="#section-1">1</a>. Introduction</span>
Many services for data storage are available over the internet. This
specification describes a vendor-independent interface for such
@@ -103,7 +107,7 @@ Table of Contents
<span>de Jong [Page 2]</span>
-</pre><pre><a href="#page-3" id="page-3" name="page-3"> </a>
+</pre><pre><a name="page-3" id="page-3" href="#page-3"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
@@ -122,7 +126,7 @@ Table of Contents
The exact details of these four actions are described in this
specification.
-<span><a href="#section-2" name="section-2">2</a>. Terminology</span>
+<span><a name="section-2" href="#section-2">2</a>. Terminology</span>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
@@ -135,7 +139,7 @@ Table of Contents
implement the general requirement when such failure would result in
interoperability failure.
-<span><a href="#section-3" name="section-3">3</a>. Storage model</span>
+<span><a name="section-3" href="#section-3">3</a>. Storage model</span>
The server stores data in nodes that form a tree structure.
Internal nodes are called 'folders' and leaf nodes are called
@@ -153,7 +157,7 @@ Table of Contents
<span>de Jong [Page 3]</span>
-</pre><pre><a href="#page-4" id="page-4" name="page-4"> </a>
+</pre><pre><a name="page-4" id="page-4" href="#page-4"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
@@ -163,7 +167,7 @@ Table of Contents
* content length
* content
-<span><a href="#section-4" name="section-4">4</a>. Requests</span>
+<span><a name="section-4" href="#section-4">4</a>. Requests</span>
Client-to-server requests SHOULD be made over https [<a href="#ref-HTTPS">HTTPS</a>], and
servers MUST comply with HTTP/1.1 [<a href="#ref-HTTP">HTTP</a>]. Specifically, they
@@ -203,7 +207,7 @@ Table of Contents
<span>de Jong [Page 4]</span>
-</pre><pre><a href="#page-5" id="page-5" name="page-5"> </a>
+</pre><pre><a name="page-5" id="page-5" href="#page-5"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
@@ -253,7 +257,7 @@ Table of Contents
<span>de Jong [Page 5]</span>
-</pre><pre><a href="#page-6" id="page-6" name="page-6"> </a>
+</pre><pre><a name="page-6" id="page-6" href="#page-6"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
@@ -303,11 +307,11 @@ Table of Contents
<span>de Jong [Page 6]</span>
-</pre><pre><a href="#page-7" id="page-7" name="page-7"> </a>
+</pre><pre><a name="page-7" id="page-7" href="#page-7"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
-<span><a href="#section-5" name="section-5">5</a>. Response codes</span>
+<span><a name="section-5" href="#section-5">5</a>. Response codes</span>
Response codes SHOULD be given as defined by [HTTP, <a href="#section-6">section 6</a>] and
[BEARER, <a href="#section-3.1">section 3.1</a>]. The following is a non-normative checklist
@@ -340,7 +344,7 @@ Table of Contents
Clients SHOULD also handle the case where a response takes too long
to arrive, or where no response is received at all.
-<span><a href="#section-6" name="section-6">6</a>. Versioning</span>
+<span><a name="section-6" href="#section-6">6</a>. Versioning</span>
All successful requests MUST return an 'ETag' header [<a href="#ref-HTTP">HTTP</a>] with, in
the case of GET, the current version, in the case of PUT, the new
@@ -353,7 +357,7 @@ Table of Contents
<span>de Jong [Page 7]</span>
-</pre><pre><a href="#page-8" id="page-8" name="page-8"> </a>
+</pre><pre><a name="page-8" id="page-8" href="#page-8"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
@@ -370,14 +374,14 @@ Table of Contents
A provider MAY offer version rollback functionality to its users,
but this specification does not define the user interface for that.
-<span><a href="#section-7" name="section-7">7</a>. CORS headers</span>
+<span><a name="section-7" href="#section-7">7</a>. CORS headers</span>
All responses MUST carry CORS headers [<a href="#ref-CORS">CORS</a>]. The server MUST also
reply to OPTIONS requests as per CORS. For GET requests, a wildcard
origin MAY be returned, but for PUT and DELETE requests, the
response MUST echo back the Origin header sent by the client.
-<span><a href="#section-8" name="section-8">8</a>. Session description</span>
+<span><a name="section-8" href="#section-8">8</a>. Session description</span>
The information that a client needs to receive in order to be able
to connect to a server SHOULD reach the client as described in the
@@ -403,7 +407,7 @@ Table of Contents
<span>de Jong [Page 8]</span>
-</pre><pre><a href="#page-9" id="page-9" name="page-9"> </a>
+</pre><pre><a name="page-9" id="page-9" href="#page-9"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
@@ -418,7 +422,7 @@ Table of Contents
* https://storage.example.com/bob/public/documents/
* https://storage.example.com/bob/public/documents/draft.txt
-<span><a href="#section-9" name="section-9">9</a>. Bearer tokens and access control</span>
+<span><a name="section-9" href="#section-9">9</a>. Bearer tokens and access control</span>
A bearer token represents one or more access scopes. These access
scopes are represented as strings of the form &lt;module&gt; &lt;level&gt;,
@@ -453,12 +457,12 @@ Table of Contents
<span>de Jong [Page 9]</span>
-</pre><pre><a href="#page-10" id="page-10" name="page-10"> </a>
+</pre><pre><a name="page-10" id="page-10" href="#page-10"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
-<span><a href="#section-10" name="section-10">10</a>. Application-first bearer token issuance</span>
+<span><a name="section-10" href="#section-10">10</a>. Application-first bearer token issuance</span>
To make a remoteStorage server available as 'the remoteStorage of
&lt;account&gt; at &lt;host&gt;', exactly one link of the following format
@@ -503,7 +507,7 @@ Table of Contents
<span>de Jong [Page 10]</span>
-</pre><pre><a href="#page-11" id="page-11" name="page-11"> </a>
+</pre><pre><a name="page-11" id="page-11" href="#page-11"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
@@ -533,7 +537,7 @@ Table of Contents
client_id parameter in favor of relying on the redirect_uri
parameter for client identification.
-<span><a href="#section-11" name="section-11">11</a>. Storage-first bearer token issuance</span>
+<span><a name="section-11" href="#section-11">11</a>. Storage-first bearer token issuance</span>
The provider MAY also present a dashboard to the user, where they
have some way to add open web app manifests [<a href="#ref-MANIFEST">MANIFEST</a>]. Adding a
@@ -553,7 +557,7 @@ Table of Contents
<span>de Jong [Page 11]</span>
-</pre><pre><a href="#page-12" id="page-12" name="page-12"> </a>
+</pre><pre><a name="page-12" id="page-12" href="#page-12"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
@@ -591,19 +595,19 @@ Table of Contents
debug tool, thus bypassing the need for an OAuth dance. Clients
SHOULD NOT rely on this in production.
-<span><a href="#section-12" name="section-12">12</a>. Example wire transcripts</span>
+<span><a name="section-12" href="#section-12">12</a>. Example wire transcripts</span>
The following examples are not normative ("\" indicates a line was
wrapped).
-<span><a href="#section-12.1" name="section-12.1">12.1</a>. WebFinger</span>
+<span><a name="section-12.1" href="#section-12.1">12.1</a>. WebFinger</span>
In application-first, an in-browser application might issue the
following request, using XMLHttpRequest and CORS:
<span>de Jong [Page 12]</span>
-</pre><pre><a href="#page-13" id="page-13" name="page-13"> </a>
+</pre><pre><a name="page-13" id="page-13" href="#page-13"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
@@ -643,7 +647,7 @@ motestorage-04",
}]
}
-<span><a href="#section-12.2" name="section-12.2">12.2</a>. OAuth dialog form</span>
+<span><a name="section-12.2" href="#section-12.2">12.2</a>. OAuth dialog form</span>
Once the in-browser application has discovered the server's OAuth
end-point, it will typically redirect the user to this URL, in
@@ -653,7 +657,7 @@ motestorage-04",
<span>de Jong [Page 13]</span>
-</pre><pre><a href="#page-14" id="page-14" name="page-14"> </a>
+</pre><pre><a name="page-14" id="page-14" href="#page-14"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
@@ -673,7 +677,7 @@ unhosted.5apps.com&amp;response_type=token HTTP/1.1
&lt;title&gt;Allow access?&lt;/title&gt;
...
-<span><a href="#section-12.3" name="section-12.3">12.3</a>. OAuth dialog form submission</span>
+<span><a name="section-12.3" href="#section-12.3">12.3</a>. OAuth dialog form submission</span>
When the user submits the form, the request would look something
like this:
@@ -698,12 +702,12 @@ low
Location:https://drinks-unhosted.5apps.com/#access_token=j2YnGt\
XjzzzHNjkd1CJxoQubA1o%3D&amp;token_type=bearer&amp;state=
-<span><a href="#section-12.4" name="section-12.4">12.4</a>. OPTIONS preflight</span>
+<span><a name="section-12.4" href="#section-12.4">12.4</a>. OPTIONS preflight</span>
<span>de Jong [Page 14]</span>
-</pre><pre><a href="#page-15" id="page-15" name="page-15"> </a>
+</pre><pre><a name="page-15" id="page-15" href="#page-15"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
@@ -726,7 +730,7 @@ XjzzzHNjkd1CJxoQubA1o%3D&amp;token_type=bearer&amp;state=
Access-Control-Allow-Headers: Authorization, Content-Length, Co\
ntent-Type, Origin, X-Requested-With, If-Match, If-None-Match
-<span><a href="#section-12.5" name="section-12.5">12.5</a>. Initial PUT</span>
+<span><a name="section-12.5" href="#section-12.5">12.5</a>. Initial PUT</span>
An initial PUT may contain an 'If-None-Match: *' header, like this:
@@ -749,11 +753,11 @@ ntent-Type, Origin, X-Requested-With, If-Match, If-None-Match
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com">https://drinks-unhosted.5apps.com</a>
ETag: "1382694045000"
-<span><a href="#section-12.6" name="section-12.6">12.6</a>. Subsequent PUT</span>
+<span><a name="section-12.6" href="#section-12.6">12.6</a>. Subsequent PUT</span>
<span>de Jong [Page 15]</span>
-</pre><pre><a href="#page-16" id="page-16" name="page-16"> </a>
+</pre><pre><a name="page-16" id="page-16" href="#page-16"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
@@ -779,7 +783,7 @@ e.io/spec/modules/myfavoritedrinks/drink"}
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com">https://drinks-unhosted.5apps.com</a>
ETag: "1382694048000"
-<span><a href="#section-12.7" name="section-12.7">12.7</a>. GET</span>
+<span><a name="section-12.7" href="#section-12.7">12.7</a>. GET</span>
A GET request would also include the bearer token, and optionally
an If-None-Match header:
@@ -803,7 +807,7 @@ e.io/spec/modules/myfavoritedrinks/drink"}
<span>de Jong [Page 16]</span>
-</pre><pre><a href="#page-17" id="page-17" name="page-17"> </a>
+</pre><pre><a name="page-17" id="page-17" href="#page-17"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
@@ -838,7 +842,7 @@ charset=UTF-8","Content-Length":106}}}
HTTP/1.1 404 Not Found
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com">https://drinks-unhosted.5apps.com</a>
-<span><a href="#section-12.8" name="section-12.8">12.8</a>. DELETE</span>
+<span><a name="section-12.8" href="#section-12.8">12.8</a>. DELETE</span>
A DELETE request may look like this:
@@ -853,7 +857,7 @@ charset=UTF-8","Content-Length":106}}}
<span>de Jong [Page 17]</span>
-</pre><pre><a href="#page-18" id="page-18" name="page-18"> </a>
+</pre><pre><a name="page-18" id="page-18" href="#page-18"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
@@ -863,7 +867,7 @@ charset=UTF-8","Content-Length":106}}}
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com">https://drinks-unhosted.5apps.com</a>
ETag: "1382694048000"
-<span><a href="#section-13" name="section-13">13</a>. Distributed versioning</span>
+<span><a name="section-13" href="#section-13">13</a>. Distributed versioning</span>
This section is non-normative, and is intended to explain some of
the design choices concerning ETags and folder listings. At the
@@ -903,7 +907,7 @@ charset=UTF-8","Content-Length":106}}}
<span>de Jong [Page 18]</span>
-</pre><pre><a href="#page-19" id="page-19" name="page-19"> </a>
+</pre><pre><a name="page-19" id="page-19" href="#page-19"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
@@ -925,7 +929,7 @@ charset=UTF-8","Content-Length":106}}}
but it is up to whichever client discovers a given version
conflict, to resolve it.
-<span><a href="#section-14" name="section-14">14</a>. Security Considerations</span>
+<span><a name="section-14" href="#section-14">14</a>. Security Considerations</span>
To prevent man-in-the-middle attacks, the use of https instead of
http is important for both the interface itself and all end-points
@@ -953,7 +957,7 @@ charset=UTF-8","Content-Length":106}}}
<span>de Jong [Page 19]</span>
-</pre><pre><a href="#page-20" id="page-20" name="page-20"> </a>
+</pre><pre><a name="page-20" id="page-20" href="#page-20"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
@@ -970,7 +974,7 @@ charset=UTF-8","Content-Length":106}}}
The server SHOULD also detect and stop denial-of-service attacks
that aim to overwhelm its interface with too much traffic.
-<span><a href="#section-15" name="section-15">15</a>. IANA Considerations</span>
+<span><a name="section-15" href="#section-15">15</a>. IANA Considerations</span>
This document registers the 'remotestorage' link relation, as well
as the following WebFinger properties:
@@ -980,7 +984,7 @@ charset=UTF-8","Content-Length":106}}}
* "<a href="http://tools.ietf.org/html/rfc7233">http://tools.ietf.org/html/rfc7233</a>"
* "<a href="http://remotestorage.io/spec/web-authoring">http://remotestorage.io/spec/web-authoring</a>"
-<span><a href="#section-16" name="section-16">16</a>. Acknowledgements</span>
+<span><a name="section-16" href="#section-16">16</a>. Acknowledgements</span>
The authors would like to thank everybody who contributed to the
development of this protocol, including Kenny Bentley, Javier Diaz,
@@ -993,95 +997,95 @@ charset=UTF-8","Content-Length":106}}}
Rick van Rein, Mark Nottingham, Julian Reschke, and Markus
Lanthaler, among many others.
-<span><a href="#section-17" name="section-17">17</a>. References</span>
+<span><a name="section-17" href="#section-17">17</a>. References</span>
-<span><a href="#section-17.1" name="section-17.1">17.1</a>. Normative References</span>
+<span><a name="section-17.1" href="#section-17.1">17.1</a>. Normative References</span>
- [<a id="ref-WORDS" name="ref-WORDS">WORDS</a>]
+ [<a name="ref-WORDS" id="ref-WORDS">WORDS</a>]
Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", <a href="http://fakehost/test/bcp14">BCP 14</a>, <a href="http://fakehost/test/rfc2119">RFC 2119</a>, March 1997.
<span>de Jong [Page 20]</span>
-</pre><pre><a href="#page-21" id="page-21" name="page-21"> </a>
+</pre><pre><a name="page-21" id="page-21" href="#page-21"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
- [<a id="ref-IRI" name="ref-IRI">IRI</a>]
+ [<a name="ref-IRI" id="ref-IRI">IRI</a>]
Duerst, M., "Internationalized Resource Identifiers (IRIs)",
<a href="http://fakehost/test/rfc3987">RFC 3987</a>, January 2005.
- [<a id="ref-WEBFINGER" name="ref-WEBFINGER">WEBFINGER</a>]
+ [<a name="ref-WEBFINGER" id="ref-WEBFINGER">WEBFINGER</a>]
Jones, P., Salguerio, G., Jones, M, and Smarr, J.,
"WebFinger", <a href="http://fakehost/test/rfc7033">RFC7033</a>, September 2013.
- [<a id="ref-OAUTH" name="ref-OAUTH">OAUTH</a>]
+ [<a name="ref-OAUTH" id="ref-OAUTH">OAUTH</a>]
"<a href="#section-4.2">Section 4.2</a>: Implicit Grant", in: Hardt, D. (ed), "The OAuth
2.0 Authorization Framework", <a href="http://fakehost/test/rfc6749">RFC6749</a>, October 2012.
-<span><a href="#section-17.2" name="section-17.2">17.2</a>. Informative References</span>
+<span><a name="section-17.2" href="#section-17.2">17.2</a>. Informative References</span>
- [<a id="ref-HTTPS" name="ref-HTTPS">HTTPS</a>]
+ [<a name="ref-HTTPS" id="ref-HTTPS">HTTPS</a>]
Rescorla, E., "HTTP Over TLS", <a href="http://fakehost/test/rfc2818">RFC2818</a>, May 2000.
- [<a id="ref-HTTP" name="ref-HTTP">HTTP</a>]
+ [<a name="ref-HTTP" id="ref-HTTP">HTTP</a>]
Fielding et al., "Hypertext Transfer Protocol (HTTP/1.1):
Semantics and Content", <a href="http://fakehost/test/rfc7231">RFC7231</a>, June 2014.
- [<a id="ref-COND" name="ref-COND">COND</a>]
+ [<a name="ref-COND" id="ref-COND">COND</a>]
Fielding et al., "Hypertext Transfer Protocol (HTTP/1.1):
Conditional Requests", <a href="http://fakehost/test/rfc7232">RFC7232</a>, June 2014.
- [<a id="ref-RANGE" name="ref-RANGE">RANGE</a>]
+ [<a name="ref-RANGE" id="ref-RANGE">RANGE</a>]
Fielding et al., "Hypertext Transfer Protocol (HTTP/1.1):
Conditional Requests", <a href="http://fakehost/test/rfc7233">RFC7233</a>, June 2014.
- [<a id="ref-SPDY" name="ref-SPDY">SPDY</a>]
+ [<a name="ref-SPDY" id="ref-SPDY">SPDY</a>]
Mark Belshe, Roberto Peon, "SPDY Protocol - Draft 3.1", <a href="http://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft3-1">http://</a>
<a href="http://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft3-1">www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft3-1</a>,
September 2013.
- [<a id="ref-JSON-LD" name="ref-JSON-LD">JSON-LD</a>]
+ [<a name="ref-JSON-LD" id="ref-JSON-LD">JSON-LD</a>]
M. Sporny, G. Kellogg, M. Lanthaler, "JSON-LD 1.0", W3C
Proposed Recommendation,
<a href="http://www.w3.org/TR/2014/REC-json-ld-20140116/">http://www.w3.org/TR/2014/REC-json-ld-20140116/</a>, January 2014.
- [<a id="ref-CORS" name="ref-CORS">CORS</a>]
+ [<a name="ref-CORS" id="ref-CORS">CORS</a>]
van Kesteren, Anne (ed), "Cross-Origin Resource Sharing --
W3C Candidate Recommendation 29 January 2013",
<span>de Jong [Page 21]</span>
-</pre><pre><a href="#page-22" id="page-22" name="page-22"> </a>
+</pre><pre><a name="page-22" id="page-22" href="#page-22"> </a>
<span>Internet-Draft remoteStorage December 2014</span>
<a href="http://www.w3.org/TR/cors/">http://www.w3.org/TR/cors/</a>, January 2013.
- [<a id="ref-MANIFEST" name="ref-MANIFEST">MANIFEST</a>]
+ [<a name="ref-MANIFEST" id="ref-MANIFEST">MANIFEST</a>]
Mozilla Developer Network (ed), "App manifest -- Revision
330541", <a href="https://developer.mozilla.org/en-">https://developer.mozilla.org/en-</a>
US/Apps/Build/Manifest$revision/566677, April 2014.
- [<a id="ref-DATASTORE" name="ref-DATASTORE">DATASTORE</a>]
+ [<a name="ref-DATASTORE" id="ref-DATASTORE">DATASTORE</a>]
"WebAPI/DataStore", MozillaWiki, retrieved May 2014.
<a href="https://wiki.mozilla.org/WebAPI/DataStore#Manifest">https://wiki.mozilla.org/WebAPI/DataStore#Manifest</a>
- [<a id="ref-KERBEROS" name="ref-KERBEROS">KERBEROS</a>]
+ [<a name="ref-KERBEROS" id="ref-KERBEROS">KERBEROS</a>]
C. Neuman et al., "The Kerberos Network Authentication Service
(V5)", <a href="http://fakehost/test/rfc4120">RFC4120</a>, July 2005.
- [<a id="ref-BEARER" name="ref-BEARER">BEARER</a>]
+ [<a name="ref-BEARER" id="ref-BEARER">BEARER</a>]
M. Jones, D. Hardt, "The OAuth 2.0 Authorization Framework:
Bearer Token Usage", <a href="http://fakehost/test/rfc6750">RFC6750</a>, October 2012.
- [<a id="ref-AUTHORING" name="ref-AUTHORING">AUTHORING</a>]
+ [<a name="ref-AUTHORING" id="ref-AUTHORING">AUTHORING</a>]
"Using remoteStorage for web authoring", reSite wiki, retrieved
September 2014. <a href="https://github.com/michielbdejong/resite/wiki">https://github.com/michielbdejong/resite/wiki</a>
/Using-remoteStorage-for-web-authoring
-<span><a href="#section-18" name="section-18">18</a>. Authors' addresses</span>
+<span><a name="section-18" href="#section-18">18</a>. Authors' addresses</span>
Michiel B. de Jong
IndieHosters
@@ -1104,7 +1108,8 @@ charset=UTF-8","Content-Length":106}}}
de Jong [Page 22]
-</pre><br></br><span><small><small>Html markup produced by rfcmarkup 1.111, available from
+</pre><br>
+<span><small><small>Html markup produced by rfcmarkup 1.111, available from
<a href="https://tools.ietf.org/tools/rfcmarkup/">https://tools.ietf.org/tools/rfcmarkup/</a>
</small></small></span>
</div> \ No newline at end of file
diff --git a/test/test-pages/infobae/expected.html b/test/test-pages/infobae/expected.html
index e575c7b..322e1cc 100644
--- a/test/test-pages/infobae/expected.html
+++ b/test/test-pages/infobae/expected.html
@@ -1 +1 @@
-<div id="article-body"> <div id="article-content"> <div> <figure><div> <p><img alt="Jonathan Castellari tiene 25 años y fue golpeado por una patota de 8 hombres" data-original="https://www.infobae.com/new-resizer/b_LU5bsrOM_BmZtNMzegvdNoPNE=/600x0/filters:quality(100)/s3.amazonaws.com/arc-wordpress-client-uploads/infobae-wp/wp-content/uploads/2017/12/01154429/Rugbier-golpeado-1920.jpg" data-url="http://www.infobae.com/sociedad/2017/12/01/una-patota-de-varones-ataco-a-un-rugbier-gay-te-vamos-a-matar-por-puto/%23QU6XDTECU5EDVI4HBTME4PLIOQ" height="422.32142857142856" id="QU6XDTECU5EDVI4HBTME4PLIOQ" src="https://www.infobae.com/new-resizer/b_LU5bsrOM_BmZtNMzegvdNoPNE=/600x0/filters:quality(100)/s3.amazonaws.com/arc-wordpress-client-uploads/infobae-wp/wp-content/uploads/2017/12/01154429/Rugbier-golpeado-1920.jpg" width="750"></img></p></div> <figcaption class=""><span>Jonathan Castellari tiene 25 años y fue golpeado por una patota de 8 hombres</span> </figcaption></figure></div> <div> <p> Eran casi las 6:30 de la mañana. Jonathan Castellari, de 25 años, volvía de bailar junto a Sebastián, su amigo. Les pareció una buena idea detenerse en el Mc Donald's de Avenida Córdoba al 3100 con el objetivo de desayunar y continuar el viaje hasta sus hogares. Mientras esperaban la comida, un grupo de 8 chicos de entre 20 y 25 años ingresó al local con el mismo objetivo, aunque adoptaron otro plan: mirarlos fijamente, reírse de ellos y hacer chistes sobre la sexualidad de ambos.</p> </div> <div> <p> Sebastián relató a<strong> Infobae:</strong> "Estábamos esperando nuestro pedido, haciéndonos chistes, riéndonos de lo sucedido durante la noche. Hablábamos entre nosotros. En ese momento entró un grupo de 8 chicos, de contextura grande, y notamos que estaban alcoholizados. Nos miraban, hacían chistes, se reían de nosotros. Fue ahí cuando decidimos salir con Jonathan a fumar un cigarrillo y esperar que se fueran. <strong>Él salió primero y vi que uno de estos pibes lo abrazó y se lo llevó. Instantáneamente se metieron los demás a pegarle. Le pegaron mucho.</strong> Quise pararlos y no pude. Ligué yo también, pero nada en comparación a lo que sufrió Jonathan. Cuando lo soltaron lo agarré como pude y justo una enfermera del Sanatorio Güemes (está a dos cuadras del local) estaba tomando un café y le dio los primeros auxilios".</p> </div> <div> <figure><div> <p><img alt="" data-original="https://www.infobae.com/new-resizer/PUJQSwJZOtaetM7tXKqic4Ib1Wg=/600x0/filters:quality(100)/s3.amazonaws.com/arc-wordpress-client-uploads/infobae-wp/wp-content/uploads/2017/12/01161934/Jonathan-Castellani-SF-2.jpg" data-url="http://www.infobae.com/sociedad/2017/12/01/una-patota-de-varones-ataco-a-un-rugbier-gay-te-vamos-a-matar-por-puto/%23NH7MLFDU4JH4VOSMUUN6JPRYUQ" height="937.7289377289377" id="NH7MLFDU4JH4VOSMUUN6JPRYUQ" src="https://www.infobae.com/new-resizer/PUJQSwJZOtaetM7tXKqic4Ib1Wg=/600x0/filters:quality(100)/s3.amazonaws.com/arc-wordpress-client-uploads/infobae-wp/wp-content/uploads/2017/12/01161934/Jonathan-Castellani-SF-2.jpg" width="750"></img></p></div> <figcaption class=""><span></span> </figcaption></figure></div> <div> <p> "Fuimos a verlo recién, no paraba de llorar y de decirnos que le pegaron por puto", dijo a <strong>Infobae</strong> María Rachid, titular del Instituto contra la Discriminación de la Defensoría del Pueblo CABA. "Lamentablemente su situación es delicada. Recién nos informaron que lo van a intervenir quirúrgicamente porque <strong>podría perder un ojo</strong>".</p> </div> <div> <p> Como Jonathan no conoce a los agresores, desde la Defensoría y la Federación LGBT se comunicaron con autoridades del Ministerio de Seguridad para que soliciten las cámaras de seguridad del Mc Donald's, del sanatorio Güemes y de otros negocios de la cuadra para poder identificarlos.</p> </div> <div> <figure><div> <p><img alt="" data-original="https://www.infobae.com/new-resizer/yS5kphJxw_CBn1mycqbcrMjoNmQ=/600x0/filters:quality(100)/s3.amazonaws.com/arc-wordpress-client-uploads/infobae-wp/wp-content/uploads/2017/12/01163101/JonathanGay2.jpg" data-url="http://www.infobae.com/sociedad/2017/12/01/una-patota-de-varones-ataco-a-un-rugbier-gay-te-vamos-a-matar-por-puto/%23O7QMD7FTTNCIJOVETW7KYJVVDA" height="422.32142857142856" id="O7QMD7FTTNCIJOVETW7KYJVVDA" src="https://www.infobae.com/new-resizer/yS5kphJxw_CBn1mycqbcrMjoNmQ=/600x0/filters:quality(100)/s3.amazonaws.com/arc-wordpress-client-uploads/infobae-wp/wp-content/uploads/2017/12/01163101/JonathanGay2.jpg" width="750"></img></p></div> <figcaption class=""><span></span> </figcaption></figure></div> <div> <p> Gastón Llopart, abogado de Sebastián, le detalló a <strong>Infobae</strong> que Jonathan está "próximo a recibir una intervención quirúrgica, ya que<strong> tuvo fractura en el hueso del pómulo derecho de su rostro. Sebastián llamó al 911 dos veces y no fueron.</strong> Me contaron que los agresores los siguieron hasta el sanatorio mientras los insultaban: la gente de seguridad tuvo que echarlos".</p> </div> <div> <p> Llopart agregó que la patota, <strong>mientras lo golpeaban, le gritaba: "Te vamos a matar por puto"</strong>. La familia de Jonathan está en el sanatorio a la espera de la intervención quirúrgica. Llopart dijo que "harán la denuncia el lunes por la mañana, cuando existan mayores precisiones de lo ocurrido".</p> </div> <div> <figure><div> <p><img alt="" data-original="https://www.infobae.com/new-resizer/cFidtpanVMHP25zNoWF78I4qjMA=/600x0/filters:quality(100)/s3.amazonaws.com/arc-wordpress-client-uploads/infobae-wp/wp-content/uploads/2017/12/01161927/Jonathan-Castellani-1920.jpg" data-url="http://www.infobae.com/sociedad/2017/12/01/una-patota-de-varones-ataco-a-un-rugbier-gay-te-vamos-a-matar-por-puto/%237BCY2NEI6ZADBA3TRJGQC6R3BU" height="422.32142857142856" id="7BCY2NEI6ZADBA3TRJGQC6R3BU" src="https://www.infobae.com/new-resizer/cFidtpanVMHP25zNoWF78I4qjMA=/600x0/filters:quality(100)/s3.amazonaws.com/arc-wordpress-client-uploads/infobae-wp/wp-content/uploads/2017/12/01161927/Jonathan-Castellani-1920.jpg" width="750"></img></p></div> <figcaption class=""><span></span> </figcaption></figure></div> <div> <p> Jonathan y Sebastián forman parte de Ciervos Pampas Rugby Club, un equipo que nació hace cinco años como el primer equipo de la Argentina por la diversidad sexual. Se trata de un combinado que no está integrado en un 100% por varones gays, pero en el que estos encuentran un lugar en el cual expresar libremente su orientación sexual, <strong>sin miedo a los prejuicios o a la discriminación.</strong> El club emitió un comunicado en su cuenta de Facebook, relatando los hechos y solidarizándose con Jonathan.</p> </div> </div> </div> \ No newline at end of file
+<div id="article-body"> <div id="article-content"> <div> <figure> <div> <p><img id="QU6XDTECU5EDVI4HBTME4PLIOQ" data-url="http://www.infobae.com/sociedad/2017/12/01/una-patota-de-varones-ataco-a-un-rugbier-gay-te-vamos-a-matar-por-puto/%23QU6XDTECU5EDVI4HBTME4PLIOQ" data-original="https://www.infobae.com/new-resizer/b_LU5bsrOM_BmZtNMzegvdNoPNE=/600x0/filters:quality(100)/s3.amazonaws.com/arc-wordpress-client-uploads/infobae-wp/wp-content/uploads/2017/12/01154429/Rugbier-golpeado-1920.jpg" alt="Jonathan Castellari tiene 25 años y fue golpeado por una patota de 8 hombres" height="422.32142857142856" width="750" src="https://www.infobae.com/new-resizer/b_LU5bsrOM_BmZtNMzegvdNoPNE=/600x0/filters:quality(100)/s3.amazonaws.com/arc-wordpress-client-uploads/infobae-wp/wp-content/uploads/2017/12/01154429/Rugbier-golpeado-1920.jpg"> </p></div> <figcaption class> <span>Jonathan Castellari tiene 25 años y fue golpeado por una patota de 8 hombres</span> </figcaption> </figure> </div> <div> <p> Eran casi las 6:30 de la mañana. Jonathan Castellari, de 25 años, volvía de bailar junto a Sebastián, su amigo. Les pareció una buena idea detenerse en el Mc Donald's de Avenida Córdoba al 3100 con el objetivo de desayunar y continuar el viaje hasta sus hogares. Mientras esperaban la comida, un grupo de 8 chicos de entre 20 y 25 años ingresó al local con el mismo objetivo, aunque adoptaron otro plan: mirarlos fijamente, reírse de ellos y&nbsp;hacer chistes sobre la sexualidad de ambos.</p> </div> <div> <p> Sebastián relató a<strong> Infobae:</strong>&nbsp;"Estábamos esperando nuestro pedido, haciéndonos chistes, riéndonos de lo sucedido durante la noche. Hablábamos entre nosotros. En ese momento entró un grupo de 8 chicos, de contextura grande, y notamos que estaban alcoholizados. Nos miraban, hacían chistes, se reían de nosotros. Fue ahí cuando decidimos salir con Jonathan a fumar un cigarrillo y esperar que se fueran. <strong>Él salió primero y vi que uno de estos pibes lo abrazó y se lo llevó. Instantáneamente se metieron los demás a pegarle. Le pegaron mucho.</strong> Quise pararlos y no pude. Ligué yo también, pero nada en comparación a lo que sufrió Jonathan. Cuando lo soltaron lo agarré como pude y justo una enfermera del Sanatorio Güemes (está a dos cuadras del local) estaba tomando un café y le dio los primeros auxilios".</p> </div> <div> <figure> <div> <p><img id="NH7MLFDU4JH4VOSMUUN6JPRYUQ" data-url="http://www.infobae.com/sociedad/2017/12/01/una-patota-de-varones-ataco-a-un-rugbier-gay-te-vamos-a-matar-por-puto/%23NH7MLFDU4JH4VOSMUUN6JPRYUQ" data-original="https://www.infobae.com/new-resizer/PUJQSwJZOtaetM7tXKqic4Ib1Wg=/600x0/filters:quality(100)/s3.amazonaws.com/arc-wordpress-client-uploads/infobae-wp/wp-content/uploads/2017/12/01161934/Jonathan-Castellani-SF-2.jpg" alt height="937.7289377289377" width="750" src="https://www.infobae.com/new-resizer/PUJQSwJZOtaetM7tXKqic4Ib1Wg=/600x0/filters:quality(100)/s3.amazonaws.com/arc-wordpress-client-uploads/infobae-wp/wp-content/uploads/2017/12/01161934/Jonathan-Castellani-SF-2.jpg"> </p></div> <figcaption class> <span></span> </figcaption> </figure> </div> <div> <p> "Fuimos a verlo recién, no paraba de llorar y de decirnos que le pegaron por puto", dijo a <strong>Infobae</strong> María Rachid, titular del Instituto contra la Discriminación de la Defensoría del Pueblo CABA. "Lamentablemente su situación es delicada. Recién nos informaron que lo van a intervenir quirúrgicamente porque <strong>podría perder un ojo</strong>".</p> </div> <div> <p> Como Jonathan no conoce a los agresores, desde la Defensoría y la Federación LGBT se comunicaron con autoridades del Ministerio de Seguridad para que soliciten las cámaras de seguridad del Mc Donald's, del sanatorio Güemes y de otros negocios de la cuadra para poder identificarlos.</p> </div> <div> <figure> <div> <p><img id="O7QMD7FTTNCIJOVETW7KYJVVDA" data-url="http://www.infobae.com/sociedad/2017/12/01/una-patota-de-varones-ataco-a-un-rugbier-gay-te-vamos-a-matar-por-puto/%23O7QMD7FTTNCIJOVETW7KYJVVDA" data-original="https://www.infobae.com/new-resizer/yS5kphJxw_CBn1mycqbcrMjoNmQ=/600x0/filters:quality(100)/s3.amazonaws.com/arc-wordpress-client-uploads/infobae-wp/wp-content/uploads/2017/12/01163101/JonathanGay2.jpg" alt height="422.32142857142856" width="750" src="https://www.infobae.com/new-resizer/yS5kphJxw_CBn1mycqbcrMjoNmQ=/600x0/filters:quality(100)/s3.amazonaws.com/arc-wordpress-client-uploads/infobae-wp/wp-content/uploads/2017/12/01163101/JonathanGay2.jpg"> </p></div> <figcaption class> <span></span> </figcaption> </figure> </div> <div> <p> Gastón Llopart, abogado de Sebastián, le detalló a <strong>Infobae</strong> que Jonathan está "próximo a recibir una intervención quirúrgica, ya que<strong> tuvo fractura en el hueso del pómulo derecho de su rostro. Sebastián llamó al 911 dos veces y no fueron.</strong> Me contaron que los agresores los siguieron hasta el sanatorio mientras los insultaban: la gente de seguridad tuvo que echarlos".</p> </div> <div> <p> Llopart agregó que la patota, <strong>mientras lo golpeaban, le gritaba: "Te vamos a matar por puto"</strong>. La familia de Jonathan está en el sanatorio a la espera de la intervención quirúrgica. Llopart dijo que "harán la denuncia el lunes por la mañana, cuando existan mayores precisiones de lo ocurrido".</p> </div> <div> <figure> <div> <p><img id="7BCY2NEI6ZADBA3TRJGQC6R3BU" data-url="http://www.infobae.com/sociedad/2017/12/01/una-patota-de-varones-ataco-a-un-rugbier-gay-te-vamos-a-matar-por-puto/%237BCY2NEI6ZADBA3TRJGQC6R3BU" data-original="https://www.infobae.com/new-resizer/cFidtpanVMHP25zNoWF78I4qjMA=/600x0/filters:quality(100)/s3.amazonaws.com/arc-wordpress-client-uploads/infobae-wp/wp-content/uploads/2017/12/01161927/Jonathan-Castellani-1920.jpg" alt height="422.32142857142856" width="750" src="https://www.infobae.com/new-resizer/cFidtpanVMHP25zNoWF78I4qjMA=/600x0/filters:quality(100)/s3.amazonaws.com/arc-wordpress-client-uploads/infobae-wp/wp-content/uploads/2017/12/01161927/Jonathan-Castellani-1920.jpg"> </p></div> <figcaption class> <span></span> </figcaption> </figure> </div> <div> <p> Jonathan y Sebastián forman parte de Ciervos Pampas Rugby Club, un equipo que nació hace cinco años como el primer equipo de la Argentina por la diversidad sexual. Se trata de un combinado que no está integrado en un 100% por varones gays, pero en el que estos encuentran un lugar en el cual expresar libremente su orientación sexual, <strong>sin miedo a los prejuicios o a la discriminación.</strong> El club emitió un comunicado en su cuenta de Facebook, relatando los hechos y solidarizándose con Jonathan.</p> </div> </div> </div> \ No newline at end of file
diff --git a/test/test-pages/keep-images/expected.html b/test/test-pages/keep-images/expected.html
index d3696f7..6116487 100644
--- a/test/test-pages/keep-images/expected.html
+++ b/test/test-pages/keep-images/expected.html
@@ -1,58 +1,69 @@
<div>
<div>
<section name="ef8c">
+
<div>
<div>
- <figure id="b9ad" name="b9ad"><div>
+ <figure name="b9ad" id="b9ad">
+ <div>
- <p><img data-height="1402" data-image-id="1*sLDnS1UWEFIS33uLMxq3cw.jpeg" data-width="2100" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*sLDnS1UWEFIS33uLMxq3cw.jpeg"></img></p></div>
- </figure></div>
+ <p><img data-image-id="1*sLDnS1UWEFIS33uLMxq3cw.jpeg" data-width="2100" data-height="1402" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*sLDnS1UWEFIS33uLMxq3cw.jpeg">
+ </p></div>
+ </figure>
+ </div>
<div>
- <h4 data-align="center" id="9736" name="9736">Welcome to DoctorX’s Barcelona lab, where the drugs you bought online are tested for safety and purity. No questions asked.</h4>
+ <h4 name="9736" id="9736" data-align="center">Welcome to DoctorX’s Barcelona lab, where the drugs you bought online are tested for safety and purity. No questions asked.</h4>
- <figure id="7417" name="7417"><div>
+ <figure name="7417" id="7417">
+ <div>
- <p><img data-action="zoom" data-action-value="1*3vIhkoHIzcxvUdijoCVx6w.png" data-height="24" data-image-id="1*3vIhkoHIzcxvUdijoCVx6w.png" data-width="1200" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*3vIhkoHIzcxvUdijoCVx6w.png"></img></p></div>
- </figure><p id="8a83" name="8a83">Standing at a table in a chemistry lab in Barcelona, Cristina Gil Lladanosa
+ <p><img data-image-id="1*3vIhkoHIzcxvUdijoCVx6w.png" data-width="1200" data-height="24" data-action="zoom" data-action-value="1*3vIhkoHIzcxvUdijoCVx6w.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*3vIhkoHIzcxvUdijoCVx6w.png">
+ </p></div>
+ </figure>
+ <p name="8a83" id="8a83">Standing at a table in a chemistry lab in Barcelona, Cristina Gil Lladanosa
tears open a silver, smell-proof protective envelope. She slides out a
transparent bag full of crystals. Around her, machines whir and hum, and
other researchers mill around in long, white coats.</p>
- <p id="b675" name="b675">She is holding the lab’s latest delivery of a drug bought from the “deep
+ <p name="b675" id="b675">She is holding the lab’s latest delivery of a drug bought from the “deep
web,” the clandestine corner of the internet that isn’t reachable by normal
search engines, and is home to some sites that require special software
- to access. Labeled as <a data-href="http://en.wikipedia.org/wiki/MDMA" href="http://en.wikipedia.org/wiki/MDMA" rel="nofollow">MDMA</a> (the street
+ to access. Labeled as <a href="http://en.wikipedia.org/wiki/MDMA" data-href="http://en.wikipedia.org/wiki/MDMA" rel="nofollow">MDMA</a> (the street
term is ecstasy), this sample has been shipped from Canada. Lladanosa and
her colleague Iván Fornís Espinosa have also received drugs, anonymously,
from people in China, Australia, Europe and the United States.</p>
- <p id="3c0b" name="3c0b">“Here we have speed, MDMA, cocaine, pills,” Lladanosa says, pointing to
+ <p name="3c0b" id="3c0b">“Here we have speed, MDMA, cocaine, pills,” Lladanosa says, pointing to
vials full of red, green, blue and clear solutions sitting in labeled boxes.</p>
</div>
<div>
- <figure id="c4e6" name="c4e6"><div>
+ <figure name="c4e6" id="c4e6">
+ <div>
- <p><img data-height="1402" data-image-id="1*4gN1-fzOwCniw-DbqQjDeQ.jpeg" data-width="2100" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*4gN1-fzOwCniw-DbqQjDeQ.jpeg"></img></p></div>
- <figcaption>Cristina Gil Lladanosa, at the Barcelona testing lab | photo by Joan Bardeletti</figcaption></figure></div>
+ <p><img data-image-id="1*4gN1-fzOwCniw-DbqQjDeQ.jpeg" data-width="2100" data-height="1402" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*4gN1-fzOwCniw-DbqQjDeQ.jpeg">
+ </p></div>
+ <figcaption>Cristina Gil Lladanosa, at the Barcelona testing lab | photo by Joan Bardeletti</figcaption>
+ </figure>
+ </div>
<div>
- <p id="7a54" name="7a54">Since 2011, with the launch of <a data-href="http://en.wikipedia.org/wiki/Silk_Road_%28marketplace%29" href="http://en.wikipedia.org/wiki/Silk_Road_%28marketplace%29" rel="nofollow">Silk Road</a>, anybody has been able to safely buy illegal
+ <p name="7a54" id="7a54">Since 2011, with the launch of <a href="http://en.wikipedia.org/wiki/Silk_Road_%28marketplace%29" data-href="http://en.wikipedia.org/wiki/Silk_Road_%28marketplace%29" rel="nofollow">Silk Road</a>, anybody has been able to safely buy illegal
drugs from the deep web and have them delivered to their door. Though the
FBI shut down that black market in October 2013, other outlets have emerged
to fill its role. For the last 10 months the lab at which Lladanosa and
Espinosa work has offered a paid testing service of those drugs. By sending
in samples for analysis, users can know exactly what it is they are buying,
and make a more informed decision about whether to ingest the substance.
- The group, called <a data-href="http://energycontrol.org/" href="http://energycontrol.org/" rel="nofollow">Energy Control</a>,
+ The group, called <a href="http://energycontrol.org/" data-href="http://energycontrol.org/" rel="nofollow">Energy Control</a>,
which has being running “harm reduction” programs since 1999, is the first
to run a testing service explicitly geared towards verifying those purchases
from the deep web.</p>
- <p id="4395" name="4395">Before joining Energy Control, Lladanosa briefly worked at a pharmacy,
+ <p name="4395" id="4395">Before joining Energy Control, Lladanosa briefly worked at a pharmacy,
whereas Espinosa spent 14 years doing drug analysis. Working at Energy
Control is “more gratifying,” and “rewarding” than her previous jobs, Lladanosa
told me. They also receive help from a group of volunteers, made up of
a mixture of “squatters,” as Espinosa put it, and medical students, who
prepare the samples for testing.</p>
- <p id="0c18" name="0c18">After weighing out the crystals, aggressively mixing it with methanol
+ <p name="0c18" id="0c18">After weighing out the crystals, aggressively mixing it with methanol
until dissolved, and delicately pouring the liquid into a tiny brown bottle,
Lladanosa, a petite woman who is nearly engulfed by her lab coat, is now
ready to test the sample. She loads a series of three trays on top of a
@@ -60,50 +71,61 @@
A jungle of thick pipes hang from the lab’s ceiling behind it.</p>
</div>
<div>
- <figure id="559c" name="559c"><div>
+ <figure name="559c" id="559c">
+ <div>
- <p><img data-height="1402" data-image-id="1*2KPmZkIBUrhps-2uwDvYFQ.jpeg" data-width="2100" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*2KPmZkIBUrhps-2uwDvYFQ.jpeg"></img></p></div>
- <figcaption>Photo by Joan Bardeletti</figcaption></figure></div>
+ <p><img data-image-id="1*2KPmZkIBUrhps-2uwDvYFQ.jpeg" data-width="2100" data-height="1402" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*2KPmZkIBUrhps-2uwDvYFQ.jpeg">
+ </p></div>
+ <figcaption>Photo by Joan Bardeletti</figcaption>
+ </figure>
+ </div>
<div>
- <p id="1549" name="1549">“Chromatography separates all the substances,” Lladanosa says as she loads
+ <p name="1549" id="1549">“Chromatography separates all the substances,” Lladanosa says as she loads
the machine with an array of drugs sent from the deep web and local Spanish
users. It can tell whether a sample is pure or contaminated, and if the
latter, with what.</p>
- <p id="5d0f" name="5d0f">Rushes of hot air blow across the desk as the gas chromatograph blasts
+ <p name="5d0f" id="5d0f">Rushes of hot air blow across the desk as the gas chromatograph blasts
the sample at 280 degrees Celsius. Thirty minutes later the machine’s robotic
arm automatically moves over to grip another bottle. The machine will continue
cranking through the 150 samples in the trays for most of the work week.</p>
</div>
<div>
- <figure id="d6aa" name="d6aa"><div>
+ <figure name="d6aa" id="d6aa">
+ <div>
- <p><img data-height="1241" data-image-id="1*PU40bbbox2Ompc5I3RE99A.jpeg" data-width="2013" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*PU40bbbox2Ompc5I3RE99A.jpeg"></img></p></div>
- <figcaption>Photo by Joan Bardeletti</figcaption></figure></div>
+ <p><img data-image-id="1*PU40bbbox2Ompc5I3RE99A.jpeg" data-width="2013" data-height="1241" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*PU40bbbox2Ompc5I3RE99A.jpeg">
+ </p></div>
+ <figcaption>Photo by Joan Bardeletti</figcaption>
+ </figure>
+ </div>
<div>
- <p id="15e0" name="15e0">To get the drugs to Barcelona, a user mails at least 10 milligrams of
+ <p name="15e0" id="15e0">To get the drugs to Barcelona, a user mails at least 10 milligrams of
a substance to the offices of the Asociación Bienestar y Desarrollo, the
non-government organization that oversees Energy Control. The sample then
gets delivered to the testing service’s laboratory, at the Barcelona Biomedical
Research Park, a futuristic, seven story building sitting metres away from
the beach. Energy Control borrows its lab space from a biomedical research
group for free.</p>
- <p id="2574" name="2574">The tests cost 50 Euro per sample. Users pay, not surprisingly, with Bitcoin.
+ <p name="2574" id="2574">The tests cost 50 Euro per sample. Users pay, not surprisingly, with Bitcoin.
In the post announcing Energy Control’s service on the deep web, the group
promised that “All profits of this service are set aside of maintenance
of this project.”</p>
- <p id="2644" name="2644">About a week after testing, those results are sent in a PDF to an email
+ <p name="2644" id="2644">About a week after testing, those results are sent in a PDF to an email
address provided by the anonymous client.</p>
- <p id="9f91" name="9f91">“The process is quite boring, because you are in a routine,” Lladanosa
+ <p name="9f91" id="9f91">“The process is quite boring, because you are in a routine,” Lladanosa
says. But one part of the process is consistently surprising: that moment
when the results pop up on the screen. “Every time it’s something different.”
For instance, one cocaine sample she had tested also contained phenacetin,
a painkiller added to increase the product’s weight; lidocaine, an anesthetic
that numbs the gums, giving the impression that the user is taking higher
quality cocaine; and common caffeine.</p>
- <figure id="b821" name="b821"><div>
+ <figure name="b821" id="b821">
+ <div>
- <p><img data-action="zoom" data-action-value="1*ohyycinH18fz98TCyUzVgQ.png" data-height="24" data-image-id="1*ohyycinH18fz98TCyUzVgQ.png" data-width="1200" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*ohyycinH18fz98TCyUzVgQ.png"></img></p></div>
- </figure><p id="39a6" name="39a6">The deep web drug lab is the brainchild of Fernando Caudevilla, a Spanish
+ <p><img data-image-id="1*ohyycinH18fz98TCyUzVgQ.png" data-width="1200" data-height="24" data-action="zoom" data-action-value="1*ohyycinH18fz98TCyUzVgQ.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*ohyycinH18fz98TCyUzVgQ.png">
+ </p></div>
+ </figure>
+ <p name="39a6" id="39a6">The deep web drug lab is the brainchild of Fernando Caudevilla, a Spanish
physician who is better known as “DoctorX” on the deep web, a nickname
given to him by his Energy Control co-workers because of his earlier writing
about the history, risks and recreational culture of MDMA. In the physical
@@ -113,39 +135,43 @@
harms of certain substances.</p>
</div>
<div>
- <figure id="eebc" name="eebc"><div>
+ <figure name="eebc" id="eebc">
+ <div>
- <p><img data-height="1241" data-image-id="1*mKvUNOAVQxl6atCbxbCZsg.jpeg" data-width="2100" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*mKvUNOAVQxl6atCbxbCZsg.jpeg"></img></p></div>
- <figcaption>Fernando Caudevilla, AKA DoctorX. Photo: Joseph Cox</figcaption></figure></div>
+ <p><img data-image-id="1*mKvUNOAVQxl6atCbxbCZsg.jpeg" data-width="2100" data-height="1241" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*mKvUNOAVQxl6atCbxbCZsg.jpeg">
+ </p></div>
+ <figcaption>Fernando Caudevilla, AKA DoctorX. Photo: Joseph Cox</figcaption>
+ </figure>
+ </div>
<div>
- <p id="c099" name="c099">Caudevilla first ventured into Silk Road forums in April 2013. “I would
+ <p name="c099" id="c099">Caudevilla first ventured into Silk Road forums in April 2013. “I would
like to contribute to this forum offering professional advice in topics
- related to drug use and health,” he wrote in an <a data-href="http://web.archive.org/web/20131015051405/https://dkn255hz262ypmii.onion.to/index.php?topic=147607.0" href="http://web.archive.org/web/20131015051405/https://dkn255hz262ypmii.onion.to/index.php?topic=147607.0" rel="nofollow">introductory post</a>,
+ related to drug use and health,” he wrote in an <a href="http://web.archive.org/web/20131015051405/https://dkn255hz262ypmii.onion.to/index.php?topic=147607.0" data-href="http://web.archive.org/web/20131015051405/https://dkn255hz262ypmii.onion.to/index.php?topic=147607.0" rel="nofollow">introductory post</a>,
using his DoctorX alias. Caudevilla offered to provide answers to questions
that a typical doctor is not prepared, or willing, to respond to, at least
not without a lecture or a judgment. “This advice cannot replace a complete
face-to-face medical evaluation,” he wrote, “but I know how difficult it
can be to talk frankly about these things.”</p>
- <p id="ff1d" name="ff1d">The requests flooded in. A diabetic asked what effect MDMA has on blood
+ <p name="ff1d" id="ff1d">The requests flooded in. A diabetic asked what effect MDMA has on blood
sugar; another what the risks of frequent psychedelic use were for a young
person. Someone wanted to know whether amphetamine use should be avoided
during lactation. In all, Fernando’s thread received over 50,000 visits
and 300 questions before the FBI shut down Silk Road.</p>
- <p id="1f35" name="1f35">“He’s amazing. A gift to this community,” one user wrote on the Silk Road
+ <p name="1f35" id="1f35">“He’s amazing. A gift to this community,” one user wrote on the Silk Road
2.0 forum, a site that sprang up after the original. “His knowledge is
invaluable, and never comes with any judgment.” Up until recently, Caudevilla
answered questions on the marketplace “Evolution.” Last week, however,
- the administrators of that site <a data-href="http://motherboard.vice.com/read/one-of-the-darknets-biggest-markets-may-have-just-stole-all-its-users-bitcoin" href="http://motherboard.vice.com/read/one-of-the-darknets-biggest-markets-may-have-just-stole-all-its-users-bitcoin" rel="nofollow">pulled a scam</a>,
+ the administrators of that site <a href="http://motherboard.vice.com/read/one-of-the-darknets-biggest-markets-may-have-just-stole-all-its-users-bitcoin" data-href="http://motherboard.vice.com/read/one-of-the-darknets-biggest-markets-may-have-just-stole-all-its-users-bitcoin" rel="nofollow">pulled a scam</a>,
shutting the market down and escaping with an estimated $12 million worth
of Bitcoin.</p>
- <p id="b20f" name="b20f">Caudevilla’s transition from dispensing advice to starting up a no-questions-asked
+ <p name="b20f" id="b20f">Caudevilla’s transition from dispensing advice to starting up a no-questions-asked
drug testing service came as a consequence of his experience on the deep
web. He’d wondered whether he could help bring more harm reduction services
to a marketplace without controls. The Energy Control project, as part
of its mandate of educating drug users and preventing harm, had already
been carrying out drug testing for local Spanish users since 2001, at music
festivals, night clubs, or through a drop-in service at a lab in Madrid.</p>
- <p id="f739" name="f739">“I thought, we are doing this in Spain, why don’t we do an international
+ <p name="f739" id="f739">“I thought, we are doing this in Spain, why don’t we do an international
drug testing service?” Caudevilla told me when I visited the other Energy
Control lab, in Madrid. Caudevilla, a stocky character with ear piercings
and short, shaved hair, has eyes that light up whenever he discusses the
@@ -157,31 +183,38 @@
transparency,” Caudevilla said. “We could not make mistakes,” he added.</p>
</div>
<div>
- <figure id="4058" name="4058"><div>
+ <figure name="4058" id="4058">
+ <div>
- <p><img data-height="3141" data-image-id="1*knT10_FNVUmqQIBLnutmzQ.jpeg" data-width="4400" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*knT10_FNVUmqQIBLnutmzQ.jpeg"></img></p></div>
- <figcaption>Photo: Joseph Cox</figcaption></figure></div>
+ <p><img data-image-id="1*knT10_FNVUmqQIBLnutmzQ.jpeg" data-width="4400" data-height="3141" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*knT10_FNVUmqQIBLnutmzQ.jpeg">
+ </p></div>
+ <figcaption>Photo: Joseph Cox</figcaption>
+ </figure>
+ </div>
<div>
- <figure id="818c" name="818c"><div>
+ <figure name="818c" id="818c">
+ <div>
- <p><img data-action="zoom" data-action-value="1*ohyycinH18fz98TCyUzVgQ.png" data-height="24" data-image-id="1*ohyycinH18fz98TCyUzVgQ.png" data-width="1200" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*ohyycinH18fz98TCyUzVgQ.png"></img></p></div>
- </figure><p id="7b5e" name="7b5e">While the Energy Control lab in Madrid lab only tests Spanish drugs from
+ <p><img data-image-id="1*ohyycinH18fz98TCyUzVgQ.png" data-width="1200" data-height="24" data-action="zoom" data-action-value="1*ohyycinH18fz98TCyUzVgQ.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*ohyycinH18fz98TCyUzVgQ.png">
+ </p></div>
+ </figure>
+ <p name="7b5e" id="7b5e">While the Energy Control lab in Madrid lab only tests Spanish drugs from
various sources, it is the Barcelona location which vets the substances
bought in the shadowy recesses of of the deep web. Caudevilla no longer
runs it, having handed it over to his colleague Ana Muñoz. She maintains
a presence on the deep web forums, answers questions from potential users,
and sends back reports when they are ready.</p>
- <p id="0f0e" name="0f0e">The testing program exists in a legal grey area. The people who own the
+ <p name="0f0e" id="0f0e">The testing program exists in a legal grey area. The people who own the
Barcelona lab are accredited to experiment with and handle drugs, but Energy
Control doesn’t have this permission itself, at least not in writing.</p>
- <p id="e002" name="e002">“We have a verbal agreement with the police and other authorities. They
+ <p name="e002" id="e002">“We have a verbal agreement with the police and other authorities. They
already know what we are doing,” Lladanosa tells me. It is a pact of mutual
benefit. Energy Control provides the police with information on batches
of drugs in Spain, whether they’re from the deep web or not, Espinosa says.
They also contribute to the European Monitoring Centre for Drugs and Drug
Addiction’s early warning system, a collaboration that attempts to spread
information about dangerous drugs as quickly as possible.</p>
- <p id="db1b" name="db1b">By the time of my visit in February, Energy Control had received over
+ <p name="db1b" id="db1b">By the time of my visit in February, Energy Control had received over
150 samples from the deep web and have been receiving more at a rate of
between 4 and 8 a week. Traditional drugs, such as cocaine and MDMA, make
up about 70 percent of the samples tested, but the Barcelona lab has also
@@ -189,131 +222,150 @@
synthetic cannabinoids, and even pills of Viagra.</p>
</div>
<div>
- <figure id="b885" name="b885"><div>
+ <figure name="b885" id="b885">
+ <div>
- <p><img data-height="1402" data-image-id="1*Vr61dyCTRwk6CemmVF8YAQ.jpeg" data-width="2100" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*Vr61dyCTRwk6CemmVF8YAQ.jpeg"></img></p></div>
- <figcaption>Photo by Joan Bardeletti</figcaption></figure></div>
+ <p><img data-image-id="1*Vr61dyCTRwk6CemmVF8YAQ.jpeg" data-width="2100" data-height="1402" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*Vr61dyCTRwk6CemmVF8YAQ.jpeg">
+ </p></div>
+ <figcaption>Photo by Joan Bardeletti</figcaption>
+ </figure>
+ </div>
<div>
- <p id="e76f" name="e76f">So it’s fair to make a tentative judgement on what people are paying for
+ <p name="e76f" id="e76f">So it’s fair to make a tentative judgement on what people are paying for
on the deep web. The verdict thus far? Overall, drugs on the deep web appear
to be of much higher quality than those found on the street.</p>
- <p id="5352" name="5352">“In general, the cocaine is amazing,” says Caudevilla, saying that the
+ <p name="5352" id="5352">“In general, the cocaine is amazing,” says Caudevilla, saying that the
samples they’ve seen have purities climbing towards 80 or 90 percent, and
some even higher. To get an idea of how unusual this is, take a look at
- the <a data-href="http://www.unodc.org/documents/wdr2014/Cocaine_2014_web.pdf" href="http://www.unodc.org/documents/wdr2014/Cocaine_2014_web.pdf" rel="nofollow">United Nations Office on Drugs and Crime World Drug Report 2014</a>,
+ the <a href="http://www.unodc.org/documents/wdr2014/Cocaine_2014_web.pdf" data-href="http://www.unodc.org/documents/wdr2014/Cocaine_2014_web.pdf" rel="nofollow">United Nations Office on Drugs and Crime World Drug Report 2014</a>,
which reports that the average quality of street cocaine in Spain is just
over 40 percent, while in the United Kingdom it is closer to 30 percent.“We
have found 100 percent [pure] cocaine,” he adds. “That’s really, really
strange. That means that, technically, this cocaine has been purified,
with clandestine methods.”</p>
- <p id="a71c" name="a71c">Naturally, identifying vendors who sell this top-of-the-range stuff is
+ <p name="a71c" id="a71c">Naturally, identifying vendors who sell this top-of-the-range stuff is
one of the reasons that people have sent samples to Energy Control. Caudevilla
was keen to stress that, officially, Energy Control’s service “is not intended
to be a control of drug quality,” meaning a vetting process for identifying
the best sellers, but that is exactly how some people have been using it.</p>
- <p id="cb5b" name="cb5b">As one buyer on the Evolution market, elmo666, wrote to me over the site’s
+ <p name="cb5b" id="cb5b">As one buyer on the Evolution market, elmo666, wrote to me over the site’s
messaging system, “My initial motivations were selfish. My primary motivation
was to ensure that I was receiving and continue to receive a high quality
product, essentially to keep the vendor honest as far as my interactions
with them went.”</p>
- <p id="d80d" name="d80d">Vendors on deep web markets advertise their product just like any other
+ <p name="d80d" id="d80d">Vendors on deep web markets advertise their product just like any other
outlet does, using flash sales, gimmicky giveaways and promises of drugs
that are superior to those of their competitors. The claims, however, can
turn out to be empty: despite the test results that show that deep web
cocaine vendors typically sell product that is of a better quality than
that found on the street, in plenty of cases, the drugs are nowhere near
as pure as advertised.</p>
- <p id="36de" name="36de">“You won’t be getting anything CLOSE to what you paid for,” one user complained
+ <p name="36de" id="36de">“You won’t be getting anything CLOSE to what you paid for,” one user complained
about the cocaine from ‘Mirkov’, a vendor on Evolution. “He sells 65% not
95%.”</p>
</div>
<div>
- <figure id="8544" name="8544"><div>
+ <figure name="8544" id="8544">
+ <div>
- <p><img data-height="1402" data-image-id="1*a-1_13xE6_ErQ-QSlz6myw.jpeg" data-width="2100" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*a-1_13xE6_ErQ-QSlz6myw.jpeg"></img></p></div>
- <figcaption>Photo by Joan Bardeletti</figcaption></figure></div>
+ <p><img data-image-id="1*a-1_13xE6_ErQ-QSlz6myw.jpeg" data-width="2100" data-height="1402" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*a-1_13xE6_ErQ-QSlz6myw.jpeg">
+ </p></div>
+ <figcaption>Photo by Joan Bardeletti</figcaption>
+ </figure>
+ </div>
<div>
- <figure id="d521" name="d521"><div>
+ <figure name="d521" id="d521">
+ <div>
- <p><img data-action="zoom" data-action-value="1*ohyycinH18fz98TCyUzVgQ.png" data-height="24" data-image-id="1*ohyycinH18fz98TCyUzVgQ.png" data-width="1200" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*ohyycinH18fz98TCyUzVgQ.png"></img></p></div>
- </figure><p id="126b" name="126b">Despite the prevalence of people using the service to gauge the quality
+ <p><img data-image-id="1*ohyycinH18fz98TCyUzVgQ.png" data-width="1200" data-height="24" data-action="zoom" data-action-value="1*ohyycinH18fz98TCyUzVgQ.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*ohyycinH18fz98TCyUzVgQ.png">
+ </p></div>
+ </figure>
+ <p name="126b" id="126b">Despite the prevalence of people using the service to gauge the quality
of what goes up their nose, many users send samples to Energy Control in
the spirit of its original mission: keeping themselves alive and healthy.
The worst case scenario from drugs purchased on the deep web is, well the
- worst case. That was the outcome when <a data-href="http://www.independent.co.uk/news/uk/crime/teenager-patrick-mcmullen-who-died-while-on-skype-had-bought-drugs-from-silk-road-8942329.html" href="http://www.independent.co.uk/news/uk/crime/teenager-patrick-mcmullen-who-died-while-on-skype-had-bought-drugs-from-silk-road-8942329.html" rel="nofollow">Patrick McMullen,</a> a
+ worst case. That was the outcome when <a href="http://www.independent.co.uk/news/uk/crime/teenager-patrick-mcmullen-who-died-while-on-skype-had-bought-drugs-from-silk-road-8942329.html" data-href="http://www.independent.co.uk/news/uk/crime/teenager-patrick-mcmullen-who-died-while-on-skype-had-bought-drugs-from-silk-road-8942329.html" rel="nofollow">Patrick McMullen,</a> a
17-year-old Scottish student, ingested half a gram of MDMA and three tabs
of LSD, reportedly purchased from the Silk Road. While talking to his friends
on Skype, his words became slurred and he passed out. Paramedics could
not revive him. The coroner for that case, Sherrif Payne, who deemed the
cause of death ecstasy toxicity, told <em>The Independent</em> “You
never know the purity of what you are taking and you can easily come unstuck.”</p>
- <p id="5e9e" name="5e9e">ScreamMyName, a deep web user who has been active since the original Silk
+ <p name="5e9e" id="5e9e">ScreamMyName, a deep web user who has been active since the original Silk
Road, wants to alert users to the dangerous chemicals that are often mixed
with drugs, and is using Energy Control as a means to do so.</p>
- <p id="19a6" name="19a6">“We’re at a time where some vendors are outright sending people poison.
+ <p name="19a6" id="19a6">“We’re at a time where some vendors are outright sending people poison.
Some do it unknowingly,” ScreamMyName told me in an encrypted message.
“Cocaine production in South America is often tainted with either levamisole
or phenacetine. Both poison to humans and both with severe side effects.”</p>
- <p id="9fef" name="9fef">In the case of Levamisole, those prescribing it are often not doctors
+ <p name="9fef" id="9fef">In the case of Levamisole, those prescribing it are often not doctors
but veterinarians, as Levamisole is commonly used on animals, primarily
for the treatment of worms. If ingested by humans it can lead to cases
- of extreme eruptions of the skin, as <a data-href="http://www.ncbi.nlm.nih.gov/pubmed/22127712" href="http://www.ncbi.nlm.nih.gov/pubmed/22127712" rel="nofollow">documented in a study</a> from researchers at the University
+ of extreme eruptions of the skin, as <a href="http://www.ncbi.nlm.nih.gov/pubmed/22127712" data-href="http://www.ncbi.nlm.nih.gov/pubmed/22127712" rel="nofollow">documented in a study</a> from researchers at the University
of California, San Francisco. But Lladanosa has found Levamisole in cocaine
samples; dealers use it to increase the product weight, allowing them to
stretch their batch further for greater profit — and also, she says, because
Levamisole has a strong stimulant effect.</p>
- <p id="7886" name="7886">“It got me sick as fuck,” Dr. Feel, an Evolution user, wrote on the site’s
+ <p name="7886" id="7886">“It got me sick as fuck,” Dr. Feel, an Evolution user, wrote on the site’s
forums after consuming cocaine that had been cut with 23 percent Levamisole,
and later tested by Energy Control. “I was laid up in bed for several days
because of that shit. The first night I did it, I thought I was going to
die. I nearly drove myself to the ER.”</p>
- <p id="18d3" name="18d3">“More people die because of tainted drugs than the drugs themselves,”
+ <p name="18d3" id="18d3">“More people die because of tainted drugs than the drugs themselves,”
Dr. Feel added. “It’s the cuts and adulterants that are making people sick
and killing them.”</p>
</div>
<div>
- <figure id="552a" name="552a"><div>
+ <figure name="552a" id="552a">
+ <div>
- <p><img data-height="1192" data-image-id="1*IWXhtSsVv0gNnCwnDEXk-Q.jpeg" data-width="2100" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*IWXhtSsVv0gNnCwnDEXk-Q.jpeg"></img></p></div>
- <figcaption>Photo by Joan Bardeletti</figcaption></figure></div>
+ <p><img data-image-id="1*IWXhtSsVv0gNnCwnDEXk-Q.jpeg" data-width="2100" data-height="1192" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*IWXhtSsVv0gNnCwnDEXk-Q.jpeg">
+ </p></div>
+ <figcaption>Photo by Joan Bardeletti</figcaption>
+ </figure>
+ </div>
<div>
- <p id="839a" name="839a">The particular case of cocaine cut with Levamisole is one of the reasons
+ <p name="839a" id="839a">The particular case of cocaine cut with Levamisole is one of the reasons
that ScreamMyName has been pushing for more drug testing on the deep web
markets. “I recognize that drug use isn’t exactly healthy, but why exacerbate
the problem?” he told me when I contacted him after his post. “[Energy
Control] provides a way for users to test the drugs they’ll use and for
these very users to know what it is they’re putting in their bodies. Such
services are in very short supply.”</p>
- <p id="18dc" name="18dc">After sending a number of Energy Control tests himself, ScreamMyName started
+ <p name="18dc" id="18dc">After sending a number of Energy Control tests himself, ScreamMyName started
a de facto crowd-sourcing campaign to get more drugs sent to the lab, and
then shared the results, after throwing in some cash to get the ball rolling.
- <a data-href="https://blockchain.info/address/1Mi6VjMFqjcD48FPV7cnPB24MAtQQenRy3" href="https://blockchain.info/address/1Mi6VjMFqjcD48FPV7cnPB24MAtQQenRy3" rel="nofollow">He set up a Bitcoin wallet</a>, with the hope that users might chip in
+ <a href="https://blockchain.info/address/1Mi6VjMFqjcD48FPV7cnPB24MAtQQenRy3" data-href="https://blockchain.info/address/1Mi6VjMFqjcD48FPV7cnPB24MAtQQenRy3" rel="nofollow">He set up a Bitcoin wallet</a>, with the hope that users might chip in
to fund further tests. At the time of writing, the wallet has received
a total of 1.81 bitcoins; around $430 at today’s exchange rates.</p>
- <p id="dcbd" name="dcbd">In posts to the Evolution community, ScreamMyName pitched this project
+ <p name="dcbd" id="dcbd">In posts to the Evolution community, ScreamMyName pitched this project
as something that will benefit users and keep drug dealer honest. “When
the funds build up to a point where we can purchase an [Energy Control]
test fee, we’ll do a US thread poll for a few days and try to cohesively
decide on what vendor to test,” he continued.</p>
</div>
<div>
- <figure id="9d32" name="9d32"><div>
+ <figure name="9d32" id="9d32">
+ <div>
- <p><img data-height="913" data-image-id="1*NGcrjfkV0l37iQH2uyYjEw.jpeg" data-width="1368" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*NGcrjfkV0l37iQH2uyYjEw.jpeg"></img></p></div>
- <figcaption>Photo by Joan Bardeletti</figcaption></figure></div>
+ <p><img data-image-id="1*NGcrjfkV0l37iQH2uyYjEw.jpeg" data-width="1368" data-height="913" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*NGcrjfkV0l37iQH2uyYjEw.jpeg">
+ </p></div>
+ <figcaption>Photo by Joan Bardeletti</figcaption>
+ </figure>
+ </div>
<div>
- <p id="bff6" name="bff6">Other members of the community have been helping out, too. PlutoPete,
+ <p name="bff6" id="bff6">Other members of the community have been helping out, too. PlutoPete,
a vendor from the original Silk Road who sold cannabis seeds and other
legal items, has provided ScreamMyName with packaging to safely send the
samples to Barcelona. “A box of baggies, and a load of different moisture
barrier bags,” PlutoPete told me over the phone. “That’s what all the vendors
use.”</p>
- <p id="bb78" name="bb78">It’s a modest program so far. ScreamMyName told me that so far he had
+ <p name="bb78" id="bb78">It’s a modest program so far. ScreamMyName told me that so far he had
gotten enough public funding to purchase five different Energy Control
tests, in addition to the ten or so he’s sent himself so far. “The program
created is still in its infancy and it is growing and changing as we go
along but I have a lot of faith in what we’re doing,” he says.</p>
- <p id="5638" name="5638">But the spirit is contagious: elmo666, the other deep web user testing
+ <p name="5638" id="5638">But the spirit is contagious: elmo666, the other deep web user testing
cocaine, originally kept the results of the drug tests to himself, but
he, too, saw a benefit to distributing the data. “It is clear that it is
a useful service to other users, keeping vendors honest and drugs (and
@@ -321,17 +373,17 @@
on the forums, and then created a thread with summaries of the test results,
as well as comments from the vendors if they provided it. Other users were
soon basing their decisions on what to buy on elmo666‘s tests.</p>
- <p id="de75" name="de75">“I’m defo trying the cola based on the incredibly helpful elmo and his
+ <p name="de75" id="de75">“I’m defo trying the cola based on the incredibly helpful elmo and his
energy control results and recommendations,” wrote user jayk1984. On top
of this, elmo666 plans to launch an independent site on the deep web that
will collate all of these results, which should act as a resource for users
of all the marketplaces.</p>
- <p id="6b72" name="6b72">As word of elmo666's efforts spread, he began getting requests from drug
+ <p name="6b72" id="6b72">As word of elmo666's efforts spread, he began getting requests from drug
dealers who wanted him to use their wares for testing. Clearly, they figured
that a positive result from Energy Control would be a fantastic marketing
tool to draw more customers. They even offered elmo666 free samples. (He
passed.)</p>
- <p id="b008" name="b008">Meanwhile, some in the purchasing community are arguing that those running
+ <p name="b008" id="b008">Meanwhile, some in the purchasing community are arguing that those running
markets on the deep web should be providing quality control themselves.
PlutoPete told me over the phone that he had been in discussions about
this with Dread Pirate Roberts, the pseudonymous owner of the original
@@ -339,7 +391,7 @@
on Silk Road 1, doing lots of anonymous buys to police each category. But
of course they took the thing [Silk Road] down before we got it properly
off the ground,” he lamented.</p>
- <p id="49c8" name="49c8">But perhaps it is best that the users, those who are actually consuming
+ <p name="49c8" id="49c8">But perhaps it is best that the users, those who are actually consuming
the drugs, remain in charge of shaming dealers and warning each other.
“It’s our responsibility to police the market based on reviews and feedback,”
elmo666 wrote in an Evolution forum post. It seems that in the lawless
@@ -347,35 +399,43 @@
sold openly, users have cooperated in an organic display of self-regulation
to stamp out those particular batches of drugs that are more likely to
harm users.</p>
- <p id="386d" name="386d">“That’s always been the case with the deep web,” PlutoPete told me. Indeed,
+ <p name="386d" id="386d">“That’s always been the case with the deep web,” PlutoPete told me. Indeed,
ever since Silk Road, a stable of the drug markets has been the review
system, where buyers can leave a rating and feedback for vendors, letting
others know about the reliability of the seller. But DoctorX’s lab, rigorously
testing the products with scientific instruments, takes it a step further.</p>
</div>
<div>
- <figure id="890b" name="890b"><div>
+ <figure name="890b" id="890b">
+ <div>
- <p><img data-height="1373" data-image-id="1*WRlKt3q3mt7utmwxcbl3sQ.jpeg" data-width="2100" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*WRlKt3q3mt7utmwxcbl3sQ.jpeg"></img></p></div>
- <figcaption>Photo by Joan Bardeletti</figcaption></figure></div>
+ <p><img data-image-id="1*WRlKt3q3mt7utmwxcbl3sQ.jpeg" data-width="2100" data-height="1373" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*WRlKt3q3mt7utmwxcbl3sQ.jpeg">
+ </p></div>
+ <figcaption>Photo by Joan Bardeletti</figcaption>
+ </figure>
+ </div>
<div>
- <p id="b109" name="b109">“In the white market, they have quality control. In the dark market, it
+ <p name="b109" id="b109">“In the white market, they have quality control. In the dark market, it
should be the same,” Cristina Gil Lladanosa says to me before I leave the
Barcelona lab.</p>
- <p id="e3a4" name="e3a4">A week after I visit the lab, the results of the MDMA arrive in my inbox:
+ <p name="e3a4" id="e3a4">A week after I visit the lab, the results of the MDMA arrive in my inbox:
it is 85 percent pure, with no indications of other active ingredients.
Whoever ordered that sample from the digital shelves of the deep web, and
had it shipped to their doorstep in Canada, got hold of some seriously
good, and relatively safe drugs. And now they know it.</p>
- <figure id="31cf" name="31cf"><div>
+ <figure name="31cf" id="31cf">
+ <div>
- <p><img data-action="zoom" data-action-value="1*320_4I0lxbn5x3bx4XPI5Q.png" data-height="24" data-image-id="1*320_4I0lxbn5x3bx4XPI5Q.png" data-width="1200" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*320_4I0lxbn5x3bx4XPI5Q.png"></img></p></div>
- </figure><p data-align="center" id="9b87" name="9b87"><em>Top photo by Joan Bardeletti</em>
+ <p><img data-image-id="1*320_4I0lxbn5x3bx4XPI5Q.png" data-width="1200" data-height="24" data-action="zoom" data-action-value="1*320_4I0lxbn5x3bx4XPI5Q.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*320_4I0lxbn5x3bx4XPI5Q.png">
+ </p></div>
+ </figure>
+ <p name="9b87" id="9b87" data-align="center"><em>Top photo by Joan Bardeletti</em>
</p>
- <p data-align="center" id="c30a" name="c30a">Follow Backchannel: <a data-href="https://twitter.com/backchnnl" href="https://twitter.com/backchnnl" rel="nofollow"><em>Twitter</em></a>
- <em>|</em><a data-href="https://www.facebook.com/pages/Backchannel/1488568504730671" href="https://www.facebook.com/pages/Backchannel/1488568504730671" rel="nofollow"><em>Facebook</em></a>
+ <p name="c30a" id="c30a" data-align="center">Follow Backchannel: <a href="https://twitter.com/backchnnl" data-href="https://twitter.com/backchnnl" rel="nofollow"><em>Twitter</em></a>
+ <em>|</em><a href="https://www.facebook.com/pages/Backchannel/1488568504730671" data-href="https://www.facebook.com/pages/Backchannel/1488568504730671" rel="nofollow"><em>Facebook</em></a>
</p>
</div>
</div>
- </section></div>
+ </section>
+ </div>
</div> \ No newline at end of file
diff --git a/test/test-pages/la-nacion/expected.html b/test/test-pages/la-nacion/expected.html
index 5640699..2084cd8 100644
--- a/test/test-pages/la-nacion/expected.html
+++ b/test/test-pages/la-nacion/expected.html
@@ -1,9 +1,12 @@
-<article data-asociarposwall="false" data-login="false" data-loginposwall="false" id="nota" itemscope="" itemtype="http://schema.org/NewsArticle"><div>
+<article id="nota" itemscope itemtype="http://schema.org/NewsArticle" data-login="false" data-loginposwall="false" data-asociarposwall="false">
+ <div>
<p itemprop="description">Los pueblos indígenas reclaman por derechos que permanecen
incumplidos, por eso es más eficiente canalizar la protesta que reprimirla</p>
</div>
<section id="cuerpo" itemprop="articleBody">
+
+
<p>Abdullah Ocalan, el líder independentista kurdo, desembarcó en Italia en noviembre de
1998 y pidió asilo político. Arrastraba un pedido de captura de Turquía, donde era acusado por
terrorismo. El ex comunista Massimo D'Alema, recién asumido, dudaba. Acoger a Ocalan implicaba comprarse
@@ -21,8 +24,12 @@
supuestos contactos internacionales de organizaciones mapuches. Entre ellos aparecía Ocalan, a quien el
informe ubicó "con domicilios en Palermo y en el centro porteño", y aseguraba incluso que había sido
visto "en Neuquén, Río Negro y Chubut durante el juicio a Jones Huala".</p>
- <figure><p><span title="Ampliar imagen"></span><img src="http://bucket2.glanacion.com/anexos/fotos/77/conflicto-mapuche-2585177w280.jpg"></img></p>
- <figcaption id="epigrafe2585177">Foto: LA NACION</figcaption></figure><p>Esta falsa noticia fue la más rocambolesca de una larga cadena. Dos hechos quedaron en evidencia:
+ <figure>
+ <p><span title="Ampliar imagen"></span><img src="http://bucket2.glanacion.com/anexos/fotos/77/conflicto-mapuche-2585177w280.jpg"></p>
+ <figcaption id="epigrafe2585177">Foto: LA NACION</figcaption>
+ </figure>
+
+ <p>Esta falsa noticia fue la más rocambolesca de una larga cadena. Dos hechos quedaron en evidencia:
primero, que hay periodistas que no chequean la información; segundo, que los servicios de inteligencia
los utilizan para manipular la agenda pública. Y sobre los servicios hay dos posibilidades: o son burros
o son perversos. Las opciones no son excluyentes, aunque cualquiera alcanza para tornarlos indignos de
@@ -37,6 +44,7 @@
Estado", vincular a un grupo que reclama tierras en la región de sus ancestros con otro que busca
gobernar el mundo según sus normas religiosas y ha masacrado a miles de personas requiere de una
operación intelectual tan audaz como inadecuada.</p>
+
<p>La asociación con el movimiento kurdo, en cambio, asoma menos inverosímil. Desde su arresto, Ocalan
transformó su pensamiento: de una visión nacionalista con inspiración estalinista evolucionó al
confederalismo democrático, una propuesta de organización comunal, ecologista, más apegada a las raíces
@@ -54,6 +62,7 @@
matar directamente, es realizar sabotajes, movilizaciones, ataques a iglesias y empresas y mucha
prensa". ¡En Medio Oriente pagarían por un terrorismo así! Ningún hecho de violencia debe ser
minimizado, pero las analogías no resisten prueba.</p>
+
<p>La "cuestión mapuche" es social antes que policial. La Constitución manda "reconocer la preexistencia
étnica y cultural de los pueblos indígenas argentinos. Garantizar el respeto a su identidad?; reconocer
la personería jurídica de sus comunidades, y la posesión y propiedad comunitarias de las tierras que
@@ -82,4 +91,6 @@
del Estado argentino no fue tanto quiénes lo desafiaron como quiénes lo gobernaron. Cambiemos.</p>
<p><b><i>Andrés Malamud es politólogo e investigador en la Universidad de Lisboa. Martín Schapiro es abogado
administrativista y analista internacional</i></b></p>
- </section></article> \ No newline at end of file
+
+ </section>
+ </article> \ No newline at end of file
diff --git a/test/test-pages/lemonde-1/expected-metadata.json b/test/test-pages/lemonde-1/expected-metadata.json
index a45fcaf..0f46210 100644
--- a/test/test-pages/lemonde-1/expected-metadata.json
+++ b/test/test-pages/lemonde-1/expected-metadata.json
@@ -1,5 +1,5 @@
{
- "Author": null,
+ "Author": "Martin Untersinger (avec Damien Leloup et Morgane Tual)",
"Direction": null,
"Excerpt": "Largement approuvé par les députés, le texte sera désormais examiné par le Sénat, puis le Conseil constitutionnel.",
"Image": "http:\/\/s1.lemde.fr\/image\/2015\/05\/05\/600x315\/4628128_3_47fc_projet-de-loi-renseignement_aeba800424730d672d1bd08faf203438.jpg",
diff --git a/test/test-pages/lemonde-1/expected.html b/test/test-pages/lemonde-1/expected.html
index dd91ed5..bb3a0d8 100644
--- a/test/test-pages/lemonde-1/expected.html
+++ b/test/test-pages/lemonde-1/expected.html
@@ -1,38 +1,33 @@
-<p> <span data-source="Le Monde.fr" id="publisher" itemprop="Publisher">Le Monde</span> |
- <time datetime="2015-05-04T13:36:31+02:00" itemprop="datePublished">04.05.2015 à 13h36</time> • Mis à jour le
- <time datetime="2015-05-05T20:13:12+02:00" itemprop="dateModified">05.05.2015 à 20h13</time> | <span>
-Par <span itemprop="author"> <a href="http://fakehost/journaliste/martin-untersinger/" target="_blank">Martin Untersinger</a> (avec Damien Leloup et Morgane Tual)
- </span> </span>
- </p><div id="articleBody" itemprop="articleBody">
+<div id="articleBody" itemprop="articleBody">
<p>
- <iframe frameborder="0" height="320" src="//www.dailymotion.com/embed/video/x2p552m?syndication=131181" width="534"></iframe>
+ <iframe src="//www.dailymotion.com/embed/video/x2p552m?syndication=131181" frameborder="0" width="534" height="320"></iframe>
</p>
- <p>Les députés ont, sans surprise, adopté à une large majorité (438 contre 86 et 42 abstentions) le projet de loi sur le renseignement défendu par le gouvernement lors d’un vote solennel, mardi 5 mai. Il sera désormais examiné par le Sénat, puis le Conseil constitutionnel, prochainement saisi par 75 députés. Dans un souci d'apaisement, François Hollande avait annoncé par avance qu'il saisirait les Sages.</p>
+ <p>Les députés ont, sans surprise, adopté à une large majorité (438 contre 86 et 42 abstentions) le projet de loi sur le renseignement défendu par le gouvernement lors d’un vote solennel, mardi&nbsp;5&nbsp;mai. Il sera désormais examiné par le Sénat, puis le Conseil constitutionnel, prochainement saisi par 75 députés. Dans un souci d'apaisement, François Hollande avait annoncé par avance qu'il saisirait les Sages.</p>
<p><strong>Revivez <a href="http://fakehost/pixels/live/2015/05/05/suivez-le-vote-de-la-loi-renseignement-en-direct_4628012_4408996.html">le direct du vote à l’Assemblée avec vos questions.</a></strong></p>
<p>Ont voté contre : 10 députés socialistes (sur 288), 35 UMP (sur 198), 11 écologistes (sur 18), 11 UDI (sur 30), 12 députés Front de gauche (sur 15) et 7 non-inscrits (sur 9). <a href="http://www2.assemblee-nationale.fr/scrutins/detail/%28legislature%29/14/%28num%29/1109">Le détail est disponible sur le site de l'Assemblée nationale.</a></p>
<p>Parmi les députés ayan voté contre figurent notamment des opposants de la première heure, comme l'UMP Laure de la Raudière ou l'écologiste Sergio Coronado, mais aussi quelques poids lourds de l'opposition comme Patrick Devedjian ou Claude Goasguen. A gauche, on trouve parmi les quelque opposants au texte Aurélie Filipetti. Christian Paul, qui avait été très actif lors d'autres débats sur les libertés numériques, s'est abstenu.</p>
- <p>Pouria Amirshahi, député socialiste des Français de l'étranger qui a également voté contre, a annoncé qu'il transmettrait un « mémorandum argumenté » au Conseil constitutionnel et demanderait à se faire auditionner sur le projet de loi. D'autres députés ont prévu de faire la même démarche.</p>
+ <p>Pouria Amirshahi, député socialiste des Français de l'étranger qui a également voté contre, a annoncé qu'il transmettrait un «&nbsp;mémorandum argumenté » au Conseil constitutionnel et demanderait à se faire auditionner sur le projet de loi. D'autres députés ont prévu de faire la même démarche.</p>
<p>Ce texte, fortement décrié par la société civile pour son manque de contre-pouvoir et le caractère intrusif des techniques qu’il autorise, entend donner un cadre aux pratiques des services de renseignement, rendant légales certaines pratiques qui, jusqu’à présent, ne l’étaient pas.</p>
<p><u>Retour sur ses principales dispositions, après son passage en commission des lois et après le débat en séance publique.</u></p>
<h2>Définition des objectifs des services</h2>
- <p>Le projet de loi énonce les domaines que peuvent invoquer les services pour justifier leur surveillance. Il s’agit notamment, de manière attendue, de <em>« l’indépendance nationale, de l’intégrité du territoire et de la défense nationale »</em> et de<em> « la prévention du terrorisme »,</em> mais également des <em>« intérêts majeurs de la politique étrangère »,</em> ainsi que de la <em>« prévention des atteintes à la forme républicaine des institutions »</em> et de <em>« la criminalité et de la délinquance organisées »</em>. Des formulations parfois larges qui inquiètent les opposants au texte qui craignent qu’elles puissent permettre de surveiller des activistes ou des manifestants.</p>
+ <p>Le projet de loi énonce les domaines que peuvent invoquer les services pour justifier leur surveillance. Il s’agit notamment, de manière attendue, de <em>«&nbsp;l’indépendance nationale, de l’intégrité du territoire et de la défense nationale&nbsp;»</em> et de<em> «&nbsp;la prévention du terrorisme&nbsp;»,</em> mais également des <em>«&nbsp;intérêts majeurs de la politique étrangère&nbsp;»,</em> ainsi que de la <em>«&nbsp;prévention des atteintes à la forme républicaine des institutions&nbsp;»</em> et de <em>«&nbsp;la criminalité et de la délinquance organisées&nbsp;»</em>. Des formulations parfois larges qui inquiètent les opposants au texte qui craignent qu’elles puissent permettre de surveiller des activistes ou des manifestants.</p>
<h2>La Commission de contrôle</h2>
<p>Le contrôle de cette surveillance sera confié à une nouvelle autorité administrative indépendante, la Commission nationale de contrôle des techniques de renseignement (CNCTR), composée de six magistrats du Conseil d’Etat et de la Cour de cassation, de trois députés et trois sénateurs de la majorité et de l’opposition, et d’un expert technique. Elle remplacera l’actuelle Commission nationale de contrôle des interceptions de sécurité (CNCIS).</p>
- <p>Elle délivrera son avis, sauf cas d’urgence, avant toute opération de surveillance ciblée. Deux types urgences sont prévus par la loi : d’un côté une <em>« urgence absolue »</em>, pour laquelle un agent pourra se passer de l’avis de la CNCTR mais pas de l’autorisation du premier ministre. De l’autre, une urgence opérationnelle extrêmement limitée, notamment en termes de techniques, à l’initiative du chef du service de renseignement, qui se passe de l’avis de la CNCTR. Ces cas d’urgence ne justifieront pas l’intrusion d’un domicile ni la surveillance d’un journaliste, un parlementaire ou un avocat. Dans ces cas, la procédure classique devra s’appliquer.</p>
+ <p>Elle délivrera son avis, sauf cas d’urgence, avant toute opération de surveillance ciblée. Deux types urgences sont prévus par la loi&nbsp;: d’un côté une <em>«&nbsp;urgence absolue&nbsp;»</em>, pour laquelle un agent pourra se passer de l’avis de la CNCTR mais pas de l’autorisation du premier ministre. De l’autre, une urgence opérationnelle extrêmement limitée, notamment en termes de techniques, à l’initiative du chef du service de renseignement, qui se passe de l’avis de la CNCTR. Ces cas d’urgence ne justifieront pas l’intrusion d’un domicile ni la surveillance d’un journaliste, un parlementaire ou un avocat. Dans ces cas, la procédure classique devra s’appliquer.</p>
<p>L’avis de la CNCTR ne sera pas contraignant, mais cette commission pourra saisir le Conseil d’Etat si elle estime que la loi n’est pas respectée et elle disposera de pouvoirs d’enquête. Ce recours juridictionnel est une nouveauté dans le monde du renseignement.</p>
- <h2>Les « boîtes noires »</h2>
- <p>Une des dispositions les plus contestées de ce projet de loi prévoit de pouvoir contraindre les fournisseurs d’accès à Internet (FAI) à « <em>détecter une menace terroriste sur la base d’un traitement automatisé ». </em>Ce dispositif – autorisé par le premier ministre par tranche de quatre mois – permettrait de détecter, en temps réel ou quasi réel, les personnes ayant une activité en ligne typique de « schémas » utilisés par les terroristes pour transmettre des informations.</p>
- <p>En pratique, les services de renseignement pourraient installer chez les FAI une « boîte noire » surveillant le trafic. Le contenu des communications – qui resterait « anonyme » – ne serait pas surveillé, mais uniquement les métadonnées : origine ou destinataire d’un message, adresse IP d’un site visité, durée de la conversation ou de la connexion… Ces données ne seraient pas conservées.</p>
+ <h2>Les «&nbsp;boîtes noires&nbsp;»</h2>
+ <p>Une des dispositions les plus contestées de ce projet de loi prévoit de pouvoir contraindre les fournisseurs d’accès à Internet (FAI) à «&nbsp;<em>détecter une menace terroriste sur la base d’un traitement automatisé&nbsp;». </em>Ce dispositif –&nbsp;autorisé par le premier ministre par tranche de quatre mois&nbsp;– permettrait de détecter, en temps réel ou quasi réel, les personnes ayant une activité en ligne typique de «&nbsp;schémas&nbsp;» utilisés par les terroristes pour transmettre des informations.</p>
+ <p>En pratique, les services de renseignement pourraient installer chez les FAI une «&nbsp;boîte noire&nbsp;» surveillant le trafic. Le contenu des communications – qui resterait «&nbsp;anonyme&nbsp;» – ne serait pas surveillé, mais uniquement les métadonnées&nbsp;: origine ou destinataire d’un message, adresse IP d’un site visité, durée de la conversation ou de la connexion… Ces données ne seraient pas conservées.</p>
<p>La Commission nationale informatique et libertés<strong> </strong>(CNIL), qui critique fortement cette disposition. La CNIL soulève notamment que l’anonymat de ces données est très relatif, puisqu’il peut être levé.</p>
- <p>Lire aussi : <a href="http://fakehost/pixels/article/2015/03/18/les-critiques-de-la-cnil-contre-le-projet-de-loi-sur-le-renseignement_4595839_4408996.html">Les critiques de la CNIL contre le projet de loi sur le renseignement</a> </p>
- <p>Le dispositif introduit une forme de « pêche au chalut » – un brassage très large des données des Français à la recherche de quelques individus. Le gouvernement se défend de toute similarité avec les dispositifs mis en place par la NSA américaine, arguant notamment que les données ne seront pas conservées et que cette activité sera contrôlée par une toute nouvelle commission aux moyens largement renforcés. Il s’agit cependant d’un dispositif très large, puisqu’il concernera tous les fournisseurs d’accès à Internet, et donc tous les internautes français.</p>
- <h2>L’élargissement de la surveillance électronique pour détecter les « futurs » terroristes</h2>
- <p>La surveillance des métadonnées sera aussi utilisée pour tenter de détecter de nouveaux profils de terroristes potentiels, prévoit le projet de loi. Le gouvernement considère qu’il s’agit d’une manière efficace de détecter les profils qui passent aujourd’hui <em>« entre les mailles du filet »</em>, par exemple des personnes parties en Syrie ou en Irak sans qu’aucune activité suspecte n’ait été décelée avant leur départ.</p>
+ <p>Lire aussi&nbsp;: <a href="http://fakehost/pixels/article/2015/03/18/les-critiques-de-la-cnil-contre-le-projet-de-loi-sur-le-renseignement_4595839_4408996.html">Les critiques de la CNIL contre le projet de loi sur le renseignement</a> </p>
+ <p>Le dispositif introduit une forme de «&nbsp;pêche au chalut&nbsp;» –&nbsp;un brassage très large des données des Français à la recherche de quelques individus. Le gouvernement se défend de toute similarité avec les dispositifs mis en place par la NSA américaine, arguant notamment que les données ne seront pas conservées et que cette activité sera contrôlée par une toute nouvelle commission aux moyens largement renforcés. Il s’agit cependant d’un dispositif très large, puisqu’il concernera tous les fournisseurs d’accès à Internet, et donc tous les internautes français.</p>
+ <h2>L’élargissement de la surveillance électronique pour détecter les «&nbsp;futurs&nbsp;» terroristes</h2>
+ <p>La surveillance des métadonnées sera aussi utilisée pour tenter de détecter de nouveaux profils de terroristes potentiels, prévoit le projet de loi. Le gouvernement considère qu’il s’agit d’une manière efficace de détecter les profils qui passent aujourd’hui <em>«&nbsp;entre les mailles du filet&nbsp;»</em>, par exemple des personnes parties en Syrie ou en Irak sans qu’aucune activité suspecte n’ait été décelée avant leur départ.</p>
<p>Pour repérer ces personnes, la loi permettra d’étendre la surveillance électronique à toutes les personnes en contact avec des personnes déjà suspectées. En analysant leurs contacts, la fréquence de ces derniers et les modes de communication, les services de renseignement espèrent pouvoir détecter ces nouveaux profils en amont.</p>
<h2>De nouveaux outils et méthodes de collecte</h2>
<p>Les services pourront également procéder, après un avis de la CNCTR, à la pose de micros dans une pièce ou de mouchards sur un objet (voiture par exemple), ou à l’intérieur d’un ordinateur. L’utilisation des IMSI-catchers (fausses antennes qui permettent d’intercepter des conversations téléphoniques) est également légalisée, pour les services de renseignement, dans certains cas. Le nombre maximal de ces appareils sera fixé par arrêté du premier ministre après l’avis de la CNCTR.</p>
- <p><strong>Lire : <a href="http://fakehost/pixels/article/2015/03/31/que-sont-les-imsi-catchers-ces-valises-qui-espionnent-les-telephones-portables_4605827_4408996.html">Que sont les IMSI-catchers, ces valises qui espionnent les téléphones portables ?</a></strong></p>
- <p>La loi introduit également des mesures de surveillance internationale : concrètement, les procédures de contrôle seront allégées lorsqu’un des « bouts » de la communication sera situé à l’étranger (concrètement, un Français qui parle avec un individu situé à l’étranger). Cependant, comme l’a souligné l’Arcep (l’Autorité de régulation des communications électroniques et des postes), sollicitée pour le versant technique de cette mesure, il est parfois difficile de s’assurer qu’une communication, même passant par l’étranger, ne concerne pas deux Français.</p>
+ <p><strong>Lire&nbsp;: <a href="http://fakehost/pixels/article/2015/03/31/que-sont-les-imsi-catchers-ces-valises-qui-espionnent-les-telephones-portables_4605827_4408996.html">Que sont les IMSI-catchers, ces valises qui espionnent les téléphones portables&nbsp;?</a></strong></p>
+ <p>La loi introduit également des mesures de surveillance internationale&nbsp;: concrètement, les procédures de contrôle seront allégées lorsqu’un des «&nbsp;bouts&nbsp;» de la communication sera situé à l’étranger (concrètement, un Français qui parle avec un individu situé à l’étranger). Cependant, comme l’a souligné l’Arcep (l’Autorité de régulation des communications électroniques et des postes), sollicitée pour le versant technique de cette mesure, il est parfois difficile de s’assurer qu’une communication, même passant par l’étranger, ne concerne pas deux Français.</p>
<h2>Un nouveau fichier</h2>
<p>La loi crée un fichier judiciaire national automatisé des auteurs d’infractions terroristes (Fijait), dont les données pourront être conservées pendant vingt ans.</p>
<p>Ce fichier concerne les personnes ayant été condamnées, même si une procédure d’appel est en cours. Les mineurs pourront aussi être inscrits dans ce fichier et leurs données conservées jusqu’à dix ans. L’inscription ne sera pas automatique et se fera sur décision judiciaire. Certaines mises en examen pourront aussi apparaître sur ce fichier. En cas de non-lieu, relaxe, acquittement, amnistie ou réhabilitation, ces informations seront effacées.</p>
@@ -40,7 +35,7 @@ Par <span itemprop="author"> <a href="http://fakehost/journalist
<p>Le renseignement pénitentiaire pourra, dans des conditions qui seront fixées par décret, profiter des techniques que légalise le projet de loi pour les services de renseignement. La ministre de la justice, Christiane Taubira, était défavorable à cette disposition, soutenue par le rapporteur du texte, la droite et une partie des députés de gauche. Pour la ministre, cette innovation va dénaturer le renseignement pénitentiaire et le transformer en véritable service de renseignement.</p>
<h2>Conservation des données</h2>
<p>La CNIL <a href="http://www.cnil.fr/fileadmin/documents/La_CNIL/actualite/Les_propositions_de_la_CNIL_sur_les_evolutions_de_la_loi_Informatique_et_Libertes.pdf">a fait part à plusieurs reprises de sa volonté</a> d’exercer sa mission de contrôle sur les fichiers liés au renseignement, qui seront alimentés par ces collectes. Ces fichiers sont aujourd’hui exclus du périmètre d’action de la CNIL.</p>
- <p>La durée de conservation des données collectées – et l’adaptation de cette durée à la technique employée – a par ailleurs été inscrite dans la loi, contrairement au projet initial du gouvernement qui entendait fixer ces limites par décret. Elle pourra aller jusqu’à cinq ans dans le cas des données de connexion.</p>
+ <p>La durée de conservation des données collectées –&nbsp;et l’adaptation de cette durée à la technique employée&nbsp;– a par ailleurs été inscrite dans la loi, contrairement au projet initial du gouvernement qui entendait fixer ces limites par décret. Elle pourra aller jusqu’à cinq ans dans le cas des données de connexion.</p>
<h2>Un dispositif pour les lanceurs d’alerte</h2>
- <p>La loi prévoit également une forme de protection pour les agents qui seraient témoins de surveillance illégale. Ces lanceurs d’alerte pourraient solliciter la CNCTR, voire le premier ministre, et leur fournir toutes les pièces utiles. La CNCTR pourra ensuite aviser le procureur de la République et solliciter la Commission consultative du secret de la défense nationale afin que cette dernière <em>« donne au premier ministre son avis sur la possibilité de déclassifier tout ou partie de ces éléments »</em>. Aucune mesure de rétorsion ne pourra viser l’agent qui aurait dénoncé des actes potentiellement illégaux.</p>
+ <p>La loi prévoit également une forme de protection pour les agents qui seraient témoins de surveillance illégale. Ces lanceurs d’alerte pourraient solliciter la CNCTR, voire le premier ministre, et leur fournir toutes les pièces utiles. La CNCTR pourra ensuite aviser le procureur de la République et solliciter la Commission consultative du secret de la défense nationale afin que cette dernière <em>«&nbsp;donne au premier ministre son avis sur la possibilité de déclassifier tout ou partie de ces éléments&nbsp;»</em>. Aucune mesure de rétorsion ne pourra viser l’agent qui aurait dénoncé des actes potentiellement illégaux.</p>
</div> \ No newline at end of file
diff --git a/test/test-pages/lemonde-2/expected-metadata.json b/test/test-pages/lemonde-2/expected-metadata.json
index c402d3e..916f4ab 100644
--- a/test/test-pages/lemonde-2/expected-metadata.json
+++ b/test/test-pages/lemonde-2/expected-metadata.json
@@ -1,5 +1,5 @@
{
- "Author": null,
+ "Author": "Collectif",
"Direction": null,
"Excerpt": "Le retour à la stabilité coûtera des milliards d'euros, mais l'Union européenne en vaut la peine, estime un collectif d'industriels.",
"Image": "http:\/\/s1.lemde.fr\/medias\/web\/1.2.705\/img\/placeholder\/default.png",
diff --git a/test/test-pages/lemonde-2/expected.html b/test/test-pages/lemonde-2/expected.html
index af69efe..69f6da5 100644
--- a/test/test-pages/lemonde-2/expected.html
+++ b/test/test-pages/lemonde-2/expected.html
@@ -1,13 +1,14 @@
<p itemprop="description">Le retour à la stabilité coûtera des milliards d'euros, mais l'Union européenne en vaut la peine, estime un collectif d'industriels.</p><div id="articleBody" itemprop="articleBody">
<h2>L'union monétaire s'enlise dans la crise, l'euro reste soumis au feu des critiques. C'est le bilan des nombreux <a href="http://www.lemonde.fr/afrique-debats/" title="Toute l’actualité débats">débats</a> qui ont eu lieu ces derniers mois.</h2>
-<p>En tant qu'industriels allemands et français, qui ont la responsabilité de 1 500 milliards d'euros de chiffre d'affaires et de cinq millions de salariés dans <a href="http://www.lemonde.fr/le-monde/" title="Toute l’actualité le monde">le monde</a> entier, nous nous soucions de l'<a href="http://conjugaison.lemonde.fr/conjugaison/troisieme-groupe/avenir/" onclick="return false;" target="_blank" title="Conjugaison du verbe avenir">avenir</a> de l'euro et de l'union économique et monétaire européenne. L'<a href="http://www.lemonde.fr/histoire/" title="Toute l’actualité histoire">histoire</a> de l'euro est une véritable réussite. Qui aurait pensé, lorsque l'euro a été introduit il y a douze ans, qu'il aurait aujourd'hui gagné en valeur par rapport au dollar et de nombreuses autres monnaies ?</p>
+<p>En tant qu'industriels allemands et français, qui ont la responsabilité de 1 500 milliards d'euros de chiffre d'affaires et de cinq millions de salariés dans <a href="http://www.lemonde.fr/le-monde/" title="Toute l’actualité le monde">le monde</a> entier, nous nous soucions de l'<a target="_blank" onclick="return false;" href="http://conjugaison.lemonde.fr/conjugaison/troisieme-groupe/avenir/" title="Conjugaison du verbe avenir">avenir</a> de l'euro et de l'union économique et monétaire européenne. L'<a href="http://www.lemonde.fr/histoire/" title="Toute l’actualité histoire">histoire</a> de l'euro est une véritable réussite. Qui aurait pensé, lorsque l'euro a été introduit il y a douze ans, qu'il aurait aujourd'hui gagné en valeur par rapport au dollar et de nombreuses autres monnaies ?</p>
<p>L'euro s'est imposé comme seconde monnaie de référence à côté du dollar et a renforcé le rôle de l'<a href="http://www.lemonde.fr/europe/" title="Toute l’actualité Europe">Europe</a> en tant que puissance économique. Avec l'euro, un marché commun doté d'une monnaie unique et sans fluctuation de cours de change a vu le jour, créant ainsi prospérité et richesse pour nous tous. Depuis son introduction, près de 9 millions de nouveaux emplois ont été créés dans la zone euro. Les <a href="http://www.lemonde.fr/entreprises/" title="Toute l’actualité entreprises">entreprises</a> européennes profitent de ce <a href="http://www.lemonde.fr/developpement/" title="Toute l’actualité développement">développement</a>. Elles ont élargi leurs capacités de financement et augmenté leur compétitivité à l'<a href="http://www.lemonde.fr/international/" title="Toute l’actualité international">international</a>.</p>
-<p>Le ralentissement de l'économie mondiale a conduit certains pays de l'union monétaire à s'<a href="http://conjugaison.lemonde.fr/conjugaison/premier-groupe/endetter/" onclick="return false;" target="_blank" title="Conjugaison du verbe endetter">endetter</a> encore davantage. A court terme, ces pays doivent <a href="http://conjugaison.lemonde.fr/conjugaison/auxiliaire/%C3%AAtre/" onclick="return false;" target="_blank" title="Conjugaison du verbe être">être</a> aidés pour <a href="http://conjugaison.lemonde.fr/conjugaison/premier-groupe/regagner/" onclick="return false;" target="_blank" title="Conjugaison du verbe regagner">regagner</a> leur indépendance financière et <a href="http://conjugaison.lemonde.fr/conjugaison/premier-groupe/recr%C3%A9er/" onclick="return false;" target="_blank" title="Conjugaison du verbe recréer">recréer</a> les conditions d'un avenir meilleur pour leur <a href="http://www.lemonde.fr/demographie/" title="Toute l’actualité population">population</a>.</p>
-<p>En contrepartie, des mesures efficaces doivent être mises en oeuvre. Le retour à une situation financière stable coûtera de nombreux milliards d'euros, mais l'<a href="http://www.lemonde.fr/union-europeenne/" title="Toute l’actualité Union européenne">Union européenne</a> et notre monnaie commune en valent la peine. Nous devons <a href="http://conjugaison.lemonde.fr/conjugaison/troisieme-groupe/convaincre/" onclick="return false;" target="_blank" title="Conjugaison du verbe convaincre">convaincre</a> nos concitoyens de cela.</p>
+<p>Le ralentissement de l'économie mondiale a conduit certains pays de l'union monétaire à s'<a target="_blank" onclick="return false;" href="http://conjugaison.lemonde.fr/conjugaison/premier-groupe/endetter/" title="Conjugaison du verbe endetter">endetter</a> encore davantage. A court terme, ces pays doivent <a target="_blank" onclick="return false;" href="http://conjugaison.lemonde.fr/conjugaison/auxiliaire/%C3%AAtre/" title="Conjugaison du verbe être">être</a> aidés pour <a target="_blank" onclick="return false;" href="http://conjugaison.lemonde.fr/conjugaison/premier-groupe/regagner/" title="Conjugaison du verbe regagner">regagner</a> leur indépendance financière et <a target="_blank" onclick="return false;" href="http://conjugaison.lemonde.fr/conjugaison/premier-groupe/recr%C3%A9er/" title="Conjugaison du verbe recréer">recréer</a> les conditions d'un avenir meilleur pour leur <a href="http://www.lemonde.fr/demographie/" title="Toute l’actualité population">population</a>.</p>
+<p>En contrepartie, des mesures efficaces doivent être mises en oeuvre. Le retour à une situation financière stable coûtera de nombreux milliards d'euros, mais l'<a href="http://www.lemonde.fr/union-europeenne/" title="Toute l’actualité Union européenne">Union européenne</a> et notre monnaie commune en valent la peine. Nous devons <a target="_blank" onclick="return false;" href="http://conjugaison.lemonde.fr/conjugaison/troisieme-groupe/convaincre/" title="Conjugaison du verbe convaincre">convaincre</a> nos concitoyens de cela.</p>
<p><strong>RÈGLES PLUS STRICTES</strong></p>
-<p>Nous avons besoin d'une <a href="http://www.lemonde.fr/politique/" title="Toute l’actualité politique">politique</a> économique européenne et de règles de stabilité plus strictes. Pour <a href="http://conjugaison.lemonde.fr/conjugaison/premier-groupe/%C3%A9viter/" onclick="return false;" target="_blank" title="Conjugaison du verbe éviter">éviter</a>, à l'avenir, une crise telle que celle que nous traversons actuellement, nous devons <a href="http://conjugaison.lemonde.fr/conjugaison/premier-groupe/renforcer/" onclick="return false;" target="_blank" title="Conjugaison du verbe renforcer">renforcer</a> les règles de stabilité existantes et <a href="http://conjugaison.lemonde.fr/conjugaison/premier-groupe/assurer/" onclick="return false;" target="_blank" title="Conjugaison du verbe assurer">assurer</a> leur respect. Les solutions envisagées, comme, par exemple, l'<a href="http://www.lemonde.fr/exclusion/" title="Toute l’actualité exclusion">exclusion</a> de pays membres de la zone euro ou la scission entre une Union des pays du Nord et du Sud, ne sont pas bonnes. Cela aurait des conséquences qui sont difficilement prévisibles aujourd'hui. De telles propositions démagogiques ne sont pas adaptées à la gravité de la situation.</p>
-<p>Cependant, des mesures doivent être prises à temps et être aussi efficaces que possible. De plus, les Etats membres doivent <a href="http://conjugaison.lemonde.fr/conjugaison/premier-groupe/coordonner/" onclick="return false;" target="_blank" title="Conjugaison du verbe coordonner">coordonner</a>, plus étroitement qu'auparavant, leur <a href="http://www.lemonde.fr/afrique-politique/" title="Toute l’actualité politique">politique</a> économique intérieure et <a href="http://conjugaison.lemonde.fr/conjugaison/premier-groupe/parler/" onclick="return false;" target="_blank" title="Conjugaison du verbe parler">parler</a> d'une seule voix vis-à-vis de l'extérieur.</p>
-<p>En tant qu'industriels allemands et français, nous voulons <a href="http://conjugaison.lemonde.fr/conjugaison/premier-groupe/souligner/" onclick="return false;" target="_blank" title="Conjugaison du verbe souligner">souligner</a> les immenses avantages que l'espace monétaire commun a apportés. Nous envoyons un message de soutien aux responsables politiques, afin qu'ils mettent en place des conditions nécessaires à un euro durablement stable et compétitif. C'est la base de la future prospérité en Europe. L'union monétaire a durablement besoin de <a href="http://www.lemonde.fr/finance/" title="Toute l’actualité finances">finances</a> publiques solides, de règles de responsabilité claires, de structures transparentes et de conditions de concurrence équitables.</p>
+<p>Nous avons besoin d'une <a href="http://www.lemonde.fr/politique/" title="Toute l’actualité politique">politique</a> économique européenne et de règles de stabilité plus strictes. Pour <a target="_blank" onclick="return false;" href="http://conjugaison.lemonde.fr/conjugaison/premier-groupe/%C3%A9viter/" title="Conjugaison du verbe éviter">éviter</a>, à l'avenir, une crise telle que celle que nous traversons actuellement, nous devons <a target="_blank" onclick="return false;" href="http://conjugaison.lemonde.fr/conjugaison/premier-groupe/renforcer/" title="Conjugaison du verbe renforcer">renforcer</a> les règles de stabilité existantes et <a target="_blank" onclick="return false;" href="http://conjugaison.lemonde.fr/conjugaison/premier-groupe/assurer/" title="Conjugaison du verbe assurer">assurer</a> leur respect. Les solutions envisagées, comme, par exemple, l'<a href="http://www.lemonde.fr/exclusion/" title="Toute l’actualité exclusion">exclusion</a> de pays membres de la zone euro ou la scission entre une Union des pays du Nord et du Sud, ne sont pas bonnes. Cela aurait des conséquences qui sont difficilement prévisibles aujourd'hui. De telles propositions démagogiques ne sont pas adaptées à la gravité de la situation.</p>
+<p>Cependant, des mesures doivent être prises à temps et être aussi efficaces que possible. De plus, les Etats membres doivent <a target="_blank" onclick="return false;" href="http://conjugaison.lemonde.fr/conjugaison/premier-groupe/coordonner/" title="Conjugaison du verbe coordonner">coordonner</a>, plus étroitement qu'auparavant, leur <a href="http://www.lemonde.fr/afrique-politique/" title="Toute l’actualité politique">politique</a> économique intérieure et <a target="_blank" onclick="return false;" href="http://conjugaison.lemonde.fr/conjugaison/premier-groupe/parler/" title="Conjugaison du verbe parler">parler</a> d'une seule voix vis-à-vis de l'extérieur.</p>
+<p>En tant qu'industriels allemands et français, nous voulons <a target="_blank" onclick="return false;" href="http://conjugaison.lemonde.fr/conjugaison/premier-groupe/souligner/" title="Conjugaison du verbe souligner">souligner</a> les immenses avantages que l'espace monétaire commun a apportés. Nous envoyons un message de soutien aux responsables politiques, afin qu'ils mettent en place des conditions nécessaires à un euro durablement stable et compétitif. C'est la base de la future prospérité en Europe. L'union monétaire a durablement besoin de <a href="http://www.lemonde.fr/finance/" title="Toute l’actualité finances">finances</a> publiques solides, de règles de responsabilité claires, de structures transparentes et de conditions de concurrence équitables.</p>
<p>Ce n'est qu'à ces conditions que l'euro sortira renforcé de la crise de la dette. Il n'y a pas d'alternative sérieuse à l'euro commun. L'euro symbolise l'Europe d'aujourd'hui. Un échec de l'euro serait un revers fatal pour l'Europe.</p>
-<hr></hr><p>
-Appel Frank (Deutsche Post) ; Aschenbroich Jacques (Valeo) ; Berger Roland (Roland Berger Strategy Consultants) ; Bock Kurt (BASF) ; Bories Christel (Constellium) ; Borsig Clemens (Deutsche Bank) ; Brunck Robert (CGG Veritas) ; Buffet Patrick (Eramet) ; Burda Hubert (Hubert Burda Media Holding) ; Caparros Alain (Rewe group) ; Clamadieu Jean-Pierre (Rhodia) ; Cromme Gerhard (ThyssenKrupp) ; Crouzet Philippe (Vallourec) ; de Chalendar Pierre-André (Saint-Gobain) ; de Margerie Christophe (Total) ; de Romanet Augustin (Caisse des dépôts et consignations) ; Degenhart Elmar (Continental) ; Diekmann Michael (Allianz) ; Engel Klaus (Evonik Industries) ; Fehrenbach Franz (Robert Bosch) ; Frérot Antoine (Veolia <a href="http://www.lemonde.fr/environnement/" title="Toute l’actualité Environnement">Environnement</a>) ; Hagemann Snabe Jim (SAP) ; Henrot François (Groupe Rothschild Cie Banque) ; Hermelin Paul (Cap Gemini) ; Kormann Hermut (Lazard) ; Kron Patrick (Alstom) ; Lachmann Henri (Schneider Electric) ; Lafont Bruno (Lafarge) ; Lauvergeon Anne (Areva) ; Lévy Maurice (Publicis Groupe SA) ; Lévy Jean-Bernard (Vivendi) ; Löscher Peter (Siemens) ; Mestrallet Gérard (GDF Suez) ; Obermann René (Deutsche Telekom) ;Oetker Arend (Dr Arend Oetker Holding) ; Oudéa Frédéric (Société Générale) ; Potier Benoit (Air Liquide) ; Ranque Denis (Cercle de l'<a href="http://www.lemonde.fr/industrie/" title="Toute l’actualité industrie">industrie</a>/Technicolor) ; Reithofer Norbert (BMW) ; Reitzle Wolfgang (Linde) ; Richard Stéphane (France Telecom) ; Rollier Michel (Michelin) ; Rose Frédéric (Technicolor) ; Schnepp Gilles (Legrand) ; Spinetta Jean-Cyril (Air-<a href="http://www.lemonde.fr/europeennes-france/" title="Toute l’actualité France">France</a> KLM)  ; Teyssen Johannes (E.ON)  ; Thumann Jürgen (BusinessEurope) ; Verwaayen Ben (Alcatel-Lucent) ; Viehbacher Chris (Sanofi) ; Zetsche Dieter (Daimler).<br></br></p></div> \ No newline at end of file
+<hr><p>
+Appel Frank (Deutsche Post) ; Aschenbroich Jacques (Valeo) ; Berger Roland (Roland Berger Strategy Consultants) ; Bock Kurt (BASF) ; Bories Christel (Constellium) ; Borsig Clemens (Deutsche Bank) ; Brunck Robert (CGG Veritas) ; Buffet Patrick (Eramet) ; Burda Hubert (Hubert Burda Media Holding) ; Caparros Alain (Rewe group) ; Clamadieu Jean-Pierre (Rhodia) ; Cromme Gerhard (ThyssenKrupp) ; Crouzet Philippe (Vallourec) ; de Chalendar Pierre-André (Saint-Gobain) ; de Margerie Christophe (Total) ; de Romanet Augustin (Caisse des dépôts et consignations) ; Degenhart Elmar (Continental) ; Diekmann Michael (Allianz) ; Engel Klaus (Evonik Industries) ; Fehrenbach Franz (Robert Bosch) ; Frérot Antoine (Veolia <a href="http://www.lemonde.fr/environnement/" title="Toute l’actualité Environnement">Environnement</a>) ; Hagemann Snabe Jim (SAP) ; Henrot François (Groupe Rothschild Cie Banque) ; Hermelin Paul (Cap Gemini) ; Kormann Hermut (Lazard) ; Kron Patrick (Alstom) ; Lachmann Henri (Schneider Electric) ; Lafont Bruno (Lafarge) ; Lauvergeon Anne (Areva) ; Lévy Maurice (Publicis Groupe SA) ; Lévy Jean-Bernard (Vivendi) ; Löscher Peter (Siemens) ; Mestrallet Gérard (GDF Suez) ; Obermann René (Deutsche Telekom) ;Oetker Arend (Dr Arend Oetker Holding) ; Oudéa Frédéric (Société Générale) ; Potier Benoit (Air Liquide) ; Ranque Denis (Cercle de l'<a href="http://www.lemonde.fr/industrie/" title="Toute l’actualité industrie">industrie</a>/Technicolor) ; Reithofer Norbert (BMW) ; Reitzle Wolfgang (Linde) ; Richard Stéphane (France Telecom) ; Rollier Michel (Michelin) ; Rose Frédéric (Technicolor) ; Schnepp Gilles (Legrand) ; Spinetta Jean-Cyril (Air-<a href="http://www.lemonde.fr/europeennes-france/" title="Toute l’actualité France">France</a> KLM)&nbsp; ; Teyssen Johannes (E.ON)&nbsp; ; Thumann Jürgen (BusinessEurope) ; Verwaayen Ben (Alcatel-Lucent) ; Viehbacher Chris (Sanofi) ; Zetsche Dieter (Daimler).<br>
+ </p></div> \ No newline at end of file
diff --git a/test/test-pages/liberation-1/expected-metadata.json b/test/test-pages/liberation-1/expected-metadata.json
index 5f2b7b5..8ad2b2c 100644
--- a/test/test-pages/liberation-1/expected-metadata.json
+++ b/test/test-pages/liberation-1/expected-metadata.json
@@ -1,5 +1,5 @@
{
- "Author": "AFP",
+ "Author": "Par Sébastien Farcis",
"Direction": null,
"Excerpt": "Laurent Fabius a accueilli jeudi matin à Roissy un premier avion spécial ramenant des rescapés.",
"Image": "http:\/\/md1.libe.com\/photo\/755923-000_hkg10175905.jpg?modified_at=1430371146&amp;width=750",
diff --git a/test/test-pages/liberation-1/expected.html b/test/test-pages/liberation-1/expected.html
index 889c2b9..e123ff2 100644
--- a/test/test-pages/liberation-1/expected.html
+++ b/test/test-pages/liberation-1/expected.html
@@ -1,13 +1,20 @@
-<section id="news-article"><article itemscope="" itemtype="http://schema.org/NewsArticle"><div id="article-body" itemprop="articleBody">
+<section id="news-article">
+ <article itemscope itemtype="http://schema.org/NewsArticle">
+
+
+
+ <div itemprop="articleBody" id="article-body">
+
<div>
- <p>Un troisième Français a été tué dans le tremblement de terre samedi au Népal, emporté par une avalanche, <a href="http://www.liberation.fr/video/2015/04/30/laurent-fabius-plus-de-200-francais-n-ont-pas-ete-retrouves_1278687" target="_blank">a déclaré jeudi le ministre des Affaires étrangères</a>. Les autorités françaises sont toujours sans nouvelles <em>«d’encore plus de 200» </em>personnes. <em>«Pour certains d’entre eux on est très interrogatif»</em>, a ajouté Laurent Fabius. Il accueillait à Roissy un premier avion spécial ramenant des rescapés. <a href="http://www.liberation.fr/video/2015/04/30/seisme-au-nepal-soulages-mais-inquiets-206-survivants-de-retour-en-france_1278758" target="_blank">L’Airbus A350 affrété par les autorités françaises s’est posé peu avant 5h45</a> avec à son bord 206 passagers, dont 12 enfants et 26 blessés, selon une source du Quai d’Orsay. Quasiment tous sont français, à l’exception d’une quinzaine de ressortissants allemands, suisses, italiens, portugais ou encore turcs. Des psychologues, une équipe médicale et des personnels du centre de crise du Quai d’Orsay les attendent.</p>
- <p>L’appareil, mis à disposition par Airbus, était arrivé à Katmandou mercredi matin avec 55 personnels de santé et humanitaires, ainsi que 25 tonnes de matériel (abris, médicaments, aide alimentaire). Un deuxième avion dépêché par Paris, qui était immobilisé aux Emirats depuis mardi avec 20 tonnes de matériel, est arrivé jeudi à Katmandou, <a href="http://www.liberation.fr/monde/2015/04/29/embouteillages-et-retards-a-l-aeroport-de-katmandou_1276612" target="_blank">dont le petit aéroport est engorgé</a> par le trafic et l’afflux d’aide humanitaire. Il devait lui aussi ramener des Français, <em>«les plus éprouvés»</em> par la catastrophe et les <em>«plus vulnérables (blessés, familles avec enfants)»</em>, selon le ministère des Affaires étrangères.</p>
- <p>2 209 Français ont été localisés sains et saufs tandis que 393 n’ont pas encore pu être joints, selon le Quai d’Orsay. Environ 400 Français ont demandé à être rapatriés dans les vols mis en place par la France.</p>
- <p>Le séisme a fait près de 5 500 morts et touche huit des 28 millions d’habitants du Népal. Des dizaines de milliers de personnes sont sans abri.</p>
+ <p>Un troisième Français a été tué dans le tremblement de terre samedi au Népal, emporté par une avalanche, <a href="http://www.liberation.fr/video/2015/04/30/laurent-fabius-plus-de-200-francais-n-ont-pas-ete-retrouves_1278687" target="_blank">a déclaré jeudi le ministre des Affaires étrangères</a>.&nbsp;Les autorités françaises sont toujours sans nouvelles <em>«d’encore plus de 200»&nbsp;</em>personnes.&nbsp;<em>«Pour certains d’entre eux on est très interrogatif»</em>, a ajouté&nbsp;Laurent Fabius. Il accueillait à Roissy un premier avion spécial ramenant des&nbsp;rescapés. <a href="http://www.liberation.fr/video/2015/04/30/seisme-au-nepal-soulages-mais-inquiets-206-survivants-de-retour-en-france_1278758" target="_blank">L’Airbus A350 affrété par les autorités françaises s’est posé peu avant 5h45</a> avec à son bord 206&nbsp;passagers, dont 12&nbsp;enfants et 26&nbsp;blessés, selon une source du Quai d’Orsay. Quasiment tous sont français, à l’exception d’une quinzaine de ressortissants allemands, suisses, italiens, portugais ou encore turcs. Des psychologues, une équipe médicale et des personnels du centre de crise du Quai d’Orsay les attendent.</p>
+ <p>L’appareil, mis à disposition par Airbus, était arrivé à Katmandou mercredi matin avec 55&nbsp;personnels de santé et humanitaires, ainsi que 25&nbsp;tonnes de matériel (abris, médicaments, aide alimentaire). Un deuxième avion dépêché par Paris, qui était immobilisé aux Emirats depuis mardi avec 20&nbsp;tonnes de matériel, est arrivé jeudi à Katmandou, <a href="http://www.liberation.fr/monde/2015/04/29/embouteillages-et-retards-a-l-aeroport-de-katmandou_1276612" target="_blank">dont le petit aéroport est engorgé</a> par le trafic et l’afflux d’aide humanitaire. Il devait lui aussi ramener des Français, <em>«les plus éprouvés»</em> par la catastrophe et les <em>«plus vulnérables (blessés, familles avec enfants)»</em>, selon le ministère des Affaires étrangères.</p>
+ <p>2 209 Français ont été localisés sains et saufs tandis que 393 n’ont pas encore pu être joints, selon le Quai d’Orsay. Environ 400&nbsp;Français ont demandé à être rapatriés dans les vols mis en place par la France.</p>
+ <p>Le séisme a fait près de 5&nbsp;500 morts et touche huit des 28 millions d’habitants du Népal. Des dizaines de milliers de personnes sont sans abri.</p>
<p>
- <iframe data-aspect-ratio="0.5625" data-responsive="1" frameborder="0" src="http://www.dailymotion.com/embed/video/x2oikl3" width="100%"></iframe>
- <br></br><em></em></p>
+ <iframe src="http://www.dailymotion.com/embed/video/x2oikl3" frameborder="0" width="100%" data-aspect-ratio="0.5625" data-responsive="1"></iframe>
+ <br><em></em></p>
</div>
</div>
- </article></section> \ No newline at end of file
+ </article>
+ </section> \ No newline at end of file
diff --git a/test/test-pages/lifehacker-post-comment-load/expected.html b/test/test-pages/lifehacker-post-comment-load/expected.html
index 2f862a9..758a827 100644
--- a/test/test-pages/lifehacker-post-comment-load/expected.html
+++ b/test/test-pages/lifehacker-post-comment-load/expected.html
@@ -1,4 +1,15 @@
-<div><p data-textannotation-id="58a492029dca5e6a6e481d21b6b2933a"><span><img alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--hqqO9fze--/n1s6c2m6kc07iqdyllj6.jpg" data-chomp-id="n1s6c2m6kc07iqdyllj6" data-format="jpg" height="358" src="http://i.kinja-img.com/gawker-media/image/upload/s--hqqO9fze--/n1s6c2m6kc07iqdyllj6.jpg" width="636"></img></span></p><p data-textannotation-id="a043044f9b3e31fd85568b17e3b1b5f3"><span>We all buy things from time to time that we don't really need. It's okay to appeal to your wants every once in a while, as long as you're in control. If you struggle with clutter, impulse buys, and buyer's remorse, here's how to put your mind in the right place before you even set foot in a store.</span></p>
+<div><p data-textannotation-id="58a492029dca5e6a6e481d21b6b2933a"><span><img width="636" height="358" data-format="jpg" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--hqqO9fze--/n1s6c2m6kc07iqdyllj6.jpg" data-chomp-id="n1s6c2m6kc07iqdyllj6" alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" src="http://i.kinja-img.com/gawker-media/image/upload/s--hqqO9fze--/n1s6c2m6kc07iqdyllj6.jpg"></span></p>
+
+
+
+
+
+
+
+
+
+
+<p data-textannotation-id="a043044f9b3e31fd85568b17e3b1b5f3"><span>We all buy things from time to time that we don't really need. It's okay to appeal to your wants every once in a while, as long as you're in control. If you struggle with clutter, impulse buys, and buyer's remorse, here's how to put your mind in the right place before you even set foot in a store.</span></p>
@@ -21,7 +32,7 @@
-<p data-textannotation-id="268f7702467d33e3b0972dd09f1cf0a6"><span><img alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--QeUTCiuW--/o4dpyrcbiqyfrc3bxx6p.jpg" data-chomp-id="o4dpyrcbiqyfrc3bxx6p" data-format="jpg" height="358" src="http://i.kinja-img.com/gawker-media/image/upload/s--QeUTCiuW--/o4dpyrcbiqyfrc3bxx6p.jpg" width="636"></img></span></p>
+<p data-textannotation-id="268f7702467d33e3b0972dd09f1cf0a6"><span><img width="636" height="358" data-format="jpg" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--QeUTCiuW--/o4dpyrcbiqyfrc3bxx6p.jpg" data-chomp-id="o4dpyrcbiqyfrc3bxx6p" alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" src="http://i.kinja-img.com/gawker-media/image/upload/s--QeUTCiuW--/o4dpyrcbiqyfrc3bxx6p.jpg"></span></p>
@@ -43,7 +54,48 @@
-<ul><li data-textannotation-id="cd748c8b681c781cdd728c5e17b5e05f"><strong>Color:</strong> Stores use color to make products attractive and eye-catching, but they also use color on price labels. Red stands out and can encourage taking action, that's why it's commonly associated with sale signage and advertising. When you see red, remember what they're trying to do to your brain with that color. You don't to buy something just because it's on sale.</li><li data-textannotation-id="29c11c0aec305293be282aa91f8fbc3d"><strong>Navigation Roadblocks:</strong> Stores force you to walk around stuff you don't need to find the stuff you are really after. Have a list of what you need before you go in, go straight to it, and imagine it's the only item in the store.</li><li data-textannotation-id="252dc7e4a924d12c2d913861ab118bf5"><strong>The Touch Factor:</strong> Stores place items they want to sell in easy to reach locations and encourage you to touch them. Don't do it! As soon as you pick something up, you're more likely to buy it because your mind suddenly takes ownership of the object. Don't pick anything up and don't play with display items.</li><li data-textannotation-id="05dde4d44056798acff5890759134a64"><strong>Scents and Sounds:</strong> You'll probably hear classic, upbeat tunes when you walk into a store. The upbeat music makes you happy and excited, while playing familiar songs makes you feel comfortable. They also use pleasant smells to put your mind at ease. A happy, comfortable mind at ease is a dangerous combination for your brain when shopping. There's not much you can do to avoid this unless you shop online, but it's good to be aware of it.</li></ul><p data-textannotation-id="1eb4a4df2a670927c5d9e9641ebf9d40">And sure, we can blame the stores all we want, but you won't change how they operate—you can only be aware of how your <a href="http://lifehacker.com/how-stores-manipulate-your-senses-so-you-spend-more-mon-475987594" x-inset="1">brain is falling for their tricks</a>. Even without the stores, <a href="http://lifehacker.com/5968125/how-your-brain-corrupts-your-shopping-choices" x-inset="1">your brain is working against you on its own</a>, thanks to some simple cognitive biases.</p>
+<ul><li data-textannotation-id="cd748c8b681c781cdd728c5e17b5e05f"><strong>Color:</strong> Stores use color to make products attractive and eye-catching, but they also use color on price labels. Red stands out and can encourage taking action, that's why it's commonly associated with sale signage and advertising. When you see red, remember what they're trying to do to your brain with that color. You don't to buy something just because it's on sale.</li><li data-textannotation-id="29c11c0aec305293be282aa91f8fbc3d"><strong>Navigation Roadblocks:</strong> Stores force you to walk around stuff you don't need to find the stuff you are really after. Have a list of what you need before you go in, go straight to it, and imagine it's the only item in the store.</li><li data-textannotation-id="252dc7e4a924d12c2d913861ab118bf5"><strong>The Touch Factor:</strong> Stores place items they want to sell in easy to reach locations and encourage you to touch them. Don't do it! As soon as you pick something up, you're more likely to buy it because your mind suddenly takes ownership of the object. Don't pick anything up and don't play with display items.</li><li data-textannotation-id="05dde4d44056798acff5890759134a64"><strong>Scents and Sounds:</strong> You'll probably hear classic, upbeat tunes when you walk into a store. The upbeat music makes you happy and excited, while playing familiar songs makes you feel comfortable. They also use pleasant smells to put your mind at ease. A happy, comfortable mind at ease is a dangerous combination for your brain when shopping. There's not much you can do to avoid this unless you shop online, but it's good to be aware of it.</li></ul>
+
+
+
+
+
+
+
+
+
+
+<p data-textannotation-id="1eb4a4df2a670927c5d9e9641ebf9d40">And sure, we can blame the stores all we want, but you won't change how they operate—you can only be aware of how your <a href="http://lifehacker.com/how-stores-manipulate-your-senses-so-you-spend-more-mon-475987594" x-inset="1">brain is falling for their tricks</a>. Even without the stores, <a href="http://lifehacker.com/5968125/how-your-brain-corrupts-your-shopping-choices" x-inset="1">your brain is working against you on its own</a>, thanks to some simple cognitive biases.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -78,7 +130,7 @@
-<p data-textannotation-id="8044cf9aab698fd28931acd90ba96f7a"><span><img alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--mlR3Ku0_--/xrhkwleyurcizy4akiae.jpg" data-chomp-id="xrhkwleyurcizy4akiae" data-format="jpg" height="358" src="http://i.kinja-img.com/gawker-media/image/upload/s--mlR3Ku0_--/xrhkwleyurcizy4akiae.jpg" width="636"></img></span></p>
+<p data-textannotation-id="8044cf9aab698fd28931acd90ba96f7a"><span><img width="636" height="358" data-format="jpg" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--mlR3Ku0_--/xrhkwleyurcizy4akiae.jpg" data-chomp-id="xrhkwleyurcizy4akiae" alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" src="http://i.kinja-img.com/gawker-media/image/upload/s--mlR3Ku0_--/xrhkwleyurcizy4akiae.jpg"></span></p>
@@ -102,6 +154,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<p data-textannotation-id="bbe57b7aa20b48550e5f66b7c530822c">The purpose of this exercise is twofold: you see what you already have and don't need to ever buy again, and you get to see what you shouldn't have bought in the first place. As you list everything out, separate items into categories. It's extremely important that you are as honest with yourself as possible while you do this. It's also important you actually write this all down or type it all out. Here is the first set of categories to separate everything into:</p>
@@ -113,18 +195,40 @@
-<ul><li data-textannotation-id="8d7dc912152eddd0e3d56e28ad79e6f2"><strong>Need:</strong> You absolutely need this item to get by on a day to day basis.</li><li data-textannotation-id="6f60a79627f0746d1f611999251e9f1b"><strong>Sometimes Need:</strong> You don't need this item every day, but you use it on a somewhat regular basis.</li><li data-textannotation-id="54e10b108f95548966b657bd90fdbed4"><strong>Want:</strong> You bought this item because you wanted it, not because you needed it.</li><li data-textannotation-id="26c461a85fbc78651be442e205cac58b"><strong>Crap:</strong> You don't have a good reason why you have it and you already know it needs to go (there's probably a few of these items, at least).</li></ul><p data-textannotation-id="5743cf753f68fd8ee3443cc0f8e815dd">Leave the things you listed as "needs" alone, put your stuff listed as "crap" in a pile or box to go bye-bye, and move your attention back to your "sometimes need" and "want" lists. You need to go back over both of those lists because you probably fudged some of the listings, either subconsciously or intentionally. Now ask yourself these three questions as you go through both the "sometimes need" and "want" lists:</p>
+<ul><li data-textannotation-id="8d7dc912152eddd0e3d56e28ad79e6f2"><strong>Need:</strong> You absolutely need this item to get by on a day to day basis.</li><li data-textannotation-id="6f60a79627f0746d1f611999251e9f1b"><strong>Sometimes Need:</strong> You don't need this item every day, but you use it on a somewhat regular basis.</li><li data-textannotation-id="54e10b108f95548966b657bd90fdbed4"><strong>Want:</strong> You bought this item because you wanted it, not because you needed it.</li><li data-textannotation-id="26c461a85fbc78651be442e205cac58b"><strong>Crap:</strong> You don't have a good reason why you have it and you already know it needs to go (there's probably a few of these items, at least).</li></ul>
+
+
+
+
+
+<p data-textannotation-id="5743cf753f68fd8ee3443cc0f8e815dd">Leave the things you listed as "needs" alone, put your stuff listed as "crap" in a pile or box to go bye-bye, and move your attention back to your "sometimes need" and "want" lists. You need to go back over both of those lists because you probably fudged some of the listings, either subconsciously or intentionally. Now ask yourself these three questions as you go through both the "sometimes need" and "want" lists:</p>
-<ul><li data-textannotation-id="2048d6c0436bd34811442d6df32989a4">When was the last time I used this?</li><li data-textannotation-id="3f4b3686d822171b35e27bf1afde530b">When will I use this again?</li><li data-textannotation-id="63728605cc4fa66f5b225f674d12bbff">Does this item <a href="http://lifehacker.com/declutter-by-asking-one-question-does-this-spark-joy-1651256422">bring you joy</a>?</li></ul><p data-textannotation-id="816cd504161fecc6f3e173779b33d5db">Remember to be honest and adjust your lists accordingly. There's nothing wrong with keeping things you wanted. Material items can <a href="http://lifehacker.com/how-to-buy-happiness-the-purchases-most-likely-to-brin-1681780686">bring happiness to many people</a>, but make sure the items on your "want" list actively provide you joy and are being used. If an item doesn't get much use or doesn't make you happy, add it to the "crap" list.</p>
+
+
+
+
+
+<ul><li data-textannotation-id="2048d6c0436bd34811442d6df32989a4">When was the last time I used this?</li><li data-textannotation-id="3f4b3686d822171b35e27bf1afde530b">When will I use this again?</li><li data-textannotation-id="63728605cc4fa66f5b225f674d12bbff">Does this item <a href="http://lifehacker.com/declutter-by-asking-one-question-does-this-spark-joy-1651256422">bring you joy</a>?</li></ul>
+
+
+
+
+
+
+
+
+
+
+<p data-textannotation-id="816cd504161fecc6f3e173779b33d5db">Remember to be honest and adjust your lists accordingly. There's nothing wrong with keeping things you wanted. Material items can <a href="http://lifehacker.com/how-to-buy-happiness-the-purchases-most-likely-to-brin-1681780686">bring happiness to many people</a>, but make sure the items on your "want" list actively provide you joy and are being used. If an item doesn't get much use or doesn't make you happy, add it to the "crap" list.</p>
@@ -157,7 +261,7 @@
-<p data-textannotation-id="bc2f55587bf4ab07a1852a8d26217233"><span><img alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--Tacb0tyW--/qodag11euf2npkawkn9v.jpg" data-chomp-id="qodag11euf2npkawkn9v" data-format="jpg" height="358" src="http://i.kinja-img.com/gawker-media/image/upload/s--Tacb0tyW--/qodag11euf2npkawkn9v.jpg" width="636"></img></span></p>
+<p data-textannotation-id="bc2f55587bf4ab07a1852a8d26217233"><span><img width="636" height="358" data-format="jpg" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--Tacb0tyW--/qodag11euf2npkawkn9v.jpg" data-chomp-id="qodag11euf2npkawkn9v" alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" src="http://i.kinja-img.com/gawker-media/image/upload/s--Tacb0tyW--/qodag11euf2npkawkn9v.jpg"></span></p>
@@ -201,7 +305,7 @@
-<p data-textannotation-id="bafeac1c3808e0d2900190979f058b2c"><span><img alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--x9hLbIKJ--/imfc9ybqfw0jmztbhfrh.jpg" data-chomp-id="imfc9ybqfw0jmztbhfrh" data-format="jpg" height="358" src="http://i.kinja-img.com/gawker-media/image/upload/s--x9hLbIKJ--/imfc9ybqfw0jmztbhfrh.jpg" width="636"></img></span></p>
+<p data-textannotation-id="bafeac1c3808e0d2900190979f058b2c"><span><img width="636" height="358" data-format="jpg" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--x9hLbIKJ--/imfc9ybqfw0jmztbhfrh.jpg" data-chomp-id="imfc9ybqfw0jmztbhfrh" alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" src="http://i.kinja-img.com/gawker-media/image/upload/s--x9hLbIKJ--/imfc9ybqfw0jmztbhfrh.jpg"></span></p>
@@ -245,7 +349,7 @@
-<p data-textannotation-id="64f5c7155ad89bd2835399d33c1ae28a"><span><img alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--6NwBgQLy--/afy7n45jfvsjdmmhonct.jpg" data-chomp-id="afy7n45jfvsjdmmhonct" data-format="jpg" height="358" src="http://i.kinja-img.com/gawker-media/image/upload/s--6NwBgQLy--/afy7n45jfvsjdmmhonct.jpg" width="636"></img></span></p>
+<p data-textannotation-id="64f5c7155ad89bd2835399d33c1ae28a"><span><img width="636" height="358" data-format="jpg" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--6NwBgQLy--/afy7n45jfvsjdmmhonct.jpg" data-chomp-id="afy7n45jfvsjdmmhonct" alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" src="http://i.kinja-img.com/gawker-media/image/upload/s--6NwBgQLy--/afy7n45jfvsjdmmhonct.jpg"></span></p>
@@ -289,7 +393,7 @@
-<p data-textannotation-id="ff438b878771354bb7f6d065ff50dbb2"><span><img alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--ciqk42G0--/s3pq8vjrvyjgne4lfsod.jpg" data-chomp-id="s3pq8vjrvyjgne4lfsod" data-format="jpg" height="358" src="http://i.kinja-img.com/gawker-media/image/upload/s--ciqk42G0--/s3pq8vjrvyjgne4lfsod.jpg" width="636"></img></span></p>
+<p data-textannotation-id="ff438b878771354bb7f6d065ff50dbb2"><span><img width="636" height="358" data-format="jpg" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--ciqk42G0--/s3pq8vjrvyjgne4lfsod.jpg" data-chomp-id="s3pq8vjrvyjgne4lfsod" alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" src="http://i.kinja-img.com/gawker-media/image/upload/s--ciqk42G0--/s3pq8vjrvyjgne4lfsod.jpg"></span></p>
@@ -311,7 +415,18 @@
-<ul><li data-textannotation-id="fcfd78b1619bdf0b7330f4b40efb899d">Is this a planned purchase?</li><li data-textannotation-id="c16e7d5feae7cc2c3c6a8dd312ea206f">Will it end up in the "crap" list picture one day?</li><li data-textannotation-id="54d877fdee56080c87508fc9e6402889"><a href="http://lifehacker.com/prevent-clutter-by-asking-yourself-where-items-will-go-1649480461">Where am I going to put it</a>?</li><li data-textannotation-id="59d5245217c84e6b2b2969b3492f2f2d">Have I included this in my budget?</li><li data-textannotation-id="8fe1582808b4d89f5c88c2708744d27d"><em>Why</em> do I want/need it?</li></ul><p data-textannotation-id="0162d779382cdc7de908fc1488af3940">Custom build your test to hit all of your weaknesses. If you make a lot of impulse buys, include questions that address that. If you experience a lot of buyer's remorse, include a lot of questions that make you think about the use of item after you buy it. If buying the latest and greatest technology is your weakness, Joshua Becker at Becoming Minimalist suggests you ask yourself <a href="http://www.becomingminimalist.com/marriage-hacks/" target="_blank">what problem the piece of tech solves</a>. If you can't think of anything it solves or if you already have something that solves it, you don't need it. Be thorough and build a test that you can run through your mind every time you consider buying something.</p>
+<ul><li data-textannotation-id="fcfd78b1619bdf0b7330f4b40efb899d">Is this a planned purchase?</li><li data-textannotation-id="c16e7d5feae7cc2c3c6a8dd312ea206f">Will it end up in the "crap" list picture one day?</li><li data-textannotation-id="54d877fdee56080c87508fc9e6402889"><a href="http://lifehacker.com/prevent-clutter-by-asking-yourself-where-items-will-go-1649480461">Where am I going to put it</a>?</li><li data-textannotation-id="59d5245217c84e6b2b2969b3492f2f2d">Have I included this in my budget?</li><li data-textannotation-id="8fe1582808b4d89f5c88c2708744d27d"><em>Why</em> do I want/need it?</li></ul>
+
+
+
+
+
+
+
+
+
+
+<p data-textannotation-id="0162d779382cdc7de908fc1488af3940">Custom build your test to hit all of your weaknesses. If you make a lot of impulse buys, include questions that address that. If you experience a lot of buyer's remorse, include a lot of questions that make you think about the use of item after you buy it. If buying the latest and greatest technology is your weakness, Joshua Becker at Becoming Minimalist suggests you ask yourself <a target="_blank" href="http://www.becomingminimalist.com/marriage-hacks/">what problem the piece of tech solves</a>. If you can't think of anything it solves or if you already have something that solves it, you don't need it. Be thorough and build a test that you can run through your mind every time you consider buying something.</p>
@@ -333,7 +448,7 @@
-<p data-textannotation-id="1d43712fc5ce8f156e4661cca5750575"><span><img alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--mtob1sjR--/y2ldv5eufb3jcrtfouye.jpg" data-chomp-id="y2ldv5eufb3jcrtfouye" data-format="jpg" height="358" src="http://i.kinja-img.com/gawker-media/image/upload/s--mtob1sjR--/y2ldv5eufb3jcrtfouye.jpg" width="636"></img></span></p>
+<p data-textannotation-id="1d43712fc5ce8f156e4661cca5750575"><span><img width="636" height="358" data-format="jpg" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--mtob1sjR--/y2ldv5eufb3jcrtfouye.jpg" data-chomp-id="y2ldv5eufb3jcrtfouye" alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" src="http://i.kinja-img.com/gawker-media/image/upload/s--mtob1sjR--/y2ldv5eufb3jcrtfouye.jpg"></span></p>
@@ -379,7 +494,37 @@
-<p data-textannotation-id="27385752c06848647540ad931892b21e">The last thing you should consider when it comes to impulse buys is "artificial replacement." As Trent Hamm at The Simple Dollar explains, artificial replacement can happen when you start to <a href="http://www.thesimpledollar.com/balancing-spending-and-time-how-time-frugality-can-save-you-lots-of-cash/" target="_blank">reduce the time</a> you get with your main interests:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<p data-textannotation-id="27385752c06848647540ad931892b21e">The last thing you should consider when it comes to impulse buys is "artificial replacement." As Trent Hamm at The Simple Dollar explains, artificial replacement can happen when you start to <a target="_blank" href="http://www.thesimpledollar.com/balancing-spending-and-time-how-time-frugality-can-save-you-lots-of-cash/">reduce the time</a> you get with your main interests:</p>
@@ -424,7 +569,7 @@
-<p data-textannotation-id="21154394d63f1943d01f2b717aa31115"><span><img alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--4Ajak63w--/atb9qm07fvvg7hqkumkw.jpg" data-chomp-id="atb9qm07fvvg7hqkumkw" data-format="jpg" height="358" src="http://i.kinja-img.com/gawker-media/image/upload/s--4Ajak63w--/atb9qm07fvvg7hqkumkw.jpg" width="636"></img></span></p>
+<p data-textannotation-id="21154394d63f1943d01f2b717aa31115"><span><img width="636" height="358" data-format="jpg" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--4Ajak63w--/atb9qm07fvvg7hqkumkw.jpg" data-chomp-id="atb9qm07fvvg7hqkumkw" alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" src="http://i.kinja-img.com/gawker-media/image/upload/s--4Ajak63w--/atb9qm07fvvg7hqkumkw.jpg"></span></p>
@@ -435,7 +580,7 @@
-<p data-textannotation-id="6141942e977cc058fd7a0fa06a3f7389">Once you've programmed your mind to stop buying crap you don't need, you'll have some extra cash to play with. Take all that money and start putting it toward your future and things you <em>will</em> need further down the road. You might need <a href="http://twocents.lifehacker.com/how-to-start-saving-for-a-home-down-payment-1541254056" target="_blank">a home</a>, a vehicle, or a way to retire, but none of that can happen until you start planning for it. </p>
+<p data-textannotation-id="6141942e977cc058fd7a0fa06a3f7389">Once you've programmed your mind to stop buying crap you don't need, you'll have some extra cash to play with. Take all that money and start putting it toward your future and things you <em>will</em> need further down the road. You might need <a target="_blank" href="http://twocents.lifehacker.com/how-to-start-saving-for-a-home-down-payment-1541254056">a home</a>, a vehicle, or a way to retire, but none of that can happen until you start planning for it. </p>
@@ -457,7 +602,38 @@
-<p data-textannotation-id="1106cb837deb2b6fc8e28ba98f078c27">With your debts whittled down, you should start an emergency fund. No matter how well you plan things, accidents and health emergencies can still happen. An emergency fund is designed to make those kinds of events more manageable. This type of savings account is strictly for when life throws you a curveball, but you can grow one pretty easily <a href="http://twocents.lifehacker.com/how-to-grow-an-emergency-fund-from-modest-savings-1638409351" target="_blank">with only modest savings</a>.</p>
+<p data-textannotation-id="1106cb837deb2b6fc8e28ba98f078c27">With your debts whittled down, you should start an emergency fund. No matter how well you plan things, accidents and health emergencies can still happen. An emergency fund is designed to make those kinds of events more manageable. This type of savings account is strictly for when life throws you a curveball, but you can grow one pretty easily <a target="_blank" href="http://twocents.lifehacker.com/how-to-grow-an-emergency-fund-from-modest-savings-1638409351">with only modest savings</a>.</p>
+
+
+
+
+
+
+
+
+
+
+<p data-textannotation-id="347c2a36f114a794d559d929da1b15b7">When you've paid off your debt and prepared yourself for troubled times, you can start saving for the big stuff. All that money you're not spending on crap anymore can be saved, invested, and compounded to let you buy comfort and security. If you don't know where to start, talk to a financial planner. Or create a simple, yet effective <a target="_blank" href="http://twocents.lifehacker.com/how-to-build-an-easy-beginner-set-and-forget-investm-1686878594" x-inset="1">"set and forget" investment portfolio</a>. You've worked hard to reprogram your mind, so make sure you reap the benefits for many years to come.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -468,7 +644,6 @@
-<p data-textannotation-id="347c2a36f114a794d559d929da1b15b7">When you've paid off your debt and prepared yourself for troubled times, you can start saving for the big stuff. All that money you're not spending on crap anymore can be saved, invested, and compounded to let you buy comfort and security. If you don't know where to start, talk to a financial planner. Or create a simple, yet effective <a href="http://twocents.lifehacker.com/how-to-build-an-easy-beginner-set-and-forget-investm-1686878594" target="_blank" x-inset="1">"set and forget" investment portfolio</a>. You've worked hard to reprogram your mind, so make sure you reap the benefits for many years to come.</p>
@@ -481,4 +656,4 @@
-<p data-textannotation-id="b54d87ffdace50f420c3a6ff0404cbf3"><em><small>Photos by <a href="http://www.shutterstock.com/pic-129762989/stock-vector-consumer.html?src=id&amp;ws=1" target="_blank">cmgirl</a> (Shutterstock), <a href="http://www.shutterstock.com/pic-227832739/stock-vector-hacker-icon-man-in-hoody-with-laptop-flat-isolated-on-dark-background-vector-illustration.html?src=id&amp;ws=1" target="_blank">Macrovector</a> (Shutterstock), <a href="https://www.flickr.com/photos/jetheriot/6186786217" target="_blank">J E Theriot</a>, <a href="https://www.flickr.com/photos/puuikibeach/15289861843" target="_blank">davidd</a>, <a href="https://www.flickr.com/photos/funfilledgeorgie/10922459733" target="_blank">George Redgrave</a>, <a href="https://www.flickr.com/photos/amslerpix/7252002214" target="_blank">David Amsler</a>, <a href="https://www.flickr.com/photos/amalakar/7299820870" target="_blank">Arup Malakar</a>, <a href="https://www.flickr.com/photos/lobsterstew/89644885" target="_blank">J B</a>, <a href="https://www.flickr.com/photos/jakerome/3298702453" target="_blank">jakerome</a>, <a href="http://401kcalculator.org/" target="_blank">401(K) 2012</a>.</small></em></p></div> \ No newline at end of file
+<p data-textannotation-id="b54d87ffdace50f420c3a6ff0404cbf3"><em><small>Photos by <a target="_blank" href="http://www.shutterstock.com/pic-129762989/stock-vector-consumer.html?src=id&amp;ws=1">cmgirl</a> (Shutterstock), <a target="_blank" href="http://www.shutterstock.com/pic-227832739/stock-vector-hacker-icon-man-in-hoody-with-laptop-flat-isolated-on-dark-background-vector-illustration.html?src=id&amp;ws=1">Macrovector</a> (Shutterstock), <a target="_blank" href="https://www.flickr.com/photos/jetheriot/6186786217">J E Theriot</a>, <a target="_blank" href="https://www.flickr.com/photos/puuikibeach/15289861843">davidd</a>, <a target="_blank" href="https://www.flickr.com/photos/funfilledgeorgie/10922459733">George Redgrave</a>, <a target="_blank" href="https://www.flickr.com/photos/amslerpix/7252002214">David Amsler</a>, <a target="_blank" href="https://www.flickr.com/photos/amalakar/7299820870">Arup Malakar</a>, <a target="_blank" href="https://www.flickr.com/photos/lobsterstew/89644885">J B</a>, <a target="_blank" href="https://www.flickr.com/photos/jakerome/3298702453">jakerome</a>, <a target="_blank" href="http://401kcalculator.org/">401(K) 2012</a>.</small></em></p></div> \ No newline at end of file
diff --git a/test/test-pages/lifehacker-working/expected.html b/test/test-pages/lifehacker-working/expected.html
index 2f862a9..758a827 100644
--- a/test/test-pages/lifehacker-working/expected.html
+++ b/test/test-pages/lifehacker-working/expected.html
@@ -1,4 +1,15 @@
-<div><p data-textannotation-id="58a492029dca5e6a6e481d21b6b2933a"><span><img alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--hqqO9fze--/n1s6c2m6kc07iqdyllj6.jpg" data-chomp-id="n1s6c2m6kc07iqdyllj6" data-format="jpg" height="358" src="http://i.kinja-img.com/gawker-media/image/upload/s--hqqO9fze--/n1s6c2m6kc07iqdyllj6.jpg" width="636"></img></span></p><p data-textannotation-id="a043044f9b3e31fd85568b17e3b1b5f3"><span>We all buy things from time to time that we don't really need. It's okay to appeal to your wants every once in a while, as long as you're in control. If you struggle with clutter, impulse buys, and buyer's remorse, here's how to put your mind in the right place before you even set foot in a store.</span></p>
+<div><p data-textannotation-id="58a492029dca5e6a6e481d21b6b2933a"><span><img width="636" height="358" data-format="jpg" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--hqqO9fze--/n1s6c2m6kc07iqdyllj6.jpg" data-chomp-id="n1s6c2m6kc07iqdyllj6" alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" src="http://i.kinja-img.com/gawker-media/image/upload/s--hqqO9fze--/n1s6c2m6kc07iqdyllj6.jpg"></span></p>
+
+
+
+
+
+
+
+
+
+
+<p data-textannotation-id="a043044f9b3e31fd85568b17e3b1b5f3"><span>We all buy things from time to time that we don't really need. It's okay to appeal to your wants every once in a while, as long as you're in control. If you struggle with clutter, impulse buys, and buyer's remorse, here's how to put your mind in the right place before you even set foot in a store.</span></p>
@@ -21,7 +32,7 @@
-<p data-textannotation-id="268f7702467d33e3b0972dd09f1cf0a6"><span><img alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--QeUTCiuW--/o4dpyrcbiqyfrc3bxx6p.jpg" data-chomp-id="o4dpyrcbiqyfrc3bxx6p" data-format="jpg" height="358" src="http://i.kinja-img.com/gawker-media/image/upload/s--QeUTCiuW--/o4dpyrcbiqyfrc3bxx6p.jpg" width="636"></img></span></p>
+<p data-textannotation-id="268f7702467d33e3b0972dd09f1cf0a6"><span><img width="636" height="358" data-format="jpg" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--QeUTCiuW--/o4dpyrcbiqyfrc3bxx6p.jpg" data-chomp-id="o4dpyrcbiqyfrc3bxx6p" alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" src="http://i.kinja-img.com/gawker-media/image/upload/s--QeUTCiuW--/o4dpyrcbiqyfrc3bxx6p.jpg"></span></p>
@@ -43,7 +54,48 @@
-<ul><li data-textannotation-id="cd748c8b681c781cdd728c5e17b5e05f"><strong>Color:</strong> Stores use color to make products attractive and eye-catching, but they also use color on price labels. Red stands out and can encourage taking action, that's why it's commonly associated with sale signage and advertising. When you see red, remember what they're trying to do to your brain with that color. You don't to buy something just because it's on sale.</li><li data-textannotation-id="29c11c0aec305293be282aa91f8fbc3d"><strong>Navigation Roadblocks:</strong> Stores force you to walk around stuff you don't need to find the stuff you are really after. Have a list of what you need before you go in, go straight to it, and imagine it's the only item in the store.</li><li data-textannotation-id="252dc7e4a924d12c2d913861ab118bf5"><strong>The Touch Factor:</strong> Stores place items they want to sell in easy to reach locations and encourage you to touch them. Don't do it! As soon as you pick something up, you're more likely to buy it because your mind suddenly takes ownership of the object. Don't pick anything up and don't play with display items.</li><li data-textannotation-id="05dde4d44056798acff5890759134a64"><strong>Scents and Sounds:</strong> You'll probably hear classic, upbeat tunes when you walk into a store. The upbeat music makes you happy and excited, while playing familiar songs makes you feel comfortable. They also use pleasant smells to put your mind at ease. A happy, comfortable mind at ease is a dangerous combination for your brain when shopping. There's not much you can do to avoid this unless you shop online, but it's good to be aware of it.</li></ul><p data-textannotation-id="1eb4a4df2a670927c5d9e9641ebf9d40">And sure, we can blame the stores all we want, but you won't change how they operate—you can only be aware of how your <a href="http://lifehacker.com/how-stores-manipulate-your-senses-so-you-spend-more-mon-475987594" x-inset="1">brain is falling for their tricks</a>. Even without the stores, <a href="http://lifehacker.com/5968125/how-your-brain-corrupts-your-shopping-choices" x-inset="1">your brain is working against you on its own</a>, thanks to some simple cognitive biases.</p>
+<ul><li data-textannotation-id="cd748c8b681c781cdd728c5e17b5e05f"><strong>Color:</strong> Stores use color to make products attractive and eye-catching, but they also use color on price labels. Red stands out and can encourage taking action, that's why it's commonly associated with sale signage and advertising. When you see red, remember what they're trying to do to your brain with that color. You don't to buy something just because it's on sale.</li><li data-textannotation-id="29c11c0aec305293be282aa91f8fbc3d"><strong>Navigation Roadblocks:</strong> Stores force you to walk around stuff you don't need to find the stuff you are really after. Have a list of what you need before you go in, go straight to it, and imagine it's the only item in the store.</li><li data-textannotation-id="252dc7e4a924d12c2d913861ab118bf5"><strong>The Touch Factor:</strong> Stores place items they want to sell in easy to reach locations and encourage you to touch them. Don't do it! As soon as you pick something up, you're more likely to buy it because your mind suddenly takes ownership of the object. Don't pick anything up and don't play with display items.</li><li data-textannotation-id="05dde4d44056798acff5890759134a64"><strong>Scents and Sounds:</strong> You'll probably hear classic, upbeat tunes when you walk into a store. The upbeat music makes you happy and excited, while playing familiar songs makes you feel comfortable. They also use pleasant smells to put your mind at ease. A happy, comfortable mind at ease is a dangerous combination for your brain when shopping. There's not much you can do to avoid this unless you shop online, but it's good to be aware of it.</li></ul>
+
+
+
+
+
+
+
+
+
+
+<p data-textannotation-id="1eb4a4df2a670927c5d9e9641ebf9d40">And sure, we can blame the stores all we want, but you won't change how they operate—you can only be aware of how your <a href="http://lifehacker.com/how-stores-manipulate-your-senses-so-you-spend-more-mon-475987594" x-inset="1">brain is falling for their tricks</a>. Even without the stores, <a href="http://lifehacker.com/5968125/how-your-brain-corrupts-your-shopping-choices" x-inset="1">your brain is working against you on its own</a>, thanks to some simple cognitive biases.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -78,7 +130,7 @@
-<p data-textannotation-id="8044cf9aab698fd28931acd90ba96f7a"><span><img alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--mlR3Ku0_--/xrhkwleyurcizy4akiae.jpg" data-chomp-id="xrhkwleyurcizy4akiae" data-format="jpg" height="358" src="http://i.kinja-img.com/gawker-media/image/upload/s--mlR3Ku0_--/xrhkwleyurcizy4akiae.jpg" width="636"></img></span></p>
+<p data-textannotation-id="8044cf9aab698fd28931acd90ba96f7a"><span><img width="636" height="358" data-format="jpg" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--mlR3Ku0_--/xrhkwleyurcizy4akiae.jpg" data-chomp-id="xrhkwleyurcizy4akiae" alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" src="http://i.kinja-img.com/gawker-media/image/upload/s--mlR3Ku0_--/xrhkwleyurcizy4akiae.jpg"></span></p>
@@ -102,6 +154,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<p data-textannotation-id="bbe57b7aa20b48550e5f66b7c530822c">The purpose of this exercise is twofold: you see what you already have and don't need to ever buy again, and you get to see what you shouldn't have bought in the first place. As you list everything out, separate items into categories. It's extremely important that you are as honest with yourself as possible while you do this. It's also important you actually write this all down or type it all out. Here is the first set of categories to separate everything into:</p>
@@ -113,18 +195,40 @@
-<ul><li data-textannotation-id="8d7dc912152eddd0e3d56e28ad79e6f2"><strong>Need:</strong> You absolutely need this item to get by on a day to day basis.</li><li data-textannotation-id="6f60a79627f0746d1f611999251e9f1b"><strong>Sometimes Need:</strong> You don't need this item every day, but you use it on a somewhat regular basis.</li><li data-textannotation-id="54e10b108f95548966b657bd90fdbed4"><strong>Want:</strong> You bought this item because you wanted it, not because you needed it.</li><li data-textannotation-id="26c461a85fbc78651be442e205cac58b"><strong>Crap:</strong> You don't have a good reason why you have it and you already know it needs to go (there's probably a few of these items, at least).</li></ul><p data-textannotation-id="5743cf753f68fd8ee3443cc0f8e815dd">Leave the things you listed as "needs" alone, put your stuff listed as "crap" in a pile or box to go bye-bye, and move your attention back to your "sometimes need" and "want" lists. You need to go back over both of those lists because you probably fudged some of the listings, either subconsciously or intentionally. Now ask yourself these three questions as you go through both the "sometimes need" and "want" lists:</p>
+<ul><li data-textannotation-id="8d7dc912152eddd0e3d56e28ad79e6f2"><strong>Need:</strong> You absolutely need this item to get by on a day to day basis.</li><li data-textannotation-id="6f60a79627f0746d1f611999251e9f1b"><strong>Sometimes Need:</strong> You don't need this item every day, but you use it on a somewhat regular basis.</li><li data-textannotation-id="54e10b108f95548966b657bd90fdbed4"><strong>Want:</strong> You bought this item because you wanted it, not because you needed it.</li><li data-textannotation-id="26c461a85fbc78651be442e205cac58b"><strong>Crap:</strong> You don't have a good reason why you have it and you already know it needs to go (there's probably a few of these items, at least).</li></ul>
+
+
+
+
+
+<p data-textannotation-id="5743cf753f68fd8ee3443cc0f8e815dd">Leave the things you listed as "needs" alone, put your stuff listed as "crap" in a pile or box to go bye-bye, and move your attention back to your "sometimes need" and "want" lists. You need to go back over both of those lists because you probably fudged some of the listings, either subconsciously or intentionally. Now ask yourself these three questions as you go through both the "sometimes need" and "want" lists:</p>
-<ul><li data-textannotation-id="2048d6c0436bd34811442d6df32989a4">When was the last time I used this?</li><li data-textannotation-id="3f4b3686d822171b35e27bf1afde530b">When will I use this again?</li><li data-textannotation-id="63728605cc4fa66f5b225f674d12bbff">Does this item <a href="http://lifehacker.com/declutter-by-asking-one-question-does-this-spark-joy-1651256422">bring you joy</a>?</li></ul><p data-textannotation-id="816cd504161fecc6f3e173779b33d5db">Remember to be honest and adjust your lists accordingly. There's nothing wrong with keeping things you wanted. Material items can <a href="http://lifehacker.com/how-to-buy-happiness-the-purchases-most-likely-to-brin-1681780686">bring happiness to many people</a>, but make sure the items on your "want" list actively provide you joy and are being used. If an item doesn't get much use or doesn't make you happy, add it to the "crap" list.</p>
+
+
+
+
+
+<ul><li data-textannotation-id="2048d6c0436bd34811442d6df32989a4">When was the last time I used this?</li><li data-textannotation-id="3f4b3686d822171b35e27bf1afde530b">When will I use this again?</li><li data-textannotation-id="63728605cc4fa66f5b225f674d12bbff">Does this item <a href="http://lifehacker.com/declutter-by-asking-one-question-does-this-spark-joy-1651256422">bring you joy</a>?</li></ul>
+
+
+
+
+
+
+
+
+
+
+<p data-textannotation-id="816cd504161fecc6f3e173779b33d5db">Remember to be honest and adjust your lists accordingly. There's nothing wrong with keeping things you wanted. Material items can <a href="http://lifehacker.com/how-to-buy-happiness-the-purchases-most-likely-to-brin-1681780686">bring happiness to many people</a>, but make sure the items on your "want" list actively provide you joy and are being used. If an item doesn't get much use or doesn't make you happy, add it to the "crap" list.</p>
@@ -157,7 +261,7 @@
-<p data-textannotation-id="bc2f55587bf4ab07a1852a8d26217233"><span><img alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--Tacb0tyW--/qodag11euf2npkawkn9v.jpg" data-chomp-id="qodag11euf2npkawkn9v" data-format="jpg" height="358" src="http://i.kinja-img.com/gawker-media/image/upload/s--Tacb0tyW--/qodag11euf2npkawkn9v.jpg" width="636"></img></span></p>
+<p data-textannotation-id="bc2f55587bf4ab07a1852a8d26217233"><span><img width="636" height="358" data-format="jpg" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--Tacb0tyW--/qodag11euf2npkawkn9v.jpg" data-chomp-id="qodag11euf2npkawkn9v" alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" src="http://i.kinja-img.com/gawker-media/image/upload/s--Tacb0tyW--/qodag11euf2npkawkn9v.jpg"></span></p>
@@ -201,7 +305,7 @@
-<p data-textannotation-id="bafeac1c3808e0d2900190979f058b2c"><span><img alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--x9hLbIKJ--/imfc9ybqfw0jmztbhfrh.jpg" data-chomp-id="imfc9ybqfw0jmztbhfrh" data-format="jpg" height="358" src="http://i.kinja-img.com/gawker-media/image/upload/s--x9hLbIKJ--/imfc9ybqfw0jmztbhfrh.jpg" width="636"></img></span></p>
+<p data-textannotation-id="bafeac1c3808e0d2900190979f058b2c"><span><img width="636" height="358" data-format="jpg" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--x9hLbIKJ--/imfc9ybqfw0jmztbhfrh.jpg" data-chomp-id="imfc9ybqfw0jmztbhfrh" alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" src="http://i.kinja-img.com/gawker-media/image/upload/s--x9hLbIKJ--/imfc9ybqfw0jmztbhfrh.jpg"></span></p>
@@ -245,7 +349,7 @@
-<p data-textannotation-id="64f5c7155ad89bd2835399d33c1ae28a"><span><img alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--6NwBgQLy--/afy7n45jfvsjdmmhonct.jpg" data-chomp-id="afy7n45jfvsjdmmhonct" data-format="jpg" height="358" src="http://i.kinja-img.com/gawker-media/image/upload/s--6NwBgQLy--/afy7n45jfvsjdmmhonct.jpg" width="636"></img></span></p>
+<p data-textannotation-id="64f5c7155ad89bd2835399d33c1ae28a"><span><img width="636" height="358" data-format="jpg" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--6NwBgQLy--/afy7n45jfvsjdmmhonct.jpg" data-chomp-id="afy7n45jfvsjdmmhonct" alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" src="http://i.kinja-img.com/gawker-media/image/upload/s--6NwBgQLy--/afy7n45jfvsjdmmhonct.jpg"></span></p>
@@ -289,7 +393,7 @@
-<p data-textannotation-id="ff438b878771354bb7f6d065ff50dbb2"><span><img alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--ciqk42G0--/s3pq8vjrvyjgne4lfsod.jpg" data-chomp-id="s3pq8vjrvyjgne4lfsod" data-format="jpg" height="358" src="http://i.kinja-img.com/gawker-media/image/upload/s--ciqk42G0--/s3pq8vjrvyjgne4lfsod.jpg" width="636"></img></span></p>
+<p data-textannotation-id="ff438b878771354bb7f6d065ff50dbb2"><span><img width="636" height="358" data-format="jpg" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--ciqk42G0--/s3pq8vjrvyjgne4lfsod.jpg" data-chomp-id="s3pq8vjrvyjgne4lfsod" alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" src="http://i.kinja-img.com/gawker-media/image/upload/s--ciqk42G0--/s3pq8vjrvyjgne4lfsod.jpg"></span></p>
@@ -311,7 +415,18 @@
-<ul><li data-textannotation-id="fcfd78b1619bdf0b7330f4b40efb899d">Is this a planned purchase?</li><li data-textannotation-id="c16e7d5feae7cc2c3c6a8dd312ea206f">Will it end up in the "crap" list picture one day?</li><li data-textannotation-id="54d877fdee56080c87508fc9e6402889"><a href="http://lifehacker.com/prevent-clutter-by-asking-yourself-where-items-will-go-1649480461">Where am I going to put it</a>?</li><li data-textannotation-id="59d5245217c84e6b2b2969b3492f2f2d">Have I included this in my budget?</li><li data-textannotation-id="8fe1582808b4d89f5c88c2708744d27d"><em>Why</em> do I want/need it?</li></ul><p data-textannotation-id="0162d779382cdc7de908fc1488af3940">Custom build your test to hit all of your weaknesses. If you make a lot of impulse buys, include questions that address that. If you experience a lot of buyer's remorse, include a lot of questions that make you think about the use of item after you buy it. If buying the latest and greatest technology is your weakness, Joshua Becker at Becoming Minimalist suggests you ask yourself <a href="http://www.becomingminimalist.com/marriage-hacks/" target="_blank">what problem the piece of tech solves</a>. If you can't think of anything it solves or if you already have something that solves it, you don't need it. Be thorough and build a test that you can run through your mind every time you consider buying something.</p>
+<ul><li data-textannotation-id="fcfd78b1619bdf0b7330f4b40efb899d">Is this a planned purchase?</li><li data-textannotation-id="c16e7d5feae7cc2c3c6a8dd312ea206f">Will it end up in the "crap" list picture one day?</li><li data-textannotation-id="54d877fdee56080c87508fc9e6402889"><a href="http://lifehacker.com/prevent-clutter-by-asking-yourself-where-items-will-go-1649480461">Where am I going to put it</a>?</li><li data-textannotation-id="59d5245217c84e6b2b2969b3492f2f2d">Have I included this in my budget?</li><li data-textannotation-id="8fe1582808b4d89f5c88c2708744d27d"><em>Why</em> do I want/need it?</li></ul>
+
+
+
+
+
+
+
+
+
+
+<p data-textannotation-id="0162d779382cdc7de908fc1488af3940">Custom build your test to hit all of your weaknesses. If you make a lot of impulse buys, include questions that address that. If you experience a lot of buyer's remorse, include a lot of questions that make you think about the use of item after you buy it. If buying the latest and greatest technology is your weakness, Joshua Becker at Becoming Minimalist suggests you ask yourself <a target="_blank" href="http://www.becomingminimalist.com/marriage-hacks/">what problem the piece of tech solves</a>. If you can't think of anything it solves or if you already have something that solves it, you don't need it. Be thorough and build a test that you can run through your mind every time you consider buying something.</p>
@@ -333,7 +448,7 @@
-<p data-textannotation-id="1d43712fc5ce8f156e4661cca5750575"><span><img alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--mtob1sjR--/y2ldv5eufb3jcrtfouye.jpg" data-chomp-id="y2ldv5eufb3jcrtfouye" data-format="jpg" height="358" src="http://i.kinja-img.com/gawker-media/image/upload/s--mtob1sjR--/y2ldv5eufb3jcrtfouye.jpg" width="636"></img></span></p>
+<p data-textannotation-id="1d43712fc5ce8f156e4661cca5750575"><span><img width="636" height="358" data-format="jpg" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--mtob1sjR--/y2ldv5eufb3jcrtfouye.jpg" data-chomp-id="y2ldv5eufb3jcrtfouye" alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" src="http://i.kinja-img.com/gawker-media/image/upload/s--mtob1sjR--/y2ldv5eufb3jcrtfouye.jpg"></span></p>
@@ -379,7 +494,37 @@
-<p data-textannotation-id="27385752c06848647540ad931892b21e">The last thing you should consider when it comes to impulse buys is "artificial replacement." As Trent Hamm at The Simple Dollar explains, artificial replacement can happen when you start to <a href="http://www.thesimpledollar.com/balancing-spending-and-time-how-time-frugality-can-save-you-lots-of-cash/" target="_blank">reduce the time</a> you get with your main interests:</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<p data-textannotation-id="27385752c06848647540ad931892b21e">The last thing you should consider when it comes to impulse buys is "artificial replacement." As Trent Hamm at The Simple Dollar explains, artificial replacement can happen when you start to <a target="_blank" href="http://www.thesimpledollar.com/balancing-spending-and-time-how-time-frugality-can-save-you-lots-of-cash/">reduce the time</a> you get with your main interests:</p>
@@ -424,7 +569,7 @@
-<p data-textannotation-id="21154394d63f1943d01f2b717aa31115"><span><img alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--4Ajak63w--/atb9qm07fvvg7hqkumkw.jpg" data-chomp-id="atb9qm07fvvg7hqkumkw" data-format="jpg" height="358" src="http://i.kinja-img.com/gawker-media/image/upload/s--4Ajak63w--/atb9qm07fvvg7hqkumkw.jpg" width="636"></img></span></p>
+<p data-textannotation-id="21154394d63f1943d01f2b717aa31115"><span><img width="636" height="358" data-format="jpg" data-asset-url="http://i.kinja-img.com/gawker-media/image/upload/s--4Ajak63w--/atb9qm07fvvg7hqkumkw.jpg" data-chomp-id="atb9qm07fvvg7hqkumkw" alt="How to Program Your Mind to Stop Buying Crap You Don’t Need" src="http://i.kinja-img.com/gawker-media/image/upload/s--4Ajak63w--/atb9qm07fvvg7hqkumkw.jpg"></span></p>
@@ -435,7 +580,7 @@
-<p data-textannotation-id="6141942e977cc058fd7a0fa06a3f7389">Once you've programmed your mind to stop buying crap you don't need, you'll have some extra cash to play with. Take all that money and start putting it toward your future and things you <em>will</em> need further down the road. You might need <a href="http://twocents.lifehacker.com/how-to-start-saving-for-a-home-down-payment-1541254056" target="_blank">a home</a>, a vehicle, or a way to retire, but none of that can happen until you start planning for it. </p>
+<p data-textannotation-id="6141942e977cc058fd7a0fa06a3f7389">Once you've programmed your mind to stop buying crap you don't need, you'll have some extra cash to play with. Take all that money and start putting it toward your future and things you <em>will</em> need further down the road. You might need <a target="_blank" href="http://twocents.lifehacker.com/how-to-start-saving-for-a-home-down-payment-1541254056">a home</a>, a vehicle, or a way to retire, but none of that can happen until you start planning for it. </p>
@@ -457,7 +602,38 @@
-<p data-textannotation-id="1106cb837deb2b6fc8e28ba98f078c27">With your debts whittled down, you should start an emergency fund. No matter how well you plan things, accidents and health emergencies can still happen. An emergency fund is designed to make those kinds of events more manageable. This type of savings account is strictly for when life throws you a curveball, but you can grow one pretty easily <a href="http://twocents.lifehacker.com/how-to-grow-an-emergency-fund-from-modest-savings-1638409351" target="_blank">with only modest savings</a>.</p>
+<p data-textannotation-id="1106cb837deb2b6fc8e28ba98f078c27">With your debts whittled down, you should start an emergency fund. No matter how well you plan things, accidents and health emergencies can still happen. An emergency fund is designed to make those kinds of events more manageable. This type of savings account is strictly for when life throws you a curveball, but you can grow one pretty easily <a target="_blank" href="http://twocents.lifehacker.com/how-to-grow-an-emergency-fund-from-modest-savings-1638409351">with only modest savings</a>.</p>
+
+
+
+
+
+
+
+
+
+
+<p data-textannotation-id="347c2a36f114a794d559d929da1b15b7">When you've paid off your debt and prepared yourself for troubled times, you can start saving for the big stuff. All that money you're not spending on crap anymore can be saved, invested, and compounded to let you buy comfort and security. If you don't know where to start, talk to a financial planner. Or create a simple, yet effective <a target="_blank" href="http://twocents.lifehacker.com/how-to-build-an-easy-beginner-set-and-forget-investm-1686878594" x-inset="1">"set and forget" investment portfolio</a>. You've worked hard to reprogram your mind, so make sure you reap the benefits for many years to come.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -468,7 +644,6 @@
-<p data-textannotation-id="347c2a36f114a794d559d929da1b15b7">When you've paid off your debt and prepared yourself for troubled times, you can start saving for the big stuff. All that money you're not spending on crap anymore can be saved, invested, and compounded to let you buy comfort and security. If you don't know where to start, talk to a financial planner. Or create a simple, yet effective <a href="http://twocents.lifehacker.com/how-to-build-an-easy-beginner-set-and-forget-investm-1686878594" target="_blank" x-inset="1">"set and forget" investment portfolio</a>. You've worked hard to reprogram your mind, so make sure you reap the benefits for many years to come.</p>
@@ -481,4 +656,4 @@
-<p data-textannotation-id="b54d87ffdace50f420c3a6ff0404cbf3"><em><small>Photos by <a href="http://www.shutterstock.com/pic-129762989/stock-vector-consumer.html?src=id&amp;ws=1" target="_blank">cmgirl</a> (Shutterstock), <a href="http://www.shutterstock.com/pic-227832739/stock-vector-hacker-icon-man-in-hoody-with-laptop-flat-isolated-on-dark-background-vector-illustration.html?src=id&amp;ws=1" target="_blank">Macrovector</a> (Shutterstock), <a href="https://www.flickr.com/photos/jetheriot/6186786217" target="_blank">J E Theriot</a>, <a href="https://www.flickr.com/photos/puuikibeach/15289861843" target="_blank">davidd</a>, <a href="https://www.flickr.com/photos/funfilledgeorgie/10922459733" target="_blank">George Redgrave</a>, <a href="https://www.flickr.com/photos/amslerpix/7252002214" target="_blank">David Amsler</a>, <a href="https://www.flickr.com/photos/amalakar/7299820870" target="_blank">Arup Malakar</a>, <a href="https://www.flickr.com/photos/lobsterstew/89644885" target="_blank">J B</a>, <a href="https://www.flickr.com/photos/jakerome/3298702453" target="_blank">jakerome</a>, <a href="http://401kcalculator.org/" target="_blank">401(K) 2012</a>.</small></em></p></div> \ No newline at end of file
+<p data-textannotation-id="b54d87ffdace50f420c3a6ff0404cbf3"><em><small>Photos by <a target="_blank" href="http://www.shutterstock.com/pic-129762989/stock-vector-consumer.html?src=id&amp;ws=1">cmgirl</a> (Shutterstock), <a target="_blank" href="http://www.shutterstock.com/pic-227832739/stock-vector-hacker-icon-man-in-hoody-with-laptop-flat-isolated-on-dark-background-vector-illustration.html?src=id&amp;ws=1">Macrovector</a> (Shutterstock), <a target="_blank" href="https://www.flickr.com/photos/jetheriot/6186786217">J E Theriot</a>, <a target="_blank" href="https://www.flickr.com/photos/puuikibeach/15289861843">davidd</a>, <a target="_blank" href="https://www.flickr.com/photos/funfilledgeorgie/10922459733">George Redgrave</a>, <a target="_blank" href="https://www.flickr.com/photos/amslerpix/7252002214">David Amsler</a>, <a target="_blank" href="https://www.flickr.com/photos/amalakar/7299820870">Arup Malakar</a>, <a target="_blank" href="https://www.flickr.com/photos/lobsterstew/89644885">J B</a>, <a target="_blank" href="https://www.flickr.com/photos/jakerome/3298702453">jakerome</a>, <a target="_blank" href="http://401kcalculator.org/">401(K) 2012</a>.</small></em></p></div> \ No newline at end of file
diff --git a/test/test-pages/links-in-tables/expected-metadata.json b/test/test-pages/links-in-tables/expected-metadata.json
index d6b1330..d13d96c 100644
--- a/test/test-pages/links-in-tables/expected-metadata.json
+++ b/test/test-pages/links-in-tables/expected-metadata.json
@@ -1,5 +1,5 @@
{
- "Author": null,
+ "Author": "",
"Direction": null,
"Excerpt": "Posted by Andrew Hayden, Software Engineer on Google Play Android users are downloading tens of billions of apps and games on Google Pla...",
"Image": "https:\/\/2.bp.blogspot.com\/-chCZZinlUTg\/WEcxvJo9gdI\/AAAAAAAADnk\/3ND_BspqN6Y2j5xxkLFW3RyS2Ig0NHZpQCLcB\/w1200-h630-p-k-nu\/ipsum-opsum.gif",
diff --git a/test/test-pages/links-in-tables/expected.html b/test/test-pages/links-in-tables/expected.html
index 05e0723..ddeed24 100644
--- a/test/test-pages/links-in-tables/expected.html
+++ b/test/test-pages/links-in-tables/expected.html
@@ -54,7 +54,7 @@ to inefficient patches.
Watch how much the compressed text on the right side changes from a one-letter
change in the uncompressed text on the left:
</p>
-<p><a href="https://2.bp.blogspot.com/-chCZZinlUTg/WEcxvJo9gdI/AAAAAAAADnk/3ND_BspqN6Y2j5xxkLFW3RyS2Ig0NHZpQCLcB/s1600/ipsum-opsum.gif" imageanchor="1"><img height="105" src="https://2.bp.blogspot.com/-chCZZinlUTg/WEcxvJo9gdI/AAAAAAAADnk/3ND_BspqN6Y2j5xxkLFW3RyS2Ig0NHZpQCLcB/s640/ipsum-opsum.gif" width="640"></img></a></p>
+<p><a href="https://2.bp.blogspot.com/-chCZZinlUTg/WEcxvJo9gdI/AAAAAAAADnk/3ND_BspqN6Y2j5xxkLFW3RyS2Ig0NHZpQCLcB/s1600/ipsum-opsum.gif" imageanchor="1"><img src="https://2.bp.blogspot.com/-chCZZinlUTg/WEcxvJo9gdI/AAAAAAAADnk/3ND_BspqN6Y2j5xxkLFW3RyS2Ig0NHZpQCLcB/s640/ipsum-opsum.gif" width="640" height="105"></a></p>
<p>
File-by-File therefore is based on detecting changes in the uncompressed data.
To generate a patch, we first decompress both old and new files before computing
@@ -107,42 +107,51 @@ Here are examples of app updates already using File-by-File Patching:
<div dir="ltr" trbidi="on">
<div dir="ltr">
-<table readabilityDataTable="1"><colgroup><col width="142"></col><col width="102"></col><col width="176"></col><col width="176"></col></colgroup><tbody><tr><td><p><span>Application</span></p>
+<table readabilityDataTable="1"><colgroup><col width="142"><col width="102"><col width="176"><col width="176"></colgroup><tbody>
+<tr><td><p><span>Application</span></p>
</td><td><p><span>Original Size</span></p>
</td><td><p><span>Previous (BSDiff) Patch Size</span></p>
<p><span>(% vs original)</span></p>
</td><td><p><span>File-by-File Patch Size (% vs original)</span></p>
-</td></tr><tr><td><div dir="ltr">
+</td></tr>
+<tr><td><div dir="ltr">
<p><a href="https://play.google.com/store/apps/details?id=com.king.farmheroessupersaga&amp;hl=en"><span>Farm Heroes Super Saga</span></a></p></div>
</td><td><p><span>71.1 MB</span></p>
</td><td><p><span>13.4 MB (-81%)</span></p>
</td><td><p><span>8.0 MB (-89%)</span></p>
-</td></tr><tr><td><div dir="ltr">
+</td></tr>
+<tr><td><div dir="ltr">
<p><a href="https://play.google.com/store/apps/details?id=com.google.android.apps.maps"><span>Google Maps</span></a></p></div>
</td><td><p><span>32.7 MB</span></p>
</td><td><p><span>17.5 MB (-46%)</span></p>
</td><td><p><span>9.6 MB (-71%)</span></p>
-</td></tr><tr><td><div dir="ltr">
+</td></tr>
+<tr><td><div dir="ltr">
<p><a href="https://play.google.com/store/apps/details?id=com.google.android.gm"><span>Gmail</span></a></p></div>
</td><td><p><span>17.8 MB</span></p>
</td><td><p><span>7.6 MB (-57%)</span></p>
</td><td><p><span>7.3 MB (-59%)</span></p>
-</td></tr><tr><td><div dir="ltr">
+</td></tr>
+<tr><td><div dir="ltr">
<p><a href="https://play.google.com/store/apps/details?id=com.google.android.tts"><span>Google TTS</span></a></p></div>
</td><td><p><span>18.9 MB</span></p>
</td><td><p><span>17.2 MB (-9%)</span></p>
</td><td><p><span>13.1 MB (-31%)</span></p>
-</td></tr><tr><td><div dir="ltr">
+</td></tr>
+<tr><td><div dir="ltr">
<p><a href="https://play.google.com/store/apps/details?id=com.amazon.kindle"><span>Kindle</span></a></p></div>
</td><td><p><span>52.4 MB</span></p>
</td><td><p><span>19.1 MB (-64%)</span></p>
</td><td><p><span>8.4 MB (-84%)</span></p>
-</td></tr><tr><td><div dir="ltr">
+</td></tr>
+<tr><td><div dir="ltr">
<p><a href="https://play.google.com/store/apps/details?id=com.netflix.mediaclient"><span>Netflix</span></a></p></div>
</td><td><p><span>16.2 MB</span></p>
</td><td><p><span>7.7 MB (-52%)</span></p>
</td><td><p><span>1.2 MB (-92%)</span></p>
-</td></tr></tbody></table></div>
+</td></tr>
+</tbody></table>
+</div>
</div>
<p><em>Disclaimer: if you see different patch sizes when you press "update"
@@ -169,6 +178,6 @@ As a developer if you're interested in reducing your APK size still further,
here are some <a href="https://developer.android.com/topic/performance/reduce-apk-size.html?utm_campaign=android_discussion_filebyfile_120616&amp;utm_source=anddev&amp;utm_medium=blog">general
tips on reducing APK size</a>.
</p>
-<p><a href="https://2.bp.blogspot.com/-5aRh1dM6Unc/WEcNs55RGhI/AAAAAAAADnI/tzr_oOJjZwgWd9Vu25ydY0UwB3eXKupXwCLcB/s1600/image01.png" imageanchor="1"><img height="200" src="https://2.bp.blogspot.com/-5aRh1dM6Unc/WEcNs55RGhI/AAAAAAAADnI/tzr_oOJjZwgWd9Vu25ydY0UwB3eXKupXwCLcB/s200/image01.png" width="191"></img></a></p>
+<p><a href="https://2.bp.blogspot.com/-5aRh1dM6Unc/WEcNs55RGhI/AAAAAAAADnI/tzr_oOJjZwgWd9Vu25ydY0UwB3eXKupXwCLcB/s1600/image01.png" imageanchor="1"><img src="https://2.bp.blogspot.com/-5aRh1dM6Unc/WEcNs55RGhI/AAAAAAAADnI/tzr_oOJjZwgWd9Vu25ydY0UwB3eXKupXwCLcB/s200/image01.png" width="191" height="200"></a></p>
</div> \ No newline at end of file
diff --git a/test/test-pages/lwn-1/expected.html b/test/test-pages/lwn-1/expected.html
index 358f956..2ed24ac 100644
--- a/test/test-pages/lwn-1/expected.html
+++ b/test/test-pages/lwn-1/expected.html
@@ -1,4 +1,5 @@
-<div><td>
+<div>
+ <td>
<div>
<h2><a href="http://fakehost/Articles/637755/">A trademark battle in the Arduino community</a></h2>
@@ -25,28 +26,28 @@ program</a> for third-party manufacturers interested in using the "Arduino" bran
<h2><a href="http://fakehost/Articles/637533/">Mapping and data mining with QGIS 2.8</a></h2>
<p> By <b>Nathan Willis</b>
- <br></br>March 25, 2015 </p>
+ <br>March 25, 2015 </p>
<p><a href="http://qgis.org/">QGIS</a> is a free-software geographic information system (GIS) tool; it provides a unified interface in which users can import, edit, and analyze geographic-oriented information, and it can produce output as varied as printable maps or map-based web services. The project recently made its first update to be designated a long-term release (LTR), and that release is both poised for high-end usage and friendly to newcomers alike. </p>
- <p>The new release is version 2.8, which was unveiled on March 2. An official <a href="http://qgis.org/en/site/forusers/visualchangelog28/index.html">change
+ <p>The new release is version 2.8, which was unveiled on March&nbsp;2. An official <a href="http://qgis.org/en/site/forusers/visualchangelog28/index.html">change
log</a> is available on the QGIS site, while the release itself was announced primarily through blog posts (such as <a href="http://anitagraser.com/2015/03/02/qgis-2-8-ltr-has-landed/">this
post</a> by Anita Graser of the project's steering committee). Downloads are <a href="http://qgis.org/en/site/forusers/download.html">available</a> for a variety of platforms, including packages for Ubuntu, Debian, Fedora, openSUSE, and several other distributions.</p>
- <p><a href="http://fakehost/Articles/637747/"> <img alt="[QGIS main interface]" height="264" src="http://fakehost/images/2015/03-qgis-map-sm.png" width="350"></img></a></p><p>As the name might suggest, QGIS is a Qt application; the latest release will, in fact, build on both Qt4 and Qt5, although the binaries released by the project come only in Qt4 form at present. 2.8 has been labeled a long-term release (LTR)—which, in this case, means that the project has committed to providing backported bug fixes for one full calendar year, and that the 2.8.x series is in permanent feature freeze. The goal, according to the change log, is to provide a stable version suitable for businesses and deployments in other large organizations. The change log itself points out that the development of quite a few new features was underwritten by various GIS companies or university groups, which suggests that taking care of these organizations' needs is reaping dividends for the project. </p>
+ <p><a href="http://fakehost/Articles/637747/"> <img src="http://fakehost/images/2015/03-qgis-map-sm.png" width="350" height="264" alt="[QGIS main interface]"> </a></p><p>As the name might suggest, QGIS is a Qt application; the latest release will, in fact, build on both Qt4 and Qt5, although the binaries released by the project come only in Qt4 form at present. 2.8 has been labeled a long-term release (LTR)—which, in this case, means that the project has committed to providing backported bug fixes for one full calendar year, and that the 2.8.x series is in permanent feature freeze. The goal, according to the change log, is to provide a stable version suitable for businesses and deployments in other large organizations. The change log itself points out that the development of quite a few new features was underwritten by various GIS companies or university groups, which suggests that taking care of these organizations' needs is reaping dividends for the project. </p>
<p>For those new to QGIS (or GIS in general), there is a detailed new-user <a href="http://docs.qgis.org/testing/en/docs/training_manual/">tutorial</a> that provides a thorough walk-through of the data-manipulation, mapping, and analysis functions. Being a new user, I went through the tutorial; although there are a handful of minor differences between QGIS 2.8 and the version used in the text (primarily whether specific features were accessed through a toolbar or right-click menu), on the whole it is well worth the time. </p>
<p>QGIS is designed to make short work of importing spatially oriented data sets, mining information from them, and turning the results into a meaningful visualization. Technically speaking, the visualization output is optional: one could simply extract the needed statistics and results and use them to answer some question or, perhaps, publish the massaged data set as a database for others to use. </p>
<p>But well-made maps are often the easiest way to illuminate facts about populations, political regions, geography, and many other topics when human comprehension is the goal. QGIS makes importing data from databases, web-mapping services (WMS), and even unwieldy flat-file data dumps a painless experience. It handles converting between a variety of map-referencing systems more or less automatically, and allows the user to focus on finding the useful attributes of the data sets and rendering them on screen. </p>
<h4>Here be data</h4>
<p>The significant changes in QGIS 2.8 fall into several categories. There are updates to how QGIS handles the mathematical expressions and queries users can use to filter information out of a data set, improvements to the tools used to explore the on-screen map canvas, and enhancements to the "map composer" used to produce visual output. This is on top of plenty of other under-the-hood improvements, naturally.</p>
- <p><a href="http://fakehost/Articles/637748/"> <img alt="[QGIS query builder]" height="302" src="http://fakehost/images/2015/03-qgis-query-sm.png" width="300"></img></a></p><p>In the first category are several updates to the filtering tools used to mine a data set. Generally speaking, each independent data set is added to a QGIS project as its own layer, then transformed with filters to focus in on a specific portion of the original data. For instance, the land-usage statistics for a region might be one layer, while roads and buildings for the same region from OpenStreetMap might be two additional layers. Such filters can be created in several ways: there is a "query builder" that lets the user construct and test expressions on a data layer, then save the results, an SQL console for performing similar queries on a database, and spreadsheet-like editing tools for working directly on data tables. </p>
+ <p><a href="http://fakehost/Articles/637748/"> <img src="http://fakehost/images/2015/03-qgis-query-sm.png" width="300" height="302" alt="[QGIS query builder]"> </a></p><p>In the first category are several updates to the filtering tools used to mine a data set. Generally speaking, each independent data set is added to a QGIS project as its own layer, then transformed with filters to focus in on a specific portion of the original data. For instance, the land-usage statistics for a region might be one layer, while roads and buildings for the same region from OpenStreetMap might be two additional layers. Such filters can be created in several ways: there is a "query builder" that lets the user construct and test expressions on a data layer, then save the results, an SQL console for performing similar queries on a database, and spreadsheet-like editing tools for working directly on data tables. </p>
<p>All three have been improved in this release. New are support for <tt>if(condition, true, false)</tt> conditional statements, a set of operations for geometry primitives (e.g., to test whether regions overlap or lines intersect), and an "integer divide" operation. Users can also add comments to their queries to annotate their code, and there is a new <a href="http://nathanw.net/2015/01/19/function-editor-for-qgis-expressions/">custom
function editor</a> for writing Python functions that can be called in mathematical expressions within the query builder. </p>
<p>It is also now possible to select only some rows in a table, then perform calculations just on the selection—previously, users would have to extract the rows of interest into a new table first. Similarly, in the SQL editor, the user can highlight a subset of the SQL query and execute it separately, which is no doubt helpful for debugging. </p>
<p>There have also been several improvements to the Python and Processing plugins. Users can now drag-and-drop Python scripts onto QGIS and they will be run automatically. Several new analysis algorithms are now available through the Processing interface that were previously Python-only; they include algorithms for generating grids of points or vectors within a region, splitting layers and lines, generating <a href="http://en.wikipedia.org/wiki/Hypsometric_curve">hypsometric
curves</a>, refactoring data sets, and more. </p>
<h4>Maps in, maps out</h4>
- <p><a href="http://fakehost/Articles/637749/"> <img alt="[QGIS simplify tool]" height="303" src="http://fakehost/images/2015/03-qgis-simplify-sm.png" width="300"></img></a></p><p>The process of working with on-screen map data picked up some improvements in the new release as well. Perhaps the most fundamental is that each map layer added to the canvas is now handled in its own thread, so fewer hangs in the user interface are experienced when re-rendering a layer (as happens whenever the user changes the look of points or shapes in a layer). Since remote databases can also be layers, this multi-threaded approach is more resilient against connectivity problems, too. The interface also now supports temporary "scratch" layers that can be used to merge, filter, or simply experiment with a data set, but are not saved when the current project is saved. </p>
+ <p><a href="http://fakehost/Articles/637749/"> <img src="http://fakehost/images/2015/03-qgis-simplify-sm.png" width="300" height="303" alt="[QGIS simplify tool]"> </a></p><p>The process of working with on-screen map data picked up some improvements in the new release as well. Perhaps the most fundamental is that each map layer added to the canvas is now handled in its own thread, so fewer hangs in the user interface are experienced when re-rendering a layer (as happens whenever the user changes the look of points or shapes in a layer). Since remote databases can also be layers, this multi-threaded approach is more resilient against connectivity problems, too. The interface also now supports temporary "scratch" layers that can be used to merge, filter, or simply experiment with a data set, but are not saved when the current project is saved. </p>
<p>For working on the canvas itself, polygonal regions can now use raster images (tiled, if necessary) as fill colors, the map itself can be rotated arbitrarily, and objects can be "snapped" to align with items on any layer (not just the current layer). For working with raster image layers (e.g., aerial photographs) or simply creating new geometric shapes by hand, there is a new digitizing tool that can offer assistance by locking lines to specific angles, automatically keeping borders parallel, and other niceties. </p>
<p>There is a completely overhauled "simplify" tool that is used to reduce the number of extraneous vertices of a vector layer (thus reducing its size). The old simplify tool provided only a relative "tolerance" setting that did not correspond directly to any units. With the new tool, users can set a simplification threshold in terms of the underlying map units, layer-specific units, pixels, and more—and, in addition, the tool reports how much the simplify operation has reduced the size of the data.</p>
- <p><a href="http://fakehost/Articles/637751/"> <img alt="[QGIS style editing]" height="286" src="http://fakehost/images/2015/03-qgis-style-sm.png" width="300"></img></a></p><p>There has also been an effort to present a uniform interface to one of the most important features of the map canvas: the ability to change the symbology used for an item based on some data attribute. The simplest example might be to change the line color of a road based on whether its road-type attribute is "highway," "service road," "residential," or so on. But the same feature is used to automatically highlight layer information based on the filtering and querying functionality discussed above. The new release allows many more map attributes to be controlled by these "data definition" settings, and provides a hard-to-miss button next to each attribute, through which a custom data definition can be set. </p>
+ <p><a href="http://fakehost/Articles/637751/"> <img src="http://fakehost/images/2015/03-qgis-style-sm.png" width="300" height="286" alt="[QGIS style editing]"> </a></p><p>There has also been an effort to present a uniform interface to one of the most important features of the map canvas: the ability to change the symbology used for an item based on some data attribute. The simplest example might be to change the line color of a road based on whether its road-type attribute is "highway," "service road," "residential," or so on. But the same feature is used to automatically highlight layer information based on the filtering and querying functionality discussed above. The new release allows many more map attributes to be controlled by these "data definition" settings, and provides a hard-to-miss button next to each attribute, through which a custom data definition can be set. </p>
<p>QGIS's composer module is the tool used to take project data and generate a map that can be used outside of the application (in print, as a static image, or as a layer for <a href="http://mapserver.org/">MapServer</a> or some other software tool, for example). Consequently, it is not a simple select-and-click-export tool; composing the output can involve a lot of choices about which data to make visible, how (and where) to label it, and how to make it generally accessible. </p>
<p>The updated composer in 2.8 now has a full-screen mode and sports several new options for configuring output. For instance, the user now has full control over how map axes are labeled. In previous releases, the grid coordinates of the map could be turned on or off, but the only options were all or nothing. Now, the user can individually choose whether coordinates are displayed on all four sides, and can even choose in which direction vertical text labels will run (so that they can be correctly justified to the edge of the map, for example). </p>
<p>There are, as usual, many more changes than there is room to discuss. Some particularly noteworthy improvements include the ability to save and load bookmarks for frequently used data sources (perhaps most useful for databases, web services, and other non-local data) and improvements to QGIS's server module. This module allows one QGIS instance to serve up data accessible to other QGIS applications (for example, to simply team projects). The server can now be extended with Python plugins and the data layers that it serves can be styled with style rules like those used in the desktop interface. </p>
@@ -55,7 +56,7 @@ curves</a>, refactoring data sets, and more. </p>
<h2><a href="http://fakehost/Articles/637735/">Development activity in LibreOffice and OpenOffice</a></h2>
<p> By <b>Jonathan Corbet</b>
- <br></br>March 25, 2015 </p><p> The LibreOffice project was <a href="http://fakehost/Articles/407383/">announced</a> with great fanfare in September 2010. Nearly one year later, the OpenOffice.org project (from which LibreOffice was forked) <a href="http://fakehost/Articles/446093/">was
+ <br>March 25, 2015 </p><p> The LibreOffice project was <a href="http://fakehost/Articles/407383/">announced</a> with great fanfare in September 2010. Nearly one year later, the OpenOffice.org project (from which LibreOffice was forked) <a href="http://fakehost/Articles/446093/">was
cut loose from Oracle</a> and found a new home as an Apache project. It is fair to say that the rivalry between the two projects in the time since then has been strong. Predictions that one project or the other would fail have not been borne out, but that does not mean that the two projects are equally successful. A look at the two projects' development communities reveals some interesting differences.
</p>
<h4>Release histories</h4>
@@ -63,286 +64,499 @@ cut loose from Oracle</a> and found a new home as an Apache project. It is fair
<p> The release history for LibreOffice tells a slightly different story: </p>
<blockquote>
- </blockquote>
+
+ </blockquote>
<p> It seems clear that LibreOffice has maintained a rather more frenetic release cadence, generally putting out at least one release per month. The project typically keeps at least two major versions alive at any one time. Most of the releases are of the minor, bug-fix variety, but there have been two major releases in the last year as well. </p>
<h4>Development statistics</h4>
<p> In the one-year period since late March 2014, there have been 381 changesets committed to the OpenOffice Subversion repository. The most active committers are: </p>
<blockquote>
- <table readabilityDataTable="1"><tbody><tr><th colspan="2">Most active OpenOffice developers</th>
- </tr><tr><td>
- <table readabilityDataTable="1"><tbody><tr><th colspan="3">By changesets</th>
- </tr><tr><td>Herbert Dürr</td>
+ <table readabilityDataTable="1">
+ <tbody>
+ <tr>
+ <th colspan="2">Most active OpenOffice developers</th>
+ </tr>
+ <tr>
+ <td>
+ <table readabilityDataTable="1">
+ <tbody>
+ <tr>
+ <th colspan="3">By changesets</th>
+ </tr>
+ <tr>
+ <td>Herbert Dürr</td>
<td>63</td>
<td>16.6%</td>
- </tr><tr><td>Jürgen Schmidt             </td>
+ </tr>
+ <tr>
+ <td>Jürgen&nbsp;Schmidt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td>56</td>
<td>14.7%</td>
- </tr><tr><td>Armin Le Grand</td>
+ </tr>
+ <tr>
+ <td>Armin Le Grand</td>
<td>56</td>
<td>14.7%</td>
- </tr><tr><td>Oliver-Rainer Wittmann</td>
+ </tr>
+ <tr>
+ <td>Oliver-Rainer&nbsp;Wittmann</td>
<td>46</td>
<td>12.1%</td>
- </tr><tr><td>Tsutomu Uchino</td>
+ </tr>
+ <tr>
+ <td>Tsutomu Uchino</td>
<td>33</td>
<td>8.7%</td>
- </tr><tr><td>Kay Schenk</td>
+ </tr>
+ <tr>
+ <td>Kay Schenk</td>
<td>27</td>
<td>7.1%</td>
- </tr><tr><td>Pedro Giffuni</td>
+ </tr>
+ <tr>
+ <td>Pedro Giffuni</td>
<td>23</td>
<td>6.1%</td>
- </tr><tr><td>Ariel Constenla-Haile</td>
+ </tr>
+ <tr>
+ <td>Ariel Constenla-Haile</td>
<td>22</td>
<td>5.8%</td>
- </tr><tr><td>Andrea Pescetti</td>
+ </tr>
+ <tr>
+ <td>Andrea Pescetti</td>
<td>14</td>
<td>3.7%</td>
- </tr><tr><td>Steve Yin</td>
+ </tr>
+ <tr>
+ <td>Steve Yin</td>
<td>11</td>
<td>2.9%</td>
- </tr><tr><td>Andre Fischer</td>
+ </tr>
+ <tr>
+ <td>Andre Fischer</td>
<td>10</td>
<td>2.6%</td>
- </tr><tr><td>Yuri Dario</td>
+ </tr>
+ <tr>
+ <td>Yuri Dario</td>
<td>7</td>
<td>1.8%</td>
- </tr><tr><td>Regina Henschel</td>
+ </tr>
+ <tr>
+ <td>Regina Henschel</td>
<td>6</td>
<td>1.6%</td>
- </tr><tr><td>Juan C. Sanz</td>
+ </tr>
+ <tr>
+ <td>Juan C. Sanz</td>
<td>2</td>
<td>0.5%</td>
- </tr><tr><td>Clarence Guo</td>
+ </tr>
+ <tr>
+ <td>Clarence Guo</td>
<td>2</td>
<td>0.5%</td>
- </tr><tr><td>Tal Daniel</td>
+ </tr>
+ <tr>
+ <td>Tal Daniel</td>
<td>2</td>
<td>0.5%</td>
- </tr></tbody></table></td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
<td>
- <table readabilityDataTable="1"><tbody><tr><th colspan="3">By changed lines</th>
- </tr><tr><td>Jürgen Schmidt             </td>
+ <table readabilityDataTable="1">
+ <tbody>
+ <tr>
+ <th colspan="3">By changed lines</th>
+ </tr>
+ <tr>
+ <td>Jürgen&nbsp;Schmidt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td>455499</td>
<td>88.1%</td>
- </tr><tr><td>Andre Fischer</td>
+ </tr>
+ <tr>
+ <td>Andre Fischer</td>
<td>26148</td>
<td>3.8%</td>
- </tr><tr><td>Pedro Giffuni</td>
+ </tr>
+ <tr>
+ <td>Pedro Giffuni</td>
<td>23183</td>
<td>3.4%</td>
- </tr><tr><td>Armin Le Grand</td>
+ </tr>
+ <tr>
+ <td>Armin Le Grand</td>
<td>11018</td>
<td>1.6%</td>
- </tr><tr><td>Juan C. Sanz</td>
+ </tr>
+ <tr>
+ <td>Juan C. Sanz</td>
<td>4582</td>
<td>0.7%</td>
- </tr><tr><td>Oliver-Rainer Wittmann</td>
+ </tr>
+ <tr>
+ <td>Oliver-Rainer Wittmann</td>
<td>4309</td>
<td>0.6%</td>
- </tr><tr><td>Andrea Pescetti</td>
+ </tr>
+ <tr>
+ <td>Andrea Pescetti</td>
<td>3908</td>
<td>0.6%</td>
- </tr><tr><td>Herbert Dürr</td>
+ </tr>
+ <tr>
+ <td>Herbert Dürr</td>
<td>2811</td>
<td>0.4%</td>
- </tr><tr><td>Tsutomu Uchino</td>
+ </tr>
+ <tr>
+ <td>Tsutomu Uchino</td>
<td>1991</td>
<td>0.3%</td>
- </tr><tr><td>Ariel Constenla-Haile</td>
+ </tr>
+ <tr>
+ <td>Ariel Constenla-Haile</td>
<td>1258</td>
<td>0.2%</td>
- </tr><tr><td>Steve Yin</td>
+ </tr>
+ <tr>
+ <td>Steve Yin</td>
<td>1010</td>
<td>0.1%</td>
- </tr><tr><td>Kay Schenk</td>
+ </tr>
+ <tr>
+ <td>Kay Schenk</td>
<td>616</td>
<td>0.1%</td>
- </tr><tr><td>Regina Henschel</td>
+ </tr>
+ <tr>
+ <td>Regina Henschel</td>
<td>417</td>
<td>0.1%</td>
- </tr><tr><td>Yuri Dario</td>
+ </tr>
+ <tr>
+ <td>Yuri Dario</td>
<td>268</td>
<td>0.0%</td>
- </tr><tr><td>tal</td>
+ </tr>
+ <tr>
+ <td>tal</td>
<td>16</td>
<td>0.0%</td>
- </tr><tr><td>Clarence Guo</td>
+ </tr>
+ <tr>
+ <td>Clarence Guo</td>
<td>11</td>
<td>0.0%</td>
- </tr></tbody></table></td>
- </tr></tbody></table></blockquote>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </blockquote>
<p> In truth, the above list is not just the most active OpenOffice developers — it is all of them; a total of 16 developers have committed changes to OpenOffice in the last year. Those developers changed 528,000 lines of code, but, as can be seen above, Jürgen Schmidt accounted for the bulk of those changes, which were mostly updates to translation files. </p>
<p> The top four developers in the "by changesets" column all work for IBM, so IBM is responsible for a minimum of about 60% of the changes to OpenOffice in the last year. </p>
<p> The picture for LibreOffice is just a little bit different; in the same one-year period, the project has committed 22,134 changesets from 268 developers. The most active of these developers were: </p>
<blockquote>
- <table readabilityDataTable="1"><tbody><tr><th colspan="2">Most active LibreOffice developers</th>
- </tr><tr><td>
- <table readabilityDataTable="1"><tbody><tr><th colspan="3">By changesets</th>
- </tr><tr><td>Caolán McNamara</td>
+ <table readabilityDataTable="1">
+ <tbody>
+ <tr>
+ <th colspan="2">Most active LibreOffice developers</th>
+ </tr>
+ <tr>
+ <td>
+ <table readabilityDataTable="1">
+ <tbody>
+ <tr>
+ <th colspan="3">By changesets</th>
+ </tr>
+ <tr>
+ <td>Caolán McNamara</td>
<td>4307</td>
<td>19.5%</td>
- </tr><tr><td>Stephan Bergmann</td>
+ </tr>
+ <tr>
+ <td>Stephan Bergmann</td>
<td>2351</td>
<td>10.6%</td>
- </tr><tr><td>Miklos Vajna</td>
+ </tr>
+ <tr>
+ <td>Miklos Vajna</td>
<td>1449</td>
<td>6.5%</td>
- </tr><tr><td>Tor Lillqvist</td>
+ </tr>
+ <tr>
+ <td>Tor Lillqvist</td>
<td>1159</td>
<td>5.2%</td>
- </tr><tr><td>Noel Grandin</td>
+ </tr>
+ <tr>
+ <td>Noel Grandin</td>
<td>1064</td>
<td>4.8%</td>
- </tr><tr><td>Markus Mohrhard</td>
+ </tr>
+ <tr>
+ <td>Markus Mohrhard</td>
<td>935</td>
<td>4.2%</td>
- </tr><tr><td>Michael Stahl</td>
+ </tr>
+ <tr>
+ <td>Michael Stahl</td>
<td>915</td>
<td>4.1%</td>
- </tr><tr><td>Kohei Yoshida</td>
+ </tr>
+ <tr>
+ <td>Kohei Yoshida</td>
<td>755</td>
<td>3.4%</td>
- </tr><tr><td>Tomaž Vajngerl</td>
+ </tr>
+ <tr>
+ <td>Tomaž Vajngerl</td>
<td>658</td>
<td>3.0%</td>
- </tr><tr><td>Thomas Arnhold</td>
+ </tr>
+ <tr>
+ <td>Thomas Arnhold</td>
<td>619</td>
<td>2.8%</td>
- </tr><tr><td>Jan Holesovsky</td>
+ </tr>
+ <tr>
+ <td>Jan Holesovsky</td>
<td>466</td>
<td>2.1%</td>
- </tr><tr><td>Eike Rathke</td>
+ </tr>
+ <tr>
+ <td>Eike Rathke</td>
<td>457</td>
<td>2.1%</td>
- </tr><tr><td>Matteo Casalin</td>
+ </tr>
+ <tr>
+ <td>Matteo Casalin</td>
<td>442</td>
<td>2.0%</td>
- </tr><tr><td>Bjoern Michaelsen</td>
+ </tr>
+ <tr>
+ <td>Bjoern Michaelsen</td>
<td>421</td>
<td>1.9%</td>
- </tr><tr><td>Chris Sherlock</td>
+ </tr>
+ <tr>
+ <td>Chris Sherlock</td>
<td>396</td>
<td>1.8%</td>
- </tr><tr><td>David Tardon</td>
+ </tr>
+ <tr>
+ <td>David Tardon</td>
<td>386</td>
<td>1.7%</td>
- </tr><tr><td>Julien Nabet</td>
+ </tr>
+ <tr>
+ <td>Julien Nabet</td>
<td>362</td>
<td>1.6%</td>
- </tr><tr><td>Zolnai Tamás</td>
+ </tr>
+ <tr>
+ <td>Zolnai Tamás</td>
<td>338</td>
<td>1.5%</td>
- </tr><tr><td>Matúš Kukan</td>
+ </tr>
+ <tr>
+ <td>Matúš Kukan</td>
<td>256</td>
<td>1.2%</td>
- </tr><tr><td>Robert Antoni Buj Gelonch</td>
+ </tr>
+ <tr>
+ <td>Robert&nbsp;Antoni&nbsp;Buj&nbsp;Gelonch</td>
<td>231</td>
<td>1.0%</td>
- </tr></tbody></table></td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
<td>
- <table readabilityDataTable="1"><tbody><tr><th colspan="3">By changed lines</th>
- </tr><tr><td>Lionel Elie Mamane</td>
+ <table readabilityDataTable="1">
+ <tbody>
+ <tr>
+ <th colspan="3">By changed lines</th>
+ </tr>
+ <tr>
+ <td>Lionel Elie Mamane</td>
<td>244062</td>
<td>12.5%</td>
- </tr><tr><td>Noel Grandin</td>
+ </tr>
+ <tr>
+ <td>Noel Grandin</td>
<td>238711</td>
<td>12.2%</td>
- </tr><tr><td>Stephan Bergmann</td>
+ </tr>
+ <tr>
+ <td>Stephan Bergmann</td>
<td>161220</td>
<td>8.3%</td>
- </tr><tr><td>Miklos Vajna</td>
+ </tr>
+ <tr>
+ <td>Miklos Vajna</td>
<td>129325</td>
<td>6.6%</td>
- </tr><tr><td>Caolán McNamara</td>
+ </tr>
+ <tr>
+ <td>Caolán McNamara</td>
<td>97544</td>
<td>5.0%</td>
- </tr><tr><td>Tomaž Vajngerl</td>
+ </tr>
+ <tr>
+ <td>Tomaž Vajngerl</td>
<td>69404</td>
<td>3.6%</td>
- </tr><tr><td>Tor Lillqvist</td>
+ </tr>
+ <tr>
+ <td>Tor Lillqvist</td>
<td>59498</td>
<td>3.1%</td>
- </tr><tr><td>Laurent Balland-Poirier</td>
+ </tr>
+ <tr>
+ <td>Laurent Balland-Poirier</td>
<td>52802</td>
<td>2.7%</td>
- </tr><tr><td>Markus Mohrhard</td>
+ </tr>
+ <tr>
+ <td>Markus Mohrhard</td>
<td>50509</td>
<td>2.6%</td>
- </tr><tr><td>Kohei Yoshida</td>
+ </tr>
+ <tr>
+ <td>Kohei Yoshida</td>
<td>45514</td>
<td>2.3%</td>
- </tr><tr><td>Chris Sherlock</td>
+ </tr>
+ <tr>
+ <td>Chris Sherlock</td>
<td>36788</td>
<td>1.9%</td>
- </tr><tr><td>Peter Foley</td>
+ </tr>
+ <tr>
+ <td>Peter Foley</td>
<td>34305</td>
<td>1.8%</td>
- </tr><tr><td>Christian Lohmaier</td>
+ </tr>
+ <tr>
+ <td>Christian Lohmaier</td>
<td>33787</td>
<td>1.7%</td>
- </tr><tr><td>Thomas Arnhold</td>
+ </tr>
+ <tr>
+ <td>Thomas Arnhold</td>
<td>32722</td>
<td>1.7%</td>
- </tr><tr><td>David Tardon</td>
+ </tr>
+ <tr>
+ <td>David Tardon</td>
<td>21681</td>
<td>1.1%</td>
- </tr><tr><td>David Ostrovsky</td>
+ </tr>
+ <tr>
+ <td>David Ostrovsky</td>
<td>21620</td>
<td>1.1%</td>
- </tr><tr><td>Jan Holesovsky</td>
+ </tr>
+ <tr>
+ <td>Jan Holesovsky</td>
<td>20792</td>
<td>1.1%</td>
- </tr><tr><td>Valentin Kettner</td>
+ </tr>
+ <tr>
+ <td>Valentin Kettner</td>
<td>20526</td>
<td>1.1%</td>
- </tr><tr><td>Robert Antoni Buj Gelonch</td>
+ </tr>
+ <tr>
+ <td>Robert&nbsp;Antoni&nbsp;Buj&nbsp;Gelonch</td>
<td>20447</td>
<td>1.0%</td>
- </tr><tr><td>Michael Stahl</td>
+ </tr>
+ <tr>
+ <td>Michael Stahl</td>
<td>18216</td>
<td>0.9%</td>
- </tr></tbody></table></td>
- </tr></tbody></table></blockquote>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </blockquote>
<p> To a first approximation, the top ten companies supporting LibreOffice in the last year are: </p>
<blockquote>
- <table readabilityDataTable="1"><tbody><tr><th colspan="3">Companies supporting LibreOffice development</th>
- </tr><tr><th colspan="3">(by changesets)</th>
- </tr><tr><td>Red Hat</td>
+ <table readabilityDataTable="1">
+ <tbody>
+ <tr>
+ <th colspan="3">Companies supporting LibreOffice development</th>
+ </tr>
+ <tr>
+ <th colspan="3">(by changesets)</th>
+ </tr>
+ <tr>
+ <td>Red Hat</td>
<td>8417</td>
<td>38.0%</td>
- </tr><tr><td>Collabora <strike>Multimedia</strike></td>
+ </tr>
+ <tr>
+ <td>Collabora <strike>Multimedia</strike></td>
<td>6531</td>
<td>29.5%</td>
- </tr><tr><td>(Unknown)</td>
+ </tr>
+ <tr>
+ <td>(Unknown)</td>
<td>5126</td>
<td>23.2%</td>
- </tr><tr><td>(None)</td>
+ </tr>
+ <tr>
+ <td>(None)</td>
<td>1490</td>
<td>6.7%</td>
- </tr><tr><td>Canonical</td>
+ </tr>
+ <tr>
+ <td>Canonical</td>
<td>422</td>
<td>1.9%</td>
- </tr><tr><td>Igalia S.L.</td>
+ </tr>
+ <tr>
+ <td>Igalia S.L.</td>
<td>80</td>
<td>0.4%</td>
- </tr><tr><td>Ericsson</td>
+ </tr>
+ <tr>
+ <td>Ericsson</td>
<td>21</td>
<td>0.1%</td>
- </tr><tr><td>Yandex</td>
+ </tr>
+ <tr>
+ <td>Yandex</td>
<td>18</td>
<td>0.1%</td>
- </tr><tr><td>FastMail.FM</td>
+ </tr>
+ <tr>
+ <td>FastMail.FM</td>
<td>17</td>
<td>0.1%</td>
- </tr><tr><td>SUSE</td>
+ </tr>
+ <tr>
+ <td>SUSE</td>
<td>7</td>
<td>0.0%</td>
- </tr></tbody></table></blockquote>
+ </tr>
+ </tbody>
+ </table>
+ </blockquote>
<p> Development work on LibreOffice is thus concentrated in a small number of companies, though it is rather more spread out than OpenOffice development. It is worth noting that the LibreOffice developers with unknown affiliation, who contributed 23% of the changes, make up 82% of the developer base, so there would appear to be a substantial community of developers contributing from outside the above-listed companies. </p>
<h4>Some conclusions</h4>
@@ -355,15 +569,16 @@ bark but the caravan moves on.</span>" That may be true, but, in this case, the
<p><a href="http://fakehost/Articles/637735/#Comments">Comments (74 posted)</a> </p>
<p> <b>Page editor</b>: Jonathan Corbet
- <br></br></p>
+ <br> </p>
<h2>Inside this week's LWN.net Weekly Edition</h2>
- <ul><li> <a href="http://fakehost/Articles/637395/">Security</a>: Toward secure package downloads; New vulnerabilities in drupal, mozilla, openssl, python-django ... </li>
+ <ul>
+ <li> <a href="http://fakehost/Articles/637395/">Security</a>: Toward secure package downloads; New vulnerabilities in drupal, mozilla, openssl, python-django ... </li>
<li> <a href="http://fakehost/Articles/637396/">Kernel</a>: LSFMM coverage: NFS, defragmentation, epoll(), copy offload, and more. </li>
<li> <a href="http://fakehost/Articles/637397/">Distributions</a>: A look at Debian's 2015 DPL candidates; Debian, Fedora, ... </li>
<li> <a href="http://fakehost/Articles/637398/">Development</a>: A look at GlusterFS; LibreOffice Online; Open sourcing existing code; Secure Boot in Windows 10; ... </li>
<li> <a href="http://fakehost/Articles/637399/">Announcements</a>: A Turing award for Michael Stonebraker, Sébastien Jodogne, ReGlue are Free Software Award winners, Kat Walsh joins FSF board of directors, Cyanogen, ... </li>
- </ul><p><b>Next page</b>: <a href="http://fakehost/Articles/637395/">Security&gt;&gt;</a>
- <br></br></p></div>
+ </ul> <p><b>Next page</b>: <a href="http://fakehost/Articles/637395/">Security&gt;&gt;</a>
+ <br> </p></div>
</td>
diff --git a/test/test-pages/marketwatch/expected.html b/test/test-pages/marketwatch/expected.html
index bd81ab3..2931e37 100644
--- a/test/test-pages/marketwatch/expected.html
+++ b/test/test-pages/marketwatch/expected.html
@@ -8,7 +8,7 @@
- <p> <strong>The numbers:</strong> The S&amp;P/Case-Shiller national index rose a seasonally adjusted 0.5% in the three-month period ending in January, and was up 6.2% compared to a year before. The 20-city index rose a seasonally adjusted 0.8% for the month, and 6.4% for the year.</p> <p> <strong>What happened: </strong>Prices are still on fire. And the West is still the best: Seattle, Las Vegas and San Francisco all notched double-digit yearly price gains. Only one city, Washington, D.C., had a negative monthly reading. </p> <p>As David Blitzer, chairman of the index committee at S&amp;P Dow Jones Indices, noted in a release, the price gains are all about demand and lack of supply. </p> <p>“The current months-supply — how many months at the current sales rate would be needed to absorb homes currently for sale — is 3.4; the average since 2000 is 6.0 months, and the high in July 2010 was 11.9,” Blitzer wrote. “Currently, the homeowner vacancy rate is 1.6% compared to an average of 2.1% since 2000; it peaked in 2010 at 2.7%. Despite limited supplies, rising prices and higher mortgage rates, affordability is not a concern.”</p> <p>Relatively affordable housing is cold comfort to many would-be home buyers who simply can’t find anything to buy. </p> <p> <strong>Read:</strong> <a href="http://fakehost/story/two-thirds-of-house-hunters-have-been-searching-for-3-months-or-more-2018-02-22">Most house hunters have been searching for 3 months or more</a> </p> <p> <strong>Big picture:</strong> Economists had forecast a 0.7% monthly increase, and a 6.2% 12-month increase, for the 20-city index. <a href="http://fakehost/story/why-its-so-hard-to-forecast-home-prices-for-2018-and-why-that-should-worry-you-2017-12-19">As MarketWatch has reported</a>, most housing analysts have argued that the ongoing price gains in housing can’t last — and yet they have so far. </p> <table readabilityDataTable="1"><tbody><tr><td colspan="" id=""> <strong>Metro</strong> </td> <td colspan="" id=""> <strong>Monthly change</strong> </td> <td colspan="" id=""> <strong>12-month change</strong> </td> </tr><tr><td colspan="" id="">Atlanta</td> <td colspan="" id="">0.7%</td> <td colspan="" id="">6.5%</td> </tr><tr><td colspan="" id="">Boston</td> <td colspan="" id="">0.2%</td> <td colspan="" id="">5.3%</td> </tr><tr><td colspan="" id="">Charlotte</td> <td colspan="" id="">0.4%</td> <td colspan="" id="">6.0%</td> </tr><tr><td colspan="" id="">Chicago</td> <td colspan="" id="">0.0%</td> <td colspan="" id="">2.4%</td> </tr><tr><td colspan="" id="">Cleveland</td> <td colspan="" id="">0.0%</td> <td colspan="" id="">3.5%</td> </tr><tr><td colspan="" id="">Dallas</td> <td colspan="" id="">0.2%</td> <td colspan="" id="">6.9%</td> </tr><tr><td colspan="" id="">Denver</td> <td colspan="" id="">0.7%</td> <td colspan="" id="">7.6%</td> </tr><tr><td colspan="" id="">Detroit</td> <td colspan="" id="">0.1%</td> <td colspan="" id="">7.6%</td> </tr><tr><td colspan="" id="">Las Vegas</td> <td colspan="" id="">0.6%</td> <td colspan="" id="">11.1%</td> </tr><tr><td colspan="" id="">Los Angeles</td> <td colspan="" id="">0.6%</td> <td colspan="" id="">7.6%</td> </tr><tr><td colspan="" id="">Miami</td> <td colspan="" id="">0.6%</td> <td colspan="" id="">4.0%</td> </tr><tr><td colspan="" id="">Minneapolis</td> <td colspan="" id="">0.1%</td> <td colspan="" id="">5.9%</td> </tr><tr><td colspan="" id="">New York</td> <td colspan="" id="">0.0%</td> <td colspan="" id="">5.2%</td> </tr><tr><td colspan="" id="">Phoenix</td> <td colspan="" id="">0.3%</td> <td colspan="" id="">5.9%</td> </tr><tr><td colspan="" id="">Portland</td> <td colspan="" id="">0.4%</td> <td colspan="" id="">7.1%</td> </tr><tr><td colspan="" id="">San Diego</td> <td colspan="" id="">0.8%</td> <td colspan="" id="">7.4%</td> </tr><tr><td colspan="" id="">San Francisco</td> <td colspan="" id="">0.4%</td> <td colspan="" id="">10.2%</td> </tr><tr><td colspan="" id="">Seattle</td> <td colspan="" id="">0.7%</td> <td colspan="" id="">12.9%</td> </tr><tr><td colspan="" id="">Tampa</td> <td colspan="" id="">0.4%</td> <td colspan="" id="">6.7%</td> </tr><tr><td colspan="" id="">Washington</td> <td colspan="" id="">-0.4%</td> <td colspan="" id="">2.4%</td> </tr></tbody></table><p>Read: <a href="http://fakehost/story/mortgage-rates-edge-up-even-as-trade-war-worries-loom-ahead-2018-03-22">Mortgage rates edge up even as trade war worries loom ahead</a></p>
+ <p> <strong>The numbers:</strong> The S&amp;P/Case-Shiller national index rose a seasonally adjusted 0.5% in the three-month period ending in January, and was up 6.2% compared to a year before. The 20-city index rose a seasonally adjusted 0.8% for the month, and 6.4% for the year.</p> <p> <strong>What happened: </strong>Prices are still on fire. And the West is still the best: Seattle, Las Vegas and San Francisco all notched double-digit yearly price gains. Only one city, Washington, D.C., had a negative monthly reading. </p> <p>As David Blitzer, chairman of the index committee at S&amp;P Dow Jones Indices, noted in a release, the price gains are all about demand and lack of supply. </p> <p>“The current months-supply — how many months at the current sales rate would be needed to absorb homes currently for sale — is 3.4; the average since 2000 is 6.0 months, and the high in July 2010 was 11.9,” Blitzer wrote. “Currently, the homeowner vacancy rate is 1.6% compared to an average of 2.1% since 2000; it peaked in 2010 at 2.7%. Despite limited supplies, rising prices and higher mortgage rates, affordability is not a concern.”</p> <p>Relatively affordable housing is cold comfort to many would-be home buyers who simply can’t find anything to buy. </p> <p> <strong>Read:</strong> <a href="http://fakehost/story/two-thirds-of-house-hunters-have-been-searching-for-3-months-or-more-2018-02-22">Most house hunters have been searching for 3 months or more</a> </p> <p> <strong>Big picture:</strong> Economists had forecast a 0.7% monthly increase, and a 6.2% 12-month increase, for the 20-city index. <a href="http://fakehost/story/why-its-so-hard-to-forecast-home-prices-for-2018-and-why-that-should-worry-you-2017-12-19">As MarketWatch has reported</a>, most housing analysts have argued that the ongoing price gains in housing can’t last — and yet they have so far. </p> <table readabilityDataTable="1"> <tbody> <tr> <td id colspan> <strong>Metro</strong> </td> <td id colspan> <strong>Monthly change</strong> </td> <td id colspan> <strong>12-month change</strong> </td> </tr> <tr> <td id colspan>Atlanta</td> <td id colspan>0.7%</td> <td id colspan>6.5%</td> </tr> <tr> <td id colspan>Boston</td> <td id colspan>0.2%</td> <td id colspan>5.3%</td> </tr> <tr> <td id colspan>Charlotte</td> <td id colspan>0.4%</td> <td id colspan>6.0%</td> </tr> <tr> <td id colspan>Chicago</td> <td id colspan>0.0%</td> <td id colspan>2.4%</td> </tr> <tr> <td id colspan>Cleveland</td> <td id colspan>0.0%</td> <td id colspan>3.5%</td> </tr> <tr> <td id colspan>Dallas</td> <td id colspan>0.2%</td> <td id colspan>6.9%</td> </tr> <tr> <td id colspan>Denver</td> <td id colspan>0.7%</td> <td id colspan>7.6%</td> </tr> <tr> <td id colspan>Detroit</td> <td id colspan>0.1%</td> <td id colspan>7.6%</td> </tr> <tr> <td id colspan>Las Vegas</td> <td id colspan>0.6%</td> <td id colspan>11.1%</td> </tr> <tr> <td id colspan>Los Angeles</td> <td id colspan>0.6%</td> <td id colspan>7.6%</td> </tr> <tr> <td id colspan>Miami</td> <td id colspan>0.6%</td> <td id colspan>4.0%</td> </tr> <tr> <td id colspan>Minneapolis</td> <td id colspan>0.1%</td> <td id colspan>5.9%</td> </tr> <tr> <td id colspan>New York</td> <td id colspan>0.0%</td> <td id colspan>5.2%</td> </tr> <tr> <td id colspan>Phoenix</td> <td id colspan>0.3%</td> <td id colspan>5.9%</td> </tr> <tr> <td id colspan>Portland</td> <td id colspan>0.4%</td> <td id colspan>7.1%</td> </tr> <tr> <td id colspan>San Diego</td> <td id colspan>0.8%</td> <td id colspan>7.4%</td> </tr> <tr> <td id colspan>San Francisco</td> <td id colspan>0.4%</td> <td id colspan>10.2%</td> </tr> <tr> <td id colspan>Seattle</td> <td id colspan>0.7%</td> <td id colspan>12.9%</td> </tr> <tr> <td id colspan>Tampa</td> <td id colspan>0.4%</td> <td id colspan>6.7%</td> </tr> <tr> <td id colspan>Washington</td> <td id colspan>-0.4%</td> <td id colspan>2.4%</td> </tr> </tbody> </table> <p>Read: <a href="http://fakehost/story/mortgage-rates-edge-up-even-as-trade-war-worries-loom-ahead-2018-03-22">Mortgage rates edge up even as trade war worries loom ahead</a></p>
diff --git a/test/test-pages/medium-1/expected.html b/test/test-pages/medium-1/expected.html
index 679d8b7..4b399f0 100644
--- a/test/test-pages/medium-1/expected.html
+++ b/test/test-pages/medium-1/expected.html
@@ -1,54 +1,61 @@
<div>
- <h2 data-align="center" id="3c62" name="3c62">Open Journalism Project:</h2>
+ <h2 name="3c62" id="3c62" data-align="center">Open Journalism Project:</h2>
- <h4 data-align="center" id="425a" name="425a"><em>Better Student Journalism</em></h4>
+ <h4 name="425a" id="425a" data-align="center"><em>Better Student Journalism</em></h4>
- <p id="d178" name="d178">We pushed out the first version of the <a data-href="http://pippinlee.github.io/open-journalism-project/" href="http://pippinlee.github.io/open-journalism-project/" rel="nofollow">Open Journalism site</a> in January. Our goal is for the
+ <p name="d178" id="d178">We pushed out the first version of the <a href="http://pippinlee.github.io/open-journalism-project/" data-href="http://pippinlee.github.io/open-journalism-project/" rel="nofollow">Open Journalism site</a> in January. Our goal is for the
site to be a place to teach students what they should know about journalism
on the web. It should be fun too.</p>
- <p id="01ed" name="01ed">Topics like <a data-href="http://pippinlee.github.io/open-journalism-project/Mapping/" href="http://pippinlee.github.io/open-journalism-project/Mapping/" rel="nofollow">mapping</a>, <a data-href="http://pippinlee.github.io/open-journalism-project/Security/" href="http://pippinlee.github.io/open-journalism-project/Security/" rel="nofollow">security</a>, command
- line tools, and <a data-href="http://pippinlee.github.io/open-journalism-project/Open-source/" href="http://pippinlee.github.io/open-journalism-project/Open-source/" rel="nofollow">open source</a> are
+ <p name="01ed" id="01ed">Topics like <a href="http://pippinlee.github.io/open-journalism-project/Mapping/" data-href="http://pippinlee.github.io/open-journalism-project/Mapping/" rel="nofollow">mapping</a>, <a href="http://pippinlee.github.io/open-journalism-project/Security/" data-href="http://pippinlee.github.io/open-journalism-project/Security/" rel="nofollow">security</a>, command
+ line tools, and <a href="http://pippinlee.github.io/open-journalism-project/Open-source/" data-href="http://pippinlee.github.io/open-journalism-project/Open-source/" rel="nofollow">open source</a> are
all concepts that should be made more accessible, and should be easily
understood at a basic level by all journalists. We’re focusing on students
because we know student journalism well, and we believe that teaching maturing
journalists about the web will provide them with an important lens to view
the world with. This is how we got to where we are now.</p>
- <h3 id="0348" name="0348">Circa 2011</h3>
- <p id="f923" name="f923">In late 2011 I sat in the design room of our university’s student newsroom
+ <h3 name="0348" id="0348">Circa 2011</h3>
+ <p name="f923" id="f923">In late 2011 I sat in the design room of our university’s student newsroom
with some of the other editors: Kate Hudson, Brent Rose, and Nicholas Maronese.
I was working as the photo editor then—something I loved doing. I was very
happy travelling and photographing people while listening to their stories.</p>
- <p id="c9d4" name="c9d4">Photography was my lucky way of experiencing the many types of people
+ <p name="c9d4" id="c9d4">Photography was my lucky way of experiencing the many types of people
my generation seemed to avoid, as well as many the public spends too much
time discussing. One of my habits as a photographer was scouring sites
like Flickr to see how others could frame the world in ways I hadn’t previously
considered.</p>
- <figure id="06e8" name="06e8"><div>
+ <figure name="06e8" id="06e8">
+ <div>
- <p><img data-action="zoom" data-action-value="1*AzYWbe4cZkMMEUbfRjysLQ.png" data-height="500" data-image-id="1*AzYWbe4cZkMMEUbfRjysLQ.png" data-width="1000" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*AzYWbe4cZkMMEUbfRjysLQ.png"></img></p></div>
- <figcaption>topleftpixel.com</figcaption></figure><p id="930f" name="930f">I started discovering beautiful things the <a data-href="http://wvs.topleftpixel.com/13/02/06/timelapse-strips-homewood.htm" href="http://wvs.topleftpixel.com/13/02/06/timelapse-strips-homewood.htm" rel="nofollow">web could do with images</a>:
+ <p><img data-image-id="1*AzYWbe4cZkMMEUbfRjysLQ.png" data-width="1000" data-height="500" data-action="zoom" data-action-value="1*AzYWbe4cZkMMEUbfRjysLQ.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*AzYWbe4cZkMMEUbfRjysLQ.png">
+ </p></div>
+ <figcaption>topleftpixel.com</figcaption>
+ </figure>
+ <p name="930f" id="930f">I started discovering beautiful things the <a href="http://wvs.topleftpixel.com/13/02/06/timelapse-strips-homewood.htm" data-href="http://wvs.topleftpixel.com/13/02/06/timelapse-strips-homewood.htm" rel="nofollow">web could do with images</a>:
things not possible with print. Just as every generation revolts against
walking in the previous generations shoes, I found myself questioning the
expectations that I came up against as a photo editor. In our newsroom
the expectations were built from an outdated information world. We were
expected to fill old shoes.</p>
- <p id="2674" name="2674">So we sat in our student newsroom—not very happy with what we were doing.
+ <p name="2674" id="2674">So we sat in our student newsroom—not very happy with what we were doing.
Our weekly newspaper had remained essentially unchanged for 40+ years.
Each editorial position had the same requirement every year. The <em>big</em> change
happened in the 80s when the paper started using colour. We’d also stumbled
into having a website, but it was updated just once a week with the release
of the newspaper.</p>
- <p id="e498" name="e498">Information had changed form, but the student newsroom hadn’t, and it
+ <p name="e498" id="e498">Information had changed form, but the student newsroom hadn’t, and it
was becoming harder to romanticize the dusty newsprint smell coming from
the shoes we were handed down from previous generations of editors. It
was, we were told, all part of “becoming a journalist.”</p>
- <figure id="12da" name="12da"><div>
+ <figure name="12da" id="12da">
+ <div>
- <p><img data-action="zoom" data-action-value="1*d0Hp6KlzyIcGHcL6to1sYQ.png" data-height="451" data-image-id="1*d0Hp6KlzyIcGHcL6to1sYQ.png" data-width="868" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*d0Hp6KlzyIcGHcL6to1sYQ.png"></img></p></div>
- </figure><h3 id="e2f0" name="e2f0">We don’t know what we don’t know</h3>
- <p id="8263" name="8263">We spent much of the rest of the school year asking “what should we be
+ <p><img data-image-id="1*d0Hp6KlzyIcGHcL6to1sYQ.png" data-width="868" data-height="451" data-action="zoom" data-action-value="1*d0Hp6KlzyIcGHcL6to1sYQ.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*d0Hp6KlzyIcGHcL6to1sYQ.png">
+ </p></div>
+ </figure>
+ <h3 name="e2f0" id="e2f0">We don’t know what we don’t know</h3>
+ <p name="8263" id="8263">We spent much of the rest of the school year asking “what should we be
doing in the newsroom?”, which mainly led us to ask “how do we use the
web to tell stories?” It was a straightforward question that led to many
more questions about the web: something we knew little about. Out in the
@@ -56,12 +63,12 @@
in a dying print world. They wore the same design of shoes that we were
supposed to fill. Being pushed to repeat old, failing strategies and blocked
from trying something new scared us.</p>
- <p id="231e" name="231e">We had questions, so we started doing some research. We talked with student
+ <p name="231e" id="231e">We had questions, so we started doing some research. We talked with student
newsrooms in Canada and the United States, and filled too many Google Doc
files with notes. Looking at the notes now, they scream of fear. We annotated
our notes with naive solutions, often involving scrambled and immature
odysseys into the future of online journalism.</p>
- <p id="6ec3" name="6ec3">There was a lot we didn’t know. We didn’t know <strong>how to build a mobile app</strong>.
+ <p name="6ec3" id="6ec3">There was a lot we didn’t know. We didn’t know <strong>how to build a mobile app</strong>.
We didn’t know <strong>if we should build a mobile app</strong>.
We didn’t know <strong>how to run a server</strong>.
We didn’t know <strong>where to go to find a server</strong>.
@@ -69,122 +76,141 @@
We didn’t know <strong>how people used the web to read news</strong>.
We didn’t know <strong>what news should be on the web</strong>.
If news is just information, what does that even look like?</p>
- <p id="f373" name="f373">We asked these questions to many students at other papers to get a consensus
+ <p name="f373" id="f373">We asked these questions to many students at other papers to get a consensus
of what had worked and what hadn’t. They reported similar questions and
fears about the web but followed with “print advertising is keeping us
afloat so we can’t abandon it”.</p>
- <p id="034b" name="034b">In other words, we knew that we should be building a newer pair of shoes,
+ <p name="034b" id="034b">In other words, we knew that we should be building a newer pair of shoes,
but we didn’t know what the function of the shoes should be.</p>
- <h3 id="ea15" name="ea15">Common problems in student newsrooms (2011)</h3>
- <p id="a90b" name="a90b">Our questioning of other student journalists in 15 student newsrooms brought
+ <h3 name="ea15" id="ea15">Common problems in student newsrooms (2011)</h3>
+ <p name="a90b" id="a90b">Our questioning of other student journalists in 15 student newsrooms brought
up a few repeating issues.</p>
- <ul><li id="a586" name="a586">Lack of mentorship</li>
- <li id="a953" name="a953">A news process that lacked consideration of the web</li>
- <li id="6286" name="6286">No editor/position specific to the web</li>
- <li id="04c1" name="04c1">Little exposure to many of the cool projects being put together by professional
+ <ul>
+ <li name="a586" id="a586">Lack of mentorship</li>
+ <li name="a953" id="a953">A news process that lacked consideration of the web</li>
+ <li name="6286" id="6286">No editor/position specific to the web</li>
+ <li name="04c1" id="04c1">Little exposure to many of the cool projects being put together by professional
newsrooms</li>
- <li id="a1fb" name="a1fb">Lack of diverse skills within the newsroom. Writers made up 95% of the
+ <li name="a1fb" id="a1fb">Lack of diverse skills within the newsroom. Writers made up 95% of the
personnel. Students with other skills were not sought because journalism
was seen as “a career with words.” The other 5% were designers, designing
words on computers, for print.</li>
- <li id="0be9" name="0be9">Not enough discussion between the business side and web efforts</li>
- </ul><figure id="79ed" name="79ed"><div>
+ <li name="0be9" id="0be9">Not enough discussion between the business side and web efforts</li>
+ </ul>
+ <figure name="79ed" id="79ed">
+ <div>
- <p><img data-action="zoom" data-action-value="1*_9KYIFrk_PqWFgptsMDeww.png" data-height="500" data-image-id="1*_9KYIFrk_PqWFgptsMDeww.png" data-width="1086" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*_9KYIFrk_PqWFgptsMDeww.png"></img></p></div>
- <figcaption>From our 2011 research</figcaption></figure><h3 id="8d0c" name="8d0c">Common problems in student newsrooms (2013)</h3>
- <p id="3ef6" name="3ef6">Two years later, we went back and looked at what had changed. We talked
+ <p><img data-image-id="1*_9KYIFrk_PqWFgptsMDeww.png" data-width="1086" data-height="500" data-action="zoom" data-action-value="1*_9KYIFrk_PqWFgptsMDeww.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*_9KYIFrk_PqWFgptsMDeww.png">
+ </p></div>
+ <figcaption>From our 2011 research</figcaption>
+ </figure>
+ <h3 name="8d0c" id="8d0c">Common problems in student newsrooms (2013)</h3>
+ <p name="3ef6" id="3ef6">Two years later, we went back and looked at what had changed. We talked
to a dozen more newsrooms and weren’t surprised by our findings.</p>
- <ul><li id="abb1" name="abb1">Still no mentorship or link to professional newsrooms building stories
+ <ul>
+ <li name="abb1" id="abb1">Still no mentorship or link to professional newsrooms building stories
for the web</li>
- <li id="9250" name="9250">Very little control of website and technology</li>
- <li id="d822" name="d822">The lack of exposure that student journalists have to interactive storytelling.
+ <li name="9250" id="9250">Very little control of website and technology</li>
+ <li name="d822" id="d822">The lack of exposure that student journalists have to interactive storytelling.
While some newsrooms are in touch with what’s happening with the web and
journalism, there still exists a huge gap between the student newsroom
and its professional counterpart</li>
- <li id="6bf2" name="6bf2">No time in the current news development cycle for student newsrooms to
+ <li name="6bf2" id="6bf2">No time in the current news development cycle for student newsrooms to
experiment with the web</li>
- <li id="e62f" name="e62f">Lack of skill diversity (specifically coding, interaction design, and
+ <li name="e62f" id="e62f">Lack of skill diversity (specifically coding, interaction design, and
statistics)</li>
- <li id="f4f0" name="f4f0">Overly restricted access to student website technology. Changes are primarily
+ <li name="f4f0" id="f4f0">Overly restricted access to student website technology. Changes are primarily
visual rather than functional.</li>
- <li id="8b8d" name="8b8d">Significantly reduced print production of many papers</li>
- <li id="dfe0" name="dfe0">Computers aren’t set up for experimenting with software and code, and
+ <li name="8b8d" id="8b8d">Significantly reduced print production of many papers</li>
+ <li name="dfe0" id="dfe0">Computers aren’t set up for experimenting with software and code, and
often locked down</li>
- </ul><p id="52cd" name="52cd">Newsrooms have traditionally been covered in copies of The New York Times
+ </ul>
+ <p name="52cd" id="52cd">Newsrooms have traditionally been covered in copies of The New York Times
or Globe and Mail. Instead newsrooms should try spend at 20 minutes each
week going over the coolest/weirdest online storytelling in an effort to
- expose each other to what is possible. “<a data-href="http://nytlabs.com/" href="http://nytlabs.com/" rel="nofollow">Hey, what has the New York Times R&amp;D lab been up to this week?</a>”</p>
- <p id="0142" name="0142">Instead of having computers that are locked down, try setting aside a
+ expose each other to what is possible. “<a href="http://nytlabs.com/" data-href="http://nytlabs.com/" rel="nofollow">Hey, what has the New York Times R&amp;D lab been up to this week?</a>”</p>
+ <p name="0142" id="0142">Instead of having computers that are locked down, try setting aside a
few office computers that allow students to play and “break”, or encourage
editors to buy their own Macbooks so they’re always able to practice with
code and new tools on their own.</p>
- <p id="5d29" name="5d29">From all this we realized that changing a student newsroom is difficult.
+ <p name="5d29" id="5d29">From all this we realized that changing a student newsroom is difficult.
It takes patience. It requires that the business and editorial departments
of the student newsroom be on the same (web)page. The shoes of the future
must be different from the shoes we were given.</p>
- <p id="1ffc" name="1ffc">We need to rethink how long the new shoe design will be valid. It’s more
+ <p name="1ffc" id="1ffc">We need to rethink how long the new shoe design will be valid. It’s more
important that we focus on the process behind making footwear than on actually
creating a specific shoe. We shouldn’t be building a shoe to last 40 years.
Our footwear design process will allow us to change and adapt as technology
evolves. The media landscape will change, so having a newsroom that can
change with it will be critical.</p>
- <p id="2888" name="2888"><strong>We are building a shoe machine, not a shoe.</strong>
+ <p name="2888" id="2888"><strong>We are building a shoe machine, not a shoe.</strong>
</p>
- <h3 id="9c30" name="9c30">A train or light at the end of the tunnel: are student newsrooms changing for the better?</h3>
+ <h3 name="9c30" id="9c30">A train or light at the end of the tunnel: are student newsrooms changing for the better?</h3>
- <p id="4634" name="4634">In our 2013 research we found that almost 50% of student newsrooms had
+ <p name="4634" id="4634">In our 2013 research we found that almost 50% of student newsrooms had
created roles specifically for the web. <strong>This sounds great, but is still problematic in its current state.</strong>
</p>
- <figure id="416f" name="416f"><div>
+ <figure name="416f" id="416f">
+ <div>
- <p><img data-height="560" data-image-id="1*Vh2MpQjqjPkzYJaaWExoVg.png" data-width="624" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*Vh2MpQjqjPkzYJaaWExoVg.png"></img></p></div>
+ <p><img data-image-id="1*Vh2MpQjqjPkzYJaaWExoVg.png" data-width="624" data-height="560" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*Vh2MpQjqjPkzYJaaWExoVg.png">
+ </p></div>
<figcaption><strong>We designed many of these slides to help explain to ourselves what we were doing</strong>
- </figcaption></figure><p id="39e6" name="39e6">When a newsroom decides to create a position for the web, it’s often with
+ </figcaption>
+ </figure>
+ <p name="39e6" id="39e6">When a newsroom decides to create a position for the web, it’s often with
the intent of having content flow steadily from writers onto the web. This
is a big improvement from just uploading stories to the web whenever there
is a print issue. <em>However…</em>
</p>
- <ol><li id="91b5" name="91b5"><strong>The handoff</strong>
- <br></br>Problems arise because web editors are given roles that absolve the rest
+ <ol>
+ <li name="91b5" id="91b5"><strong>The handoff</strong>
+ <br>Problems arise because web editors are given roles that absolve the rest
of the editors from thinking about the web. All editors should be involved
in the process of story development for the web. While it’s a good idea
to have one specific editor manage the website, contributors and editors
should all play with and learn about the web. Instead of “can you make
a computer do XYZ for me?”, we should be saying “can you show me how to
make a computer do XYZ?”</li>
- <li id="6448" name="6448"><strong>Not just social media<br></br></strong>A
+ <li name="6448" id="6448"><strong>Not just social media<br></strong>A
web editor could do much more than simply being in charge of the social
media accounts for the student paper. Their responsibility could include
teaching all other editors to be listening to what’s happening online.
The web editor can take advantage of live information to change how the
student newsroom reports news in real time.</li>
- <li id="ab30" name="ab30"><strong>Web (interactive) editor<br></br></strong>The
+ <li name="ab30" id="ab30"><strong>Web (interactive) editor<br></strong>The
goal of having a web editor should be for someone to build and tell stories
that take full advantage of the web as their medium. Too often the web’s
interactivity is not considered when developing the story. The web then
ends up as a resting place for print words.</li>
- </ol><p id="e983" name="e983">Editors at newsrooms are still figuring out how to convince writers of
+ </ol>
+ <p name="e983" id="e983">Editors at newsrooms are still figuring out how to convince writers of
the benefit to having their content online. There’s still a stronger draw
to writers seeing their name in print than on the web. Showing writers
that their stories can be told in new ways to larger audiences is a convincing
argument that the web is a starting point for telling a story, not its
graveyard.</p>
- <p id="5c11" name="5c11">When everyone in the newsroom approaches their website with the intention
+ <p name="5c11" id="5c11">When everyone in the newsroom approaches their website with the intention
of using it to explore the web as a medium, they all start to ask “what
is possible?” and “what can be done?” You can’t expect students to think
in terms of the web if it’s treated as a place for print words to hang
out on a web page.</p>
- <p id="4eb1" name="4eb1">We’re OK with this problem, if we see newsrooms continue to take small
+ <p name="4eb1" id="4eb1">We’re OK with this problem, if we see newsrooms continue to take small
steps towards having all their editors involved in the stories for the
web.</p>
- <figure id="7aab" name="7aab"><div>
+ <figure name="7aab" id="7aab">
+ <div>
- <p><img data-action="zoom" data-action-value="1*2Ln_DmC95Xpz6LzgywkcFQ.png" data-height="718" data-image-id="1*2Ln_DmC95Xpz6LzgywkcFQ.png" data-width="1315" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*2Ln_DmC95Xpz6LzgywkcFQ.png"></img></p></div>
+ <p><img data-image-id="1*2Ln_DmC95Xpz6LzgywkcFQ.png" data-width="1315" data-height="718" data-action="zoom" data-action-value="1*2Ln_DmC95Xpz6LzgywkcFQ.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*2Ln_DmC95Xpz6LzgywkcFQ.png">
+ </p></div>
<figcaption>The current Open Journalism site was a few years in the making. This was
- an original launch page we use in 2012</figcaption></figure><h3 id="08f5" name="08f5">What we know</h3>
- <ul><li id="f7fe" name="f7fe"><strong>New process</strong>
- <br></br>Our rough research has told us newsrooms need to be reorganized. This
+ an original launch page we use in 2012</figcaption>
+ </figure>
+ <h3 name="08f5" id="08f5">What we know</h3>
+ <ul>
+ <li name="f7fe" id="f7fe"><strong>New process</strong>
+ <br>Our rough research has told us newsrooms need to be reorganized. This
includes every part of the newsroom’s workflow: from where a story and
its information comes from, to thinking of every word, pixel, and interaction
the reader will have with your stories. If I was a photo editor that wanted
@@ -196,16 +222,16 @@
“digital manifestos”, it’s about being curious enough that you’ll want
to to continue experimenting with your process until you’ve found one that
fits your newsroom’s needs.</li>
- <li id="d757" name="d757"><strong>More (remote) mentorship</strong>
- <br></br>Lack of mentorship is still a big problem. <a data-href="http://www.google.com/get/journalismfellowship/" href="http://www.google.com/get/journalismfellowship/" rel="nofollow">Google’s fellowship program</a> is great. The fact that it
+ <li name="d757" id="d757"><strong>More (remote) mentorship</strong>
+ <br>Lack of mentorship is still a big problem. <a href="http://www.google.com/get/journalismfellowship/" data-href="http://www.google.com/get/journalismfellowship/" rel="nofollow">Google’s fellowship program</a> is great. The fact that it
only caters to United States students isn’t. There are only a handful of
internships in Canada where students interested in journalism can get experience
writing code and building interactive stories. We’re OK with this for now,
as we expect internships and mentorship over the next 5 years between professional
newsrooms and student newsrooms will only increase. It’s worth noting that
some of that mentorship will likely be done remotely.</li>
- <li id="a9b8" name="a9b8"><strong>Changing a newsroom culture</strong>
- <br></br>Skill diversity needs to change. We encourage every student newsroom we
+ <li name="a9b8" id="a9b8"><strong>Changing a newsroom culture</strong>
+ <br>Skill diversity needs to change. We encourage every student newsroom we
talk to, to start building a partnership with their school’s Computer Science
department. It will take some work, but you’ll find there are many CS undergrads
that love playing with web technologies, and using data to tell stories.
@@ -215,71 +241,83 @@
who love statistics and exploring data. Getting students who are amazing
at design, data, code, words, and images into one room is one of the coolest
experience I’ve had. Everyone benefits from a more diverse newsroom.</li>
- </ul><h3 id="a67e" name="a67e">What we don’t know</h3>
- <ul><li id="7320" name="7320"><strong>Sharing curiosity for the web</strong>
- <br></br>We don’t know how to best teach students about the web. It’s not efficient
+ </ul>
+ <h3 name="a67e" id="a67e">What we don’t know</h3>
+ <ul>
+ <li name="7320" id="7320"><strong>Sharing curiosity for the web</strong>
+ <br>We don’t know how to best teach students about the web. It’s not efficient
for us to teach coding classes. We do go into newsrooms and get them running
their first code exercises, but if someone wants to learn to program, we
can only provide the initial push and curiosity. We will be trying out
“labs” with a few schools next school year to hopefully get a better idea
of how to teach students about the web.</li>
- <li id="8b23" name="8b23"><strong>Business</strong>
- <br></br>We don’t know how to convince the business side of student papers that
+ <li name="8b23" id="8b23"><strong>Business</strong>
+ <br>We don’t know how to convince the business side of student papers that
they should invest in the web. At the very least we’re able to explain
that having students graduate with their current skill set is painful in
the current job market.</li>
- <li id="191e" name="191e"><strong>The future</strong>
- <br></br>We don’t know what journalism or the web will be like in 10 years, but
+ <li name="191e" id="191e"><strong>The future</strong>
+ <br>We don’t know what journalism or the web will be like in 10 years, but
we can start encouraging students to keep an open mind about the skills
they’ll need. We’re less interested in preparing students for the current
newsroom climate, than we are in teaching students to have the ability
to learn new tools quickly as they come and go.</li>
- </ul></div><div>
- <h3 id="009a" name="009a">What we’re trying to share with others</h3>
- <ul><li id="8bfa" name="8bfa"><strong>A concise guide to building stories for the web</strong>
- <br></br>There are too many options to get started. We hope to provide an opinionated
+ </ul>
+ </div><div>
+ <h3 name="009a" id="009a">What we’re trying to share with others</h3>
+ <ul>
+ <li name="8bfa" id="8bfa"><strong>A concise guide to building stories for the web</strong>
+ <br>There are too many options to get started. We hope to provide an opinionated
guide that follows both our experiences, research, and observations from
trying to teach our peers.</li>
- </ul><p id="8196" name="8196">Student newsrooms don’t have investors to please. Student newsrooms can
+ </ul>
+ <p name="8196" id="8196">Student newsrooms don’t have investors to please. Student newsrooms can
change their website every week if they want to try a new design or interaction.
As long as students start treating the web as a different medium, and start
building stories around that idea, then we’ll know we’re moving forward.</p>
- <h3 id="f6c6" name="f6c6">A note to professional news orgs</h3>
- <p id="d8f5" name="d8f5">We’re also asking professional newsrooms to be more open about their process
+ <h3 name="f6c6" id="f6c6">A note to professional news orgs</h3>
+ <p name="d8f5" id="d8f5">We’re also asking professional newsrooms to be more open about their process
of developing stories for the web. You play a big part in this. This means
writing about it, and sharing code. We need to start building a bridge
between student journalism and professional newsrooms.</p>
- <figure id="7ed3" name="7ed3"><div>
+ <figure name="7ed3" id="7ed3">
+ <div>
- <p><img data-height="400" data-image-id="1*bXaR_NBJdoHpRc8lUWSsow.png" data-width="686" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*bXaR_NBJdoHpRc8lUWSsow.png"></img></p></div>
- <figcaption>2012</figcaption></figure><h3 id="ee1b" name="ee1b">This is a start</h3>
- <p id="ebf9" name="ebf9">We going to continue slowly growing the content on <a data-href="http://pippinlee.github.io/open-journalism-project/" href="http://pippinlee.github.io/open-journalism-project/" rel="nofollow">Open Journalism</a>. We still consider this the beta version,
+ <p><img data-image-id="1*bXaR_NBJdoHpRc8lUWSsow.png" data-width="686" data-height="400" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*bXaR_NBJdoHpRc8lUWSsow.png">
+ </p></div>
+ <figcaption>2012</figcaption>
+ </figure>
+ <h3 name="ee1b" id="ee1b">This is a start</h3>
+ <p name="ebf9" id="ebf9">We going to continue slowly growing the content on <a href="http://pippinlee.github.io/open-journalism-project/" data-href="http://pippinlee.github.io/open-journalism-project/" rel="nofollow">Open Journalism</a>. We still consider this the beta version,
but expect to polish it, and beef up the content for a real launch at the
beginning of the summer.</p>
- <p id="bd44" name="bd44">We expect to have more original tutorials as well as the beginnings of
+ <p name="bd44" id="bd44">We expect to have more original tutorials as well as the beginnings of
what a curriculum may look like that a student newsroom can adopt to start
guiding their transition to become a web first newsroom. We’re also going
- to be working with the <a data-href="http://queensjournal.ca/" href="http://queensjournal.ca/" rel="nofollow">Queen’s Journal</a> and
- <a data-href="http://ubyssey.ca/" href="http://ubyssey.ca/" rel="nofollow">The Ubyssey</a>next school year to better understand how to make the student
+ to be working with the <a href="http://queensjournal.ca/" data-href="http://queensjournal.ca/" rel="nofollow">Queen’s Journal</a> and
+ <a href="http://ubyssey.ca/" data-href="http://ubyssey.ca/" rel="nofollow">The Ubyssey</a>next school year to better understand how to make the student
newsroom a place for experimenting with telling stories on the web. If
this sound like a good idea in your newsroom, we’re still looking to add
1 more school.</p>
- <p id="abd5" name="abd5">We’re trying out some new shoes. And while they’re not self-lacing, and
+ <p name="abd5" id="abd5">We’re trying out some new shoes. And while they’re not self-lacing, and
smell a bit different, we feel lacing up a new pair of kicks can change
a lot.</p>
- <figure id="4c68" name="4c68"><div>
+ <figure name="4c68" id="4c68">
+ <div>
- <p><img data-action="zoom" data-action-value="1*lulfisQxgSQ209vPHMAifg.png" data-height="534" data-image-id="1*lulfisQxgSQ209vPHMAifg.png" data-width="950" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*lulfisQxgSQ209vPHMAifg.png"></img></p></div>
+ <p><img data-image-id="1*lulfisQxgSQ209vPHMAifg.png" data-width="950" data-height="534" data-action="zoom" data-action-value="1*lulfisQxgSQ209vPHMAifg.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*lulfisQxgSQ209vPHMAifg.png">
+ </p></div>
</figure>
- <p id="2c5c" name="2c5c"><strong>Let’s talk. Let’s listen.</strong>
+
+ <p name="2c5c" id="2c5c"><strong>Let’s talk. Let’s listen.</strong>
</p>
- <p id="63ec" name="63ec"><strong>We’re still in the early stages of what this project will look like, so if you want to help or have thoughts, let’s talk.</strong>
+ <p name="63ec" id="63ec"><strong>We’re still in the early stages of what this project will look like, so if you want to help or have thoughts, let’s talk.</strong>
</p>
- <p id="9376" name="9376"><a data-href="mailto:[email protected]" href="mailto:[email protected]" rel="nofollow"><strong>[email protected]</strong></a>
+ <p name="9376" id="9376"><a href="mailto:[email protected]" data-href="mailto:[email protected]" rel="nofollow"><strong>[email protected]</strong></a>
</p>
- <p id="ea00" name="ea00"><em>This isn’t supposed to be a </em>
+ <p name="ea00" id="ea00"><em>This isn’t supposed to be a </em>
<strong><em>manifesto™©</em>
</strong><em> we just think it’s pretty cool to share what we’ve learned so far, and hope you’ll do the same. We’re all in this together.</em>
</p>
diff --git a/test/test-pages/medium-2/expected.html b/test/test-pages/medium-2/expected.html
index 222b09d..73d436f 100644
--- a/test/test-pages/medium-2/expected.html
+++ b/test/test-pages/medium-2/expected.html
@@ -1 +1 @@
-<section name="d9f8"><div><div><figure id="4924" name="4924"><div><p><img data-action="zoom" data-action-value="1*eR_J8DurqygbhrwDg-WPnQ.png" data-height="1280" data-image-id="1*eR_J8DurqygbhrwDg-WPnQ.png" data-width="1891" src="https://d262ilb51hltx0.cloudfront.net/max/1600/1*eR_J8DurqygbhrwDg-WPnQ.png"></img></p></div><figcaption>Words need defenders.</figcaption></figure><h3 id="b098" name="b098">On Behalf of “Literally”</h3><p id="1a73" name="1a73">You either are a “literally” abuser or know of one. If you’re anything like me, hearing the word “literally” used incorrectly causes a little piece of your soul to whither and die. Of course I do not mean that literally, I mean that figuratively. An abuser would have said: “Every time a person uses that word, a piece of my soul literally withers and dies.” Which is terribly, horribly wrong.</p><p id="104a" name="104a">For whatever bizarre reason, people feel the need to use literally as a sort of verbal crutch. They use it to emphasize a point, which is silly because they’re already using an analogy or a metaphor to illustrate said point. For example: “Ugh, I literally tore the house apart looking for my remote control!” No, you literally did not tear apart your house, because it’s still standing. If you’d just told me you “tore your house apart” searching for your remote, I would’ve understood what you meant. No need to add “literally” to the sentence.</p><p id="c2c0" name="c2c0">Maybe I should define literally.</p><blockquote id="b239" name="b239">Literally means actually. When you say something literally happened, you’re describing the scene or situation as it actually happened.</blockquote><p id="a8fd" name="a8fd">So you should only use literally when you mean it. It should not be used in hyperbole. Example: “That was so funny I literally cried.” Which is possible. Some things are funny enough to elicit tears. Note the example stops with “literally cried.” You cannot <em>literally cry your eyes out</em>. The joke wasn’t so funny your eyes popped out of their sockets.</p><h4 id="165a" name="165a">When in Doubt, Leave it Out</h4><p id="e434" name="e434">“I’m so hungry I could eat a horse,” means you’re hungry. You don’t need to say “I’m so hungry I could literally eat a horse.” Because you can’t do that in one sitting, I don’t care how big your stomach is.</p><p id="d88f" name="d88f">“That play was so funny I laughed my head off,” illustrates the play was amusing. You don’t need to say you literally laughed your head off, because then your head would be on the ground and you wouldn’t be able to speak, much less laugh.</p><p id="4bab" name="4bab">“I drove so fast my car was flying,” we get your point: you were speeding. But your car is never going fast enough to fly, so don’t say your car was literally flying.</p><h4 id="f2f0" name="f2f0">Insecurities?</h4><p id="1bd7" name="1bd7">Maybe no one believed a story you told as a child, and you felt the need to prove that it actually happened. <em>No really, mom, I literally climbed the tree. </em>In efforts to prove truth, you used literally to describe something real, however outlandish it seemed. Whatever the reason, now your overuse of literally has become a habit.</p><h4 id="d7c1" name="d7c1">Hard Habit to Break?</h4><p id="714b" name="714b">Abusing literally isn’t as bad a smoking, but it’s still an unhealthy habit (I mean that figuratively). Help is required in order to break it.</p><p id="f929" name="f929">This is my version of an intervention for literally abusers. I’m not sure how else to do it other than in writing. I know this makes me sound like a know-it-all, and I accept that. But there’s no excuse other than blatant ignorance to misuse the word “literally.” So just stop it.</p><p id="fd19" name="fd19">Don’t say “Courtney, this post is so snobbish it literally burned up my computer.” Because nothing is that snobbish that it causes computers to combust. Or: “Courtney, your head is so big it literally cannot get through the door.” Because it can, unless it’s one of those tiny doors from <em>Alice in Wonderland</em> and I need to eat a mushroom to make my whole body smaller.</p><h4 id="fe12" name="fe12">No One’s Perfect</h4><p id="7ff8" name="7ff8">And I’m not saying I am. I’m trying to restore meaning to a word that’s lost meaning. I’m standing up for literally. It’s a good word when used correctly. People are butchering it and destroying it every day (figuratively speaking) and the massacre needs to stop. Just as there’s a coalition of people against the use of certain fonts (like <a data-href="http://bancomicsans.com/main/?page_id=2" href="http://bancomicsans.com/main/?page_id=2" rel="nofollow">Comic Sans</a> and <a data-href="https://www.facebook.com/group.php?gid=14448723154" href="https://www.facebook.com/group.php?gid=14448723154" rel="nofollow">Papyrus</a>), so should there be a coalition of people against the abuse of literally.</p><h4 id="049e" name="049e">Saying it to Irritate?</h4><p id="9381" name="9381">Do you misuse the word “literally” just to annoy your know-it-all or grammar police friends/acquaintances/total strangers? If so, why? Doing so would be like me going outside when it’s freezing, wearing nothing but a pair of shorts and t-shirt in hopes of making you cold by just looking at me. Who suffers more?</p><h4 id="3e52" name="3e52">Graphical Representation</h4><p id="b57e" name="b57e">Matthew Inman of “The Oatmeal” wrote a comic about literally. Abusers and defenders alike <a data-href="http://theoatmeal.com/comics/literally" href="http://theoatmeal.com/comics/literally" rel="nofollow">should check it out</a>. It’s clear this whole craze about literally is driving a lot of us nuts. You literally abusers are killing off pieces of our souls. You must be stopped, or the world will be lost to meaninglessness forever. Figuratively speaking.</p></div></div></section> \ No newline at end of file
+<section name="d9f8"><div><div><figure name="4924" id="4924"><div><p><img data-image-id="1*eR_J8DurqygbhrwDg-WPnQ.png" data-width="1891" data-height="1280" data-action="zoom" data-action-value="1*eR_J8DurqygbhrwDg-WPnQ.png" src="https://d262ilb51hltx0.cloudfront.net/max/1600/1*eR_J8DurqygbhrwDg-WPnQ.png"></p></div><figcaption>Words need defenders.</figcaption></figure><h3 name="b098" id="b098">On Behalf of “Literally”</h3><p name="1a73" id="1a73">You either are a “literally” abuser or know of one. If you’re anything like me, hearing the word “literally” used incorrectly causes a little piece of your soul to whither and die. Of course I do not mean that literally, I mean that figuratively. An abuser would have said: “Every time a person uses that word, a piece of my soul literally withers and dies.” Which is terribly, horribly wrong.</p><p name="104a" id="104a">For whatever bizarre reason, people feel the need to use literally as a sort of verbal crutch. They use it to emphasize a point, which is silly because they’re already using an analogy or a metaphor to illustrate said point. For example: “Ugh, I literally tore the house apart looking for my remote control!” No, you literally did not tear apart your house, because it’s still standing. If you’d just told me you “tore your house apart” searching for your remote, I would’ve understood what you meant. No need to add “literally” to the sentence.</p><p name="c2c0" id="c2c0">Maybe I should define literally.</p><blockquote name="b239" id="b239">Literally means actually. When you say something literally happened, you’re describing the scene or situation as it actually happened.</blockquote><p name="a8fd" id="a8fd">So you should only use literally when you mean it. It should not be used in hyperbole. Example: “That was so funny I literally cried.” Which is possible. Some things are funny enough to elicit tears. Note the example stops with “literally cried.” You cannot <em>literally cry your eyes out</em>. The joke wasn’t so funny your eyes popped out of their sockets.</p><h4 name="165a" id="165a">When in Doubt, Leave it Out</h4><p name="e434" id="e434">“I’m so hungry I could eat a horse,” means you’re hungry. You don’t need to say “I’m so hungry I could literally eat a horse.” Because you can’t do that in one sitting, I don’t care how big your stomach is.</p><p name="d88f" id="d88f">“That play was so funny I laughed my head off,” illustrates the play was amusing. You don’t need to say you literally laughed your head off, because then your head would be on the ground and you wouldn’t be able to speak, much less laugh.</p><p name="4bab" id="4bab">“I drove so fast my car was flying,” we get your point: you were speeding. But your car is never going fast enough to fly, so don’t say your car was literally flying.</p><h4 name="f2f0" id="f2f0">Insecurities?</h4><p name="1bd7" id="1bd7">Maybe no one believed a story you told as a child, and you felt the need to prove that it actually happened. <em>No really, mom, I literally climbed the tree. </em>In efforts to prove truth, you used literally to describe something real, however outlandish it seemed. Whatever the reason, now your overuse of literally has become a habit.</p><h4 name="d7c1" id="d7c1">Hard Habit to Break?</h4><p name="714b" id="714b">Abusing literally isn’t as bad a smoking, but it’s still an unhealthy habit (I mean that figuratively). Help is required in order to break it.</p><p name="f929" id="f929">This is my version of an intervention for literally abusers. I’m not sure how else to do it other than in writing. I know this makes me sound like a know-it-all, and I accept that. But there’s no excuse other than blatant ignorance to misuse the word “literally.” So just stop it.</p><p name="fd19" id="fd19">Don’t say “Courtney, this post is so snobbish it literally burned up my computer.” Because nothing is that snobbish that it causes computers to combust. Or: “Courtney, your head is so big it literally cannot get through the door.” Because it can, unless it’s one of those tiny doors from <em>Alice in Wonderland</em> and I need to eat a mushroom to make my whole body smaller.</p><h4 name="fe12" id="fe12">No One’s Perfect</h4><p name="7ff8" id="7ff8">And I’m not saying I am. I’m trying to restore meaning to a word that’s lost meaning. I’m standing up for literally. It’s a good word when used correctly. People are butchering it and destroying it every day (figuratively speaking) and the massacre needs to stop. Just as there’s a coalition of people against the use of certain fonts (like <a href="http://bancomicsans.com/main/?page_id=2" data-href="http://bancomicsans.com/main/?page_id=2" rel="nofollow">Comic Sans</a> and <a href="https://www.facebook.com/group.php?gid=14448723154" data-href="https://www.facebook.com/group.php?gid=14448723154" rel="nofollow">Papyrus</a>), so should there be a coalition of people against the abuse of literally.</p><h4 name="049e" id="049e">Saying it to Irritate?</h4><p name="9381" id="9381">Do you misuse the word “literally” just to annoy your know-it-all or grammar police friends/acquaintances/total strangers? If so, why? Doing so would be like me going outside when it’s freezing, wearing nothing but a pair of shorts and t-shirt in hopes of making you cold by just looking at me. Who suffers more?</p><h4 name="3e52" id="3e52">Graphical Representation</h4><p name="b57e" id="b57e">Matthew Inman of “The Oatmeal” wrote a comic about literally. Abusers and defenders alike <a href="http://theoatmeal.com/comics/literally" data-href="http://theoatmeal.com/comics/literally" rel="nofollow">should check it out</a>. It’s clear this whole craze about literally is driving a lot of us nuts. You literally abusers are killing off pieces of our souls. You must be stopped, or the world will be lost to meaninglessness forever. Figuratively speaking.</p></div></div></section> \ No newline at end of file
diff --git a/test/test-pages/medium-3/expected.html b/test/test-pages/medium-3/expected.html
index f1c311e..04bd9b4 100644
--- a/test/test-pages/medium-3/expected.html
+++ b/test/test-pages/medium-3/expected.html
@@ -1,226 +1,265 @@
-<section name="55ff">
+<div id="container">
+
+ <div>
+ <div id="prerendered"><canvas></canvas>
+
+
+
+ <main role="main">
+ <article lang="en">
+ <header>
+
+ </header>
+ <div data-post-id="d146a92473a1" data-source="post_page" data-tracking-context="postPage">
+ <section name="55ff">
+
<div>
<div>
- <p id="97e7" name="97e7">How to get shanked doing what people say they want</p>
- <blockquote id="df70" name="df70">don’t preach to me<br></br>Mr. integrity</blockquote>
- <p id="c979" name="c979">(EDIT: removed the link to Samantha’s post, because the arments and the grubers and the rest of The Deck Clique got what they wanted: a non-proper person driven off the internet lightly capped with a dusting of transphobia along the way, all totally okay because the ends justify the means, and it’s okay when “good” people do it.)</p>
- <p id="342d" name="342d">First, I need to say something about this article: the reason I’m writing it infuriates me. Worse than installing CS 3 or Acrobat 7 ever did, and the former inspired comparisons to fecophile porn. I’m actually too mad to cuss. Well, not completely, but in this case, I don’t think the people I’m mad at are worth the creativity I try to put into profanity. This is about a brownfield of hypocrisy and viciously deliberate mischaracterization that “shame” cannot even come close to the shame those behind it should feel.</p>
- <p id="2e61" name="2e61">Now, read this post by Samantha Bielefeld: The Elephant in the Room. First, it is a well-written critical piece that raises a few points in a calm, rational, nonconfrontational fashion, exactly the kind of things the pushers of The Great Big Lie say we need more of, as opposed to the screaming that is the norm in such cases.</p>
- <p id="cd31" name="cd31">…sorry, I should explain “The Great Big Lie”. There are several, but in this case, our <em>specific</em> instance of “The Great Big Lie” is about criticism. Over and over, you hear from the very people I am not going to be nice to in this that we need “better” criticsm. Instead of rage and anger, volume and vitriol, we need in-depth rational criticism, that isn’t personal or ad hominem. That it should focus on points, not people.</p>
- <p id="ae07" name="ae07">That, readers, is “The Big Lie”. It is a lie so big that if one ponders the reality of it, as I am going to, one wonders why anyone would believe it. It is a lie and it is one we should stop telling.</p>
+ <p name="97e7" id="97e7">How to get shanked doing what people say they want</p>
+ <blockquote name="df70" id="df70">don’t preach to me<br>Mr. integrity</blockquote>
+ <p name="c979" id="c979">(EDIT: removed the link to Samantha’s post, because the arments and the grubers and the rest of The Deck Clique got what they wanted: a non-proper person driven off the internet lightly capped with a dusting of transphobia along the way, all totally okay because the ends justify the means, and it’s okay when “good” people do it.)</p>
+ <p name="342d" id="342d">First, I need to say something about this article: the reason I’m writing it infuriates me. Worse than installing CS 3 or Acrobat 7 ever did, and the former inspired comparisons to fecophile porn. I’m actually too mad to cuss. Well, not completely, but in this case, I don’t think the people I’m mad at are worth the creativity I try to put into profanity. This is about a brownfield of hypocrisy and viciously deliberate mischaracterization that “shame” cannot even come close to the shame those behind it should feel.</p>
+ <p name="2e61" id="2e61">Now, read this post by Samantha Bielefeld: The Elephant in the Room. First, it is a well-written critical piece that raises a few points in a calm, rational, nonconfrontational fashion, exactly the kind of things the pushers of The Great Big Lie say we need more of, as opposed to the screaming that is the norm in such cases.</p>
+ <p name="cd31" id="cd31">…sorry, I should explain “The Great Big Lie”. There are several, but in this case, our <em>specific</em> instance of “The Great Big Lie” is about criticism. Over and over, you hear from the very people I am not going to be nice to in this that we need “better” criticsm. Instead of rage and anger, volume and vitriol, we need in-depth rational criticism, that isn’t personal or ad hominem. That it should focus on points, not people.</p>
+ <p name="ae07" id="ae07">That, readers, is “The Big Lie”. It is a lie so big that if one ponders the reality of it, as I am going to, one wonders why anyone would believe it. It is a lie and it is one we should stop telling.</p>
</div>
</div>
- </section><section name="c360">
+ </section>
+ <section name="c360">
+
<div>
<div>
- <p id="a02f" name="a02f">Samantha’s points (I assume you read it, for you are smart people who know the importance of such things) are fairly clear:</p>
- <ol><li id="9213" name="9213">With the release of Overcast 2.0, a product Samantha actually likes, Marco Arment moved to a <a data-href="http://www.marco.org/2015/10/09/overcast2" href="http://www.marco.org/2015/10/09/overcast2" rel="nofollow noopener" target="_blank">patronage model</a> that will probably be successful for him.</li>
- <li id="dfa5" name="dfa5">Arment’s insistence that “<a data-href="https://medium.com/@marcoarment/pragmatic-app-pricing-a79fc07218f3" href="https://medium.com/@marcoarment/pragmatic-app-pricing-a79fc07218f3" target="_blank">anyone can do this</a>” while technically true, (anyone can in fact, implement this pricing model), also implies that “anyone” can have the kind of success that a developer with Marco’s history, financial status, and deep ties to the Apple News Web is expected to have. This is silly.</li>
- <li id="e55d" name="e55d">Marco Arment occupies a fairly unique position in the Apple universe, (gained by hard work and no small talent), and because of that, benefits from a set of privileges that a new developer or even one that has been around for a long time, but isn’t, well, <em>Marco</em>, not only don’t have, but have little chance of attaining anytime soon.</li>
- <li id="35fb" name="35fb">Marco has earned his success and is entitled to the benefits and privileges it brings, but he seems rather blind to all of that, and seems to still imagine himself as “two guys in a garage”. This is just not correct.</li>
- <li id="38e2" name="38e2">In addition, the benefits and privileges of the above ensure that by releasing Overcast 2 as a free app, with patronage pricing, he has, if not gutted, severely hurt the ability of folks actually selling their apps for an up-front price of not free to continue doing so. This has the effect of accelerating the “race to the bottom” in the podcast listening app segment, which hurts devs who cannot afford to work on a “I don’t really need this money, so whatever you feel like sending is okay” model.</li>
- </ol><p id="0481" name="0481">None of this is incorrect. None of this is an ad hominem attack in any way. It is just pointing out that a developer of Arment’s stature and status lives in a very different world than someone in East Frog Balls, Arkansas trying to make a living off of App sales. Our dev in EFB doesn’t have the main sites on the Apple web falling all over themselves to review their app the way that Arment does. They’re not friends with the people being The Loop, Daring Fireball, SixColors, iMore, The Mac Observer, etc., yadda.</p>
- <p id="5a45" name="5a45">So, our hero, in a fit of well-meaning ignorance writes this piece (posted this morning, 14 Oct. 15) and of course, the response and any criticisms are just as reasonable and thoughtful.</p>
- <p id="3bc7" name="3bc7">If you really believe that, you are the most preciously ignorant person in the world, and can I have your seriously charmed life.</p>
+ <p name="a02f" id="a02f">Samantha’s points (I assume you read it, for you are smart people who know the importance of such things) are fairly clear:</p>
+ <ol>
+ <li name="9213" id="9213">With the release of Overcast 2.0, a product Samantha actually likes, Marco Arment moved to a <a href="http://www.marco.org/2015/10/09/overcast2" data-href="http://www.marco.org/2015/10/09/overcast2" rel="nofollow noopener" target="_blank">patronage model</a> that will probably be successful for him.</li>
+ <li name="dfa5" id="dfa5">Arment’s insistence that “<a href="https://medium.com/@marcoarment/pragmatic-app-pricing-a79fc07218f3" data-href="https://medium.com/@marcoarment/pragmatic-app-pricing-a79fc07218f3" target="_blank">anyone can do this</a>” while technically true, (anyone can in fact, implement this pricing model), also implies that “anyone” can have the kind of success that a developer with Marco’s history, financial status, and deep ties to the Apple News Web is expected to have. This is silly.</li>
+ <li name="e55d" id="e55d">Marco Arment occupies a fairly unique position in the Apple universe, (gained by hard work and no small talent), and because of that, benefits from a set of privileges that a new developer or even one that has been around for a long time, but isn’t, well, <em>Marco</em>, not only don’t have, but have little chance of attaining anytime soon.</li>
+ <li name="35fb" id="35fb">Marco has earned his success and is entitled to the benefits and privileges it brings, but he seems rather blind to all of that, and seems to still imagine himself as “two guys in a garage”. This is just not correct.</li>
+ <li name="38e2" id="38e2">In addition, the benefits and privileges of the above ensure that by releasing Overcast 2 as a free app, with patronage pricing, he has, if not gutted, severely hurt the ability of folks actually selling their apps for an up-front price of not free to continue doing so. This has the effect of accelerating the “race to the bottom” in the podcast listening app segment, which hurts devs who cannot afford to work on a “I don’t really need this money, so whatever you feel like sending is okay” model.</li>
+ </ol>
+ <p name="0481" id="0481">None of this is incorrect. None of this is an ad hominem attack in any way. It is just pointing out that a developer of Arment’s stature and status lives in a very different world than someone in East Frog Balls, Arkansas trying to make a living off of App sales. Our dev in EFB doesn’t have the main sites on the Apple web falling all over themselves to review their app the way that Arment does. They’re not friends with the people being The Loop, Daring Fireball, SixColors, iMore, The Mac Observer, etc., yadda.</p>
+ <p name="5a45" id="5a45">So, our hero, in a fit of well-meaning ignorance writes this piece (posted this morning, 14 Oct. 15) and of course, the response and any criticisms are just as reasonable and thoughtful.</p>
+ <p name="3bc7" id="3bc7">If you really believe that, you are the most preciously ignorant person in the world, and can I have your seriously charmed life.</p>
</div>
</div>
- </section><section name="2ba2">
+ </section>
+ <section name="2ba2">
+
<div>
<div>
- <p id="0fb2" name="0fb2">The response, from all quarters, including Marco, someone who is so sensitive to criticism that the word “useless” is <a data-href="http://www.marco.org/2011/03/30/here-is-a-tip-for-all-the-non-developers-out" href="http://www.marco.org/2011/03/30/here-is-a-tip-for-all-the-non-developers-out" rel="nofollow noopener" target="_blank">enough to shut him down</a>, who <a data-href="https://twitter.com/marcoarment/status/641330113934700544" href="https://twitter.com/marcoarment/status/641330113934700544" rel="nofollow noopener" target="_blank">blocked a friend of mine for the high crime of pointing out that his review of podcasting mics centered around higher priced gear and ignored folks without the scratch, who might not be ready for such things</a>, is, in a single word, disgusting. Vomitous even.</p>
- <p id="9a6e" name="9a6e">It’s an hours-long dogpile that beggars even my imagination, and I can imagine almost anything. Seriously, it’s all there in <a data-href="https://twitter.com/s_bielefeld/with_replies" href="https://twitter.com/s_bielefeld/with_replies" rel="nofollow noopener" target="_blank">Samantha’s Twitter Feed</a>. From what I can tell, she’s understandably shocked over it. I however was not. This one comment in her feed made me smile (warning, this wanders a bit…er…LOT. Twitter timelines are not easy to put together):</p>
- <blockquote id="3271" name="3271">I can see why you have some reservations about publishing it, but my gut feeling is that he would take it better than Nilay.</blockquote>
- <p id="ec72" name="ec72">Oh honey, bless your sweet, ignorant heart. Marco is one of the biggest pushers of The Big Lie, and one of the reasons it is <em>such</em> a lie.</p>
- <p id="5cc4" name="5cc4">But it gets better. First, you have the “hey, Marco <em>earned</em> his status!” lot. A valid point, and one Bielefeld explicitly acknowledges, here:</p>
- <blockquote id="4e5f" name="4e5f">From his ground floor involvement in Tumblr (for which he is now a millionaire), to the creation and sale of a wildly successful app called Instapaper, he has become a household name in technology minded circles. It is this extensive time spent in the spotlight, the huge following on Twitter, and dedicated listeners of his weekly aired Accidental Tech Podcast, that has granted him the freedom to break from seeking revenue in more traditional manners.</blockquote>
- <p id="cee9" name="cee9">and here:</p>
- <blockquote id="3f1b" name="3f1b">I’m not knocking his success, he has put effort into his line of work, and has built his own life.</blockquote>
- <p id="e527" name="e527">and here:</p>
- <blockquote id="3e4f" name="3e4f">He has earned his time in the spotlight, and it’s only natural for him to take advantage of it.</blockquote>
- <p id="8a01" name="8a01">But still, you get the people telling her something she already acknowledge:</p>
- <blockquote id="7685" name="7685">I don’t think he’s blind. he’s worked to where he has gotten and has had failures like everyone else.</blockquote>
- <p id="b151" name="b151">Thank you for restating something in the article. To the person who wrote it.</p>
- <p id="87bc" name="87bc">In the original article, Samantha talked about the money Marco makes from his podcast. She based that on the numbers <a data-href="http://atp.fm/sponsor/" href="http://atp.fm/sponsor/" rel="nofollow noopener" target="_blank">provided by ATP in terms of sponsorship rates</a> and the number of current sponsors the podcast has. Is this going to yield perfect numbers? No. But the numbers you get from it will at least be reasonable, or should be unless the published sponsorship rates are just fantasy, and you’re stupid for taking them seriously.</p>
- <p id="dbda" name="dbda">At first, she went with a simple formula:</p>
- <blockquote id="1b4e" name="1b4e">$4K x 3 per episode = $12K x 52 weeks / 3 hosts splitting it.</blockquote>
- <p id="0b33" name="0b33">That’s not someone making shit up, right? Rather quickly, someone pointed out that she’d made an error in how she calculated it:</p>
- <blockquote id="76d7" name="76d7">That’s $4k per ad, no? So more like $12–16k per episode.</blockquote>
- <p id="a089" name="a089">She’d already realized her mistake and fixed it.</p>
- <blockquote id="b369" name="b369">which is actually wrong, and I’m correcting now. $4,000 per sponsor, per episode! So, $210,000 per year.</blockquote>
- <p id="8b3b" name="8b3b">Again, this is based on <em>publicly available data</em> the only kind someone not part of ATP or a close friend of Arment has access to. So while her numbers may be wrong, if they are, there’s no way for her to know that. She’s basing her opinion on actual available data. Which is sadly rare.</p>
- <p id="135a" name="135a">This becomes a huge flashpoint. You name a reason to attack her over this, people do. No really. For example, she’s not calculating his <em>income taxes correctly</em>:</p>
- <blockquote id="5e7e" name="5e7e">especially since it isn’t his only source of income thus, not an indicator of his marginal inc. tax bracket.</blockquote>
- <blockquote id="6036" name="6036">thus, guessing net income is more haphazard than stating approx. gross income.</blockquote>
- <p id="aac1" name="aac1">Ye Gods. She’s not doing his taxes for him, her point is invalid?</p>
- <p id="600f" name="600f">Then there’s the people who seem to have not read anything past what other people are telling them:</p>
- <blockquote id="9b62" name="9b62">Not sure what to make of your Marco piece, to be honest. You mention his fame, whatever, but what’s the main idea here?</blockquote>
- <p id="c18a" name="c18a">Just how spoon-fed do you have to be? Have you no teeth?</p>
- <p id="c445" name="c445">Of course, Marco jumps in, and predictably, he’s snippy:</p>
- <blockquote id="0c21" name="0c21">If you’re going to speak in precise absolutes, it’s best to first ensure that you’re correct.</blockquote>
- <p id="8f8d" name="8f8d">If you’re going to be like that, it’s best to provide better data. Don’t get snippy when someone is going off the only data available, and is clearly open to revising based on better data.</p>
- <p id="cc97" name="cc97">Then Marco’s friends/fans get into it:</p>
- <blockquote id="f9da" name="f9da">I really don’t understand why it’s anyone’s business</blockquote>
- <p id="0094" name="0094">Samantha is trying to qualify for sainthood at this point:</p>
- <blockquote id="0105" name="0105">It isn’t really, it was a way of putting his income in context in regards to his ability to gamble with Overcast.</blockquote>
- <p id="cdd1" name="cdd1">Again, she’s trying to drag people back to her actual point, but no one is going to play. The storm has begun. Then we get people who are just spouting nonsense:</p>
- <blockquote id="f56c" name="f56c">Why is that only relevant for him? It’s a pretty weird metric,especially since his apps aren’t free.</blockquote>
- <p id="4fef" name="4fef">Wha?? Overcast 2 is absolutely free. Samantha points this out:</p>
- <blockquote id="0f36" name="0f36">His app is free, that’s what sparked the article to begin with.</blockquote>
- <p id="40d2" name="40d2">The response is literally a parallel to “How can there be global warming if it snowed today in my town?”</p>
- <blockquote id="6760" name="6760">If it’s free, how have I paid for it? Twice?</blockquote>
- <p id="7b13" name="7b13">She is still trying:</p>
- <blockquote id="44ba" name="44ba">You paid $4.99 to unlock functionality in Overcast 1.0 and you chose to support him with no additional functionality in 2.0</blockquote>
- <p id="2152" name="2152">He is having none of it. IT SNOWED! SNOWWWWWWW!</p>
- <blockquote id="99a6" name="99a6">Yes. That’s not free. Free is when you choose not to make money. And that can be weaponized. But that’s not what Overcast does.</blockquote>
- <p id="5e6f" name="5e6f">She however, is relentless:</p>
- <blockquote id="1b0f" name="1b0f">No, it’s still free. You can choose to support it, you are required to pay $4.99 for Pocket Casts. Totally different model.</blockquote>
- <p id="d24f" name="d24f">Dude seems to give up. (Note: allllll the people bagging on her are men. All of them. Mansplaining like hell. And I’d bet every one of them considers themselves a feminist.)</p>
- <p id="10e1" name="10e1">We get another guy trying to push the narrative she’s punishing him for his success, which is just…it’s stupid, okay? Stupid.</p>
- <blockquote id="9b01" name="9b01">It also wasn’t my point in writing my piece today, but it seems to be everyone’s focus.</blockquote>
- <p id="340c" name="340c">(UNDERSTATEMENT OF THE YEAR)</p>
- <blockquote id="7244" name="7244">I think the focus should be more on that fact that while it’s difficult, Marco spent years building his audience.</blockquote>
- <blockquote id="ffb1" name="ffb1">It doesn’t matter what he makes it how he charges. If the audience be earned is willing to pay for it, awesome.</blockquote>
- <p id="e44e" name="e44e">She tries, oh lord, she tries:</p>
- <blockquote id="a502" name="a502">To assert that he isn’t doing anything any other dev couldn’t, is wrong. It’s successful because it’s Marco.</blockquote>
- <p id="7dcd" name="7dcd">But no, HE KNOWS HER POINT BETTER THAN SHE DOES:</p>
- <blockquote id="a62a" name="a62a">No, it’s successful because he busted his ass to make it so. It’s like any other business. He grew it.</blockquote>
- <p id="df8c" name="df8c">Christ. This is like a field of strawmen. Stupid ones. Very stupid ones.</p>
- <p id="521a" name="521a">One guy tries to blame it all on Apple, another in a string of Wha??? moments:</p>
- <blockquote id="d80d" name="d80d">the appropriate context is Apple’s App Store policies. Other devs aren’t Marco’s responsibility</blockquote>
- <p id="db0b" name="db0b">Seriously? Dude, are you even trying to talk about what Samantha actually wrote? At this point, Samantha is clearly mystified at the entire thing:</p>
- <blockquote id="7a78" name="7a78">Why has the conversation suddenly turned to focus on nothing more than ATP sponsorship income?</blockquote>
- <p id="6e09" name="6e09">Because it’s a nit they can pick and allows them to ignore everything you wrote. That’s the only reason.</p>
- <p id="b7db" name="b7db">One guy is “confused”:</p>
- <blockquote id="3626" name="3626">I see. He does have clout, so are you saying he’s too modest in how he sees himself as a dev?</blockquote>
- <blockquote id="9daa" name="9daa">Yes. He can’t be equated to the vast majority of other developers. Like calling Gruber, “just another blogger”.</blockquote>
- <blockquote id="f6da" name="f6da">Alright, that’s fair. I was just confused by the $ and fame angle at first.</blockquote>
- <p id="d5b1" name="d5b1">Samantha’s point centers on the benefits Marco gains via his fame and background. <em>HOW DO YOU NOT MENTION THAT? HOW IS THAT CONFUSING?</em></p>
- <p id="58d0" name="58d0">People of course are telling her it’s her fault for mentioning a salient fact at all:</p>
- <blockquote id="30d2" name="30d2">Why has the conversation suddenly turned to focus on nothing more than ATP sponsorship income?</blockquote>
- <blockquote id="765b" name="765b">Maybe because you went there with your article?</blockquote>
- <blockquote id="61fe" name="61fe">As a way of rationalizing his ability to gamble with the potential for Overcast to generate income…not the norm at all.</blockquote>
- <p id="f17c" name="f17c">Of course, had she not brought up those important points, she’d have been bagged on for “not providing proof”. Lose some, lose more. By now, she’s had enough and she just deletes all mention of it. Understandable, but sad she was bullied into doing that.</p>
- <p id="0b60" name="0b60">Yes, bullied. That’s all this is. Bullying. She didn’t lie, cheat, or exaagerate. If her numbers were wrong, they weren’t wrong in a way she had any ability to do anything about. But there’s blood in the water, and the comments and attacks get worse:</p>
- <blockquote id="65ab" name="65ab">Because you decided to start a conversation about someone else’s personal shit. You started this war.</blockquote>
- <p id="1adb" name="1adb">War. THIS. IS. WAR.</p>
- <p id="de94" name="de94">This is a bunch of nerds attacking someone for reasoned, calm, <em>polite</em> criticism of their friend/idol. Samantha is politely pushing back a bit:</p>
- <blockquote id="4458" name="4458">That doesn’t explain why every other part of my article is being pushed aside.</blockquote>
- <p id="aeac" name="aeac">She’s right. This is all nonsense. This is people ignoring her article completely, just looking for things to attack so it can be dismissed. It’s tribalism at its purest.</p>
- <p id="0078" name="0078">Then some of the other annointed get into it, including Jason Snell in one of the most spectactular displays of “I have special knowledge you can’t be expected to have, therefore you are totally off base and wrong, even though there’s no way for you to know this” I’ve seen in a while. Jason:</p>
- <blockquote id="c4c9" name="c4c9">You should never use an ad rate card to estimate ad revenue from any media product ever.</blockquote>
- <blockquote id="b66b" name="b66b">I learned this when I started working for a magazine — rate cards are mostly fiction, like prices on new cars</blockquote>
- <p id="6907" name="6907">How…exactly…in the name of whatever deity Jason may believe in…is Samantha or anyone not “in the biz” supposed to know this. Also, what exactly does a magazine on paper like Macworld have to do with sponsorships for a podcast? I have done podcasts that were sponsored, and I can retaliate with “we charged what the rate card said we did. <em>Checkmate Elitests!</em>”</p>
- <p id="41ec" name="41ec">Samantha basically abases herself at his feet:</p>
- <blockquote id="0b14" name="0b14">I understand my mistake, and it’s unfortunate that it has completely diluted the point of my article.</blockquote>
- <p id="590f" name="590f">I think she should have told him where and how to stuff that nonsense, but she’s a nicer person than I am. Also, it’s appropriate that Jason’s twitter avatar has its nose in the air. This is some rank snobbery. It’s disgusting and if anyone pulled that on him, Jason would be very upset. But hey, one cannot criticize The Marco without getting pushback. By “pushback”, I mean “an unrelenting fecal flood”.</p>
- <p id="69dc" name="69dc">Her only mistake was criticizing one of the Kool Kids. Folks, if you criticize anyone in The Deck Clique, or their friends, expect the same thing, regardless of tone or point.</p>
- <p id="5ab4" name="5ab4">Another App Dev, seemingly unable to parse Samantha’s words, needs <em>more</em> explanation:</p>
- <blockquote id="957b" name="957b">so just looking over your mentions, I’m curious what exactly was your main point? Ignoring the podcast income bits.</blockquote>
- <p id="0a7e" name="0a7e">Oh wait, he didn’t even read the article. Good on you, Dev Guy, good. on. you. Still, she plays nice <em>with someone who didn’t even read her article</em>:</p>
- <blockquote id="f7db" name="f7db">That a typical unknown developer can’t depend on patronage to generate revenue, and charging for apps will become a negative.</blockquote>
- <p id="937f" name="937f">Marco comes back of course, and now basically accuses her of lying about other devs talking to her and supporting her point:</p>
- <blockquote id="c9dd" name="c9dd">How many actual developers did you hear from, really? Funny how almost nobody wants to give a (real) name on these accusations.</blockquote>
- <p id="c522" name="c522">Really? You’re going to do that? “There’s no name, so I don’t think it’s a real person.” Just…what’s the Joe Welch quote from the McCarthy hearings?</p>
- <blockquote id="907e" name="907e">Let us not assassinate this lad further, Senator. You’ve done enough. Have you no sense of decency, sir? At long last, have you left no sense of decency?</blockquote>
- <p id="2158" name="2158">That is what this is at this point: character assasination because she said something critical of A Popular Person. It’s disgusting. Depressing and disgusting. No one, none of these people have seriously discussed her point, heck, it looks like they barely bothered to read it, if they did at all.</p>
- <p id="13f8" name="13f8">Marco starts getting really petty with her (no big shock) and Samantha finally starts pushing back:</p>
- <blockquote id="96c6" name="96c6">Glad to see you be the bigger person and ignore the mindset of so many developers not relating to you, good for you!</blockquote>
- <p id="5d3f" name="5d3f">That of course, is what caused Marco to question the validity, if not the existence of her sources. (Funny how anonymous sources are totes okay when they convenience Marco et al, and work for oh, <em>Apple</em>, but when they are inconvenient? Ha! PROVIDE ME PROOF YOU INTEMPERATE WOMAN!)</p>
- <p id="c07c" name="c07c">Make no mistake, there’s some sexist shit going on here. Every tweet I’ve quoted was authored by a guy.</p>
- <p id="8b32" name="8b32">Of course, Marco has to play the “I’ve been around longer than you” card with this bon mot:</p>
- <blockquote id="de26" name="de26">Yup, before you existed!</blockquote>
- <p id="a3bd" name="a3bd">Really dude? I mean, I’m sorry about the penis, but really?</p>
- <p id="1c51" name="1c51">Mind you, when the criticism isn’t just bizarrely stupid, Samantha reacts the way Marco and his ilk claim they would to (if they ever got any <em>valid</em> criticism. Which clearly is impossible):</p>
- <blockquote id="9848" name="9848">Not to get into the middle of this, but “income” is not the term you’re looking for. “Revenue” is.</blockquote>
- <blockquote id="f2a6" name="f2a6">lol. Noted.</blockquote>
- <blockquote id="aed9" name="aed9">And I wasn’t intending to be a dick, just a lot of people hear/say “income” when they intend “revenue”, and then discussion …</blockquote>
- <blockquote id="f9d8" name="f9d8">… gets derailed by a jedi handwave of “Expenses”. But outside of charitable donation, it is all directly related.</blockquote>
- <blockquote id="f61c" name="f61c">haha. Thank you for the clarification.</blockquote>
- <p id="5dd9" name="5dd9">Note to Marco and the other…whatever they are…that is how one reacts to that kind of criticism. With a bit of humor and self-deprecation. You should try it sometime. For real, not just in your heads or conversations in Irish Pubs in S.F.</p>
- <p id="dc44" name="dc44">But now, the door has been cracked, and the cheap shots come out:</p>
- <blockquote id="0c94" name="0c94">@testflight_app: Don’t worry guys, we process <a data-href="https://twitter.com/marcoarment" href="https://twitter.com/marcoarment" rel="nofollow noopener" target="_blank">@marcoarment</a>’s apps in direct proportion to his megabucks earnings. <a data-href="https://twitter.com/hashtag/fairelephant?src=hash" href="https://twitter.com/hashtag/fairelephant?src=hash" rel="nofollow noopener" target="_blank">#fairelephant</a></blockquote>
- <p id="343b" name="343b">(Note: testflight_app is a parody account. Please do not mess with the actual testflight folks. They are still cool.)</p>
- <p id="09bf" name="09bf">Or this…conversation:</p>
- <figure id="4d63" name="4d63"><div>
+ <p name="0fb2" id="0fb2">The response, from all quarters, including Marco, someone who is so sensitive to criticism that the word “useless” is <a href="http://www.marco.org/2011/03/30/here-is-a-tip-for-all-the-non-developers-out" data-href="http://www.marco.org/2011/03/30/here-is-a-tip-for-all-the-non-developers-out" rel="nofollow noopener" target="_blank">enough to shut him down</a>, who <a href="https://twitter.com/marcoarment/status/641330113934700544" data-href="https://twitter.com/marcoarment/status/641330113934700544" rel="nofollow noopener" target="_blank">blocked a friend of mine for the high crime of pointing out that his review of podcasting mics centered around higher priced gear and ignored folks without the scratch, who might not be ready for such things</a>, is, in a single word, disgusting. Vomitous even.</p>
+ <p name="9a6e" id="9a6e">It’s an hours-long dogpile that beggars even my imagination, and I can imagine almost anything. Seriously, it’s all there in <a href="https://twitter.com/s_bielefeld/with_replies" data-href="https://twitter.com/s_bielefeld/with_replies" rel="nofollow noopener" target="_blank">Samantha’s Twitter Feed</a>. From what I can tell, she’s understandably shocked over it. I however was not. This one comment in her feed made me smile (warning, this wanders a bit…er…LOT. Twitter timelines are not easy to put together):</p>
+ <blockquote name="3271" id="3271">I can see why you have some reservations about publishing it, but my gut feeling is that he would take it better than Nilay.</blockquote>
+ <p name="ec72" id="ec72">Oh honey, bless your sweet, ignorant heart. Marco is one of the biggest pushers of The Big Lie, and one of the reasons it is <em>such</em> a lie.</p>
+ <p name="5cc4" id="5cc4">But it gets better. First, you have the “hey, Marco <em>earned</em> his status!” lot. A valid point, and one Bielefeld explicitly acknowledges, here:</p>
+ <blockquote name="4e5f" id="4e5f">From his ground floor involvement in Tumblr (for which he is now a millionaire), to the creation and sale of a wildly successful app called Instapaper, he has become a household name in technology minded circles. It is this extensive time spent in the spotlight, the huge following on Twitter, and dedicated listeners of his weekly aired Accidental Tech Podcast, that has granted him the freedom to break from seeking revenue in more traditional manners.</blockquote>
+ <p name="cee9" id="cee9">and here:</p>
+ <blockquote name="3f1b" id="3f1b">I’m not knocking his success, he has put effort into his line of work, and has built his own life.</blockquote>
+ <p name="e527" id="e527">and here:</p>
+ <blockquote name="3e4f" id="3e4f">He has earned his time in the spotlight, and it’s only natural for him to take advantage of it.</blockquote>
+ <p name="8a01" id="8a01">But still, you get the people telling her something she already acknowledge:</p>
+ <blockquote name="7685" id="7685">I don’t think he’s blind. he’s worked to where he has gotten and has had failures like everyone else.</blockquote>
+ <p name="b151" id="b151">Thank you for restating something in the article. To the person who wrote it.</p>
+ <p name="87bc" id="87bc">In the original article, Samantha talked about the money Marco makes from his podcast. She based that on the numbers <a href="http://atp.fm/sponsor/" data-href="http://atp.fm/sponsor/" rel="nofollow noopener" target="_blank">provided by ATP in terms of sponsorship rates</a> and the number of current sponsors the podcast has. Is this going to yield perfect numbers? No. But the numbers you get from it will at least be reasonable, or should be unless the published sponsorship rates are just fantasy, and you’re stupid for taking them seriously.</p>
+ <p name="dbda" id="dbda">At first, she went with a simple formula:</p>
+ <blockquote name="1b4e" id="1b4e">$4K x 3 per episode = $12K x 52 weeks / 3 hosts splitting it.</blockquote>
+ <p name="0b33" id="0b33">That’s not someone making shit up, right? Rather quickly, someone pointed out that she’d made an error in how she calculated it:</p>
+ <blockquote name="76d7" id="76d7">That’s $4k per ad, no? So more like $12–16k per episode.</blockquote>
+ <p name="a089" id="a089">She’d already realized her mistake and fixed it.</p>
+ <blockquote name="b369" id="b369">which is actually wrong, and I’m correcting now. $4,000 per sponsor, per episode! So, $210,000 per year.</blockquote>
+ <p name="8b3b" id="8b3b">Again, this is based on <em>publicly available data</em> the only kind someone not part of ATP or a close friend of Arment has access to. So while her numbers may be wrong, if they are, there’s no way for her to know that. She’s basing her opinion on actual available data. Which is sadly rare.</p>
+ <p name="135a" id="135a">This becomes a huge flashpoint. You name a reason to attack her over this, people do. No really. For example, she’s not calculating his <em>income taxes correctly</em>:</p>
+ <blockquote name="5e7e" id="5e7e">especially since it isn’t his only source of income thus, not an indicator of his marginal inc. tax bracket.</blockquote>
+ <blockquote name="6036" id="6036">thus, guessing net income is more haphazard than stating approx. gross income.</blockquote>
+ <p name="aac1" id="aac1">Ye Gods. She’s not doing his taxes for him, her point is invalid?</p>
+ <p name="600f" id="600f">Then there’s the people who seem to have not read anything past what other people are telling them:</p>
+ <blockquote name="9b62" id="9b62">Not sure what to make of your Marco piece, to be honest. You mention his fame, whatever, but what’s the main idea here?</blockquote>
+ <p name="c18a" id="c18a">Just how spoon-fed do you have to be? Have you no teeth?</p>
+ <p name="c445" id="c445">Of course, Marco jumps in, and predictably, he’s snippy:</p>
+ <blockquote name="0c21" id="0c21">If you’re going to speak in precise absolutes, it’s best to first ensure that you’re correct.</blockquote>
+ <p name="8f8d" id="8f8d">If you’re going to be like that, it’s best to provide better data. Don’t get snippy when someone is going off the only data available, and is clearly open to revising based on better data.</p>
+ <p name="cc97" id="cc97">Then Marco’s friends/fans get into it:</p>
+ <blockquote name="f9da" id="f9da">I really don’t understand why it’s anyone’s business</blockquote>
+ <p name="0094" id="0094">Samantha is trying to qualify for sainthood at this point:</p>
+ <blockquote name="0105" id="0105">It isn’t really, it was a way of putting his income in context in regards to his ability to gamble with Overcast.</blockquote>
+ <p name="cdd1" id="cdd1">Again, she’s trying to drag people back to her actual point, but no one is going to play. The storm has begun. Then we get people who are just spouting nonsense:</p>
+ <blockquote name="f56c" id="f56c">Why is that only relevant for him? It’s a pretty weird metric,especially since his apps aren’t free.</blockquote>
+ <p name="4fef" id="4fef">Wha?? Overcast 2 is absolutely free. Samantha points this out:</p>
+ <blockquote name="0f36" id="0f36">His app is free, that’s what sparked the article to begin with.</blockquote>
+ <p name="40d2" id="40d2">The response is literally a parallel to “How can there be global warming if it snowed today in my town?”</p>
+ <blockquote name="6760" id="6760">If it’s free, how have I paid for it? Twice?</blockquote>
+ <p name="7b13" id="7b13">She is still trying:</p>
+ <blockquote name="44ba" id="44ba">You paid $4.99 to unlock functionality in Overcast 1.0 and you chose to support him with no additional functionality in 2.0</blockquote>
+ <p name="2152" id="2152">He is having none of it. IT SNOWED! SNOWWWWWWW!</p>
+ <blockquote name="99a6" id="99a6">Yes. That’s not free. Free is when you choose not to make money. And that can be weaponized. But that’s not what Overcast does.</blockquote>
+ <p name="5e6f" id="5e6f">She however, is relentless:</p>
+ <blockquote name="1b0f" id="1b0f">No, it’s still free. You can choose to support it, you are required to pay $4.99 for Pocket Casts. Totally different model.</blockquote>
+ <p name="d24f" id="d24f">Dude seems to give up. (Note: allllll the people bagging on her are men. All of them. Mansplaining like hell. And I’d bet every one of them considers themselves a feminist.)</p>
+ <p name="10e1" id="10e1">We get another guy trying to push the narrative she’s punishing him for his success, which is just…it’s stupid, okay? Stupid.</p>
+ <blockquote name="9b01" id="9b01">It also wasn’t my point in writing my piece today, but it seems to be everyone’s focus.</blockquote>
+ <p name="340c" id="340c">(UNDERSTATEMENT OF THE YEAR)</p>
+ <blockquote name="7244" id="7244">I think the focus should be more on that fact that while it’s difficult, Marco spent years building his audience.</blockquote>
+ <blockquote name="ffb1" id="ffb1">It doesn’t matter what he makes it how he charges. If the audience be earned is willing to pay for it, awesome.</blockquote>
+ <p name="e44e" id="e44e">She tries, oh lord, she tries:</p>
+ <blockquote name="a502" id="a502">To assert that he isn’t doing anything any other dev couldn’t, is wrong. It’s successful because it’s Marco.</blockquote>
+ <p name="7dcd" id="7dcd">But no, HE KNOWS HER POINT BETTER THAN SHE DOES:</p>
+ <blockquote name="a62a" id="a62a">No, it’s successful because he busted his ass to make it so. It’s like any other business. He grew it.</blockquote>
+ <p name="df8c" id="df8c">Christ. This is like a field of strawmen. Stupid ones. Very stupid ones.</p>
+ <p name="521a" id="521a">One guy tries to blame it all on Apple, another in a string of Wha??? moments:</p>
+ <blockquote name="d80d" id="d80d">the appropriate context is Apple’s App Store policies. Other devs aren’t Marco’s responsibility</blockquote>
+ <p name="db0b" id="db0b">Seriously? Dude, are you even trying to talk about what Samantha actually wrote? At this point, Samantha is clearly mystified at the entire thing:</p>
+ <blockquote name="7a78" id="7a78">Why has the conversation suddenly turned to focus on nothing more than ATP sponsorship income?</blockquote>
+ <p name="6e09" id="6e09">Because it’s a nit they can pick and allows them to ignore everything you wrote. That’s the only reason.</p>
+ <p name="b7db" id="b7db">One guy is “confused”:</p>
+ <blockquote name="3626" id="3626">I see. He does have clout, so are you saying he’s too modest in how he sees himself as a dev?</blockquote>
+ <blockquote name="9daa" id="9daa">Yes. He can’t be equated to the vast majority of other developers. Like calling Gruber, “just another blogger”.</blockquote>
+ <blockquote name="f6da" id="f6da">Alright, that’s fair. I was just confused by the $ and fame angle at first.</blockquote>
+ <p name="d5b1" id="d5b1">Samantha’s point centers on the benefits Marco gains via his fame and background. <em>HOW DO YOU NOT MENTION THAT? HOW IS THAT CONFUSING?</em></p>
+ <p name="58d0" id="58d0">People of course are telling her it’s her fault for mentioning a salient fact at all:</p>
+ <blockquote name="30d2" id="30d2">Why has the conversation suddenly turned to focus on nothing more than ATP sponsorship income?</blockquote>
+ <blockquote name="765b" id="765b">Maybe because you went there with your article?</blockquote>
+ <blockquote name="61fe" id="61fe">As a way of rationalizing his ability to gamble with the potential for Overcast to generate income…not the norm at all.</blockquote>
+ <p name="f17c" id="f17c">Of course, had she not brought up those important points, she’d have been bagged on for “not providing proof”. Lose some, lose more. By now, she’s had enough and she just deletes all mention of it. Understandable, but sad she was bullied into doing that.</p>
+ <p name="0b60" id="0b60">Yes, bullied. That’s all this is. Bullying. She didn’t lie, cheat, or exaagerate. If her numbers were wrong, they weren’t wrong in a way she had any ability to do anything about. But there’s blood in the water, and the comments and attacks get worse:</p>
+ <blockquote name="65ab" id="65ab">Because you decided to start a conversation about someone else’s personal shit. You started this war.</blockquote>
+ <p name="1adb" id="1adb">War. THIS. IS. WAR.</p>
+ <p name="de94" id="de94">This is a bunch of nerds attacking someone for reasoned, calm, <em>polite</em> criticism of their friend/idol. Samantha is politely pushing back a bit:</p>
+ <blockquote name="4458" id="4458">That doesn’t explain why every other part of my article is being pushed aside.</blockquote>
+ <p name="aeac" id="aeac">She’s right. This is all nonsense. This is people ignoring her article completely, just looking for things to attack so it can be dismissed. It’s tribalism at its purest.</p>
+ <p name="0078" id="0078">Then some of the other annointed get into it, including Jason Snell in one of the most spectactular displays of “I have special knowledge you can’t be expected to have, therefore you are totally off base and wrong, even though there’s no way for you to know this” I’ve seen in a while. Jason:</p>
+ <blockquote name="c4c9" id="c4c9">You should never use an ad rate card to estimate ad revenue from any media product ever.</blockquote>
+ <blockquote name="b66b" id="b66b">I learned this when I started working for a magazine — rate cards are mostly fiction, like prices on new cars</blockquote>
+ <p name="6907" id="6907">How…exactly…in the name of whatever deity Jason may believe in…is Samantha or anyone not “in the biz” supposed to know this. Also, what exactly does a magazine on paper like Macworld have to do with sponsorships for a podcast? I have done podcasts that were sponsored, and I can retaliate with “we charged what the rate card said we did. <em>Checkmate Elitests!</em>”</p>
+ <p name="41ec" id="41ec">Samantha basically abases herself at his feet:</p>
+ <blockquote name="0b14" id="0b14">I understand my mistake, and it’s unfortunate that it has completely diluted the point of my article.</blockquote>
+ <p name="590f" id="590f">I think she should have told him where and how to stuff that nonsense, but she’s a nicer person than I am. Also, it’s appropriate that Jason’s twitter avatar has its nose in the air. This is some rank snobbery. It’s disgusting and if anyone pulled that on him, Jason would be very upset. But hey, one cannot criticize The Marco without getting pushback. By “pushback”, I mean “an unrelenting fecal flood”.</p>
+ <p name="69dc" id="69dc">Her only mistake was criticizing one of the Kool Kids. Folks, if you criticize anyone in The Deck Clique, or their friends, expect the same thing, regardless of tone or point.</p>
+ <p name="5ab4" id="5ab4">Another App Dev, seemingly unable to parse Samantha’s words, needs <em>more</em> explanation:</p>
+ <blockquote name="957b" id="957b">so just looking over your mentions, I’m curious what exactly was your main point? Ignoring the podcast income bits.</blockquote>
+ <p name="0a7e" id="0a7e">Oh wait, he didn’t even read the article. Good on you, Dev Guy, good. on. you. Still, she plays nice <em>with someone who didn’t even read her article</em>:</p>
+ <blockquote name="f7db" id="f7db">That a typical unknown developer can’t depend on patronage to generate revenue, and charging for apps will become a negative.</blockquote>
+ <p name="937f" id="937f">Marco comes back of course, and now basically accuses her of lying about other devs talking to her and supporting her point:</p>
+ <blockquote name="c9dd" id="c9dd">How many actual developers did you hear from, really? Funny how almost nobody wants to give a (real) name on these accusations.</blockquote>
+ <p name="c522" id="c522">Really? You’re going to do that? “There’s no name, so I don’t think it’s a real person.” Just…what’s the Joe Welch quote from the McCarthy hearings?</p>
+ <blockquote name="907e" id="907e">Let us not assassinate this lad further, Senator. You’ve done enough. Have you no sense of decency, sir? At long last, have you left no sense of decency?</blockquote>
+ <p name="2158" id="2158">That is what this is at this point: character assasination because she said something critical of A Popular Person. It’s disgusting. Depressing and disgusting. No one, none of these people have seriously discussed her point, heck, it looks like they barely bothered to read it, if they did at all.</p>
+ <p name="13f8" id="13f8">Marco starts getting really petty with her (no big shock) and Samantha finally starts pushing back:</p>
+ <blockquote name="96c6" id="96c6">Glad to see you be the bigger person and ignore the mindset of so many developers not relating to you, good for you!</blockquote>
+ <p name="5d3f" id="5d3f">That of course, is what caused Marco to question the validity, if not the existence of her sources. (Funny how anonymous sources are totes okay when they convenience Marco et al, and work for oh, <em>Apple</em>, but when they are inconvenient? Ha! PROVIDE ME PROOF YOU INTEMPERATE WOMAN!)</p>
+ <p name="c07c" id="c07c">Make no mistake, there’s some sexist shit going on here. Every tweet I’ve quoted was authored by a guy.</p>
+ <p name="8b32" id="8b32">Of course, Marco has to play the “I’ve been around longer than you” card with this bon mot:</p>
+ <blockquote name="de26" id="de26">Yup, before you existed!</blockquote>
+ <p name="a3bd" id="a3bd">Really dude? I mean, I’m sorry about the penis, but really?</p>
+ <p name="1c51" id="1c51">Mind you, when the criticism isn’t just bizarrely stupid, Samantha reacts the way Marco and his ilk claim they would to (if they ever got any <em>valid</em> criticism. Which clearly is impossible):</p>
+ <blockquote name="9848" id="9848">Not to get into the middle of this, but “income” is not the term you’re looking for. “Revenue” is.</blockquote>
+ <blockquote name="f2a6" id="f2a6">lol. Noted.</blockquote>
+ <blockquote name="aed9" id="aed9">And I wasn’t intending to be a dick, just a lot of people hear/say “income” when they intend “revenue”, and then discussion …</blockquote>
+ <blockquote name="f9d8" id="f9d8">… gets derailed by a jedi handwave of “Expenses”. But outside of charitable donation, it is all directly related.</blockquote>
+ <blockquote name="f61c" id="f61c">haha. Thank you for the clarification.</blockquote>
+ <p name="5dd9" id="5dd9">Note to Marco and the other…whatever they are…that is how one reacts to that kind of criticism. With a bit of humor and self-deprecation. You should try it sometime. For real, not just in your heads or conversations in Irish Pubs in S.F.</p>
+ <p name="dc44" id="dc44">But now, the door has been cracked, and the cheap shots come out:</p>
+ <blockquote name="0c94" id="0c94">@testflight_app: Don’t worry guys, we process <a href="https://twitter.com/marcoarment" data-href="https://twitter.com/marcoarment" rel="nofollow noopener" target="_blank">@marcoarment</a>’s apps in direct proportion to his megabucks earnings. <a href="https://twitter.com/hashtag/fairelephant?src=hash" data-href="https://twitter.com/hashtag/fairelephant?src=hash" rel="nofollow noopener" target="_blank">#fairelephant</a></blockquote>
+ <p name="343b" id="343b">(Note: testflight_app is a parody account. Please do not mess with the actual testflight folks. They are still cool.)</p>
+ <p name="09bf" id="09bf">Or this…conversation:</p>
+ <figure name="4d63" id="4d63">
+ <div>
</div>
- </figure><p id="f2a3" name="f2a3">Good job guys. Good job. Defend the tribe. Attack the other. Frederico attempts to recover from his stunning display of demeaning douchery: <a data-href="https://twitter.com/viticci" href="https://twitter.com/viticci" rel="nofollow noopener" target="_blank">‏@viticci</a>: <a data-href="https://twitter.com/s_bielefeld" href="https://twitter.com/s_bielefeld" rel="nofollow noopener" target="_blank">@s_bielefeld</a> I don’t know if it’s an Italian thing, but counting other people’s money is especially weird for me. IMO, bad move in the post.</p>
- <p id="ae0c" name="ae0c">Samantha is clearly sick of his crap: <a data-href="https://twitter.com/s_bielefeld" href="https://twitter.com/s_bielefeld" rel="nofollow noopener" target="_blank">‏@s_bielefeld</a>: <a data-href="https://twitter.com/viticci" href="https://twitter.com/viticci" rel="nofollow noopener" target="_blank">@viticci</a> That’s what I’m referring to, the mistake of ever having mentioned it. So, now, Marco can ignore the bigger issue and go on living.</p>
- <p id="2047" name="2047">Good for her. There’s being patient and being roadkill.</p>
- <p id="4139" name="4139">Samantha does put the call out for her sources to maybe let her use their names:</p>
- <blockquote id="6626" name="6626">From all of you I heard from earlier, anyone care to go on record?</blockquote>
- <p id="8a7d" name="8a7d">My good friend, The Angry Drunk points out the obvious problem:</p>
- <blockquote id="68c9" name="68c9">Nobody’s going to go on record when they count on Marco’s friends for their PR.</blockquote>
- <p id="317d" name="317d">This is true. Again, the sites that are Friends of Marco:</p>
- <p id="9523" name="9523">Daring Fireball</p>
- <p id="dbc7" name="dbc7">The Loop</p>
- <p id="c706" name="c706">SixColors</p>
- <p id="0acb" name="0acb">iMore</p>
- <p id="8c8c" name="8c8c">MacStories</p>
- <p id="643e" name="643e">A few others, but I want this post to end one day.</p>
- <p id="6b76" name="6b76">You piss that crew off, and given how petty rather a few of them have demonstrated they are, good luck on getting any kind of notice from them.</p>
- <p id="f7d1" name="f7d1">Of course, the idea this could happen is just craycray:</p>
- <blockquote id="de59" name="de59"><a data-href="https://twitter.com/KevinColeman" href="https://twitter.com/KevinColeman" rel="nofollow noopener" target="_blank">@KevinColeman </a><a data-href="https://twitter.com/Angry_Drunk" href="https://twitter.com/Angry_Drunk" rel="nofollow noopener" target="_blank">.@Angry_Drunk</a> <a data-href="https://twitter.com/s_bielefeld" href="https://twitter.com/s_bielefeld" rel="nofollow noopener" target="_blank">@s_bielefeld</a> <a data-href="https://twitter.com/marcoarment" href="https://twitter.com/marcoarment" rel="nofollow noopener" target="_blank">@marcoarment</a> Wow, you guys are veering right into crazy conspiracy theory territory. <a data-href="https://twitter.com/hashtag/JetFuelCantMeltSteelBeams?src=hash" href="https://twitter.com/hashtag/JetFuelCantMeltSteelBeams?src=hash" rel="nofollow noopener" target="_blank">#JetFuelCantMeltSteelBeams</a></blockquote>
- <p id="f01b" name="f01b">Yeah. Because a mature person like Marco would never do anything like that.</p>
- <p id="7e30" name="7e30">Of course, the real point on this is starting to happen:</p>
- <blockquote id="5d93" name="5d93">you’re getting a lot of heat now but happy you are writing things that stir up the community. Hope you continue to be a voice!</blockquote>
- <blockquote id="436b" name="436b">I doubt I will.</blockquote>
- <p id="ac25" name="ac25">See, they’ve done their job. Mess with the bull, you get the horns. Maybe you should find another thing to write about, this isn’t a good place for you. <em>Great</em> job y’all.</p>
- <p id="07ba" name="07ba">Some people aren’t even pretending. They’re just in full strawman mode:</p>
- <blockquote id="3d60" name="3d60"><a data-href="https://twitter.com/timkeller" href="https://twitter.com/timkeller" rel="nofollow noopener" target="_blank">@timkeller: </a>Unfair to begrudge a person for leveraging past success, especially when that success is earned. No ‘luck’ involved.</blockquote>
- <blockquote id="87f5" name="87f5"><a data-href="https://twitter.com/s_bielefeld" href="https://twitter.com/s_bielefeld" rel="nofollow noopener" target="_blank">@s_bielefeld: </a><a data-href="https://twitter.com/timkeller" href="https://twitter.com/timkeller" rel="nofollow noopener" target="_blank">@timkeller</a> I plainly stated that I don’t hold his doing this against him. Way to twist words.</blockquote>
- <p id="3720" name="3720">I think she’s earned her anger at this point.</p>
- <p id="7341" name="7341">Don’t worry, Marco knows what the real problem is: most devs just suck —</p>
- <figure id="babe" name="babe"><div>
+ </figure>
+ <p name="f2a3" id="f2a3">Good job guys. Good job. Defend the tribe. Attack the other. Frederico attempts to recover from his stunning display of demeaning douchery: <a href="https://twitter.com/viticci" data-href="https://twitter.com/viticci" rel="nofollow noopener" target="_blank">‏@viticci</a>: <a href="https://twitter.com/s_bielefeld" data-href="https://twitter.com/s_bielefeld" rel="nofollow noopener" target="_blank">@s_bielefeld</a> I don’t know if it’s an Italian thing, but counting other people’s money is especially weird for me. IMO, bad move in the post.</p>
+ <p name="ae0c" id="ae0c">Samantha is clearly sick of his crap: <a href="https://twitter.com/s_bielefeld" data-href="https://twitter.com/s_bielefeld" rel="nofollow noopener" target="_blank">‏@s_bielefeld</a>: <a href="https://twitter.com/viticci" data-href="https://twitter.com/viticci" rel="nofollow noopener" target="_blank">@viticci</a> That’s what I’m referring to, the mistake of ever having mentioned it. So, now, Marco can ignore the bigger issue and go on living.</p>
+ <p name="2047" id="2047">Good for her. There’s being patient and being roadkill.</p>
+ <p name="4139" id="4139">Samantha does put the call out for her sources to maybe let her use their names:</p>
+ <blockquote name="6626" id="6626">From all of you I heard from earlier, anyone care to go on record?</blockquote>
+ <p name="8a7d" id="8a7d">My good friend, The Angry Drunk points out the obvious problem:</p>
+ <blockquote name="68c9" id="68c9">Nobody’s going to go on record when they count on Marco’s friends for their PR.</blockquote>
+ <p name="317d" id="317d">This is true. Again, the sites that are Friends of Marco:</p>
+ <p name="9523" id="9523">Daring Fireball</p>
+ <p name="dbc7" id="dbc7">The Loop</p>
+ <p name="c706" id="c706">SixColors</p>
+ <p name="0acb" id="0acb">iMore</p>
+ <p name="8c8c" id="8c8c">MacStories</p>
+ <p name="643e" id="643e">A few others, but I want this post to end one day.</p>
+ <p name="6b76" id="6b76">You piss that crew off, and given how petty rather a few of them have demonstrated they are, good luck on getting any kind of notice from them.</p>
+ <p name="f7d1" id="f7d1">Of course, the idea this could happen is just craycray:</p>
+ <blockquote name="de59" id="de59"><a href="https://twitter.com/KevinColeman" data-href="https://twitter.com/KevinColeman" rel="nofollow noopener" target="_blank">@KevinColeman </a><a href="https://twitter.com/Angry_Drunk" data-href="https://twitter.com/Angry_Drunk" rel="nofollow noopener" target="_blank">.@Angry_Drunk</a> <a href="https://twitter.com/s_bielefeld" data-href="https://twitter.com/s_bielefeld" rel="nofollow noopener" target="_blank">@s_bielefeld</a> <a href="https://twitter.com/marcoarment" data-href="https://twitter.com/marcoarment" rel="nofollow noopener" target="_blank">@marcoarment</a> Wow, you guys are veering right into crazy conspiracy theory territory. <a href="https://twitter.com/hashtag/JetFuelCantMeltSteelBeams?src=hash" data-href="https://twitter.com/hashtag/JetFuelCantMeltSteelBeams?src=hash" rel="nofollow noopener" target="_blank">#JetFuelCantMeltSteelBeams</a></blockquote>
+ <p name="f01b" id="f01b">Yeah. Because a mature person like Marco would never do anything like that.</p>
+ <p name="7e30" id="7e30">Of course, the real point on this is starting to happen:</p>
+ <blockquote name="5d93" id="5d93">you’re getting a lot of heat now but happy you are writing things that stir up the community. Hope you continue to be a voice!</blockquote>
+ <blockquote name="436b" id="436b">I doubt I will.</blockquote>
+ <p name="ac25" id="ac25">See, they’ve done their job. Mess with the bull, you get the horns. Maybe you should find another thing to write about, this isn’t a good place for you. <em>Great</em> job y’all.</p>
+ <p name="07ba" id="07ba">Some people aren’t even pretending. They’re just in full strawman mode:</p>
+ <blockquote name="3d60" id="3d60"><a href="https://twitter.com/timkeller" data-href="https://twitter.com/timkeller" rel="nofollow noopener" target="_blank">@timkeller: </a>Unfair to begrudge a person for leveraging past success, especially when that success is earned. No ‘luck’ involved.</blockquote>
+ <blockquote name="87f5" id="87f5"><a href="https://twitter.com/s_bielefeld" data-href="https://twitter.com/s_bielefeld" rel="nofollow noopener" target="_blank">@s_bielefeld: </a><a href="https://twitter.com/timkeller" data-href="https://twitter.com/timkeller" rel="nofollow noopener" target="_blank">@timkeller</a> I plainly stated that I don’t hold his doing this against him. Way to twist words.</blockquote>
+ <p name="3720" id="3720">I think she’s earned her anger at this point.</p>
+ <p name="7341" id="7341">Don’t worry, Marco knows what the real problem is: most devs just suck —</p>
+ <figure name="babe" id="babe">
+ <div>
</div>
- </figure><p id="503d" name="503d">I have a saying that applies in this case: don’t place your head so far up your nethers that you go full Klein Bottle. Marco has gone full Klein Bottle. (To be correct, he went FKB some years ago.)</p>
- <p id="b8c0" name="b8c0">There are some bright spots. My favorite is when Building Twenty points out the <em>real</em> elephant in the room:</p>
- <blockquote id="36f4" name="36f4"><a data-href="https://twitter.com/BuildingTwenty" href="https://twitter.com/BuildingTwenty" rel="nofollow noopener" target="_blank">@BuildingTwenty</a>: Both <a data-href="https://twitter.com/s_bielefeld" href="https://twitter.com/s_bielefeld" rel="nofollow noopener" target="_blank">@s_bielefeld</a> &amp; I wrote similar critiques of <a data-href="https://twitter.com/marcoarment" href="https://twitter.com/marcoarment" rel="nofollow noopener" target="_blank">@marcoarment</a>’s pricing model yet the Internet pilloried only the woman. Who’d have guessed?</blockquote>
- <p id="06b9" name="06b9">Yup.</p>
- <p id="eff9" name="eff9">Another bright spot are these comments from Ian Betteridge, who has been doing this <em>even longer than Marco</em>:</p>
- <blockquote id="18f1" name="18f1">You know, any writer who has never made a single factual error in a piece hasn’t ever written anything worth reading.</blockquote>
- <blockquote id="9776" name="9776">I learned my job with the support of people who helped me. Had I suffered an Internet pile on for every error I wouldn’t have bothered.</blockquote>
- <p id="8d44" name="8d44">To which Samantha understandably replies:</p>
- <blockquote id="7147" name="7147">and it’s honestly something I’m contemplating right now, whether to continue…</blockquote>
- <p id="e0cd" name="e0cd">Gee, I can’t imagine why. Why with comments like this from Chris Breen that completely misrepresent Samantha’s point, (who until today, I would have absolutely defended as being better than this, something I am genuinely saddened to be wrong about), why wouldn’t she want to continue doing this?</p>
- <blockquote id="a379" name="a379">If I have this right, some people are outraged that a creator has decided to give away his work.</blockquote>
- <p id="f026" name="f026">No Chris, you don’t have this right. But hey, who has time to find out the real issue and read an article. I’m sure your friends told you everything you need to know.</p>
- <p id="e1c2" name="e1c2">Noted Feminist Glenn Fleishman gets a piece of the action too:</p>
- <figure id="067c" name="067c"><div>
+ </figure>
+ <p name="503d" id="503d">I have a saying that applies in this case: don’t place your head so far up your nethers that you go full Klein Bottle. Marco has gone full Klein Bottle. (To be correct, he went FKB some years ago.)</p>
+ <p name="b8c0" id="b8c0">There are some bright spots. My favorite is when Building Twenty points out the <em>real</em> elephant in the room:</p>
+ <blockquote name="36f4" id="36f4"><a href="https://twitter.com/BuildingTwenty" data-href="https://twitter.com/BuildingTwenty" rel="nofollow noopener" target="_blank">@BuildingTwenty</a>: Both <a href="https://twitter.com/s_bielefeld" data-href="https://twitter.com/s_bielefeld" rel="nofollow noopener" target="_blank">@s_bielefeld</a> &amp; I wrote similar critiques of <a href="https://twitter.com/marcoarment" data-href="https://twitter.com/marcoarment" rel="nofollow noopener" target="_blank">@marcoarment</a>’s pricing model yet the Internet pilloried only the woman. Who’d have guessed?</blockquote>
+ <p name="06b9" id="06b9">Yup.</p>
+ <p name="eff9" id="eff9">Another bright spot are these comments from Ian Betteridge, who has been doing this <em>even longer than Marco</em>:</p>
+ <blockquote name="18f1" id="18f1">You know, any writer who has never made a single factual error in a piece hasn’t ever written anything worth reading.</blockquote>
+ <blockquote name="9776" id="9776">I learned my job with the support of people who helped me. Had I suffered an Internet pile on for every error I wouldn’t have bothered.</blockquote>
+ <p name="8d44" id="8d44">To which Samantha understandably replies:</p>
+ <blockquote name="7147" id="7147">and it’s honestly something I’m contemplating right now, whether to continue…</blockquote>
+ <p name="e0cd" id="e0cd">Gee, I can’t imagine why. Why with comments like this from Chris Breen that completely misrepresent Samantha’s point, (who until today, I would have absolutely defended as being better than this, something I am genuinely saddened to be wrong about), why wouldn’t she want to continue doing this?</p>
+ <blockquote name="a379" id="a379">If I have this right, some people are outraged that a creator has decided to give away his work.</blockquote>
+ <p name="f026" id="f026">No Chris, you don’t have this right. But hey, who has time to find out the real issue and read an article. I’m sure your friends told you everything you need to know.</p>
+ <p name="e1c2" id="e1c2">Noted Feminist Glenn Fleishman gets a piece of the action too:</p>
+ <figure name="067c" id="067c">
+ <div>
</div>
- </figure><p id="4df8" name="4df8">I’m not actually surprised here. I watched Fleishman berate a friend of mine who has been an engineer for…heck, waaaaay too long on major software products in the most condescending way because she tried to point out that as a <em>very</em> technical woman, “The Magazine” literally had nothing to say to her and maybe he should fix that. “Impertinent” was I believe what he called her, but I may have the specific word wrong. Not the attitude mind you. Great Feminists like Glenn do not like uppity women criticizing Great Feminists who are their Great Allies.</p>
- <p id="bf45" name="bf45">Great Feminists are often tools.</p>
+ </figure>
+ <p name="4df8" id="4df8">I’m not actually surprised here. I watched Fleishman berate a friend of mine who has been an engineer for…heck, waaaaay too long on major software products in the most condescending way because she tried to point out that as a <em>very</em> technical woman, “The Magazine” literally had nothing to say to her and maybe he should fix that. “Impertinent” was I believe what he called her, but I may have the specific word wrong. Not the attitude mind you. Great Feminists like Glenn do not like uppity women criticizing Great Feminists who are their Great Allies.</p>
+ <p name="bf45" id="bf45">Great Feminists are often tools.</p>
</div>
</div>
- </section><section name="c883">
+ </section>
+ <section name="c883">
+
<div>
<div>
- <p id="45bb" name="45bb">Luckily, I hope, the people who get Samantha’s point also started chiming in (and you get 100% of the women commenting here that I’ve seen):</p>
- <blockquote id="c053" name="c053">I don’t think he’s wrong for doing it, he just discusses it as if the market’s a level playing field — it isn’t</blockquote>
- <blockquote id="7b5e" name="7b5e">This is a great article with lots of great points about the sustainability of iOS development. Thank you for publishing it.</blockquote>
- <blockquote id="a321" name="a321">Regardless of the numbers and your view of MA, fair points here about confirmation bias in app marketing feasibility <a data-href="http://t.co/u79ZLsnhdM" href="http://t.co/u79ZLsnhdM" rel="nofollow noopener" target="_blank" title="http://samanthabielefeld.com/the-elephant-in-the-room">http://samanthabielefeld.com/the-elephant-in-the-room …</a></blockquote>
- <blockquote id="76fe" name="76fe">thank you for posting this, it covers a lot of things people don’t like to talk about.</blockquote>
- <blockquote id="bf90" name="bf90">I’m sure you have caught untold amounts of flak over posting this because Marco is blind to his privilege as a developer.</blockquote>
- <blockquote id="0f66" name="0f66">Catching up on the debate, and agreeing with Harry’s remark. (Enjoyed your article, Samantha, and ‘got’ your point.)</blockquote>
+ <p name="45bb" id="45bb">Luckily, I hope, the people who get Samantha’s point also started chiming in (and you get 100% of the women commenting here that I’ve seen):</p>
+ <blockquote name="c053" id="c053">I don’t think he’s wrong for doing it, he just discusses it as if the market’s a level playing field — it isn’t</blockquote>
+ <blockquote name="7b5e" id="7b5e">This is a great article with lots of great points about the sustainability of iOS development. Thank you for publishing it.</blockquote>
+ <blockquote name="a321" id="a321">Regardless of the numbers and your view of MA, fair points here about confirmation bias in app marketing feasibility <a href="http://t.co/u79ZLsnhdM" data-href="http://t.co/u79ZLsnhdM" title="http://samanthabielefeld.com/the-elephant-in-the-room" rel="nofollow noopener" target="_blank">http://samanthabielefeld.com/the-elephant-in-the-room …</a></blockquote>
+ <blockquote name="76fe" id="76fe">thank you for posting this, it covers a lot of things people don’t like to talk about.</blockquote>
+ <blockquote name="bf90" id="bf90">I’m sure you have caught untold amounts of flak over posting this because Marco is blind to his privilege as a developer.</blockquote>
+ <blockquote name="0f66" id="0f66">Catching up on the debate, and agreeing with Harry’s remark. (Enjoyed your article, Samantha, and ‘got’ your point.)</blockquote>
</div>
</div>
- </section><section name="8ab2">
+ </section>
+ <section name="8ab2">
+
<div>
<div>
- <p id="6134" name="6134">I would like to say I’m surprised at the reaction to Samantha’s article, but I’m not. In spite of his loud declarations of support for The Big Lie, Marco Arment is as bad at any form of criticism that he hasn’t already approved as a very insecure tween. An example from 2011: <a data-href="http://www.businessinsider.com/marco-arment-2011-9" href="http://www.businessinsider.com/marco-arment-2011-9" rel="nofollow noopener" target="_blank">http://www.businessinsider.com/marco-arment-2011-9</a></p>
- <p id="ba3c" name="ba3c">Marco is great with criticism as long as it never actually criticizes him. If it does, be prepared a flood of petty, petulant whining that a room full of bored preschoolers on a hot day would be hard-pressed to match.</p>
- <p id="a5a0" name="a5a0">Today has been…well, it sucks. It sucks because someone doing what all the Arments of the world claim to want was naive enough to believe what they were told, and found out the hard way just how big a lie The Big Lie is, and how vicious people are when you’re silly enough to believe anything they say about criticism.</p>
- <p id="2a25" name="2a25">And note again, every single condescending crack, misrepresentation, and strawman had an exclusively male source. Most of them have, at one point or another, loudly trumpted themselves as Feminist Allies, as a friend to women struggling with the sexism and misogyny in tech. Congratulations y’all on being just as bad as the people you claim to oppose.</p>
- <p id="a47a" name="a47a">Samantha has handled this better than anyone else could have. My respect for her as a person and a writer is off the charts. If she choses to walk away from blogging in the Apple space, <em>believe me</em> I understand. As bad as today was for her, I’ve seen worse. Much worse.</p>
- <p id="aa8e" name="aa8e">But I hope she doesn’t. I hope she stays, because she is Doing This Right, and in a corner of the internet that has become naught but an endless circle jerk, a cliquish collection, a churlish, childish cohort interested not in writing or the truth, but in making sure The Right People are elevated, and The Others put down, she is someone worth reading and listening to. The number people who owe her apologies goes around the block, and I don’t think she’ll ever see a one. I’m sure as heck not apologizing for them, I’ll not make their lives easier in the least.</p>
- <p id="34c5" name="34c5">All of you, all. of. you…Marco, Breen, Snell, Vittici, had a chance to live by your words. You were faced with reasoned, polite, respectful criticism and instead of what you should have done, you all dropped trou and sprayed an epic diarrheal discharge all over someone who had done nothing to deserve it. Me, I earned most of my aggro, Samantha did not earn any of the idiocy I’ve seen today. I hope you’re all proud of yourselves. Someone should be, it won’t be me. Ever.</p>
- <p id="9710" name="9710">So I hope she stays, but if she goes, I understand. For what it’s worth, I don’t think she’s wrong either way.</p>
+ <p name="6134" id="6134">I would like to say I’m surprised at the reaction to Samantha’s article, but I’m not. In spite of his loud declarations of support for The Big Lie, Marco Arment is as bad at any form of criticism that he hasn’t already approved as a very insecure tween. An example from 2011: <a href="http://www.businessinsider.com/marco-arment-2011-9" data-href="http://www.businessinsider.com/marco-arment-2011-9" rel="nofollow noopener" target="_blank">http://www.businessinsider.com/marco-arment-2011-9</a></p>
+ <p name="ba3c" id="ba3c">Marco is great with criticism as long as it never actually criticizes him. If it does, be prepared a flood of petty, petulant whining that a room full of bored preschoolers on a hot day would be hard-pressed to match.</p>
+ <p name="a5a0" id="a5a0">Today has been…well, it sucks. It sucks because someone doing what all the Arments of the world claim to want was naive enough to believe what they were told, and found out the hard way just how big a lie The Big Lie is, and how vicious people are when you’re silly enough to believe anything they say about criticism.</p>
+ <p name="2a25" id="2a25">And note again, every single condescending crack, misrepresentation, and strawman had an exclusively male source. Most of them have, at one point or another, loudly trumpted themselves as Feminist Allies, as a friend to women struggling with the sexism and misogyny in tech. Congratulations y’all on being just as bad as the people you claim to oppose.</p>
+ <p name="a47a" id="a47a">Samantha has handled this better than anyone else could have. My respect for her as a person and a writer is off the charts. If she choses to walk away from blogging in the Apple space, <em>believe me</em> I understand. As bad as today was for her, I’ve seen worse. Much worse.</p>
+ <p name="aa8e" id="aa8e">But I hope she doesn’t. I hope she stays, because she is Doing This Right, and in a corner of the internet that has become naught but an endless circle jerk, a cliquish collection, a churlish, childish cohort interested not in writing or the truth, but in making sure The Right People are elevated, and The Others put down, she is someone worth reading and listening to. The number people who owe her apologies goes around the block, and I don’t think she’ll ever see a one. I’m sure as heck not apologizing for them, I’ll not make their lives easier in the least.</p>
+ <p name="34c5" id="34c5">All of you, all. of. you…Marco, Breen, Snell, Vittici, had a chance to live by your words. You were faced with reasoned, polite, respectful criticism and instead of what you should have done, you all dropped trou and sprayed an epic diarrheal discharge all over someone who had done nothing to deserve it. Me, I earned most of my aggro, Samantha did not earn any of the idiocy I’ve seen today. I hope you’re all proud of yourselves. Someone should be, it won’t be me. Ever.</p>
+ <p name="9710" id="9710">So I hope she stays, but if she goes, I understand. For what it’s worth, I don’t think she’s wrong either way.</p>
</div>
</div>
- </section> \ No newline at end of file
+ </section>
+ </div>
+
+ </article>
+ </main>
+
+
+ </div>
+ </div>
+ </div> \ No newline at end of file
diff --git a/test/test-pages/mozilla-1/expected.html b/test/test-pages/mozilla-1/expected.html
index ba1896e..61c35dc 100644
--- a/test/test-pages/mozilla-1/expected.html
+++ b/test/test-pages/mozilla-1/expected.html
@@ -1,67 +1,87 @@
-<div id="main-content" role="main"><section id="intro"><div>
+<div role="main" id="main-content">
+ <section id="intro">
+ <div>
<p>It’s easier than ever to personalize Firefox and make it work the way
you do.
- <br></br>No other browser gives you so much choice and flexibility.</p>
+ <br>No other browser gives you so much choice and flexibility.</p>
<div id="flexible-top-animation">
- <p><img alt="" src="http://mozorg.cdn.mozilla.net/media/img/firefox/desktop/customize/animations/flexible-top-fallback.c960365ba781.png"></img></p>
+ <p><img src="http://mozorg.cdn.mozilla.net/media/img/firefox/desktop/customize/animations/flexible-top-fallback.c960365ba781.png" alt></p>
</div>
</div>
- </section><section data-ga-label="Designed to be redesigned" id="designed"><div>
+ </section>
+ <section id="designed" data-ga-label="Designed to be redesigned">
+ <div>
<div id="designed-copy">
- <h2>Designed to <br></br>be redesigned</h2>
+ <h2>Designed to <br>be redesigned</h2>
<p>Get fast and easy access to the features you use most in the new menu.
Open the “Customize” panel to add, move or remove any button you want.
Keep your favorite features — add-ons, private browsing, Sync and more
— one quick click away.</p>
- <p><img alt="" data-high-res="true" data-high-res-src="//mozorg.cdn.mozilla.net/media/img/firefox/desktop/customize/designed-redesigned-high-res.6efd60766484.png" data-processed="false" data-src="//mozorg.cdn.mozilla.net/media/img/firefox/desktop/customize/designed-redesigned.fbd3ee9402e6.png" id="designed-mobile" src="http://mozorg.cdn.mozilla.net/media/img/firefox/desktop/customize/designed-redesigned.fbd3ee9402e6.png"></img></p></div>
+ <p><img src="http://mozorg.cdn.mozilla.net/media/img/firefox/desktop/customize/designed-redesigned.fbd3ee9402e6.png" data-processed="false" data-src="//mozorg.cdn.mozilla.net/media/img/firefox/desktop/customize/designed-redesigned.fbd3ee9402e6.png" data-high-res="true" data-high-res-src="//mozorg.cdn.mozilla.net/media/img/firefox/desktop/customize/designed-redesigned-high-res.6efd60766484.png" alt id="designed-mobile">
+ </p></div>
<div id="flexible-bottom-animation">
- <p><img alt="" src="http://mozorg.cdn.mozilla.net/media/img/firefox/desktop/customize/animations/flexible-bottom-fallback.cafd48a3d0a4.png"></img></p>
+ <p><img src="http://mozorg.cdn.mozilla.net/media/img/firefox/desktop/customize/animations/flexible-bottom-fallback.cafd48a3d0a4.png" alt></p>
</div>
</div>
- </section><section data-ga-label="More ways to customize" id="customize">
- </section><div id="customizers-wrapper">
- <section aria-labelledby="customize-themes" id="themes" role="tabpanel"><div>
+ </section>
+ <section id="customize" data-ga-label="More ways to customize">
+
+ </section>
+ <div id="customizers-wrapper">
+ <section id="themes" role="tabpanel" aria-labelledby="customize-themes">
+ <div>
<div>
<h3>Themes</h3>
<p>Make Firefox match your style. Choose from thousands of themes and dress
up your browser with a single click.</p>
- <p><a href="https://addons.mozilla.org/firefox/themes/" rel="external">Try it now</a>
+ <p><a rel="external" href="https://addons.mozilla.org/firefox/themes/">Try it now</a>
- <br></br><a href="https://support.mozilla.org/kb/use-themes-change-look-of-firefox" rel="external">Learn more</a>
+ <br> <a rel="external" href="https://support.mozilla.org/kb/use-themes-change-look-of-firefox">Learn more</a>
- </p></div> <p><a href="#add-ons" role="button">Next</a></p><p><img alt="Preview of the currently selected theme" id="theme-demo" src="http://mozorg.cdn.mozilla.net/media/img/firefox/desktop/customize/theme-red.61611c5734ab.png"></img></p>
+ </p></div> <p><a href="#add-ons" role="button">Next</a></p><p><img id="theme-demo" src="http://mozorg.cdn.mozilla.net/media/img/firefox/desktop/customize/theme-red.61611c5734ab.png" alt="Preview of the currently selected theme">
+ </p>
</div>
- </section><section aria-labelledby="customize-addons" id="add-ons" role="tabpanel"><div>
+ </section>
+ <section id="add-ons" role="tabpanel" aria-labelledby="customize-addons">
+ <div>
<div>
<h3>Add-ons</h3>
<p><a href="#awesome-bar" role="button">Next</a></p><p>Add-ons are like apps that you install to add features to Firefox. They
let you compare prices, check the weather, listen to music, send a tweet
and more.</p>
- <ul><li>Read the latest news &amp; blogs</li>
+ <ul>
+ <li>Read the latest news &amp; blogs</li>
<li>Manage your downloads</li>
<li>Watch videos &amp; view photos</li>
- </ul><p><a href="https://addons.mozilla.org/firefox/extensions/?sort=featured" rel="external">Here are a few of our favorites</a>
+ </ul> <p><a rel="external" href="https://addons.mozilla.org/firefox/extensions/?sort=featured">Here are a few of our favorites</a>
- <br></br><a href="https://support.mozilla.org/kb/find-and-install-add-ons-add-features-to-firefox" rel="external">Learn more</a>
+ <br> <a rel="external" href="https://support.mozilla.org/kb/find-and-install-add-ons-add-features-to-firefox">Learn more</a>
</p></div>
- <p><img alt="" src="http://mozorg.cdn.mozilla.net/media/img/firefox/desktop/customize/add-ons.63a4b761f822.png"></img></p>
+ <p><img src="http://mozorg.cdn.mozilla.net/media/img/firefox/desktop/customize/add-ons.63a4b761f822.png" alt>
+ </p>
</div>
- </section><section aria-labelledby="customize-awesomebar" id="awesome-bar" role="tabpanel"><div>
+ </section>
+ <section id="awesome-bar" role="tabpanel" aria-labelledby="customize-awesomebar">
+ <div>
<div>
<h3>Awesome Bar</h3>
<p><a href="#themes" role="button">Next</a></p><p>The Awesome Bar learns as you browse to make your version of Firefox unique.
Find and return to your favorite sites without having to remember a URL.</p>
- <p><a href="https://support.mozilla.org/kb/awesome-bar-find-your-bookmarks-history-and-tabs" rel="external">See what it can do for you</a>
+ <p><a rel="external" href="https://support.mozilla.org/kb/awesome-bar-find-your-bookmarks-history-and-tabs">See what it can do for you</a>
</p></div>
- <p><img alt="Firefox Awesome Bar" src="http://mozorg.cdn.mozilla.net/media/img/firefox/desktop/customize/awesome-bar.437df162126c.png"></img></p>
+ <p><img src="http://mozorg.cdn.mozilla.net/media/img/firefox/desktop/customize/awesome-bar.437df162126c.png" alt="Firefox Awesome Bar">
+ </p>
</div>
- </section></div>
+ </section>
+ </div>
- <section data-ga-label="Keep your Firefox in Sync" id="sync">
- </section></div> \ No newline at end of file
+ <section id="sync" data-ga-label="Keep your Firefox in Sync">
+
+ </section>
+ </div> \ No newline at end of file
diff --git a/test/test-pages/mozilla-2/expected.html b/test/test-pages/mozilla-2/expected.html
index 8ce4c07..7541bb0 100644
--- a/test/test-pages/mozilla-2/expected.html
+++ b/test/test-pages/mozilla-2/expected.html
@@ -1,8 +1,14 @@
-<div role="main"><section><header>
+<div role="main">
+ <section>
+ <header>
+
<p>Get to know the features that make it the most complete browser for building the Web.</p>
- </header><ul><li>
+ </header>
+ <ul>
+ <li>
<a href="https://www.youtube.com/watch?v=1R9_WdXwUsE" rel="external">
- <img alt="Screenshot" src="http://mozorg.cdn.mozilla.net/media/img/firefox/firstrun/dev/feature-webide.16763db341cb.jpg"></img></a>
+ <img src="http://mozorg.cdn.mozilla.net/media/img/firefox/firstrun/dev/feature-webide.16763db341cb.jpg" alt="Screenshot">
+ </a>
<h2>WebIDE</h2>
<p>Develop, deploy and debug Firefox OS apps directly in your browser, or on a Firefox OS device, with this tool that replaces App Manager.</p>
<a href="https://developer.mozilla.org/docs/Tools/WebIDE" rel="external">Learn more about WebIDE</a>
@@ -10,24 +16,33 @@
</li>
<li>
<a href="https://www.youtube.com/watch?v=eH0R10Ga4Hs" rel="external">
- <img alt="Screenshot" src="http://mozorg.cdn.mozilla.net/media/img/firefox/firstrun/dev/feature-valence.251f9def4d8d.jpg"></img></a>
+ <img src="http://mozorg.cdn.mozilla.net/media/img/firefox/firstrun/dev/feature-valence.251f9def4d8d.jpg" alt="Screenshot">
+ </a>
<h2>Valence</h2>
<p>Develop and debug your apps across multiple browsers and devices with this powerful extension that comes pre-installed with Firefox Developer Edition.</p>
<a href="https://developer.mozilla.org/docs/Tools/Firefox_Tools_Adapter" rel="external">Learn more about Valence</a>
</li>
- </ul><div>
+ </ul>
+ <div>
<h4>Important: Sync your new profile</h4>
<p>
Developer Edition comes with a new profile so you can run it alongside other versions of Firefox. To access your bookmarks, browsing history and more, you need to sync the profile with your existing Firefox Account, or create a new one.
<a href="https://support.mozilla.org/kb/recover-lost-bookmarks-firefox-developer-edition" rel="external">Learn more</a>
</p>
</div>
- </section><section><div>
- <header><h2>Features and tools</h2>
- </header><ul><li>
+ </section>
+
+ <section>
+ <div>
+ <header>
+ <h2>Features and tools</h2>
+ </header>
+ <ul>
+ <li>
<a href="https://www.youtube.com/watch?v=eQqNfkqIJdw" rel="external">
- <img alt="Screenshot" src="http://mozorg.cdn.mozilla.net/media/img/firefox/firstrun/dev/feature-inspector.c791bf1f1a59.jpg"></img></a>
+ <img src="http://mozorg.cdn.mozilla.net/media/img/firefox/firstrun/dev/feature-inspector.c791bf1f1a59.jpg" alt="Screenshot">
+ </a>
<h2>Page Inspector</h2>
<p>Examine the HTML and CSS of any Web page and easily modify the structure and layout of a page.</p>
<a href="https://developer.mozilla.org/docs/Tools/Page_Inspector" rel="external">Learn more about Page Inspector</a>
@@ -35,7 +50,8 @@
</li>
<li>
<a href="https://www.youtube.com/watch?v=iEDk8o9ehlw" rel="external">
- <img alt="Screenshot" src="http://mozorg.cdn.mozilla.net/media/img/firefox/firstrun/dev/feature-console.42666aaf6d03.jpg"></img></a>
+ <img src="http://mozorg.cdn.mozilla.net/media/img/firefox/firstrun/dev/feature-console.42666aaf6d03.jpg" alt="Screenshot">
+ </a>
<h2>Web Console</h2>
<p>See logged information associated with a Web page and use Web Console to interact with Web pages using JavaScript.</p>
<a href="https://developer.mozilla.org/docs/Tools/Web_Console" rel="external">Learn more about Web Console</a>
@@ -43,7 +59,8 @@
</li>
<li>
<a href="https://www.youtube.com/watch?v=OS4AxYFLCIE" rel="external">
- <img alt="Screenshot" src="http://mozorg.cdn.mozilla.net/media/img/firefox/firstrun/dev/feature-debugger.02ed86fb0c9f.jpg"></img></a>
+ <img src="http://mozorg.cdn.mozilla.net/media/img/firefox/firstrun/dev/feature-debugger.02ed86fb0c9f.jpg" alt="Screenshot">
+ </a>
<h2>JavaScript Debugger</h2>
<p>Step through JavaScript code and examine or modify its state to help track down bugs.</p>
<a href="https://developer.mozilla.org/docs/Tools/Debugger" rel="external">Learn more about JavaScript Debugger</a>
@@ -51,7 +68,8 @@
</li>
<li>
<a href="https://www.youtube.com/watch?v=w4zSG53Qlbk" rel="external">
- <img alt="Screenshot" src="http://mozorg.cdn.mozilla.net/media/img/firefox/firstrun/dev/feature-network.740d6082b3f6.jpg"></img></a>
+ <img src="http://mozorg.cdn.mozilla.net/media/img/firefox/firstrun/dev/feature-network.740d6082b3f6.jpg" alt="Screenshot">
+ </a>
<h2>Network Monitor</h2>
<p>See all the network requests your browser makes, how long each request takes and details of each request.</p>
<a href="https://developer.mozilla.org/docs/Tools/Network_Monitor" rel="external">Learn more about Network Monitor</a>
@@ -59,7 +77,8 @@
</li>
<li>
<a href="https://www.youtube.com/watch?v=R_qDaLQ8ghg" rel="external">
- <img alt="Screenshot" src="http://mozorg.cdn.mozilla.net/media/img/firefox/firstrun/dev/feature-webaudio.a10ebc48d017.jpg"></img></a>
+ <img src="http://mozorg.cdn.mozilla.net/media/img/firefox/firstrun/dev/feature-webaudio.a10ebc48d017.jpg" alt="Screenshot">
+ </a>
<h2>Web Audio Editor</h2>
<p>Inspect and interact with Web Audio API in real time to ensure that all audio nodes are connected in the way you expect.</p>
<a href="https://developer.mozilla.org/docs/Tools/Web_Audio_Editor" rel="external">Learn more about Web Audio Editor</a>
@@ -67,11 +86,14 @@
</li>
<li>
<a href="https://www.youtube.com/watch?v=3kdBvvIZIqU" rel="external">
- <img alt="Screenshot" src="http://mozorg.cdn.mozilla.net/media/img/firefox/firstrun/dev/feature-style-editor.87c5d2017506.jpg"></img></a>
+ <img src="http://mozorg.cdn.mozilla.net/media/img/firefox/firstrun/dev/feature-style-editor.87c5d2017506.jpg" alt="Screenshot">
+ </a>
<h2>Style Editor</h2>
<p>View and edit CSS styles associated with a Web page, create new ones and apply existing CSS stylesheets to any page.</p>
<a href="https://developer.mozilla.org/docs/Tools/Style_Editor" rel="external">Learn more about Style Editor</a>
</li>
- </ul></div>
- </section></div> \ No newline at end of file
+ </ul>
+ </div>
+ </section>
+</div> \ No newline at end of file
diff --git a/test/test-pages/msn/expected.html b/test/test-pages/msn/expected.html
index 3ed4d69..7757011 100644
--- a/test/test-pages/msn/expected.html
+++ b/test/test-pages/msn/expected.html
@@ -1,7 +1,10 @@
-<article data-aop="article" itemscope="" itemtype="http://schema.org/NewsArticle"><section data-aop="articlebody" itemprop="articleBody"><p>
+<article itemscope itemtype="http://schema.org/NewsArticle" data-aop="article">
+ <section itemprop="articleBody" data-aop="articlebody">
+ <p>
<span data-aop="image">
-<span data-attrib="Provided by Business Insider Inc" data-caption="&lt;span style=&quot;font-size:13px;&quot;>Nintendo/Apple&lt;/span>" data-id="55" data-m="{&quot;i&quot;:55,&quot;p&quot;:52,&quot;n&quot;:&quot;openModal&quot;,&quot;t&quot;:&quot;articleImages&quot;,&quot;o&quot;:3}">
- <img alt="&lt;span style=&quot;font-size:13px;&quot;>Nintendo/Apple&lt;/span>" data-initial-set="true" data-src="{&quot;default&quot;:{&quot;load&quot;:&quot;default&quot;,&quot;w&quot;:&quot;73&quot;,&quot;h&quot;:&quot;41&quot;,&quot;src&quot;:&quot;//img-s-msn-com.akamaized.net/tenant/amp/entityid/AAkk5fh.img?h=410&amp;w=728&amp;m=6&amp;q=60&amp;o=f&amp;l=f&amp;x=1162&amp;y=540&quot;},&quot;size3column&quot;:{&quot;load&quot;:&quot;default&quot;,&quot;w&quot;:&quot;62&quot;,&quot;h&quot;:&quot;35&quot;,&quot;src&quot;:&quot;//img-s-msn-com.akamaized.net/tenant/amp/entityid/AAkk5fh.img?h=351&amp;w=624&amp;m=6&amp;q=60&amp;o=f&amp;l=f&amp;x=1162&amp;y=540&quot;},&quot;size2column&quot;:{&quot;load&quot;:&quot;default&quot;,&quot;w&quot;:&quot;62&quot;,&quot;h&quot;:&quot;35&quot;,&quot;src&quot;:&quot;//img-s-msn-com.akamaized.net/tenant/amp/entityid/AAkk5fh.img?h=351&amp;w=624&amp;m=6&amp;q=60&amp;o=f&amp;l=f&amp;x=1162&amp;y=540&quot;}}" src="http://img-s-msn-com.akamaized.net/tenant/amp/entityid/AAkk5fh.img?h=820&amp;w=1456&amp;m=6&amp;q=60&amp;o=f&amp;l=f&amp;x=1162&amp;y=540"></img></span>
+<span data-attrib="Provided by Business Insider Inc" data-caption="<span style=&quot;font-size:13px;&quot;>Nintendo/Apple</span>" data-id="55" data-m="{&quot;i&quot;:55,&quot;p&quot;:52,&quot;n&quot;:&quot;openModal&quot;,&quot;t&quot;:&quot;articleImages&quot;,&quot;o&quot;:3}">
+ <img alt="<span style=&quot;font-size:13px;&quot;>Nintendo/Apple</span>" data-src="{&quot;default&quot;:{&quot;load&quot;:&quot;default&quot;,&quot;w&quot;:&quot;73&quot;,&quot;h&quot;:&quot;41&quot;,&quot;src&quot;:&quot;//img-s-msn-com.akamaized.net/tenant/amp/entityid/AAkk5fh.img?h=410&amp;w=728&amp;m=6&amp;q=60&amp;o=f&amp;l=f&amp;x=1162&amp;y=540&quot;},&quot;size3column&quot;:{&quot;load&quot;:&quot;default&quot;,&quot;w&quot;:&quot;62&quot;,&quot;h&quot;:&quot;35&quot;,&quot;src&quot;:&quot;//img-s-msn-com.akamaized.net/tenant/amp/entityid/AAkk5fh.img?h=351&amp;w=624&amp;m=6&amp;q=60&amp;o=f&amp;l=f&amp;x=1162&amp;y=540&quot;},&quot;size2column&quot;:{&quot;load&quot;:&quot;default&quot;,&quot;w&quot;:&quot;62&quot;,&quot;h&quot;:&quot;35&quot;,&quot;src&quot;:&quot;//img-s-msn-com.akamaized.net/tenant/amp/entityid/AAkk5fh.img?h=351&amp;w=624&amp;m=6&amp;q=60&amp;o=f&amp;l=f&amp;x=1162&amp;y=540&quot;}}" src="http://img-s-msn-com.akamaized.net/tenant/amp/entityid/AAkk5fh.img?h=820&amp;w=1456&amp;m=6&amp;q=60&amp;o=f&amp;l=f&amp;x=1162&amp;y=540" data-initial-set="true">
+</span>
<span>
<span>© Provided by Business Insider Inc</span>
<span>Nintendo/Apple</span>
@@ -13,6 +16,7 @@
<p>The name and basic idea might sound like one of those endless score attack games like "Temple Run," but that's not the case. "Super Mario Run" is divided into hand-crafted levels with a clear end-point like any other Mario game, meaning you're essentially getting the Mario experience for $10 without needing to control his movement.</p>
<p>$10 might seem like a bit much compared to the $0 people pay for most mobile games, but it's possible the game has $10 worth of levels to play in it. It's also not iPhone exclusive, but the Android version will launch at a later, currently unknown date. </p>
<p>To see "Super Mario Run" in action, check out the footage below:</p>
- <p><iframe allowfullscreen="" frameborder="0" height="450" src="https://www.youtube.com/embed/E39ychZKnDI" width="100%"></iframe></p>
+ <p><iframe allowfullscreen src="https://www.youtube.com/embed/E39ychZKnDI" frameborder="0" width="100%" height="450"></iframe></p>
- </section></article> \ No newline at end of file
+ </section>
+ </article> \ No newline at end of file
diff --git a/test/test-pages/nytimes-1/expected.html b/test/test-pages/nytimes-1/expected.html
index 60f7148..7cf46a2 100644
--- a/test/test-pages/nytimes-1/expected.html
+++ b/test/test-pages/nytimes-1/expected.html
@@ -1,13 +1,19 @@
<div>
<div>
- <figure aria-label="media" data-media-action="modal" id="media-100000004869232" itemid="https://static01.nyt.com/images/2017/01/14/world/13SUDAN-1/13SUDAN-1-master768.jpg" itemprop="associatedMedia" itemscope="" itemtype="http://schema.org/ImageObject" role="group"><span>Photo</span>
+ <figure id="media-100000004869232" data-media-action="modal" itemprop="associatedMedia" itemscope itemid="https://static01.nyt.com/images/2017/01/14/world/13SUDAN-1/13SUDAN-1-master768.jpg" itemtype="http://schema.org/ImageObject" aria-label="media" role="group">
+ <span>Photo</span>
<div>
- <p><img alt="" data-mediaviewer-caption="United Nations peacekeepers at a refugee camp in Sudan on Monday. In exchange for the lifting of United States trade sanctions, Sudan has said it will improve access for aid groups, stop supporting rebels in neighboring South Sudan and cooperate with American intelligence agents." data-mediaviewer-credit="Ashraf Shazly/Agence France-Presse — Getty Images" data-mediaviewer-src="https://static01.nyt.com/images/2017/01/14/world/13SUDAN-1/13SUDAN-1-superJumbo.jpg" itemid="https://static01.nyt.com/images/2017/01/14/world/13SUDAN-1/13SUDAN-1-master768.jpg" itemprop="url" src="https://static01.nyt.com/images/2017/01/14/world/13SUDAN-1/13SUDAN-1-master768.jpg"></img></p>
- <meta content="512" itemprop="height"></meta><meta content="768" itemprop="width"></meta></div>
- <figcaption itemprop="caption description"><span>United Nations peacekeepers at a refugee camp in Sudan on Monday. In exchange for the lifting of United States trade sanctions, Sudan has said it will improve access for aid groups, stop supporting rebels in neighboring South Sudan and cooperate with American intelligence agents.</span>
+ <p><img src="https://static01.nyt.com/images/2017/01/14/world/13SUDAN-1/13SUDAN-1-master768.jpg" alt data-mediaviewer-src="https://static01.nyt.com/images/2017/01/14/world/13SUDAN-1/13SUDAN-1-superJumbo.jpg" data-mediaviewer-caption="United Nations peacekeepers at a refugee camp in Sudan on Monday. In exchange for the lifting of United States trade sanctions, Sudan has said it will improve access for aid groups, stop supporting rebels in neighboring South Sudan and cooperate with American intelligence agents." data-mediaviewer-credit="Ashraf Shazly/Agence France-Presse — Getty Images" itemprop="url" itemid="https://static01.nyt.com/images/2017/01/14/world/13SUDAN-1/13SUDAN-1-master768.jpg"></p>
+ <meta itemprop="height" content="512">
+ <meta itemprop="width" content="768">
+ </div>
+ <figcaption itemprop="caption description">
+ <span>United Nations peacekeepers at a refugee camp in Sudan on Monday. In exchange for the lifting of United States trade sanctions, Sudan has said it will improve access for aid groups, stop supporting rebels in neighboring South Sudan and cooperate with American intelligence agents.</span>
<span itemprop="copyrightHolder">
<span>Credit</span> Ashraf Shazly/Agence France-Presse — Getty Images </span>
- </figcaption></figure><p data-para-count="194" data-total-count="194">LONDON — After nearly 20 years of hostile relations, the American government plans to reverse its position on <a href="http://topics.nytimes.com/top/news/international/countriesandterritories/sudan/index.html?inline=nyt-geo" title="More news and information about Sudan.">Sudan</a> and lift trade sanctions, Obama administration officials said late Thursday.</p>
+ </figcaption>
+ </figure>
+ <p data-para-count="194" data-total-count="194">LONDON — After nearly 20 years of hostile relations, the American government plans to reverse its position on <a href="http://topics.nytimes.com/top/news/international/countriesandterritories/sudan/index.html?inline=nyt-geo" title="More news and information about Sudan.">Sudan</a> and lift trade sanctions, Obama administration officials said late Thursday.</p>
<p data-para-count="250" data-total-count="444">Sudan is one of the poorest, most isolated and most violent countries in Africa, and for years the United States has imposed punitive measures against it in a largely unsuccessful attempt to get the Sudanese government to stop killing its own people.</p>
<p data-para-count="293" data-total-count="737">On Friday, the Obama administration will announce a new Sudan strategy. For the first time since the 1990s, the nation will be able to trade extensively with the United States, allowing it to buy goods like tractors and spare parts and attract much-needed investment in its collapsing economy.</p>
<p data-para-count="193" data-total-count="930">In return, Sudan will improve access for aid groups, stop supporting rebels in neighboring <a href="http://topics.nytimes.com/top/news/international/countriesandterritories/south-sudan/index.html?inline=nyt-geo" title="More articles about South Sudan.">South Sudan</a>, cease the bombing of insurgent territory and cooperate with American intelligence agents.</p>
@@ -28,7 +34,8 @@
<p data-para-count="250" data-total-count="4223">“There is no reason to believe the guys in charge have changed their stripes,” said Mr. Reeves, a senior fellow at the François-Xavier Bagnoud Center for Health and Human Rights at Harvard University. “These guys are the worst of the worst.”</p>
<p data-para-count="208" data-total-count="4431">Obama administration officials said that they had briefed President-elect Donald J. Trump’s transition team, but that they did not know if Mr. Trump would stick with a policy of warmer relations with Sudan.</p>
<p data-para-count="143" data-total-count="4574">They said that Sudan had a long way to go in terms of respecting human rights, but that better relations could help increase American leverage.</p>
- <p data-node-uid="1" data-para-count="149" data-total-count="4723">Mr. Reeves said he thought that the American government was being manipulated and that the Obama administration had made a “deal with the devil.”</p>
+ <p data-para-count="149" data-total-count="4723" data-node-uid="1">Mr. Reeves said he thought that the American government was being manipulated and that the Obama administration had made a “deal with the devil.”</p>
+
<p><a href="#whats-next">Continue reading the main story</a>
</p></div>
diff --git a/test/test-pages/nytimes-2/expected.html b/test/test-pages/nytimes-2/expected.html
index 1584ca4..fbff74c 100644
--- a/test/test-pages/nytimes-2/expected.html
+++ b/test/test-pages/nytimes-2/expected.html
@@ -1,12 +1,18 @@
<div>
<div>
- <figure aria-label="media" data-media-action="modal" id="media-100000004560166" itemid="https://static01.nyt.com/images/2016/07/30/business/db-dealprof/db-dealprof-master315.jpg" itemprop="associatedMedia" itemscope="" itemtype="http://schema.org/ImageObject" role="group"><span>Photo</span>
+ <figure id="media-100000004560166" data-media-action="modal" itemprop="associatedMedia" itemscope itemid="https://static01.nyt.com/images/2016/07/30/business/db-dealprof/db-dealprof-master315.jpg" itemtype="http://schema.org/ImageObject" aria-label="media" role="group">
+ <span>Photo</span>
<div>
- <p><img alt="" data-mediaviewer-caption="" data-mediaviewer-credit="Harry Campbell" data-mediaviewer-src="https://static01.nyt.com/images/2016/07/30/business/db-dealprof/db-dealprof-superJumbo.jpg" itemid="https://static01.nyt.com/images/2016/07/30/business/db-dealprof/db-dealprof-master315.jpg" itemprop="url" src="https://static01.nyt.com/images/2016/07/30/business/db-dealprof/db-dealprof-master315.jpg"></img></p>
- <meta content="315" itemprop="height"></meta><meta content="315" itemprop="width"></meta></div>
- <figcaption itemprop="caption description"><span itemprop="copyrightHolder">
+ <p><img src="https://static01.nyt.com/images/2016/07/30/business/db-dealprof/db-dealprof-master315.jpg" alt data-mediaviewer-src="https://static01.nyt.com/images/2016/07/30/business/db-dealprof/db-dealprof-superJumbo.jpg" data-mediaviewer-caption data-mediaviewer-credit="Harry Campbell" itemprop="url" itemid="https://static01.nyt.com/images/2016/07/30/business/db-dealprof/db-dealprof-master315.jpg"></p>
+ <meta itemprop="height" content="315">
+ <meta itemprop="width" content="315">
+ </div>
+ <figcaption itemprop="caption description">
+ <span itemprop="copyrightHolder">
<span>Credit</span> Harry Campbell </span>
- </figcaption></figure><p data-para-count="148" data-total-count="148"><a href="http://www.nytimes.com/topic/company/yahoo-inc?inline=nyt-org" title="More information about Yahoo! Inc.">Yahoo</a>’s $4.8 billion sale to <a href="http://www.nytimes.com/topic/company/verizon-communications-inc?inline=nyt-org" title="More information about Verizon Communications Inc.">Verizon</a> is a complicated beast, showing how different acquisition structures can affect how shareholders are treated.</p>
+ </figcaption>
+ </figure>
+ <p data-para-count="148" data-total-count="148"><a href="http://www.nytimes.com/topic/company/yahoo-inc?inline=nyt-org" title="More information about Yahoo! Inc.">Yahoo</a>’s $4.8 billion sale to <a href="http://www.nytimes.com/topic/company/verizon-communications-inc?inline=nyt-org" title="More information about Verizon Communications Inc.">Verizon</a> is a complicated beast, showing how different acquisition structures can affect how shareholders are treated.</p>
<p data-para-count="177" data-total-count="325">First, let’s say what the Yahoo sale is not. It is not a sale of the publicly traded company. Instead, it is a sale of the Yahoo subsidiary and some related assets to Verizon.</p>
<p data-para-count="529" data-total-count="854">The sale is being done in two steps. The <a href="https://www.sec.gov/Archives/edgar/data/1011006/000119312516656036/d178500dex22.htm">first step</a> will be the transfer of any assets related to Yahoo business to a singular subsidiary. This includes the stock in the business subsidiaries that make up Yahoo that are not already in the single subsidiary, as well as the odd assets like benefit plan rights. This is what is being sold to Verizon. A license of Yahoo’s oldest patents is being held back in the so-called Excalibur portfolio. This will stay with Yahoo, as will Yahoo’s stakes in Alibaba Group and Yahoo Japan.</p>
<p data-para-count="479" data-total-count="1333">It is hard to overestimate how complex an asset sale like this is. Some of the assets are self-contained, but they must be gathered up and transferred. Employees need to be shuffled around and compensation arrangements redone. Many contracts, like the now-infamous one struck with the search engine Mozilla, which <a href="http://www.recode.net/2016/7/7/12116296/marissa-mayer-deal-mozilla-yahoo-payment">may result in a payment of up to a $1 billion</a>, will contain change-of-control provisions that will be set off and have to be addressed. Tax issues always loom large.</p> <p><a href="#story-continues-1">Continue reading the main story</a>
diff --git a/test/test-pages/pixnet/expected.html b/test/test-pages/pixnet/expected.html
index ffa81c7..80a2e4a 100644
--- a/test/test-pages/pixnet/expected.html
+++ b/test/test-pages/pixnet/expected.html
@@ -1,6 +1,6 @@
<div id="article-content-inner">
<p>
- <a href="http://stevenhgm.pixnet.net/album/photo/470389413"><img alt="12-IMG_3886.jpg" height="359" original="http://pic.pimg.tw/stevenhgm/1387894842-1217674167.jpg" src="http://pic.pimg.tw/stevenhgm/1387894842-1217674167.jpg" title="12-IMG_3886.jpg" width="521"></img></a>
+ <a href="http://stevenhgm.pixnet.net/album/photo/470389413"><img title="12-IMG_3886.jpg" src="http://pic.pimg.tw/stevenhgm/1387894842-1217674167.jpg" alt="12-IMG_3886.jpg" original="http://pic.pimg.tw/stevenhgm/1387894842-1217674167.jpg" width="521" height="359"></a>
</p>
<p><span>一波波<span>接續性</span>低溫寒流報到 已將新竹尖石鄉後山一帶層層山巒披上嫣紅的彩衣</span>
</p>
@@ -14,7 +14,7 @@
<p><span><span><span>營區內</span></span>除了露營、民宿、餐飲</span><span><span>、</span>賞楓項目<span>多了許多原木飾品更有畫龍點睛加乘效果</span></span>
</p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470396919"><img alt="30-IMG_4228.jpg" original="http://pic.pimg.tw/stevenhgm/1387894971-1486345289.jpg" src="http://pic.pimg.tw/stevenhgm/1387894971-1486345289.jpg" title="30-IMG_4228.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470396919"><img title="30-IMG_4228.jpg" src="http://pic.pimg.tw/stevenhgm/1387894971-1486345289.jpg" alt="30-IMG_4228.jpg" original="http://pic.pimg.tw/stevenhgm/1387894971-1486345289.jpg"></a></span></p>
<p><span>廣受歡迎的美樹營地有個很大特色就是<span>楓紅時期楓香樹由綠轉黃、轉紅到楓紅層層</span> </span>
</p>
<p><span><span>一來到"美樹"馬上眼睛為之一亮 也會深深地為那</span></span><span><span>多種顏色多層次渲染之下楓紅而迷惑</span></span>
@@ -29,66 +29,66 @@
</p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470396943"><img alt="31-IMG_4231.jpg" original="http://pic.pimg.tw/stevenhgm/1387894979-1252095111.jpg" src="http://pic.pimg.tw/stevenhgm/1387894979-1252095111.jpg" title="31-IMG_4231.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470396943"><img title="31-IMG_4231.jpg" src="http://pic.pimg.tw/stevenhgm/1387894979-1252095111.jpg" alt="31-IMG_4231.jpg" original="http://pic.pimg.tw/stevenhgm/1387894979-1252095111.jpg"></a></span></p>
<p><span> 每年12月向來是攝影班外拍的絕佳場所之一 楓紅期間入園費$50元</span></p>
<p><span>園區給愛攝一族淨空場景而不是散搭帳蓬之下反</span><span>而影響拍照畫面與構圖取景</span></p>
<p><span>露營的話則須待中午過後再進場搭帳的彈性做法個人也相當支持這樣的權宜之計</span></p>
<p><span> </span>
- <a href="http://stevenhgm.pixnet.net/album/photo/470389413"><img alt="P1610088.jpg" original="http://pic.pimg.tw/stevenhgm/1387971416-4261675924.jpg" src="http://pic.pimg.tw/stevenhgm/1387971416-4261675924.jpg" title="P1610088.jpg"></img></a>
+ <a href="http://stevenhgm.pixnet.net/album/photo/470389413"><img title="P1610088.jpg" src="http://pic.pimg.tw/stevenhgm/1387971416-4261675924.jpg" alt="P1610088.jpg" original="http://pic.pimg.tw/stevenhgm/1387971416-4261675924.jpg"></a>
</p>
<p> <span>來到現場已是落葉飄飄堆疊滿地 不時隨著風吹雨襲而葉落垂地</span></p>
<p><span> </span>
- <a href="http://stevenhgm.pixnet.net/album/photo/470389413"><img alt="P1610069.jpg" original="http://pic.pimg.tw/stevenhgm/1387971406-2480195851.jpg" src="http://pic.pimg.tw/stevenhgm/1387971406-2480195851.jpg" title="P1610069.jpg"></img></a>
+ <a href="http://stevenhgm.pixnet.net/album/photo/470389413"><img title="P1610069.jpg" src="http://pic.pimg.tw/stevenhgm/1387971406-2480195851.jpg" alt="P1610069.jpg" original="http://pic.pimg.tw/stevenhgm/1387971406-2480195851.jpg"></a>
</p>
<p><span>不忍踩過剛剛掉落的樹葉 沿著前人足跡踏痕輕踩而行</span></p>
<p><span>雖然只是一廂情願的想法 終究還是不可避免地將會化為塵土</span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470383005"><img alt="02-P1610080.jpg" original="http://pic.pimg.tw/stevenhgm/1387894752-3567294980.jpg" src="http://pic.pimg.tw/stevenhgm/1387894752-3567294980.jpg" title="02-P1610080.jpg"></img></a> </span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470383005"><img title="02-P1610080.jpg" src="http://pic.pimg.tw/stevenhgm/1387894752-3567294980.jpg" alt="02-P1610080.jpg" original="http://pic.pimg.tw/stevenhgm/1387894752-3567294980.jpg"></a> </span></p>
<p><span> 葉落繽紛顯得幾分蕭瑟氣息 空氣中可以嗅得出來<span>依然</span>瀰漫著濕寒水氣</span>
</p>
<p><span>偶而還會飄下來一些霧氣水滴 不時張望尋找最佳楓葉主題</span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470384469"><img alt="04-P1610087.jpg" original="http://pic.pimg.tw/stevenhgm/1387894771-2897027724.jpg" src="http://pic.pimg.tw/stevenhgm/1387894771-2897027724.jpg" title="04-P1610087.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470384469"><img title="04-P1610087.jpg" src="http://pic.pimg.tw/stevenhgm/1387894771-2897027724.jpg" alt="04-P1610087.jpg" original="http://pic.pimg.tw/stevenhgm/1387894771-2897027724.jpg"></a></span></p>
<p><span> 外拍的攝影班學員一堆早已不時穿梭其間</span></p>
<p><span>各自努力地找尋自認為最好的拍攝角度</span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470384925"><img alt="05-P1610099.jpg" original="http://pic.pimg.tw/stevenhgm/1387894778-2035483089.jpg" src="http://pic.pimg.tw/stevenhgm/1387894778-2035483089.jpg" title="05-P1610099.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470384925"><img title="05-P1610099.jpg" src="http://pic.pimg.tw/stevenhgm/1387894778-2035483089.jpg" alt="05-P1610099.jpg" original="http://pic.pimg.tw/stevenhgm/1387894778-2035483089.jpg"></a></span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470389413"><img alt="P1610095.jpg" original="http://pic.pimg.tw/stevenhgm/1387897405-3236217457.jpg" src="http://pic.pimg.tw/stevenhgm/1387897405-3236217457.jpg" title="P1610095.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470389413"><img title="P1610095.jpg" src="http://pic.pimg.tw/stevenhgm/1387897405-3236217457.jpg" alt="P1610095.jpg" original="http://pic.pimg.tw/stevenhgm/1387897405-3236217457.jpg"></a></span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470389803"><img alt="13-IMG_3891.jpg" original="http://pic.pimg.tw/stevenhgm/1387894848-3695967443.jpg" src="http://pic.pimg.tw/stevenhgm/1387894848-3695967443.jpg" title="13-IMG_3891.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470389803"><img title="13-IMG_3891.jpg" src="http://pic.pimg.tw/stevenhgm/1387894848-3695967443.jpg" alt="13-IMG_3891.jpg" original="http://pic.pimg.tw/stevenhgm/1387894848-3695967443.jpg"></a></span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470390760"><img alt="15-IMG_3906.jpg" original="http://pic.pimg.tw/stevenhgm/1387894863-3269042540.jpg" src="http://pic.pimg.tw/stevenhgm/1387894863-3269042540.jpg" title="15-IMG_3906.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470390760"><img title="15-IMG_3906.jpg" src="http://pic.pimg.tw/stevenhgm/1387894863-3269042540.jpg" alt="15-IMG_3906.jpg" original="http://pic.pimg.tw/stevenhgm/1387894863-3269042540.jpg"></a></span></p>
<p><span>"水槽"上面的這幾隻彩繪版貓頭鷹也太可愛了</span></p>
<p><span>同樣的造型加上不同色彩宛如賦予不同的生命力一般 cool!</span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470391000"><img alt="16-IMG_3916.jpg" original="http://pic.pimg.tw/stevenhgm/1387894868-3997219746.jpg" src="http://pic.pimg.tw/stevenhgm/1387894868-3997219746.jpg" title="16-IMG_3916.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470391000"><img title="16-IMG_3916.jpg" src="http://pic.pimg.tw/stevenhgm/1387894868-3997219746.jpg" alt="16-IMG_3916.jpg" original="http://pic.pimg.tw/stevenhgm/1387894868-3997219746.jpg"></a></span></p>
<p><span> 雨水洗塵後的枝頭固然掉落些葉片是否也洗去塵勞憂傷</span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470391519"><img alt="17-IMG_3919.jpg" original="http://pic.pimg.tw/stevenhgm/1387894873-1524806724.jpg" src="http://pic.pimg.tw/stevenhgm/1387894873-1524806724.jpg" title="17-IMG_3919.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470391519"><img title="17-IMG_3919.jpg" src="http://pic.pimg.tw/stevenhgm/1387894873-1524806724.jpg" alt="17-IMG_3919.jpg" original="http://pic.pimg.tw/stevenhgm/1387894873-1524806724.jpg"></a></span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470385711"><img alt="06-IMG_3853.jpg" original="http://pic.pimg.tw/stevenhgm/1387894788-105924953.jpg" src="http://pic.pimg.tw/stevenhgm/1387894788-105924953.jpg" title="06-IMG_3853.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470385711"><img title="06-IMG_3853.jpg" src="http://pic.pimg.tw/stevenhgm/1387894788-105924953.jpg" alt="06-IMG_3853.jpg" original="http://pic.pimg.tw/stevenhgm/1387894788-105924953.jpg"></a></span></p>
<p><span> 喜歡拍照的不論是平面掃描、天空搜尋、</span><span>地上地毯式搜索</span></p>
<p><span>有如小說偵探一般 不放過蛛絲馬跡地用力尋尋覓覓找尋最美角度</span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470386749"><img alt="07-P1610104.jpg" original="http://pic.pimg.tw/stevenhgm/1387894798-1063855065.jpg" src="http://pic.pimg.tw/stevenhgm/1387894798-1063855065.jpg" title="07-P1610104.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470386749"><img title="07-P1610104.jpg" src="http://pic.pimg.tw/stevenhgm/1387894798-1063855065.jpg" alt="07-P1610104.jpg" original="http://pic.pimg.tw/stevenhgm/1387894798-1063855065.jpg"></a></span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470387232"><img alt="08-IMG_3862.jpg" original="http://pic.pimg.tw/stevenhgm/1387894807-309560703.jpg" src="http://pic.pimg.tw/stevenhgm/1387894807-309560703.jpg" title="08-IMG_3862.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470387232"><img title="08-IMG_3862.jpg" src="http://pic.pimg.tw/stevenhgm/1387894807-309560703.jpg" alt="08-IMG_3862.jpg" original="http://pic.pimg.tw/stevenhgm/1387894807-309560703.jpg"></a></span></p>
<p><span> 原本這周是由小朱團長早在一年前就跟"簍信"預定下來的場子</span></p>
<p><span>早上從台北出門之際還是小雨不斷細雨紛飛來到此地雖雨已停</span></p>
<p><span>但多日來的雨勢不斷已有部分區域水漬成攤並不適合落置帳篷</span></p>
@@ -98,32 +98,32 @@
</p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470391732"><img alt="18-P1610141.jpg" original="http://pic.pimg.tw/stevenhgm/1387894882-1881930036.jpg" src="http://pic.pimg.tw/stevenhgm/1387894882-1881930036.jpg" title="18-P1610141.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470391732"><img title="18-P1610141.jpg" src="http://pic.pimg.tw/stevenhgm/1387894882-1881930036.jpg" alt="18-P1610141.jpg" original="http://pic.pimg.tw/stevenhgm/1387894882-1881930036.jpg"></a></span></p>
<p><span>午後從"秀巒"回到美樹之際已經全數撤退只剩下我們三車留下來</span></p>
<p><span>唯有"離開地球表面"睡車上的才可以不受到地上泥濘而影響</span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470392077"><img alt="19-IMG_3933.jpg" original="http://pic.pimg.tw/stevenhgm/1387894887-407829597.jpg" src="http://pic.pimg.tw/stevenhgm/1387894887-407829597.jpg" title="19-IMG_3933.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470392077"><img title="19-IMG_3933.jpg" src="http://pic.pimg.tw/stevenhgm/1387894887-407829597.jpg" alt="19-IMG_3933.jpg" original="http://pic.pimg.tw/stevenhgm/1387894887-407829597.jpg"></a></span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470390364"><img alt="14-P1610134.jpg" original="http://pic.pimg.tw/stevenhgm/1387894857-470378275.jpg" src="http://pic.pimg.tw/stevenhgm/1387894857-470378275.jpg" title="14-P1610134.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470390364"><img title="14-P1610134.jpg" src="http://pic.pimg.tw/stevenhgm/1387894857-470378275.jpg" alt="14-P1610134.jpg" original="http://pic.pimg.tw/stevenhgm/1387894857-470378275.jpg"></a></span></p>
<p><span> 午後山嵐興起雲氣遊蕩<span>盤旋在對岸山頭 人潮來來去去似乎也沒有減少</span></span>
</p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470403381"><img alt="44-P1610283.jpg" original="http://pic.pimg.tw/stevenhgm/1387895099-4119123008.jpg" src="http://pic.pimg.tw/stevenhgm/1387895099-4119123008.jpg" title="44-P1610283.jpg"></img></a></span></p>
- <p><span> 美樹民宿有開設餐廳 室內簡單佈置提供伙食餐飲 <br></br></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470403381"><img title="44-P1610283.jpg" src="http://pic.pimg.tw/stevenhgm/1387895099-4119123008.jpg" alt="44-P1610283.jpg" original="http://pic.pimg.tw/stevenhgm/1387895099-4119123008.jpg"></a></span></p>
+ <p><span> 美樹民宿有開設餐廳 室內簡單佈置提供伙食餐飲 <br></span></p>
<p>
- <a href="http://stevenhgm.pixnet.net/album/photo/470389413"><img alt="P1610212.jpg" original="http://pic.pimg.tw/stevenhgm/1387971426-4277312474.jpg" src="http://pic.pimg.tw/stevenhgm/1387971426-4277312474.jpg" title="P1610212.jpg"></img></a>
+ <a href="http://stevenhgm.pixnet.net/album/photo/470389413"><img title="P1610212.jpg" src="http://pic.pimg.tw/stevenhgm/1387971426-4277312474.jpg" alt="P1610212.jpg" original="http://pic.pimg.tw/stevenhgm/1387971426-4277312474.jpg"></a>
</p>
<p> <span>這兩間是民宿房間 跟著民宿主人"簍信"聊起來還提到日後將改變成兩層木屋</span></p>
<p><span>一樓則是咖啡飲料/賣店提供訪客來賓有個落腳席座之地 二樓才會是民宿房間</span></p>
- <p><span>心中有了計畫想法才會有日後的夢想藍圖 相信將會改變得更好的民宿露營環境<br></br></span></p>
+ <p><span>心中有了計畫想法才會有日後的夢想藍圖 相信將會改變得更好的民宿露營環境<br></span></p>
<p>
- <a href="http://stevenhgm.pixnet.net/album/photo/470389413"><img alt="P1610219.jpg" original="http://pic.pimg.tw/stevenhgm/1387971436-2828193592.jpg" src="http://pic.pimg.tw/stevenhgm/1387971436-2828193592.jpg" title="P1610219.jpg"></img></a>
+ <a href="http://stevenhgm.pixnet.net/album/photo/470389413"><img title="P1610219.jpg" src="http://pic.pimg.tw/stevenhgm/1387971436-2828193592.jpg" alt="P1610219.jpg" original="http://pic.pimg.tw/stevenhgm/1387971436-2828193592.jpg"></a>
</p>
<p><span> 民宿前這一大區楓香林為土質營位 大致區分前、後兩個營區</span></p>
<p><span>前面這一區約可搭上十二帳/車/廳 後面那區也大約4~5帳/車/廳</span></p>
@@ -131,26 +131,26 @@
</p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470388054"><img alt="10-P1610114.jpg" original="http://pic.pimg.tw/stevenhgm/1387894823-4061326865.jpg" src="http://pic.pimg.tw/stevenhgm/1387894823-4061326865.jpg" title="10-P1610114.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470388054"><img title="10-P1610114.jpg" src="http://pic.pimg.tw/stevenhgm/1387894823-4061326865.jpg" alt="10-P1610114.jpg" original="http://pic.pimg.tw/stevenhgm/1387894823-4061326865.jpg"></a></span></p>
<p><span> 營區水電方便 水槽也很有特色</span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470393178"><img alt="22-P1610245.jpg" original="http://pic.pimg.tw/stevenhgm/1387894911-3706194096.jpg" src="http://pic.pimg.tw/stevenhgm/1387894911-3706194096.jpg" title="22-P1610245.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470393178"><img title="22-P1610245.jpg" src="http://pic.pimg.tw/stevenhgm/1387894911-3706194096.jpg" alt="22-P1610245.jpg" original="http://pic.pimg.tw/stevenhgm/1387894911-3706194096.jpg"></a></span></p>
<p><span> 這次選擇左側地勢高些以防午夜下雨泥濘</span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470392404"><img alt="20-P1610238.jpg" original="http://pic.pimg.tw/stevenhgm/1387894894-1173705525.jpg" src="http://pic.pimg.tw/stevenhgm/1387894894-1173705525.jpg" title="20-P1610238.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470392404"><img title="20-P1610238.jpg" src="http://pic.pimg.tw/stevenhgm/1387894894-1173705525.jpg" alt="20-P1610238.jpg" original="http://pic.pimg.tw/stevenhgm/1387894894-1173705525.jpg"></a></span></p>
<p><span> "野馬"特地帶來了冬至應景食材ㄜ<span>---湯圓</span></span>
</p>
<p><span>這家還是最近被評比第一名氣的湯圓專賣店 </span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470393130"><img alt="21-P1610241.jpg" original="http://pic.pimg.tw/stevenhgm/1387894901-1058040075.jpg" src="http://pic.pimg.tw/stevenhgm/1387894901-1058040075.jpg" title="21-P1610241.jpg"></img></a></span></p>
- <p><span> 向來對於湯圓是敬謝不敏 沒想到是出乎意料之外的好吃 <span>沒話說!</span><br></br></span>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470393130"><img title="21-P1610241.jpg" src="http://pic.pimg.tw/stevenhgm/1387894901-1058040075.jpg" alt="21-P1610241.jpg" original="http://pic.pimg.tw/stevenhgm/1387894901-1058040075.jpg"></a></span></p>
+ <p><span> 向來對於湯圓是敬謝不敏 沒想到是出乎意料之外的好吃 <span>沒話說!</span><br></span>
</p>
- <p><span> <a href="http://stevenhgm.pixnet.net/album/photo/470394156"><img alt="24-IMG_4113.jpg" original="http://pic.pimg.tw/stevenhgm/1387894925-1582979930.jpg" src="http://pic.pimg.tw/stevenhgm/1387894925-1582979930.jpg" title="24-IMG_4113.jpg"></img></a></span></p>
+ <p><span> <a href="http://stevenhgm.pixnet.net/album/photo/470394156"><img title="24-IMG_4113.jpg" src="http://pic.pimg.tw/stevenhgm/1387894925-1582979930.jpg" alt="24-IMG_4113.jpg" original="http://pic.pimg.tw/stevenhgm/1387894925-1582979930.jpg"></a></span></p>
<p><span> 喜歡原住民朋友的坦率、真誠 要將民宿營地經營的有聲有色並非容易之事</span></p>
<p><span><span>午茶時間與"簍信"閒聊分享著他的觀點理念之時很支持對於環境應有生態保護</span> </span>
</p>
@@ -159,46 +159,46 @@
</p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470397399"><img alt="32-IMG_4248.jpg" original="http://pic.pimg.tw/stevenhgm/1387894989-1689510758.jpg" src="http://pic.pimg.tw/stevenhgm/1387894989-1689510758.jpg" title="32-IMG_4248.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470397399"><img title="32-IMG_4248.jpg" src="http://pic.pimg.tw/stevenhgm/1387894989-1689510758.jpg" alt="32-IMG_4248.jpg" original="http://pic.pimg.tw/stevenhgm/1387894989-1689510758.jpg"></a></span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470394732"><img alt="25-IMG_4152.jpg" original="http://pic.pimg.tw/stevenhgm/1387894933-2886337976.jpg" src="http://pic.pimg.tw/stevenhgm/1387894933-2886337976.jpg" title="25-IMG_4152.jpg"></img></a> </span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470394732"><img title="25-IMG_4152.jpg" src="http://pic.pimg.tw/stevenhgm/1387894933-2886337976.jpg" alt="25-IMG_4152.jpg" original="http://pic.pimg.tw/stevenhgm/1387894933-2886337976.jpg"></a> </span></p>
<p><span> 入夜前雨絲終於漸漸緩和下來 雖然氣溫很低卻沒感受到寒冷的跡象</span></p>
<p><span>是山谷中少了寒氣還是美樹營區裡的人熱情洋溢暖化了不少寒意</span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470404359"><img alt="IMG_4158.jpg" original="http://pic.pimg.tw/stevenhgm/1387895113-4041265313.jpg" src="http://pic.pimg.tw/stevenhgm/1387895113-4041265313.jpg" title="IMG_4158.jpg"></img></a></span></p>
- <p><span> 聖誕前夕裝點些聖誕飾品 感受一下節慶的氛圍<br></br></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470404359"><img title="IMG_4158.jpg" src="http://pic.pimg.tw/stevenhgm/1387895113-4041265313.jpg" alt="IMG_4158.jpg" original="http://pic.pimg.tw/stevenhgm/1387895113-4041265313.jpg"></a></span></p>
+ <p><span> 聖誕前夕裝點些聖誕飾品 感受一下節慶的氛圍<br></span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470394948"><img alt="26-P1610261.jpg" original="http://pic.pimg.tw/stevenhgm/1387894940-3359449338.jpg" src="http://pic.pimg.tw/stevenhgm/1387894940-3359449338.jpg" title="26-P1610261.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470394948"><img title="26-P1610261.jpg" src="http://pic.pimg.tw/stevenhgm/1387894940-3359449338.jpg" alt="26-P1610261.jpg" original="http://pic.pimg.tw/stevenhgm/1387894940-3359449338.jpg"></a></span></p>
<p><span>晚餐準備了砂鍋魚頭</span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470403921"><img alt="46-1021221美樹露營.jpg" original="http://pic.pimg.tw/stevenhgm/1387895106-1387217970.jpg" src="http://pic.pimg.tw/stevenhgm/1387895106-1387217970.jpg" title="46-1021221美樹露營.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470403921"><img title="46-1021221美樹露營.jpg" src="http://pic.pimg.tw/stevenhgm/1387895106-1387217970.jpg" alt="46-1021221美樹露營.jpg" original="http://pic.pimg.tw/stevenhgm/1387895106-1387217970.jpg"></a></span></p>
<p><span>"蒯嫂"還特地準備著羊肩排、鹹豬肉、柳葉魚...哇!這哩澎湃哩...</span></p>
<p><span> "永老爺"早已備妥了好酒為遠自台南來的蒯兄嫂敬一杯囉</span></p>
<p><span>感謝蒯嫂精心準備的好料理 食指大動好菜色感恩ㄟ!</span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470395164"><img alt="27-IMG_4173.jpg" original="http://pic.pimg.tw/stevenhgm/1387894947-2636431527.jpg" src="http://pic.pimg.tw/stevenhgm/1387894947-2636431527.jpg" title="27-IMG_4173.jpg"></img></a></span></p>
- <p><span> 吃得快精光之際...才想到忘了拍合照...(哇哩咧 ^&amp;*()<br></br></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470395164"><img title="27-IMG_4173.jpg" src="http://pic.pimg.tw/stevenhgm/1387894947-2636431527.jpg" alt="27-IMG_4173.jpg" original="http://pic.pimg.tw/stevenhgm/1387894947-2636431527.jpg"></a></span></p>
+ <p><span> 吃得快精光之際...才想到忘了拍合照...(哇哩咧 ^&amp;*()<br></span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470395614"><img alt="28-IMG_4178.jpg" original="http://pic.pimg.tw/stevenhgm/1387894956-618198074.jpg" src="http://pic.pimg.tw/stevenhgm/1387894956-618198074.jpg" title="28-IMG_4178.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470395614"><img title="28-IMG_4178.jpg" src="http://pic.pimg.tw/stevenhgm/1387894956-618198074.jpg" alt="28-IMG_4178.jpg" original="http://pic.pimg.tw/stevenhgm/1387894956-618198074.jpg"></a></span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470396325"><img alt="29-IMG_4188.jpg" original="http://pic.pimg.tw/stevenhgm/1387894961-2201609427.jpg" src="http://pic.pimg.tw/stevenhgm/1387894961-2201609427.jpg" title="29-IMG_4188.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470396325"><img title="29-IMG_4188.jpg" src="http://pic.pimg.tw/stevenhgm/1387894961-2201609427.jpg" alt="29-IMG_4188.jpg" original="http://pic.pimg.tw/stevenhgm/1387894961-2201609427.jpg"></a></span></p>
<p><span> 隔日睡到很晚才起床 不用拍日出晨光的營地對我來說都是個幸福的睡眠</span></p>
<p><span>哪怕是葉落飄零落滿地還是睡夢周公召見而去 起床的事~差點都忘記了</span></p>
<p>
- <a href="http://stevenhgm.pixnet.net/album/photo/470389413"><img alt="IMG_4205.jpg" original="http://pic.pimg.tw/stevenhgm/1387971396-2999285851.jpg" src="http://pic.pimg.tw/stevenhgm/1387971396-2999285851.jpg" title="IMG_4205.jpg"></img></a>
+ <a href="http://stevenhgm.pixnet.net/album/photo/470389413"><img title="IMG_4205.jpg" src="http://pic.pimg.tw/stevenhgm/1387971396-2999285851.jpg" alt="IMG_4205.jpg" original="http://pic.pimg.tw/stevenhgm/1387971396-2999285851.jpg"></a>
</p>
<p> <span> 昨天細雨紛飛依然打落了不少落葉中間這株整個都快變成枯枝了</span></p>
<p><span>昨天依稀凋零稀疏的楓葉殘留今兒個完全不復存在(上周是最美的代名詞)</span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470397765"><img alt="33-IMG_4255.jpg" original="http://pic.pimg.tw/stevenhgm/1387894999-1588465034.jpg" src="http://pic.pimg.tw/stevenhgm/1387894999-1588465034.jpg" title="33-IMG_4255.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470397765"><img title="33-IMG_4255.jpg" src="http://pic.pimg.tw/stevenhgm/1387894999-1588465034.jpg" alt="33-IMG_4255.jpg" original="http://pic.pimg.tw/stevenhgm/1387894999-1588465034.jpg"></a></span></p>
<p><span><span>上回來得太早沒能見到楓葉泛紅 這次晚了一周已陸續落葉也</span>無從比對楓葉差異性 </span>
</p>
<p><span><span> 另一種角度看不論青楓、金黃葉紅的楓香、葉落飄零秋滿霜、落葉枯枝的蕭瑟</span></span>
@@ -207,44 +207,44 @@
</p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470398749"><img alt="34-P1610269.jpg" original="http://pic.pimg.tw/stevenhgm/1387895007-4184988815.jpg" src="http://pic.pimg.tw/stevenhgm/1387895007-4184988815.jpg" title="34-P1610269.jpg"></img></a></span></p>
- <p><span> 早起的"蒯嫂"已經備好熱騰騰中式稀飯、包子、蔬果 頓時~有幸福的感覺<br></br></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470398749"><img title="34-P1610269.jpg" src="http://pic.pimg.tw/stevenhgm/1387895007-4184988815.jpg" alt="34-P1610269.jpg" original="http://pic.pimg.tw/stevenhgm/1387895007-4184988815.jpg"></a></span></p>
+ <p><span> 早起的"蒯嫂"已經備好熱騰騰中式稀飯、包子、蔬果 頓時~有幸福的感覺<br></span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470399232"><img alt="35-IMG_4303.jpg" original="http://pic.pimg.tw/stevenhgm/1387895016-2193615729.jpg" src="http://pic.pimg.tw/stevenhgm/1387895016-2193615729.jpg" title="35-IMG_4303.jpg"></img></a> </span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470399232"><img title="35-IMG_4303.jpg" src="http://pic.pimg.tw/stevenhgm/1387895016-2193615729.jpg" alt="35-IMG_4303.jpg" original="http://pic.pimg.tw/stevenhgm/1387895016-2193615729.jpg"></a> </span></p>
<p><span> 星期天早上趁著攝影團還沒入場先來人物場景特寫</span></p>
<p><span>野馬家兩張新"座椅"就當作是試坐囉!拍謝哩</span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470400471"><img alt="38-IMG_4330.jpg" original="http://pic.pimg.tw/stevenhgm/1387895047-92554161.jpg" src="http://pic.pimg.tw/stevenhgm/1387895047-92554161.jpg" title="38-IMG_4330.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470400471"><img title="38-IMG_4330.jpg" src="http://pic.pimg.tw/stevenhgm/1387895047-92554161.jpg" alt="38-IMG_4330.jpg" original="http://pic.pimg.tw/stevenhgm/1387895047-92554161.jpg"></a></span></p>
<p>
- <a href="http://stevenhgm.pixnet.net/album/photo/470389413"><img alt="P1610279.jpg" original="http://pic.pimg.tw/stevenhgm/1387971446-966387512.jpg" src="http://pic.pimg.tw/stevenhgm/1387971446-966387512.jpg" title="P1610279.jpg"></img></a>
+ <a href="http://stevenhgm.pixnet.net/album/photo/470389413"><img title="P1610279.jpg" src="http://pic.pimg.tw/stevenhgm/1387971446-966387512.jpg" alt="P1610279.jpg" original="http://pic.pimg.tw/stevenhgm/1387971446-966387512.jpg"></a>
</p>
<p><span> 難得有此無人美景在楓樹下的聖誕氛圍也一定要來一張才行</span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470399946"><img alt="37-IMG_4323.jpg" original="http://pic.pimg.tw/stevenhgm/1387895036-848978834.jpg" src="http://pic.pimg.tw/stevenhgm/1387895036-848978834.jpg" title="37-IMG_4323.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470399946"><img title="37-IMG_4323.jpg" src="http://pic.pimg.tw/stevenhgm/1387895036-848978834.jpg" alt="37-IMG_4323.jpg" original="http://pic.pimg.tw/stevenhgm/1387895036-848978834.jpg"></a></span></p>
<p><span> 三家合照(Hero也一定要入鏡的)</span></p>
- <p><span> <a href="http://stevenhgm.pixnet.net/album/photo/470401161"><img alt="40-IMG_4342.jpg" original="http://pic.pimg.tw/stevenhgm/1387895067-717977929.jpg" src="http://pic.pimg.tw/stevenhgm/1387895067-717977929.jpg" title="40-IMG_4342.jpg"></img></a></span></p>
+ <p><span> <a href="http://stevenhgm.pixnet.net/album/photo/470401161"><img title="40-IMG_4342.jpg" src="http://pic.pimg.tw/stevenhgm/1387895067-717977929.jpg" alt="40-IMG_4342.jpg" original="http://pic.pimg.tw/stevenhgm/1387895067-717977929.jpg"></a></span></p>
<p><span> 接著攝影團入場帶隊老師請求借個時間也來讓學員練習楓樹下的聖誕飾品</span></p>
<p><span>此時剛好也遇到早在FB社團相互回應卻頭一次謀面的Mr."大雄"真是幸會了</span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470402037"><img alt="42-IMG_4382.jpg" original="http://pic.pimg.tw/stevenhgm/1387895083-1227791497.jpg" src="http://pic.pimg.tw/stevenhgm/1387895083-1227791497.jpg" title="42-IMG_4382.jpg"></img></a> </span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470402037"><img title="42-IMG_4382.jpg" src="http://pic.pimg.tw/stevenhgm/1387895083-1227791497.jpg" alt="42-IMG_4382.jpg" original="http://pic.pimg.tw/stevenhgm/1387895083-1227791497.jpg"></a> </span></p>
<p><span> 接近中午時分陽光漸露 藍天帷幕再次嶄露頭角 ~ 久違了!</span></p>
<p><span>期盼下的天空終於放晴 沒有缺席的藍天還是準時赴約如期出席</span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470402682"><img alt="41-IMG_4366.jpg" original="http://pic.pimg.tw/stevenhgm/1387895075-2647157523.jpg" src="http://pic.pimg.tw/stevenhgm/1387895075-2647157523.jpg" title="41-IMG_4366.jpg"></img></a></span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470402682"><img title="41-IMG_4366.jpg" src="http://pic.pimg.tw/stevenhgm/1387895075-2647157523.jpg" alt="41-IMG_4366.jpg" original="http://pic.pimg.tw/stevenhgm/1387895075-2647157523.jpg"></a></span></p>
<p><span> 這兩天肉肉(Hero)天雨濕滑無法自由奔跑都快悶壞了</span></p>
<p><span>天晴後"蒯嫂"帶著散步遊園也好解解悶</span></p>
- <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470402898"><img alt="43-IMG_4383.jpg" original="http://pic.pimg.tw/stevenhgm/1387895093-631461272.jpg" src="http://pic.pimg.tw/stevenhgm/1387895093-631461272.jpg" title="43-IMG_4383.jpg"></img></a> </span></p>
+ <p><span><a href="http://stevenhgm.pixnet.net/album/photo/470402898"><img title="43-IMG_4383.jpg" src="http://pic.pimg.tw/stevenhgm/1387895093-631461272.jpg" alt="43-IMG_4383.jpg" original="http://pic.pimg.tw/stevenhgm/1387895093-631461272.jpg"></a> </span></p>
<p><span>收拾好裝備準備離開營地 亮麗的</span><span>天空鮮明對比下的楓樹林又讓人覺得有點捨不得離開</span></p>
<p><span><span>道別了"美樹營地"準備前往而行</span>"石磊國小"一個很生疏的小學座落在這深山部落裡</span>
</p>
@@ -255,7 +255,7 @@
</span>
</a> </span><span lang="EN-US"><span>資訊</span></span>
</p>
- <p><span lang="EN-US"><span><span>聯絡電話:</span><span lang="EN-US">03-584-7231</span><span>  </span><span lang="EN"> </span><span>行動</span><span lang="EN">:</span><span lang="EN-US"> 0937-141993</span><span lang="EN-US"><br></br></span><span>林錦武<span lang="EN-US"> (泰雅族名: 摟信)</span></span><span lang="EN"><br></br></span><span>營地地址:<span>新竹縣尖石鄉玉峰村<span lang="EN-US">6鄰20號</span></span>
+ <p><span lang="EN-US"><span><span>聯絡電話:</span><span lang="EN-US">03-584-7231</span><span>  </span><span lang="EN"> </span><span>行動</span><span lang="EN">:</span><span lang="EN-US"> 0937-141993</span><span lang="EN-US"><br></span><span>林錦武<span lang="EN-US"> (泰雅族名: 摟信)</span></span><span lang="EN"><br></span><span>營地地址:<span>新竹縣尖石鄉玉峰村<span lang="EN-US">6鄰20號</span></span>
</span>
</span>
</span>
diff --git a/test/test-pages/reordering-paragraphs/expected.html b/test/test-pages/reordering-paragraphs/expected.html
index 4a46dd5..500f687 100644
--- a/test/test-pages/reordering-paragraphs/expected.html
+++ b/test/test-pages/reordering-paragraphs/expected.html
@@ -1,4 +1,5 @@
<div>
+
<p id="first">Regarding item# 11111, under sufficiently extreme conditions, quarks may
become deconfined and exist as free particles. In the course of asymptotic
freedom, the strong interaction becomes weaker at higher temperatures.
@@ -23,4 +24,5 @@
of matter is called quark-gluon plasma.[81] The exact conditions needed
to give rise to this state are unknown and have been the subject of a great
deal of speculation and experimentation.</p>
- <br id="br2"></br></div> \ No newline at end of file
+ <br id="br2">
+ </div> \ No newline at end of file
diff --git a/test/test-pages/replace-brs/expected.html b/test/test-pages/replace-brs/expected.html
index 56e36a4..778fdc0 100644
--- a/test/test-pages/replace-brs/expected.html
+++ b/test/test-pages/replace-brs/expected.html
@@ -1,14 +1,14 @@
<div><p>
- Lorem ipsum<br></br>dolor sit</p><p>amet, consectetur adipisicing elit, sed do eiusmod<br></br>
- tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,<br></br>
+ Lorem ipsum<br>dolor sit</p><p>amet, consectetur adipisicing elit, sed do eiusmod<br>
+ tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,<br>
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo</p><p>
- consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse<br></br>
- cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non<br></br>
+ consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse<br>
+ cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non<br>
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p></div><div><p>
- Tempor</p><p>incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,<br></br>
- quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo<br></br>
+ Tempor</p><p>incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,<br>
+ quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo<br>
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse</p><p>
- cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non<br></br>
+ cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non<br>
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p></div> \ No newline at end of file
diff --git a/test/test-pages/salon-1/expected.html b/test/test-pages/salon-1/expected.html
index d1cb60e..4df6b42 100644
--- a/test/test-pages/salon-1/expected.html
+++ b/test/test-pages/salon-1/expected.html
@@ -12,7 +12,7 @@
murdering his ex-wife, seized hostages in a café that was located in Sydney’s
Central Business District or “CBD.” In the process he put up an Islamic
flag – “igniting,” as <a href="http://www.reuters.com/article/2014/12/15/us-australia-security-idUSKBN0JS0WX20141215">Reuters</a> reported,
- “fears of a jihadist attack in the heart of the country’s biggest city.”</p><p>In the midst of the fear, Uber stepped in and tweeted this announcement: 
+ “fears of a jihadist attack in the heart of the country’s biggest city.”</p><p>In the midst of the fear, Uber stepped in and tweeted this announcement:&nbsp;
<span>“We are all concerned with events in CBD. Fares have increased to encourage
more drivers to come online &amp; pick up passengers in the area.”</span>
</p><p>As <a href="http://mashable.com/2014/12/14/uber-sydney-surge-pricing/">Mashable </a>reports,
@@ -196,7 +196,7 @@
<p>And then there’s the matter of our collective psyche. In her book “A Paradise
Built in Hell: The Extraordinary Communities that Arise in Disaster,” Rebecca
Solnit wrote of the purpose, meaning and deep satisfaction people find
- when they pull together to help one another in the face of adversity. 
+ when they pull together to help one another in the face of adversity.&nbsp;
But in the world Uber seeks to create, those surges of the spirit would
be replaced by surge pricing.<em></em>
</p>
diff --git a/test/test-pages/simplyfound-1/expected.html b/test/test-pages/simplyfound-1/expected.html
index 55b74a9..8e8313d 100644
--- a/test/test-pages/simplyfound-1/expected.html
+++ b/test/test-pages/simplyfound-1/expected.html
@@ -1,18 +1,18 @@
<div>
- <p>The Raspberry Pi Foundation started by a handful of volunteers in 2012 when they released the original Raspberry Pi 256MB Model B without knowing what to expect.  In a short four-year period they have grown to over sixty full-time employees and have shipped over <b>eight million</b> units to-date.  Raspberry Pi has achieved new heights by being shipped to the International Space Station for research and by being an affordable computing platforms used by teachers throughout the world.  "It has become the all-time best-selling computer in the UK".</p>
+ <p>The Raspberry Pi Foundation started by a handful of volunteers in 2012 when they released the original Raspberry Pi 256MB Model B without knowing what to expect. &nbsp;In a short four-year period they have grown to over sixty full-time&nbsp;employees&nbsp;and have shipped over <b>eight million</b> units to-date. &nbsp;Raspberry Pi has achieved new heights by being shipped to the&nbsp;International&nbsp;Space Station for research and by being an affordable computing platforms used by teachers throughout the world. &nbsp;"It has become the all-time best-selling computer in the UK".</p>
<p>Raspberry Pi 3 - A credit card sized PC that only costs $35 - Image: Raspberry Pi Foundation</p>
- <p>Raspberry Pi Foundation is charity organization that pushes for a digital revolution with a mission to inspire kids to learn by creating computer-powered objects.  The foundation also helps teachers learn computing  skills through free training and readily available tutorials &amp; example code for creating cool things such as music.</p>
+ <p>Raspberry Pi Foundation is charity organization that pushes for a digital revolution with a mission to inspire kids to learn by&nbsp;creating computer-powered objects. &nbsp;The foundation also helps teachers learn computing &nbsp;skills through free training and readily available tutorials &amp; example code for creating cool things such as music.</p>
<p>Raspberry Pi in educations - Image: Raspberry Pi Foundation</p>
- <p>In celebration of their 4th year anniversary, the foundation has released <b>Raspberry Pi 3</b> with the same price tag of<b> </b>$35 USD.  The 3rd revision features a <b>1.2GHz 64-bit quad-core</b> ARM CPU with integrated Bluetooth 4.1 and 802.11n wireless LAN chipsets.  The ARM Cortex-A53 CPU along with other architectural enhancements making it the fastest Raspberry Pi to-date.  The 3rd revision is reportedly about 50-60% times faster than its predecessor Raspberry Pi 2 and about 10 times faster then the original Raspberry PI.</p>
+ <p>In celebration of their 4th year&nbsp;anniversary, the foundation has released&nbsp;<b>Raspberry Pi 3</b> with the same price tag of<b>&nbsp;</b>$35 USD. &nbsp;The 3rd revision features a <b>1.2GHz 64-bit quad-core</b>&nbsp;ARM CPU with integrated Bluetooth 4.1 and 802.11n wireless LAN chipsets. &nbsp;The ARM Cortex-A53 CPU along with other architectural enhancements making it the fastest Raspberry Pi to-date. &nbsp;The 3rd revision is reportedly about 50-60% times faster than its predecessor Raspberry Pi 2 and about 10 times faster then the original Raspberry PI.</p>
<p>Raspberry Pi - Various Usage</p>
- <p>Raspberry Pi 3 is now available via many online resellers.  At this time, you should use a recent <b>32-bit </b>NOOBS or Raspbian image from their <a href="https://www.raspberrypi.org/downloads/" rel="nofollow" target="_blank">downloads</a> page with a promise of a switch to a 64-bit version only if further investigation proves that there is indeed some value in moving to 64-bit mode.</p>
+ <p>Raspberry Pi 3 is now available via many online resellers. &nbsp;At this time, you should use a recent <b>32-bit </b>NOOBS or Raspbian image from their&nbsp;<a href="https://www.raspberrypi.org/downloads/" rel="nofollow" target="_blank">downloads</a> page with a promise of a switch to a 64-bit version only if further investigation proves that there is indeed some value in moving to 64-bit mode.</p>
</div> \ No newline at end of file
diff --git a/test/test-pages/svg-parsing/expected.html b/test/test-pages/svg-parsing/expected.html
index 1cc4559..faa8ff8 100644
--- a/test/test-pages/svg-parsing/expected.html
+++ b/test/test-pages/svg-parsing/expected.html
@@ -11,7 +11,13 @@ quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
-<svg height="50" style="position: absolute;" version="1.1" viewbox="0 0 50 50" width="50" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g><clippath id="hex-mask-large"><polygon points="15,35 10,35 10,0 10,0 45,0 45,35 45,35 25,35 15,43"></polygon></clippath><clippath id="hex-mask-small"><polygon points="5,1 5,16 3,23 10,20 24,20 24,1"></polygon></clippath></g></svg><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+<svg version="1.1" viewBox="0 0 50 50" height="50" width="50" style="position: absolute;" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g>
+ <clipPath id="hex-mask-large"><polygon points="15,35 10,35 10,0 10,0 45,0 45,35 45,35 25,35 15,43" /></clipPath>
+ <clipPath id="hex-mask-small"><polygon points="5,1 5,16 3,23 10,20 24,20 24,1" /></clipPath>
+ </g>
+</svg>
+<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
diff --git a/test/test-pages/table-style-attributes/expected.html b/test/test-pages/table-style-attributes/expected.html
index 77c083b..31ad09b 100644
--- a/test/test-pages/table-style-attributes/expected.html
+++ b/test/test-pages/table-style-attributes/expected.html
@@ -1,17 +1,21 @@
<div>
<p>
<span size="+3"><b>linux usability
- <span size="4"><br></br>...or, why do I bother.</span></b></span><br></br> © 2002, 2003
+ <span size="4"><br>...or, why do I bother.</span></b></span><br> © 2002, 2003
<a href="mailto:/dev/[email protected]?subject=Please%20delete%20this%20message%20without%20reading%20it.">Jamie Zawinski</a> </p>
<div>
- <table readabilityDataTable="0"><tbody><tr><td>
+ <table readabilityDataTable="0">
+ <tbody>
+ <tr>
+ <td>
<p> In December 2002, I tried to install some software on my computer. The experience was, shall we say, less than pleasant. On many levels. I wrote about my experience, as I so often do. </p>
<p> Then in January, the jackasses over at Slashdot <a href="http://slashdot.org/article.pl?sid=03/01/24/1440207">posted</a> a link to it, calling it a "review" of Linux video software. I guess you could consider it a review, if you were to squint at it just right. But really what it is is a <i>rant</i> about how I had an evening stolen from me by crap software design. It is a flame about the pathetic state of Linux usability in general, and the handful of video players I tried out in particular. It makes no attempt to be balanced or objective or exhaustive. It is a description of my experience. Perhaps your experience was different. Good for you. </p>
<p> So of course that day I got hundreds of emails about it. Every Linux apologist in the world wanted to make sure I was fully informed of their opinion. The replies were roughly in the following groups: </p>
- <ul><li> "Right on! I had exactly the same experience! Thank you for putting it into words." <i>(This was about 1/3 of the replies.)</i>
+ <ul>
+ <li> "Right on! I had exactly the same experience! Thank you for putting it into words." <i>(This was about 1/3 of the replies.)</i>
</li>
<li> "You're clearly an idiot, Linux is too sophisticated for you, you clearly are incapable of understanding anything, you should go back to kindergarten and/or use a Mac." <i>(Oddly, all of these messages used the word</i> `clearly' <i>repeatedly.)</i>
@@ -29,29 +33,38 @@
<li> "While you have some valid complaints, I'm going to focus on this one inconsequential error you made in your characterization of one of the many roadblocks you encountered. You suck!"
</li>
- <li> "It's your fault for using Red Hat! You should be using Debian/<wbr></wbr>Mandrake/<wbr></wbr>Gentoo instead!"
+ <li> "It's your fault for using Red Hat! You should be using Debian/<wbr>Mandrake/<wbr>Gentoo instead!"
</li>
<li> "Red Hat 7.2 is totally obsolete! It's almost 14 months old! What were you expecting!" </li>
- </ul></td>
+ </ul>
+ </td>
<td>
<p> While I am flattered that so many logorrheic Linux fanboys are sufficiently interested in my opinions and experiences to share their deeply heartfelt views with me, you can all rest assured that: </p>
- <ul><ul type="A"><li> I've heard it before; and </li>
+ <ul>
+ <ul type="A">
+ <li> I've heard it before; and </li>
<li> I didn't care the first time. </li>
- </ul></ul><p> So please. Don't bother sending me any more mail about this. It's a near certainty that I will just delete it unread, so you might as well not waste your time. Feel free to call me names on your own web page if you feel the need to get it out of your system. But kindly stay out of my inbox.
+ </ul>
+ </ul>
+ <p> So please. Don't bother sending me any more mail about this. It's a near certainty that I will just delete it unread, so you might as well not waste your time. Feel free to call me names on your own web page if you feel the need to get it out of your system. But kindly stay out of my inbox.
</p>
</td>
- </tr></tbody></table></div>
+ </tr>
+ </tbody>
+ </table>
+ </div>
<p>
<span size="+3"><b>that said...</b></span>
</p>
<p> I understand that one can play videos on one's computer. I understand these videos come in many different formats. Every now and then I try to figure out what the Done Thing is, as far as playing movies on one's Linux machine. </p>
- <ul> (Really my eventual goal is to be able to <i>create</i> video on Linux, but I figured I'd start small, and see if I could just get <i>playback</i> working before trying something that is undoubtedly ten thousand times harder.) </ul><p> I finally found <a href="http://mirrors.sctpc.com/dominik/linux/pkgs/mplayer/">RPMs</a> of <a href="http://www.mplayerhq.hu/">mplayer</a> that would consent to install themselves on a Red Hat 7.2 machine, and actually got it to play some videos. Amazing. But it's a total pain in the ass to use due to rampant "themeing." <i>Why do people do this?</i> They map this stupid shaped window with no titlebar (oh, sorry, your choice of a dozen stupidly-shaped windows without titlebars) all of which use fonts that are way too small to read. But, here's the best part, there's no way to raise the window to the top. So if another window ever gets on top of it, well, sorry, you're out of luck. And half of the themes always map the window at the very bottom of the
+ <ul> (Really my eventual goal is to be able to <i>create</i> video on Linux, but I figured I'd start small, and see if I could just get <i>playback</i> working before trying something that is undoubtedly ten thousand times harder.) </ul>
+ <p> I finally found <a href="http://mirrors.sctpc.com/dominik/linux/pkgs/mplayer/">RPMs</a> of <a href="http://www.mplayerhq.hu/">mplayer</a> that would consent to install themselves on a Red Hat 7.2 machine, and actually got it to play some videos. Amazing. But it's a total pain in the ass to use due to rampant "themeing." <i>Why do people do this?</i> They map this stupid shaped window with no titlebar (oh, sorry, your choice of a dozen stupidly-shaped windows without titlebars) all of which use fonts that are way too small to read. But, here's the best part, there's no way to raise the window to the top. So if another window ever gets on top of it, well, sorry, you're out of luck. And half of the themes always map the window at the very bottom of the
<nobr>screen --</nobr> conveniently <i>under</i> my panel where I can't reach it. </p>
<p> Resizing the window changes the aspect ratio of the video! Yeah, I'm sure someone has <i>ever</i> wanted that. </p>
<p> It moves the mouse to the upper left corner of every dialog box it creates! Which is great, because that means that when it gets into this cute little state of popping up a blank dialog that says "Error" five times a second, you can't even move the mouse over to another window to kill the program, you have to log in from another machine. </p>
@@ -65,38 +78,45 @@ RPMs</a>, and it sucks about the same as mplayer, and in about the same ways, th
<p> Oh, and even though I have libdvdcss installed (as evidenced by the fact that Ogle actually works) Xine won't play the same disc that Ogle will play. It seems to be claiming that the CSS stuff isn't installed, which it clearly is. </p>
<p> An idiocy that all of these programs have in common is that, in addition to opening a window for the movie, and a window for the control panel, they <i>also</i> spray a constant spatter of curses crud on the terminal they were started from. I imagine at some point, there was some user who said, ``this program is pretty nice, but you know what it's missing? It's missing a lot of pointless chatter about what plugins and fonts have been loaded!'' </p>
- <hr></hr><b>And here's the Random Commentary section:</b>
+ <hr> <b>And here's the Random Commentary section:</b>
<blockquote> <b><a href="http://www.lazycat.org/">Makali</a> wrote:</b>
<ul><i>
Whenever a programmer thinks, "Hey, skins, what a cool idea", their
computer's speakers should create some sort of cock-shaped soundwave
and plunge it repeatedly through their skulls.
- </i></ul><p> I am fully in support of this proposed audio-cock technology. </p>
+ </i></ul>
+ <p> I am fully in support of this proposed audio-cock technology. </p>
<p><b>Various people wrote:</b> </p>
<ul><i>
You shouldn't even bother compiling the GUI into mplayer!
- </i></ul><p> So I should solve the problem of ``crappy GUI'' by replacing it with ``no GUI at all?'' I should use the program only from the command line, or by memorizing magic keystrokes? Awesome idea. </p>
+ </i></ul>
+ <p> So I should solve the problem of ``crappy GUI'' by replacing it with ``no GUI at all?'' I should use the program only from the command line, or by memorizing magic keystrokes? Awesome idea. </p>
<p><b>Various other people wrote:</b> </p>
<ul><i>
You didn't try <a href="http://www.videolan.org/vlc/">vlc</a>!
- </i></ul><p> True, I hadn't. Now I have. It has an overly-complicated UI, (the Preferences panel is a festival of overkill) but at least it uses standard menus and buttons, so it doesn't make you want to claw your eyes out immediately. But, it can only play a miniscule number of video formats, so it's mostly useless. <i>*plonk*</i> </p>
+ </i></ul>
+ <p> True, I hadn't. Now I have. It has an overly-complicated UI, (the Preferences panel is a festival of overkill) but at least it uses standard menus and buttons, so it doesn't make you want to claw your eyes out immediately. But, it can only play a miniscule number of video formats, so it's mostly useless. <i>*plonk*</i> </p>
<p><b>Someone else wrote:</b> </p>
<ul><i>
Have you considered changing distributions?
- </i></ul><p> Yes, every single time I try something like this, I very seriously consider <a href="http://fakehost/test/../gruntle/bittybox.html">getting a Mac</a>. </p>
+ </i></ul>
+ <p> Yes, every single time I try something like this, I very seriously consider <a href="http://fakehost/test/../gruntle/bittybox.html">getting a Mac</a>. </p>
<p> Really the only thing that's stopping me is that I fear the <a href="http://www.xemacs.org/">Emacs situation</a>. </p>
<p> (By which I mean, ``Lack of a usable version thereof.'' No, running RMSmacs inside a terminal window doesn't qualify. Nor does running an X server on the Mac: if I were going to switch, why in the world would I continue inflicting the X Windows Disaster on myself? Wouldn't getting away from that be the <i>whole
point?</i>) </p>
- <ul><span size="-1"> (I understand there is an almost-functional Aqua version of <a href="http://fakehost/test/../hacks/why-cooperation-with-rms-is-impossible.mp3">
+ <ul>
+ <span size="-1"> (I understand there is an almost-functional Aqua version of <a href="http://fakehost/test/../hacks/why-cooperation-with-rms-is-impossible.mp3">
RMSmacs</a> now. I'll probably check it out at some point, but the problem with <i><a href="http://fakehost/test/lemacs.html">me</a></i> switching from XEmacs to RMSmacs is that it would probably result in another <a href="http://slashdot.org/article.pl?sid=03/01/24/1440207">
Slashdork</a> post, meaning I'd wake up to another 150+ poorly spelled flames in my inbox... I'm hoping for a Aquafied XEmacs, but I know that's not likely to happen any time soon.)</span>
- </ul><p> By the way, the suggestion to switch Linux distrubutions in order to get a single app to work might sound absurd at first. And that's because <a href="http://fakehost/test/linux.html">it is</a>. But I've been saturated with Unix-peanut-gallery effluvia for so long that it no longer even surprises me when every
+ </ul>
+ <p> By the way, the suggestion to switch Linux distrubutions in order to get a single app to work might sound absurd at first. And that's because <a href="http://fakehost/test/linux.html">it is</a>. But I've been saturated with Unix-peanut-gallery effluvia for so long that it no longer even surprises me when every
<nobr>question --</nobr> no matter how
<nobr>simple --</nobr> results in someone suggesting that you either A) patch your kernel or B) change distros. It's inevitable and inescapable, like Hitler. </p>
</blockquote>
- <hr></hr>
- <p> <a href="http://fakehost/test/../"><img alt="[ up ]" onmouseout="this.src=&quot;../compass1.gif&quot;" onmouseover="this.src=&quot;../compass2.gif&quot;" src="http://fakehost/test/../compass1.gif"></img></a> </p>
+ <hr>
+
+ <p> <a href="http://fakehost/test/../"><img alt="[ up ]" src="http://fakehost/test/../compass1.gif" onmouseover="this.src=&quot;../compass2.gif&quot;" onmouseout="this.src=&quot;../compass1.gif&quot;"></a> </p>
</div> \ No newline at end of file
diff --git a/test/test-pages/telegraph/expected-metadata.json b/test/test-pages/telegraph/expected-metadata.json
index be19af1..6307fc2 100644
--- a/test/test-pages/telegraph/expected-metadata.json
+++ b/test/test-pages/telegraph/expected-metadata.json
@@ -1,5 +1,5 @@
{
- "Author": "Our Foreign Staff \n \n\n16 November 2017 • 2:15pm",
+ "Author": null,
"Direction": null,
"Excerpt": "Zimbabwe President Robert Mugabe, his wife Grace and two key figures from her G40 political faction are under house arrest at Mugabe's &quot;Blue House&quot; compound in Harare and are insisting the 93 year-old finishes his presidential term, a source said.",
"Image": "http:\/\/www.telegraph.co.uk\/content\/dam\/news\/2017\/11\/16\/TELEMMGLPICT000146889449-xlarge_trans_NvBQzQNjv4BqySoB6nTCgtc7U4LQ_FPO4hKi2sT3vi7ux2-RDZwC4QA.jpeg",
diff --git a/test/test-pages/tmz-1/expected.html b/test/test-pages/tmz-1/expected.html
index 6eb48b9..1f7479a 100644
--- a/test/test-pages/tmz-1/expected.html
+++ b/test/test-pages/tmz-1/expected.html
@@ -13,22 +13,23 @@
<p><span>EXCLUSIVE</span>
</p>
<p>
- <img alt="0225-lupita-nyongo-getty-01" src="http://ll-media.tmz.com/2015/02/26/0225-lupita-nyongo-getty-4.jpg"></img><strong>Lupita Nyong</strong>'<strong>o</strong>'s now-famous Oscar dress
+ <img alt="0225-lupita-nyongo-getty-01" src="http://ll-media.tmz.com/2015/02/26/0225-lupita-nyongo-getty-4.jpg"><strong>Lupita Nyong</strong>'<strong>o</strong>'s now-famous Oscar dress
-- adorned in pearls -- was stolen right out of her hotel room ... TMZ
has learned.</p>
<p>Law enforcement sources tell TMZ ... the dress was taken out of Lupita's
room at The London West Hollywood. The dress is made of pearls ... 6,000
white Akoya pearls. It's valued at $150,000.</p>
<p>Our sources say Lupita told cops it was taken from her room sometime between
- 8 AM and 9 PM Wednesday ... while she was gone.  </p>
+ 8 AM and 9 PM Wednesday ... while she was gone. &nbsp;</p>
<p>We're told there is security footage that cops are looking at that could
- catch the culprit right in the act. </p>
+ catch the culprit right in the act.&nbsp;</p>
<p>
- <img alt="update_graphic_red_bar" src="http://ll-media.tmz.com/2013/11/20/update-graphic-red-bar.jpg"></img><strong>12:00 PM PT</strong> -- Sheriff's deputies were at The London Thursday
- morning.  We know they were in the manager's office and we're told
+ <img alt="update_graphic_red_bar" src="http://ll-media.tmz.com/2013/11/20/update-graphic-red-bar.jpg"><strong>12:00 PM PT</strong> -- Sheriff's deputies were at The London Thursday
+ morning. &nbsp;We know they were in the manager's office and we're told
they have looked at security footage to determine if they can ID the culprit.</p>
<p>
- <img alt="0226-SUB-london-hotel-swipe-tmz-02" src="http://ll-media.tmz.com/2015/02/26/0226-sub-london-hotel-swipe-tmz-11.jpg"></img></p>
+ <img alt="0226-SUB-london-hotel-swipe-tmz-02" src="http://ll-media.tmz.com/2015/02/26/0226-sub-london-hotel-swipe-tmz-11.jpg">
+ </p>
</div>
</div> \ No newline at end of file
diff --git a/test/test-pages/tumblr/expected.html b/test/test-pages/tumblr/expected.html
index 56df596..88dd224 100644
--- a/test/test-pages/tumblr/expected.html
+++ b/test/test-pages/tumblr/expected.html
@@ -4,7 +4,7 @@
<div>
<h3><a href="http://mcupdate.tumblr.com/post/96439224994/minecraft-18-the-bountiful-update">Minecraft 1.8 - The Bountiful Update</a></h3>
- <div><p>+ Added Granite, Andesite, and Diorite stone blocks, with smooth versions<br></br>+ Added Slime Block<br></br>+ Added Iron Trapdoor<br></br>+ Added Prismarine and Sea Lantern blocks<br></br>+ Added the Ocean Monument<br></br>+ Added Red Sandstone<br></br>+ Added Banners<br></br>+ Added Armor Stands<br></br>+ Added Coarse Dirt (dirt where grass won’t grow)<br></br>+ Added Guardian mobs, with item drops<br></br>+ Added Endermite mob<br></br>+ Added Rabbits, with item drops<br></br>+ Added Mutton and Cooked Mutton<br></br>+ Villagers will harvest crops and plant new ones<br></br>+ Mossy Cobblestone and Mossy Stone Bricks are now craftable<br></br>+ Chiseled Stone Bricks are now craftable<br></br>+ Doors and fences now come in all wood type variants<br></br>+ Sponge block has regained its water-absorbing ability and becomes wet<br></br>+ Added a spectator game mode (game mode 3)<br></br>+ Added one new achievement<br></br>+ Added “Customized” world type<br></br>+ Added hidden “Debug Mode” world type<br></br>+ Worlds can now have a world barrier<br></br>+ Added @e target selector for Command Blocks<br></br>+ Added /blockdata command<br></br>+ Added /clone command<br></br>+ Added /execute command<br></br>+ Added /fill command<br></br>+ Added /particle command<br></br>+ Added /testforblocks command<br></br>+ Added /title command<br></br>+ Added /trigger command<br></br>+ Added /worldborder command<br></br>+ Added /stats command<br></br>+ Containers can be locked in custom maps by using the “Lock” data tag<br></br>+ Added logAdminCommands, showDeathMessages, reducedDebugInfo, sendCommandFeedback, and randomTickSpeed game rules<br></br>+ Added three new statistics<br></br>+ Player skins can now have double layers across the whole model, and left/right arms/legs can be edited independently<br></br>+ Added a new player model with smaller arms, and a new player skin called Alex?<br></br>+ Added options for configuring what pieces of the skin that are visible<br></br>+ Blocks can now have custom visual variations in the resource packs<br></br>+ Minecraft Realms now has an activity chart, so you can see who has been online<br></br>+ Minecraft Realms now lets you upload your maps<br></br>* Difficulty setting is saved per world, and can be locked if wanted<br></br>* Enchanting has been redone, now costs lapis lazuli in addition to enchantment levels<br></br>* Villager trading has been rebalanced<br></br>* Anvil repairing has been rebalanced<br></br>* Considerable faster client-side performance<br></br>* Max render distance has been increased to 32 chunks (512 blocks)<br></br>* Adventure mode now prevents you from destroying blocks, unless your items have the CanDestroy data tag<br></br>* Resource packs can now also define the shape of blocks and items, and not just their textures<br></br>* Scoreboards have been given a lot of new features<br></br>* Tweaked the F3 debug screen<br></br>* Block ID numbers (such as 1 for stone), are being replaced by ID names (such as minecraft:stone)<br></br>* Server list has been improved<br></br>* A few minor changes to village and temple generation<br></br>* Mob heads for players now show both skin layers<br></br>* Buttons can now be placed on the ceiling<br></br>* Lots and lots of other changes<br></br>* LOTS AND LOTS of other changes<br></br>- Removed Herobrine</p></div>
+ <div><p>+ Added Granite, Andesite, and Diorite stone blocks, with smooth versions<br>+ Added Slime Block<br>+ Added Iron Trapdoor<br>+ Added Prismarine and Sea Lantern blocks<br>+ Added the Ocean Monument<br>+ Added Red Sandstone<br>+ Added Banners<br>+ Added Armor Stands<br>+ Added Coarse Dirt (dirt where grass won’t grow)<br>+ Added Guardian mobs, with item drops<br>+ Added Endermite mob<br>+ Added Rabbits, with item drops<br>+ Added Mutton and Cooked Mutton<br>+ Villagers will harvest crops and plant new ones<br>+ Mossy Cobblestone and Mossy Stone Bricks are now craftable<br>+ Chiseled Stone Bricks are now craftable<br>+ Doors and fences now come in all wood type variants<br>+ Sponge block has regained its water-absorbing ability and becomes wet<br>+ Added a spectator game mode (game mode 3)<br>+ Added one new achievement<br>+ Added “Customized” world type<br>+ Added hidden “Debug Mode” world type<br>+ Worlds can now have a world barrier<br>+ Added @e target selector for Command Blocks<br>+ Added /blockdata command<br>+ Added /clone command<br>+ Added /execute command<br>+ Added /fill command<br>+ Added /particle command<br>+ Added /testforblocks command<br>+ Added /title command<br>+ Added /trigger command<br>+ Added /worldborder command<br>+ Added /stats command<br>+ Containers can be locked in custom maps by using the “Lock” data tag<br>+ Added logAdminCommands, showDeathMessages, reducedDebugInfo, sendCommandFeedback, and randomTickSpeed game rules<br>+ Added three new statistics<br>+ Player skins can now have double layers across the whole model, and left/right arms/legs can be edited independently<br>+ Added a new player model with smaller arms, and a new player skin called Alex?<br>+ Added options for configuring what pieces of the skin that are visible<br>+ Blocks can now have custom visual variations in the resource packs<br>+ Minecraft Realms now has an activity chart, so you can see who has been online<br>+ Minecraft Realms now lets you upload your maps<br>* Difficulty setting is saved per world, and can be locked if wanted<br>* Enchanting has been redone, now costs lapis lazuli in addition to enchantment levels<br>* Villager trading has been rebalanced<br>* Anvil repairing has been rebalanced<br>* Considerable faster client-side performance<br>* Max render distance has been increased to 32 chunks (512 blocks)<br>* Adventure mode now prevents you from destroying blocks, unless your items have the CanDestroy data tag<br>* Resource packs can now also define the shape of blocks and items, and not just their textures<br>* Scoreboards have been given a lot of new features<br>* Tweaked the F3 debug screen<br>* Block ID numbers (such as 1 for stone), are being replaced by ID names (such as minecraft:stone)<br>* Server list has been improved<br>* A few minor changes to village and temple generation<br>* Mob heads for players now show both skin layers<br>* Buttons can now be placed on the ceiling<br>* Lots and lots of other changes<br>* LOTS AND LOTS of other changes<br>- Removed Herobrine</p></div>
</div>
</div>
diff --git a/test/test-pages/uses-getfirstelementchild-function/expected.html b/test/test-pages/uses-getfirstelementchild-function/expected.html
index 2164483..1287fc8 100644
--- a/test/test-pages/uses-getfirstelementchild-function/expected.html
+++ b/test/test-pages/uses-getfirstelementchild-function/expected.html
@@ -1,8 +1,12 @@
-<div><td>
+<div>
+ <td>
<div>
- <p><img height="235" src="http://fakehost/test/logo.jpg" width="400"></img></p>
+ <p><img src="http://fakehost/test/logo.jpg" width="400" height="235">
+ </p>
<div>
- <br></br>
+
+
+
<p>The Seattle Thunderbirds are excited to announce the dates of their
annual Summer Hockey Clinic! This three day hockey school will feature top level
@@ -21,8 +25,8 @@
You will begin your daily training on-ice and complete the day off-ice (see the next
page for a complete schedule). Please come prepared with appropriate work-out gear and
sneakers!</p>
- <p>• GROUP A: 7, 8 &amp; 9 yrs old $125<br></br> • GROUP B: 10 &amp; 11 yrs old $125<br></br> • GROUP
- C: 12, 13 &amp; 14 yrs old $125<br></br> • ADULTS: 18 &amp; Over $160</p>
+ <p>• GROUP A: 7, 8 &amp; 9 yrs old $125<br> • GROUP B: 10 &amp; 11 yrs old $125<br> • GROUP
+ C: 12, 13 &amp; 14 yrs old $125<br> • ADULTS: 18 &amp; Over $160</p>
<div>
<p>To reserve your space in the T-Birds Summer Hockey Clinic and receive
your Ticket Special, fill out the registration form on reverse. Space is limited and
@@ -31,13 +35,13 @@
hockey players of all ages to improve their skills and enjoy their time with us. To help
ensure this, the Thunderbirds\' training staff will be at the clinic for its
entirety.</p>
- <p>Elevate your game!<br></br> Improve your skating…<br></br> • lengthen your stride<br></br>
- • gain power<br></br> • balance and agility</p>
- <p>Improve your puck skills…<br></br> • puck control and deking<br></br> • power moves
+ <p>Elevate your game!<br> Improve your skating…<br> • lengthen your stride<br>
+ • gain power<br> • balance and agility</p>
+ <p>Improve your puck skills…<br> • puck control and deking<br> • power moves
and puck protection</p>
- <p>Improve your passing and team play…<br></br> • puck support and \'ice
- vision\'<br></br> • shooting for accuracy vs rebounds<br></br> • game systems</p>
- <p><br></br> Instructors: Instructors for the 2007 Summer Hockey Clinics will
+ <p>Improve your passing and team play…<br> • puck support and \'ice
+ vision\'<br> • shooting for accuracy vs rebounds<br> • game systems</p>
+ <p><br> Instructors: Instructors for the 2007 Summer Hockey Clinics will
include Seattle Thunderbirds Head Coach Rob Sumner, Assistant Coach Turner Stevenson,
past Thunderbirds Ryan Gibbons and Tyler Metcalfe and past and present Seattle
Thunderbirds players.</p>
@@ -50,66 +54,125 @@
players may wear a half visor, however full cages and mouth guards are highly
recommended.</p>
- <p>• To register and pay for your clinic online, compelte the form below<br></br> •
+ <p>• To register and pay for your clinic online, compelte the form below<br> •
To register and pay for your clinic via mail, click here to download the registration
form</p>
- <table bordercolor="#666666" readabilityDataTable="0"><tbody><tr><td bordercolor="#666666">
+ <table bordercolor="#666666" readabilityDataTable="0">
+ <tbody>
+ <tr>
+ <td bordercolor="#666666">
<div>
<p>
Summer Hockey Clinic Registration Form
</p>
- </div></td>
- </tr><tr><td bordercolor="#FFFFFF">
- <table readabilityDataTable="0"><tbody><tr><td><p>Player Name</p></td>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td bordercolor="#FFFFFF">
+ <table readabilityDataTable="0">
+ <tbody>
+ <tr>
+ <td><p>Player Name</p></td>
<td colspan="3"></td>
- </tr><tr><td nowrap="nowrap"><p>Email Address</p></td>
+ </tr>
+ <tr>
+ <td nowrap><p>Email Address</p></td>
<td colspan="3"></td>
- </tr><tr><td><p>Birthdate</p></td>
+ </tr>
+ <tr>
+ <td><p>Birthdate</p></td>
<td colspan="3"></td>
- </tr><tr><td><p>Address</p></td>
+ </tr>
+ <tr>
+ <td><p>Address</p></td>
<td colspan="3"></td>
- </tr><tr><td><p>City/St</p></td>
+ </tr>
+ <tr>
+ <td><p>City/St</p></td>
<td></td>
<td><p>Zip</p></td>
<td></td>
- </tr><tr><td><p>Day Phone</p></td>
+ </tr>
+ <tr>
+ <td><p>Day Phone</p></td>
<td></td>
<td><p>Eve Phone</p></td>
<td></td>
- </tr><tr><td colspan="4"><p>Please indicate your curreny hockey association or
+ </tr>
+ <tr>
+ <td colspan="4"><p>Please indicate your curreny hockey association or
league:</p></td>
- </tr><tr><td></td>
- <td colspan="3"><p>SKAHA   SJHA    KVAHA   
- GSHL    Other</p></td>
- </tr><tr><td colspan="4"><p>If other, pelase specify:</p></td>
- </tr><tr><td><p>Position:</p></td>
- <td colspan="3"><p>Forward    Defense    Goalie</p>
+ </tr>
+ <tr>
+ <td></td>
+ <td colspan="3"><p>SKAHA&nbsp;&nbsp; SJHA &nbsp;&nbsp; KVAHA &nbsp;&nbsp;
+ GSHL &nbsp;&nbsp; Other</p></td>
+ </tr>
+ <tr>
+ <td colspan="4"><p>If other, pelase specify:</p></td>
+ </tr>
+ <tr>
+ <td><p>Position:</p></td>
+ <td colspan="3"><p>Forward &nbsp;&nbsp; Defense &nbsp;&nbsp; Goalie</p>
</td>
- </tr><tr><td><p>Jersey Size</p></td>
- <td colspan="3"><p>S   M    L    XL   
+ </tr>
+ <tr>
+ <td><p>Jersey Size</p></td>
+ <td colspan="3"><p>S&nbsp;&nbsp; M &nbsp;&nbsp; L &nbsp;&nbsp; XL &nbsp;&nbsp;
XXL</p></td>
- </tr><tr><td><p>I want to purchase the following T-Birds Summer Hockey
+ </tr>
+ <tr>
+ <td><p>I want to purchase the following T-Birds Summer Hockey
Clinic:</p></td>
<td colspan="3">
- <table readabilityDataTable="0"><tbody><tr><td><p>GROUP A<br></br> 7, 8 &amp; 9<br></br> $125<br></br></p></td>
- <td><p>GROUP B<br></br> 10 &amp; 11<br></br> $125<br></br></p></td>
- <td><p>GROUP C<br></br> 12, 13 &amp; 14<br></br>
- $125<br></br></p></td>
- <td><p>ADULTS<br></br> 18 &amp; Over<br></br> $160<br></br></p></td>
- </tr></tbody></table></td>
- </tr><tr><td colspan="4"> </td>
- </tr><tr><td colspan="4"><p>Waiver and Release</p></td>
- </tr><tr><td colspan="4"><p>By checking this box, I understand that participation
+ <table readabilityDataTable="0">
+ <tbody>
+ <tr>
+ <td><p>GROUP A<br> 7, 8 &amp; 9<br> $125<br>
+ </p></td>
+ <td><p>GROUP B<br> 10 &amp; 11<br> $125<br>
+ </p></td>
+ <td><p>GROUP C<br> 12, 13 &amp; 14<br>
+ $125<br></p></td>
+ <td><p>ADULTS<br> 18 &amp; Over<br> $160<br>
+ </p></td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="4">&nbsp;</td>
+ </tr>
+ <tr>
+ <td colspan="4"><p>Waiver and Release</p></td>
+ </tr>
+ <tr>
+ <td colspan="4"><p>By checking this box, I understand that participation
of the sport constitutes a risk to me (or my child). I voluntarily
recognize, accept and assume risk and release the Seattle
Thunderbirds and Kingsgate Arena from any and all liability.</p>
</td>
- </tr><tr><td colspan="4"></td>
- </tr><tr><td colspan="4"></td>
- </tr><tr><td colspan="4"><p>Once you click submit, you will be
+ </tr>
+ <tr>
+ <td colspan="4"></td>
+ </tr>
+ <tr>
+ <td colspan="4"></td>
+ </tr>
+ <tr>
+ <td colspan="4"><p>Once you click submit, you will be
given the link to continue to online payment</p></td>
- </tr></tbody></table></td>
- </tr></tbody></table>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
</div>
- </div></td>
+ </div>
+ </td>
</div> \ No newline at end of file
diff --git a/test/test-pages/wapo-1/expected.html b/test/test-pages/wapo-1/expected.html
index ed051e8..7fd81fe 100644
--- a/test/test-pages/wapo-1/expected.html
+++ b/test/test-pages/wapo-1/expected.html
@@ -1,4 +1,5 @@
<article>
+
<p> <span>CAIRO —</span> Gunmen opened fire on visitors at
Tunisia’s most renowned museum on Wednesday, killing at least 19 people,
including 17 foreigners, in an assault that threatened to upset the fragile
@@ -112,7 +113,9 @@
<p>In January, Libyan militants loyal to the Islamic State <a href="http://www.washingtonpost.com/world/middle_east/video-shows-purported-beheading-of-egyptian-christians-in-libya/2015/02/15/b8d0f092-b548-11e4-bc30-a4e75503948a_story.html">beheaded 21 Christians</a> —
20 of them Egyptian Copts — along the country’s coast. They later seized
the Libyan city of Sirte.</p>
- <p><img data-hi-res-src="https://img.washingtonpost.com/rf/image_1484w/2010-2019/WashingtonPost/2015/03/18/Foreign/Graphics/tunisia600.jpg?uuid=1_yuLs2LEeSHME9HNBbnWQ" data-low-res-src="https://img.washingtonpost.com/rf/image_480w/2010-2019/WashingtonPost/2015/03/18/Foreign/Graphics/tunisia600.jpg?uuid=1_yuLs2LEeSHME9HNBbnWQ" src="https://img.washingtonpost.com/rf/image_480w/2010-2019/WashingtonPost/2015/03/18/Foreign/Graphics/tunisia600.jpg?uuid=1_yuLs2LEeSHME9HNBbnWQ"></img><br></br></p>
+ <p><img data-hi-res-src="https://img.washingtonpost.com/rf/image_1484w/2010-2019/WashingtonPost/2015/03/18/Foreign/Graphics/tunisia600.jpg?uuid=1_yuLs2LEeSHME9HNBbnWQ" data-low-res-src="https://img.washingtonpost.com/rf/image_480w/2010-2019/WashingtonPost/2015/03/18/Foreign/Graphics/tunisia600.jpg?uuid=1_yuLs2LEeSHME9HNBbnWQ" src="https://img.washingtonpost.com/rf/image_480w/2010-2019/WashingtonPost/2015/03/18/Foreign/Graphics/tunisia600.jpg?uuid=1_yuLs2LEeSHME9HNBbnWQ">
+ <br>
+ </p>
<p>Officials are worried about the number of Tunisian militants who may have
joined the jihadists in Libya — with the goal of returning home to fight
the Tunis government.</p>
diff --git a/test/test-pages/wapo-2/expected.html b/test/test-pages/wapo-2/expected.html
index cb2a8ce..d87cb37 100644
--- a/test/test-pages/wapo-2/expected.html
+++ b/test/test-pages/wapo-2/expected.html
@@ -1,6 +1,8 @@
<p><a name="1c164a7079bfe20ebd611d79f96418b5a225cbc6"></a>
- <img data-hi-res-src="https://img.washingtonpost.com/rf/image_1484w/2010-2019/WashingtonPost/2015/03/18/National-Economy/Images/Nic6429750-1140.jpg?uuid=zLIZQs2KEeSip5UXo6cFBg" data-low-res-src="https://img.washingtonpost.com/rf/image_400w/2010-2019/WashingtonPost/2015/03/18/National-Economy/Images/Nic6429750-1140.jpg?uuid=zLIZQs2KEeSip5UXo6cFBg" src="https://img.washingtonpost.com/rf/image_400w/2010-2019/WashingtonPost/2015/03/18/National-Economy/Images/Nic6429750-1140.jpg?uuid=zLIZQs2KEeSip5UXo6cFBg"></img><br></br><span>Israeli Prime Minister Benjamin Netanyahu reacts as he visits the Western Wall in Jerusalem on March 18 following his party's victory in Israel's general election. (Thomas Coex/AFP/Getty Images)</span>
- </p><article><p>President Obama told the U.N. General Assembly 18 months ago that he would
+ <img src="https://img.washingtonpost.com/rf/image_400w/2010-2019/WashingtonPost/2015/03/18/National-Economy/Images/Nic6429750-1140.jpg?uuid=zLIZQs2KEeSip5UXo6cFBg" data-hi-res-src="https://img.washingtonpost.com/rf/image_1484w/2010-2019/WashingtonPost/2015/03/18/National-Economy/Images/Nic6429750-1140.jpg?uuid=zLIZQs2KEeSip5UXo6cFBg" data-low-res-src="https://img.washingtonpost.com/rf/image_400w/2010-2019/WashingtonPost/2015/03/18/National-Economy/Images/Nic6429750-1140.jpg?uuid=zLIZQs2KEeSip5UXo6cFBg">
+ <br> <span>Israeli Prime Minister Benjamin Netanyahu reacts as he visits the Western Wall in Jerusalem on March 18 following his party's victory in Israel's general election. (Thomas Coex/AFP/Getty Images)</span>
+ </p><article>
+ <p>President Obama told the U.N. General Assembly 18 months ago that he would
seek “real breakthroughs on these two issues — Iran’s nuclear program and
­Israeli-Palestinian peace.”</p>
<p>But <a href="http://www.washingtonpost.com/world/netanyahu-sweeps-to-victory-in-israeli-election/2015/03/18/af4e50ca-ccf2-11e4-8730-4f473416e759_story.html" title="www.washingtonpost.com">Benjamin Netanyahu’s triumph</a> in Tuesday’s
@@ -95,7 +97,7 @@
<p>“That could be an issue forced onto the agenda about the same time as
a potential nuclear deal.”</p>
- </article><div><p><a href="http://www.washingtonpost.com/people/steven-mufson"><img src="http://img.washingtonpost.com/wp-apps/imrs.php?src=http://www.washingtonpost.com/blogs/wonkblog/files/2014/07/mufson_steve.jpg&amp;h=180&amp;w=180"></img></a></p><p>Steven Mufson covers the White House. Since joining The Post, he has covered
+ </article><div><p><a href="http://www.washingtonpost.com/people/steven-mufson"><img src="http://img.washingtonpost.com/wp-apps/imrs.php?src=http://www.washingtonpost.com/blogs/wonkblog/files/2014/07/mufson_steve.jpg&amp;h=180&amp;w=180"></a></p><p>Steven Mufson covers the White House. Since joining The Post, he has covered
economics, China, foreign policy and energy.</p>
</div> \ No newline at end of file
diff --git a/test/test-pages/webmd-2/expected.html b/test/test-pages/webmd-2/expected.html
index d9e1816..f9f1d5d 100644
--- a/test/test-pages/webmd-2/expected.html
+++ b/test/test-pages/webmd-2/expected.html
@@ -6,18 +6,19 @@
- <p>April 17, 2015 -- Imagine being sick in the hospital with a <a class="" href="http://www.webmd.com/a-to-z-guides/bacterial-and-viral-infections" onclick="return sl(this,'','embd-lnk');">bacterial infection</a> and doctors can't stop it from spreading. This so-called "superbug" scenario is not science fiction. It's an urgent, worldwide worry that is prompting swift action.</p>
+ <p>April 17, 2015 -- Imagine being sick in the hospital with a <a href="http://www.webmd.com/a-to-z-guides/bacterial-and-viral-infections" onclick="return sl(this,'','embd-lnk');" class>bacterial infection</a> and doctors can't stop it from spreading. This so-called "superbug" scenario is not science fiction. It's an urgent, worldwide worry that is prompting swift action.</p>
<p xmlns:xalan="http://xml.apache.org/xalan">Every year, about 2 million people get sick from a superbug, according to the CDC. About 23,000 die. Earlier this year, an outbreak of CRE (carbapenem-resistant enterobacteriaceae) linked to contaminated medical tools sickened 11 people at two Los-Angeles area hospitals. Two people died, and more than 200 others may have been exposed.</p>
- <p>The White House recently released a <a href="http://www.webmd.com/click?url=https://www.whitehouse.gov/sites/default/files/docs/national_action_plan_for_combating_antibotic-resistant_bacteria.pdf" onclick="return sl(this,'','embd-lnk');">comprehensive plan</a> outlining steps to combat drug-resistant bacteria. The plan identifies three "urgent" and several "serious" threats. We asked infectious disease experts to explain what some of them are and when to worry.</p>
+ <p>The White House recently released a <a onclick="return sl(this,'','embd-lnk');" href="http://www.webmd.com/click?url=https://www.whitehouse.gov/sites/default/files/docs/national_action_plan_for_combating_antibotic-resistant_bacteria.pdf">comprehensive plan</a> outlining steps to combat drug-resistant bacteria. The plan identifies three "urgent" and several "serious" threats. We asked infectious disease experts to explain what some of them are and when to worry.</p>
+
<h3>But First: What's a Superbug? </h3>
- <p>It's a term coined by the media to describe bacteria that cannot be killed using multiple <a class="" href="http://www.webmd.com/cold-and-flu/rm-quiz-antibiotics-myths-facts" onclick="return sl(this,'','embd-lnk');">antibiotics</a>. "It resonates because it's scary," says Stephen Calderwood, MD, president of the Infectious Diseases Society of America. "But in fairness, there is no real definition."</p>
+ <p>It's a term coined by the media to describe bacteria that cannot be killed using multiple <a href="http://www.webmd.com/cold-and-flu/rm-quiz-antibiotics-myths-facts" onclick="return sl(this,'','embd-lnk');" class>antibiotics</a>. "It resonates because it's scary," says Stephen Calderwood, MD, president of the Infectious Diseases Society of America. "But in fairness, there is no real definition."</p>
<p>Instead, doctors often use phrases like "multidrug-resistant bacteria." That's because a superbug isn't necessarily resistant to all antibiotics. It refers to bacteria that can't be treated using two or more, says Brian K. Coombes, PhD, of McMaster University in Ontario.</p>
<p>Any species of bacteria can turn into a superbug.</p>
<p>Misusing antibiotics (such as taking them when you don't need them or not finishing all of your medicine) is the "single leading factor" contributing to this problem, the CDC says. The concern is that eventually doctors will run out of antibiotics to treat them.</p>
<p>"What the public should know is that the more antibiotics you’ve taken, the higher your superbug risk," says Eric Biondi, MD, who runs a program to decrease unnecessary antibiotic use. "The more encounters you have with the hospital setting, the higher your superbug risk."</p>
- <p>"Superbugs should be a concern to everyone," Coombes says. "Antibiotics are the foundation on which all modern medicine rests. Cancer <a class="" href="http://www.webmd.com/cancer/chemotherapy-what-to-expect" onclick="return sl(this,'','embd-lnk');">chemotherapy</a>, <a class="" href="http://www.webmd.com/a-to-z-guides/organ-donation-facts" onclick="return sl(this,'','embd-lnk');">organ transplants</a>, surgeries, and <a class="" href="http://www.webmd.com/baby/guide/delivery-methods" onclick="return sl(this,'','embd-lnk');">childbirth</a> all rely on antibiotics to prevent infections. If you can't treat those, then we lose the medical advances we have made in the last 50 years."</p>
+ <p>"Superbugs should be a concern to everyone," Coombes says. "Antibiotics are the foundation on which all modern medicine rests. Cancer <a href="http://www.webmd.com/cancer/chemotherapy-what-to-expect" onclick="return sl(this,'','embd-lnk');" class>chemotherapy</a>, <a href="http://www.webmd.com/a-to-z-guides/organ-donation-facts" onclick="return sl(this,'','embd-lnk');" class>organ transplants</a>, surgeries, and <a href="http://www.webmd.com/baby/guide/delivery-methods" onclick="return sl(this,'','embd-lnk');" class>childbirth</a> all rely on antibiotics to prevent infections. If you can't treat those, then we lose the medical advances we have made in the last 50 years."</p>
<p>Here are some of the growing superbug threats identified in the 2015 White House report.</p>
</div> \ No newline at end of file
diff --git a/test/test-pages/wikia/expected.html b/test/test-pages/wikia/expected.html
index de18ee3..eb8eb6e 100644
--- a/test/test-pages/wikia/expected.html
+++ b/test/test-pages/wikia/expected.html
@@ -1,25 +1,26 @@
<div>
- <p>Although Lucasfilm is already planning a birthday bash for the Star Wars Saga at <a data-is="trackable" href="http://starwars.wikia.com/wiki/Celebration_Orlando" riot-tag="trackable">Celebration Orlando</a> this April, fans might get another present for the saga’s 40th anniversary. According to fan site <a data-is="trackable" href="http://makingstarwars.net/2017/02/rumor-unaltered-original-star-wars-trilogy-re-released-year/" riot-tag="trackable">MakingStarWars.net</a>, rumors abound that Lucasfilm might re-release the unaltered cuts of the saga’s original trilogy.</p>
+ <p>Although Lucasfilm is already planning a birthday bash for the Star Wars Saga at <a href="http://starwars.wikia.com/wiki/Celebration_Orlando" data-is="trackable" riot-tag="trackable">Celebration Orlando</a> this April, fans might get another present for the saga’s 40th anniversary. According to fan site <a href="http://makingstarwars.net/2017/02/rumor-unaltered-original-star-wars-trilogy-re-released-year/" data-is="trackable" riot-tag="trackable">MakingStarWars.net</a>, rumors abound that Lucasfilm might re-release the unaltered cuts of the saga’s original trilogy.</p>
<p>If the rumors are true, this is big news for Star Wars fans. Aside from limited VHS releases, the unaltered cuts of the original trilogy films haven’t been available since they premiered in theaters in the 1970s and ’80s. If Lucasfilm indeed re-releases the films’ original cuts, then this will be the first time in decades that fans can see the films in their original forms. Here’s what makes the unaltered cuts of the original trilogy so special.</p>
<h2>The Star Wars Special Editions Caused Controversy
- <a data-is="trackable" href="https://vignette.wikia.nocookie.net/e80dae8a-b955-43f6-8ada-f023385e622b" riot-tag="trackable"><img alt="star wars han solo" sizes="(max-width: 840px) 100vw, (max-width: 1064px) calc(100vw - 300px), 627px" src="https://vignette.wikia.nocookie.net/e80dae8a-b955-43f6-8ada-f023385e622b/scale-to-width-down/627" srcset="https://vignette.wikia.nocookie.net/e80dae8a-b955-43f6-8ada-f023385e622b/scale-to-width-down/400 400w, https://vignette.wikia.nocookie.net/e80dae8a-b955-43f6-8ada-f023385e622b/scale-to-width-down/627 627w, https://vignette.wikia.nocookie.net/e80dae8a-b955-43f6-8ada-f023385e622b/scale-to-width-down/800 800w, https://vignette.wikia.nocookie.net/e80dae8a-b955-43f6-8ada-f023385e622b/scale-to-width-down/1200 1200w"></img></a>
+ <a href="https://vignette.wikia.nocookie.net/e80dae8a-b955-43f6-8ada-f023385e622b" data-is="trackable" riot-tag="trackable"><img src="https://vignette.wikia.nocookie.net/e80dae8a-b955-43f6-8ada-f023385e622b/scale-to-width-down/627" alt="star wars han solo" srcset="https://vignette.wikia.nocookie.net/e80dae8a-b955-43f6-8ada-f023385e622b/scale-to-width-down/400 400w, https://vignette.wikia.nocookie.net/e80dae8a-b955-43f6-8ada-f023385e622b/scale-to-width-down/627 627w, https://vignette.wikia.nocookie.net/e80dae8a-b955-43f6-8ada-f023385e622b/scale-to-width-down/800 800w, https://vignette.wikia.nocookie.net/e80dae8a-b955-43f6-8ada-f023385e622b/scale-to-width-down/1200 1200w" sizes="(max-width: 840px) 100vw, (max-width: 1064px) calc(100vw - 300px), 627px"></a>
</h2>
- <p>Thanks to the commercial success of Star Wars, <a data-is="trackable" href="http://starwars.wikia.com/wiki/George_Lucas" riot-tag="trackable">George Lucas</a> has revisited and further edited his films for re-releases. The most notable — and controversial — release were the <a data-is="trackable" href="http://starwars.wikia.com/wiki/The_Star_Wars_Trilogy_Special_Edition" riot-tag="trackable">Special Editions</a> of the original trilogy. In 1997, to celebrate the saga’s 20th anniversary, Lucasfilm spent a total of $15 million to remaster <a data-is="trackable" href="http://starwars.wikia.com/wiki/Star_Wars:_Episode_IV_A_New_Hope" riot-tag="trackable"><em>A New Hope</em></a>, <a data-is="trackable" href="http://starwars.wikia.com/wiki/Star_Wars:_Episode_V_The_Empire_Strikes_Back" riot-tag="trackable"><em>The Empire Strikes Back</em></a>, and <a data-is="trackable" href="http://starwars.wikia.com/wiki/Star_Wars:_Episode_VI_Return_of_the_Jedi" riot-tag="trackable"><em>Return of the Jedi</em></a>. The Special Editions had stints in theaters before moving to home media.</p>
- <p>Although most of the Special Editions’ changes were cosmetic, others significantly affected the plot of the films. The most notable example is the “<a data-is="trackable" href="http://starwars.wikia.com/wiki/Han_shot_first" riot-tag="trackable">Han shot first</a>” scene in <em>A New Hope</em>. As a result, the Special Editions generated significant controversy among Star Wars fans. Many fans remain skeptical about George Lucas’s decision to finish each original trilogy film “the way it was meant to be.”</p>
+ <p>Thanks to the commercial success of Star Wars, <a href="http://starwars.wikia.com/wiki/George_Lucas" data-is="trackable" riot-tag="trackable">George Lucas</a> has revisited and further edited his films for re-releases. The most notable — and controversial — release were the <a href="http://starwars.wikia.com/wiki/The_Star_Wars_Trilogy_Special_Edition" data-is="trackable" riot-tag="trackable">Special Editions</a> of the original trilogy. In 1997, to celebrate the saga’s 20th anniversary, Lucasfilm spent a total of $15 million to remaster <a href="http://starwars.wikia.com/wiki/Star_Wars:_Episode_IV_A_New_Hope" data-is="trackable" riot-tag="trackable"><em>A New Hope</em></a>, <a href="http://starwars.wikia.com/wiki/Star_Wars:_Episode_V_The_Empire_Strikes_Back" data-is="trackable" riot-tag="trackable"><em>The Empire Strikes Back</em></a>, and <a href="http://starwars.wikia.com/wiki/Star_Wars:_Episode_VI_Return_of_the_Jedi" data-is="trackable" riot-tag="trackable"><em>Return of the Jedi</em></a>. The Special Editions had stints in theaters before moving to home media.</p>
+ <p>Although most of the Special Editions’ changes were cosmetic, others significantly affected the plot of the films. The most notable example is the “<a href="http://starwars.wikia.com/wiki/Han_shot_first" data-is="trackable" riot-tag="trackable">Han shot first</a>” scene in <em>A New Hope</em>. As a result, the Special Editions generated significant controversy among Star Wars fans. Many fans remain skeptical about George Lucas’s decision to finish each original trilogy film “the way it was meant to be.”</p>
<p>
- <a data-is="trackable" href="https://vignette.wikia.nocookie.net/375e0e5a-170d-4560-8f20-240c9f0624e9" riot-tag="trackable"><img alt="star wars" sizes="(max-width: 840px) 100vw, (max-width: 1064px) calc(100vw - 300px), 627px" src="https://vignette.wikia.nocookie.net/375e0e5a-170d-4560-8f20-240c9f0624e9/scale-to-width-down/627" srcset="https://vignette.wikia.nocookie.net/375e0e5a-170d-4560-8f20-240c9f0624e9/scale-to-width-down/400 400w, https://vignette.wikia.nocookie.net/375e0e5a-170d-4560-8f20-240c9f0624e9/scale-to-width-down/627 627w, https://vignette.wikia.nocookie.net/375e0e5a-170d-4560-8f20-240c9f0624e9/scale-to-width-down/800 800w, https://vignette.wikia.nocookie.net/375e0e5a-170d-4560-8f20-240c9f0624e9/scale-to-width-down/1200 1200w"></img></a>
+ <a href="https://vignette.wikia.nocookie.net/375e0e5a-170d-4560-8f20-240c9f0624e9" data-is="trackable" riot-tag="trackable"><img src="https://vignette.wikia.nocookie.net/375e0e5a-170d-4560-8f20-240c9f0624e9/scale-to-width-down/627" alt="star wars" srcset="https://vignette.wikia.nocookie.net/375e0e5a-170d-4560-8f20-240c9f0624e9/scale-to-width-down/400 400w, https://vignette.wikia.nocookie.net/375e0e5a-170d-4560-8f20-240c9f0624e9/scale-to-width-down/627 627w, https://vignette.wikia.nocookie.net/375e0e5a-170d-4560-8f20-240c9f0624e9/scale-to-width-down/800 800w, https://vignette.wikia.nocookie.net/375e0e5a-170d-4560-8f20-240c9f0624e9/scale-to-width-down/1200 1200w" sizes="(max-width: 840px) 100vw, (max-width: 1064px) calc(100vw - 300px), 627px"></a>
</p>
- <p>While the Special Editions represent the most significant edits to the original trilogy, the saga has undergone other changes. Following up on the saga’s first Blu-ray release in 2011, Industrial Light &amp; Magic (ILM) began remastering the entire saga in 3D, starting with the prequel trilogy. <a data-is="trackable" href="http://starwars.wikia.com/wiki/Star_Wars:_Episode_I_The_Phantom_Menace" riot-tag="trackable"><em>The Phantom Menace</em></a> saw a theatrical 3D re-release in 2012, but Disney’s 2012 acquisition of Lucasfilm indefinitely postponed further 3D releases.</p>
- <p>In 2015, <a data-is="trackable" href="http://starwars.wikia.com/wiki/Star_Wars:_Episode_II_Attack_of_the_Clones" riot-tag="trackable"><em>Attack of the Clones</em></a> and <a data-is="trackable" href="http://starwars.wikia.com/wiki/Star_Wars:_Episode_III_Revenge_of_the_Sith" riot-tag="trackable"><em>Revenge of the Sith</em></a> received limited 3D showings at <a data-is="trackable" href="http://starwars.wikia.com/wiki/Celebration_Anaheim" riot-tag="trackable">Celebration Anaheim</a>. Other than that, it seems as though Disney has decided to refocus Lucasfilm’s efforts to new films. Of course, that’s why the saga has produced new content beginning with <a data-is="trackable" href="http://starwars.wikia.com/wiki/Star_Wars:_Episode_VII_The_Force_Awakens" riot-tag="trackable"><em>The Force Awakens</em></a>. However, it looks like Lucasfilm isn’t likely to generate 3D versions of the original trilogy anytime soon.</p>
+ <p>While the Special Editions represent the most significant edits to the original trilogy, the saga has undergone other changes. Following up on the saga’s first Blu-ray release in 2011, Industrial Light &amp; Magic (ILM) began remastering the entire saga in 3D, starting with the prequel trilogy. <a href="http://starwars.wikia.com/wiki/Star_Wars:_Episode_I_The_Phantom_Menace" data-is="trackable" riot-tag="trackable"><em>The Phantom Menace</em></a> saw a theatrical 3D re-release in 2012, but Disney’s 2012 acquisition of Lucasfilm indefinitely postponed further 3D releases.</p>
+ <p>In 2015, <a href="http://starwars.wikia.com/wiki/Star_Wars:_Episode_II_Attack_of_the_Clones" data-is="trackable" riot-tag="trackable"><em>Attack of the Clones</em></a> and <a href="http://starwars.wikia.com/wiki/Star_Wars:_Episode_III_Revenge_of_the_Sith" data-is="trackable" riot-tag="trackable"><em>Revenge of the Sith</em></a> received limited 3D showings at <a href="http://starwars.wikia.com/wiki/Celebration_Anaheim" data-is="trackable" riot-tag="trackable">Celebration Anaheim</a>. Other than that, it seems as though Disney has decided to refocus Lucasfilm’s efforts to new films. Of course, that’s why the saga has produced new content beginning with <a href="http://starwars.wikia.com/wiki/Star_Wars:_Episode_VII_The_Force_Awakens" data-is="trackable" riot-tag="trackable"><em>The Force Awakens</em></a>. However, it looks like Lucasfilm isn’t likely to generate 3D versions of the original trilogy anytime soon.</p>
<h2>Why the Original Film Cuts Matter</h2>
<p>
- <a data-is="trackable" href="https://vignette.wikia.nocookie.net/1fb5ee36-d9ae-4125-96d9-f52eb403f1c9" riot-tag="trackable"><img alt="" sizes="(max-width: 840px) 100vw, (max-width: 1064px) calc(100vw - 300px), 627px" src="https://vignette.wikia.nocookie.net/1fb5ee36-d9ae-4125-96d9-f52eb403f1c9/scale-to-width-down/627" srcset="https://vignette.wikia.nocookie.net/1fb5ee36-d9ae-4125-96d9-f52eb403f1c9/scale-to-width-down/400 400w, https://vignette.wikia.nocookie.net/1fb5ee36-d9ae-4125-96d9-f52eb403f1c9/scale-to-width-down/627 627w, https://vignette.wikia.nocookie.net/1fb5ee36-d9ae-4125-96d9-f52eb403f1c9/scale-to-width-down/800 800w, https://vignette.wikia.nocookie.net/1fb5ee36-d9ae-4125-96d9-f52eb403f1c9/scale-to-width-down/1200 1200w"></img></a>
+ <a href="https://vignette.wikia.nocookie.net/1fb5ee36-d9ae-4125-96d9-f52eb403f1c9" data-is="trackable" riot-tag="trackable"><img src="https://vignette.wikia.nocookie.net/1fb5ee36-d9ae-4125-96d9-f52eb403f1c9/scale-to-width-down/627" alt srcset="https://vignette.wikia.nocookie.net/1fb5ee36-d9ae-4125-96d9-f52eb403f1c9/scale-to-width-down/400 400w, https://vignette.wikia.nocookie.net/1fb5ee36-d9ae-4125-96d9-f52eb403f1c9/scale-to-width-down/627 627w, https://vignette.wikia.nocookie.net/1fb5ee36-d9ae-4125-96d9-f52eb403f1c9/scale-to-width-down/800 800w, https://vignette.wikia.nocookie.net/1fb5ee36-d9ae-4125-96d9-f52eb403f1c9/scale-to-width-down/1200 1200w" sizes="(max-width: 840px) 100vw, (max-width: 1064px) calc(100vw - 300px), 627px"></a>
</p>
- <p>Admittedly, the differences between the original trilogy’s unaltered cuts and the Special Editions appeal to more hardcore fans. Casual fans are less likely to care about whether <a data-is="trackable" href="http://starwars.wikia.com/wiki/Greedo" riot-tag="trackable">Greedo</a> or <a data-is="trackable" href="http://starwars.wikia.com/wiki/Han_Solo" riot-tag="trackable">Han Solo</a> shot first. Still, given Star Wars’ indelible impact on pop culture, there’s certainly a market for the original trilogy’s unaltered cuts. They might not be for every Star Wars fan, but many of us care about them.</p>
- <p>ILM supervisor <a data-is="trackable" href="http://starwars.wikia.com/wiki/John_Knoll" riot-tag="trackable">John Knoll</a>, who first pitched the <a data-is="trackable" href="http://fandom.wikia.com/videos/john-knoll-important-rogue-one" riot-tag="trackable">story idea</a> for <a data-is="trackable" href="http://starwars.wikia.com/wiki/Rogue_One:_A_Star_Wars_Story" riot-tag="trackable"><em>Rogue One</em></a>, said <a data-is="trackable" href="http://lwlies.com/interviews/gareth-edwards-rogue-one-a-star-wars-story/" riot-tag="trackable">last year</a> that ILM finished a brand new 4K restoration print of <em>A New Hope</em>. For that reason, it seems likely that Lucasfilm will finally give diehard fans the original film cuts that they’ve clamored for. There’s no word yet whether the unaltered cuts will be released in theaters or on home media. At the very least, however, fans will likely get them after all this time. After all, the Special Editions marked the saga’s 20th anniversary. Star Wars turns 40 years old this year, so there’s no telling what’s in store.</p>
- <hr></hr><p>
+ <p>Admittedly, the differences between the original trilogy’s unaltered cuts and the Special Editions appeal to more hardcore fans. Casual fans are less likely to care about whether <a href="http://starwars.wikia.com/wiki/Greedo" data-is="trackable" riot-tag="trackable">Greedo</a> or <a href="http://starwars.wikia.com/wiki/Han_Solo" data-is="trackable" riot-tag="trackable">Han Solo</a> shot first. Still, given Star Wars’ indelible impact on pop culture, there’s certainly a market for the original trilogy’s unaltered cuts. They might not be for every Star Wars fan, but many of us care about them.</p>
+ <p>ILM supervisor <a href="http://starwars.wikia.com/wiki/John_Knoll" data-is="trackable" riot-tag="trackable">John Knoll</a>, who first pitched the <a href="http://fandom.wikia.com/videos/john-knoll-important-rogue-one" data-is="trackable" riot-tag="trackable">story idea</a> for <a href="http://starwars.wikia.com/wiki/Rogue_One:_A_Star_Wars_Story" data-is="trackable" riot-tag="trackable"><em>Rogue One</em></a>, said <a href="http://lwlies.com/interviews/gareth-edwards-rogue-one-a-star-wars-story/" data-is="trackable" riot-tag="trackable">last year</a> that ILM finished a brand new 4K restoration print of <em>A New Hope</em>. For that reason, it seems likely that Lucasfilm will finally give diehard fans the original film cuts that they’ve clamored for. There’s no word yet whether the unaltered cuts will be released in theaters or on home media. At the very least, however, fans will likely get them after all this time. After all, the Special Editions marked the saga’s 20th anniversary. Star Wars turns 40 years old this year, so there’s no telling what’s in store.</p>
+ <hr>
+ <p>
<em>
- Would you like to be part of the Fandom team? <a data-is="trackable" href="http://fandom.wikia.com/fan-contributor" riot-tag="trackable">Join our Fan Contributor Program</a> and share your voice on <a data-is="trackable" href="http://fandom.wikia.com" riot-tag="trackable">Fandom.com</a>! </em>
+ Would you like to be part of the Fandom team? <a href="http://fandom.wikia.com/fan-contributor" data-is="trackable" riot-tag="trackable">Join our Fan Contributor Program</a> and share your voice on <a href="http://fandom.wikia.com" data-is="trackable" riot-tag="trackable">Fandom.com</a>! </em>
</p>
diff --git a/test/test-pages/wikipedia/expected.html b/test/test-pages/wikipedia/expected.html
index 8de3ffa..e01333d 100644
--- a/test/test-pages/wikipedia/expected.html
+++ b/test/test-pages/wikipedia/expected.html
@@ -1,4 +1,5 @@
-<div dir="ltr" id="mw-content-text" lang="en">
+<div id="mw-content-text" lang="en" dir="ltr">
+
<p><b>Mozilla</b> is a <a href="http://fakehost/wiki/Free_software" title="Free software">free-software</a> community, created in 1998 by members of <a href="http://fakehost/wiki/Netscape" title="Netscape">Netscape</a>. The Mozilla community uses, develops, spreads and supports Mozilla products, thereby promoting exclusively free software and open standards, with only minor exceptions.<sup id="cite_ref-1"><a href="#cite_note-1">[1]</a></sup> The community is supported institutionally by the <a href="http://fakehost/wiki/Mozilla_Foundation" title="Mozilla Foundation">Mozilla Foundation</a> and its tax-paying subsidiary, the <a href="http://fakehost/wiki/Mozilla_Corporation" title="Mozilla Corporation">Mozilla Corporation</a>.<sup id="cite_ref-2"><a href="#cite_note-2">[2]</a></sup></p>
<p><a href="http://fakehost/wiki/List_of_Mozilla_products" title="List of Mozilla products">Mozilla produces many products</a> such as the <a href="http://fakehost/wiki/Firefox" title="Firefox">Firefox</a> web browser, <a href="http://fakehost/wiki/Mozilla_Thunderbird" title="Mozilla Thunderbird">Thunderbird</a> e-mail client, <a href="http://fakehost/wiki/Firefox_Mobile" title="Firefox Mobile">Firefox Mobile</a> web browser, <a href="http://fakehost/wiki/Firefox_OS" title="Firefox OS">Firefox OS</a> mobile operating system, <a href="http://fakehost/wiki/Bugzilla" title="Bugzilla">Bugzilla</a> bug tracking system and other projects.</p>
@@ -10,8 +11,8 @@
<p>On January 23, 1998, Netscape made two announcements: first, that <a href="http://fakehost/wiki/Netscape_Communicator" title="Netscape Communicator">Netscape Communicator</a> will be free; second, that the source code will also be free.<sup id="cite_ref-3"><a href="#cite_note-3">[3]</a></sup> One day later, <a href="http://fakehost/wiki/Jamie_Zawinski" title="Jamie Zawinski">Jamie Zawinski</a> from Netscape registered <span>mozilla.org</span>.<sup id="cite_ref-4"><a href="#cite_note-4">[4]</a></sup> The project was named Mozilla after the original code name of the <a href="http://fakehost/wiki/Netscape_Navigator" title="Netscape Navigator">Netscape Navigator</a> browser which is a blending of "<a href="http://fakehost/wiki/Mosaic_(web_browser)" title="Mosaic (web browser)">Mosaic</a> and <a href="http://fakehost/wiki/Godzilla" title="Godzilla">Godzilla</a>"<sup id="cite_ref-google_5-0"><a href="#cite_note-google-5">[5]</a></sup> and used to co-ordinate the development of the <a href="http://fakehost/wiki/Mozilla_Application_Suite" title="Mozilla Application Suite">Mozilla Application Suite</a>, the <a href="http://fakehost/wiki/Open_source" title="Open source">open source</a> version of Netscape's internet software, <a href="http://fakehost/wiki/Netscape_Communicator" title="Netscape Communicator">Netscape Communicator</a>.<sup id="cite_ref-Mozilla_Launch_Announcement_6-0"><a href="#cite_note-Mozilla_Launch_Announcement-6">[6]</a></sup><sup id="cite_ref-7"><a href="#cite_note-7">[7]</a></sup> Jamie Zawinski says he came up with the name "Mozilla" at a Netscape staff meeting.<sup id="cite_ref-8"><a href="#cite_note-8">[8]</a></sup><sup id="cite_ref-9"><a href="#cite_note-9">[9]</a></sup> A small group of Netscape employees were tasked with coordination of the new community.</p>
<p>Originally, Mozilla aimed to be a technology provider for companies, such as Netscape, who would commercialize their open source code.<sup id="cite_ref-10"><a href="#cite_note-10">[10]</a></sup> When <a href="http://fakehost/wiki/AOL" title="AOL">AOL</a> (Netscape's parent company) greatly reduced its involvement with Mozilla in July 2003, the <a href="http://fakehost/wiki/Mozilla_Foundation" title="Mozilla Foundation">Mozilla Foundation</a> was designated the legal steward of the project.<sup id="cite_ref-11"><a href="#cite_note-11">[11]</a></sup> Soon after, Mozilla deprecated the Mozilla Suite in favor of creating independent applications for each function, primarily the <a href="http://fakehost/wiki/Firefox" title="Firefox">Firefox</a> web browser and the <a href="http://fakehost/wiki/Mozilla_Thunderbird" title="Mozilla Thunderbird">Thunderbird</a> email client, and moved to supply them directly to the public.<sup id="cite_ref-12"><a href="#cite_note-12">[12]</a></sup></p>
<p>Recently, Mozilla's activities have expanded to include Firefox on mobile platforms (primarily <a href="http://fakehost/wiki/Android_(operating_system)" title="Android (operating system)">Android</a>),<sup id="cite_ref-13"><a href="#cite_note-13">[13]</a></sup> a mobile OS called <a href="http://fakehost/wiki/Firefox_OS" title="Firefox OS">Firefox OS</a>,<sup id="cite_ref-14"><a href="#cite_note-14">[14]</a></sup> a web-based identity system called <a href="http://fakehost/wiki/Mozilla_Persona" title="Mozilla Persona">Mozilla Persona</a> and a marketplace for HTML5 applications.<sup id="cite_ref-15"><a href="#cite_note-15">[15]</a></sup></p>
- <p>In a report released in November 2012, Mozilla reported that their total revenue for 2011 was $163 million, which was up 33% from $123 million in 2010. Mozilla noted that roughly 85% of their revenue comes from their contract with Google.<sup id="cite_ref-16"><a href="#cite_note-16">[16]</a></sup></p>
- <p>At the end of 2013, Mozilla announced a deal with <a href="http://fakehost/wiki/Cisco_Systems" title="Cisco Systems">Cisco Systems</a> whereby Firefox would download and use a Cisco-provided binary build of an open source<sup id="cite_ref-github_17-0"><a href="#cite_note-github-17">[17]</a></sup><a href="http://fakehost/wiki/Codec" title="Codec">codec</a> to play the <a href="http://fakehost/wiki/Proprietary_format" title="Proprietary format">proprietary</a> <a href="http://fakehost/wiki/H.264" title="H.264">H.264</a> video format.<sup id="cite_ref-gigaom_18-0"><a href="#cite_note-gigaom-18">[18]</a></sup><sup id="cite_ref-techrepublic_19-0"><a href="#cite_note-techrepublic-19">[19]</a></sup> As part of the deal, Cisco would pay any patent licensing fees associated with the binaries that it distributes. Mozilla's CTO, <a href="http://fakehost/wiki/Brendan_Eich" title="Brendan Eich">Brendan Eich</a>, acknowledged that this is "not a complete solution" and isn't "perfect".<sup id="cite_ref-20"><a href="#cite_note-20">[20]</a></sup> An employee in Mozilla's video formats team, writing in an unofficial capacity, justified<sup id="cite_ref-21"><a href="#cite_note-21">[21]</a></sup> it by the need to maintain their large user base, which would be necessary in future battles for truly free video formats.</p>
+ <p>In a report released in November 2012, Mozilla reported that their total revenue for 2011 was $163&nbsp;million, which was up 33% from $123&nbsp;million in 2010. Mozilla noted that roughly 85% of their revenue comes from their contract with Google.<sup id="cite_ref-16"><a href="#cite_note-16">[16]</a></sup></p>
+ <p>At the end of 2013, Mozilla announced a deal with <a href="http://fakehost/wiki/Cisco_Systems" title="Cisco Systems">Cisco Systems</a> whereby Firefox would download and use a Cisco-provided binary build of an open source<sup id="cite_ref-github_17-0"><a href="#cite_note-github-17">[17]</a></sup> <a href="http://fakehost/wiki/Codec" title="Codec">codec</a> to play the <a href="http://fakehost/wiki/Proprietary_format" title="Proprietary format">proprietary</a> <a href="http://fakehost/wiki/H.264" title="H.264">H.264</a> video format.<sup id="cite_ref-gigaom_18-0"><a href="#cite_note-gigaom-18">[18]</a></sup><sup id="cite_ref-techrepublic_19-0"><a href="#cite_note-techrepublic-19">[19]</a></sup> As part of the deal, Cisco would pay any patent licensing fees associated with the binaries that it distributes. Mozilla's CTO, <a href="http://fakehost/wiki/Brendan_Eich" title="Brendan Eich">Brendan Eich</a>, acknowledged that this is "not a complete solution" and isn't "perfect".<sup id="cite_ref-20"><a href="#cite_note-20">[20]</a></sup> An employee in Mozilla's video formats team, writing in an unofficial capacity, justified<sup id="cite_ref-21"><a href="#cite_note-21">[21]</a></sup> it by the need to maintain their large user base, which would be necessary in future battles for truly free video formats.</p>
<p>In December 2013, Mozilla announced funding for the development of non-<a href="http://fakehost/wiki/Free_software" title="Free software">free</a> games<sup id="cite_ref-22"><a href="#cite_note-22">[22]</a></sup> through its Game Creator Challenge. However, even those games that may be released under a non-free software or open source license must be made with open web technologies and Javascript as per the work criteria outlined in the announcement.</p>
<h3><span id="Eich_CEO_promotion_controversy">Eich CEO promotion controversy</span><span><span>[</span><a href="http://fakehost/w/index.php?title=Mozilla&amp;action=edit&amp;section=2" title="Edit section: Eich CEO promotion controversy">edit</a><span>]</span></span>
</h3>
@@ -28,17 +29,19 @@
<p>According to the Mozilla Foundation:<sup id="cite_ref-41"><a href="#cite_note-41">[41]</a></sup></p>
<blockquote>
<p>The Mozilla Foundation pledges to support the Mozilla Manifesto in its activities. Specifically, we will:</p>
- <ul><li>Build and enable open-source technologies and communities that support the Manifesto’s principles;</li>
+ <ul>
+ <li>Build and enable open-source technologies and communities that support the Manifesto’s principles;</li>
<li>Build and deliver great consumer products that support the Manifesto’s principles;</li>
<li>Use the Mozilla assets (intellectual property such as copyrights and trademarks, infrastructure, funds, and reputation) to keep the Internet an open platform;</li>
<li>Promote models for creating economic value for the public benefit; and</li>
<li>Promote the Mozilla Manifesto principles in public discourse and within the Internet industry.</li>
- </ul></blockquote>
+ </ul>
+ </blockquote>
<h2><span id="Software">Software</span><span><span>[</span><a href="http://fakehost/w/index.php?title=Mozilla&amp;action=edit&amp;section=5" title="Edit section: Software">edit</a><span>]</span></span>
</h2>
<div>
<div>
- <p><a href="http://fakehost/wiki/File:Mozilla_Firefox_logo_2013.svg"><img alt="" data-file-height="373" data-file-width="352" height="233" src="http://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Mozilla_Firefox_logo_2013.svg/220px-Mozilla_Firefox_logo_2013.svg.png" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/7/76/Mozilla_Firefox_logo_2013.svg/330px-Mozilla_Firefox_logo_2013.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/7/76/Mozilla_Firefox_logo_2013.svg/440px-Mozilla_Firefox_logo_2013.svg.png 2x" width="220"></img></a></p>
+ <p><a href="http://fakehost/wiki/File:Mozilla_Firefox_logo_2013.svg"><img alt src="http://upload.wikimedia.org/wikipedia/commons/thumb/7/76/Mozilla_Firefox_logo_2013.svg/220px-Mozilla_Firefox_logo_2013.svg.png" width="220" height="233" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/7/76/Mozilla_Firefox_logo_2013.svg/330px-Mozilla_Firefox_logo_2013.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/7/76/Mozilla_Firefox_logo_2013.svg/440px-Mozilla_Firefox_logo_2013.svg.png 2x" data-file-width="352" data-file-height="373"></a></p>
</div>
</div>
<h3><span id="Firefox">Firefox</span><span><span>[</span><a href="http://fakehost/w/index.php?title=Mozilla&amp;action=edit&amp;section=6" title="Edit section: Firefox">edit</a><span>]</span></span>
@@ -52,7 +55,7 @@
<p>Firefox Mobile (codenamed <i>Fennec</i>) is the build of the <a href="http://fakehost/wiki/Firefox" title="Firefox">Mozilla Firefox</a> <a href="http://fakehost/wiki/Web_browser" title="Web browser">web browser</a> for devices such as <a href="http://fakehost/wiki/Smartphone" title="Smartphone">smartphones</a> and <a href="http://fakehost/wiki/Tablet_computer" title="Tablet computer">tablet computers</a>.</p>
<p>Firefox Mobile uses the same <a href="http://fakehost/wiki/Gecko_(layout_engine)" title="Gecko (layout engine)">Gecko</a> <a href="http://fakehost/wiki/Layout_engine" title="Layout engine">layout engine</a> as <a href="http://fakehost/wiki/Firefox" title="Firefox">Mozilla Firefox</a>. For example, version 1.0 used the same engine as Firefox 3.6, and the following release, 4.0, shared core code with Firefox 4.0. Its features include <a href="http://fakehost/wiki/HTML5" title="HTML5">HTML5</a> support, <a href="http://fakehost/wiki/Firefox_Sync" title="Firefox Sync">Firefox Sync</a>, <a href="http://fakehost/wiki/Add-on_(Mozilla)" title="Add-on (Mozilla)">add-ons</a> support and <a href="http://fakehost/wiki/Tabbed_browsing" title="Tabbed browsing">tabbed browsing</a>.<sup id="cite_ref-50"><a href="#cite_note-50">[50]</a></sup></p>
- <p>Firefox Mobile is currently available for <a href="http://fakehost/wiki/Android_(operating_system)" title="Android (operating system)">Android</a> 2.2 and above devices with an <a href="http://fakehost/wiki/ARM_architecture" title="ARM architecture">ARMv7</a> or <a href="http://fakehost/wiki/ARM_architecture" title="ARM architecture">ARMv6</a> CPU.<sup id="cite_ref-51"><a href="#cite_note-51">[51]</a></sup> The x86 architecture is not officially supported.<sup id="cite_ref-52"><a href="#cite_note-52">[52]</a></sup><a href="http://fakehost/wiki/Tristan_Nitot" title="Tristan Nitot">Tristan Nitot</a>, president of <a href="http://fakehost/wiki/Mozilla_Europe" title="Mozilla Europe">Mozilla Europe</a>, has said that it's unlikely that an <a href="http://fakehost/wiki/IPhone" title="IPhone">iPhone</a> or a <a href="http://fakehost/wiki/BlackBerry" title="BlackBerry">BlackBerry</a> version will be released, citing <a href="http://fakehost/wiki/Apple_Inc" title="Apple Inc">Apple's</a> iTunes Store application approval policies (which forbid applications competing with Apple's own, and forbid engines which run downloaded code) and BlackBerry's limited operating system as the reasons.<sup id="cite_ref-53"><a href="#cite_note-53">[53]</a></sup></p>
+ <p>Firefox Mobile is currently available for <a href="http://fakehost/wiki/Android_(operating_system)" title="Android (operating system)">Android</a> 2.2 and above devices with an <a href="http://fakehost/wiki/ARM_architecture" title="ARM architecture">ARMv7</a> or <a href="http://fakehost/wiki/ARM_architecture" title="ARM architecture">ARMv6</a> CPU.<sup id="cite_ref-51"><a href="#cite_note-51">[51]</a></sup> The x86 architecture is not officially supported.<sup id="cite_ref-52"><a href="#cite_note-52">[52]</a></sup> <a href="http://fakehost/wiki/Tristan_Nitot" title="Tristan Nitot">Tristan Nitot</a>, president of <a href="http://fakehost/wiki/Mozilla_Europe" title="Mozilla Europe">Mozilla Europe</a>, has said that it's unlikely that an <a href="http://fakehost/wiki/IPhone" title="IPhone">iPhone</a> or a <a href="http://fakehost/wiki/BlackBerry" title="BlackBerry">BlackBerry</a> version will be released, citing <a href="http://fakehost/wiki/Apple_Inc" title="Apple Inc">Apple's</a> iTunes Store application approval policies (which forbid applications competing with Apple's own, and forbid engines which run downloaded code) and BlackBerry's limited operating system as the reasons.<sup id="cite_ref-53"><a href="#cite_note-53">[53]</a></sup></p>
<h3><span id="Firefox_OS">Firefox OS</span><span><span>[</span><a href="http://fakehost/w/index.php?title=Mozilla&amp;action=edit&amp;section=8" title="Edit section: Firefox OS">edit</a><span>]</span></span>
</h3>
@@ -68,7 +71,7 @@
<div>
<div>
- <p><a href="http://fakehost/wiki/File:SeaMonkey.png"><img alt="" data-file-height="128" data-file-width="128" height="128" src="http://upload.wikimedia.org/wikipedia/commons/0/0d/SeaMonkey.png" width="128"></img></a></p>
+ <p><a href="http://fakehost/wiki/File:SeaMonkey.png"><img alt src="http://upload.wikimedia.org/wikipedia/commons/0/0d/SeaMonkey.png" width="128" height="128" data-file-width="128" data-file-height="128"></a></p>
</div>
</div>
<p><a href="http://fakehost/wiki/SeaMonkey" title="SeaMonkey">SeaMonkey</a> (formerly the Mozilla Application Suite) is a free and open source cross platform suite of Internet software components including a web browser component, a client for sending and receiving email and <a href="http://fakehost/wiki/USENET" title="USENET">USENET</a> newsgroup messages, an HTML editor (<a href="http://fakehost/wiki/Mozilla_Composer" title="Mozilla Composer">Mozilla Composer</a>) and the <a href="http://fakehost/wiki/ChatZilla" title="ChatZilla">ChatZilla</a> IRC client.</p>
@@ -79,7 +82,7 @@
<div>
<div>
- <p><a href="http://fakehost/wiki/File:Buggie.svg"><img alt="" data-file-height="125" data-file-width="95" height="289" src="http://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Buggie.svg/220px-Buggie.svg.png" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Buggie.svg/330px-Buggie.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Buggie.svg/440px-Buggie.svg.png 2x" width="220"></img></a></p>
+ <p><a href="http://fakehost/wiki/File:Buggie.svg"><img alt src="http://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Buggie.svg/220px-Buggie.svg.png" width="220" height="289" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Buggie.svg/330px-Buggie.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Buggie.svg/440px-Buggie.svg.png 2x" data-file-width="95" data-file-height="125"></a></p>
</div>
</div>
<p><a href="http://fakehost/wiki/Bugzilla" title="Bugzilla">Bugzilla</a> is a <a href="http://fakehost/wiki/World_Wide_Web" title="World Wide Web">web</a>-based general-purpose <a href="http://fakehost/wiki/Bug_tracking_system" title="Bug tracking system">bug tracking system</a>, which was released as <a href="http://fakehost/wiki/Open_source_software" title="Open source software">open source software</a> by <a href="http://fakehost/wiki/Netscape_Communications" title="Netscape Communications">Netscape Communications</a> in 1998 along with the rest of the Mozilla codebase, and is currently stewarded by Mozilla. It has been adopted by a variety of organizations for use as a <a href="http://fakehost/wiki/Bug_tracking_system" title="Bug tracking system">bug tracking system</a> for both <a href="http://fakehost/wiki/Free_and_open_source_software" title="Free and open source software">free and open source software</a> and <a href="http://fakehost/wiki/Proprietary_software" title="Proprietary software">proprietary</a> projects and products, including the <a href="http://fakehost/wiki/The_Mozilla_Foundation" title="The Mozilla Foundation">Mozilla Foundation</a>, the <a href="http://fakehost/wiki/Linux_kernel" title="Linux kernel">Linux kernel</a>, <a href="http://fakehost/wiki/GNOME" title="GNOME">GNOME</a>, <a href="http://fakehost/wiki/KDE" title="KDE">KDE</a>, <a href="http://fakehost/wiki/Red_Hat" title="Red Hat">Red Hat</a>, <a href="http://fakehost/wiki/Novell" title="Novell">Novell</a>, <a href="http://fakehost/wiki/Eclipse_(software)" title="Eclipse (software)">Eclipse</a> and <a href="http://fakehost/wiki/LibreOffice" title="LibreOffice">LibreOffice</a>.<sup id="cite_ref-59"><a href="#cite_note-59">[59]</a></sup></p>
@@ -148,7 +151,7 @@
</h3>
<div>
<div>
- <p><a href="http://fakehost/wiki/File:London_Mozilla_Workspace.jpg"><img alt="" data-file-height="1656" data-file-width="2500" height="146" src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/London_Mozilla_Workspace.jpg/220px-London_Mozilla_Workspace.jpg" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/2/2a/London_Mozilla_Workspace.jpg/330px-London_Mozilla_Workspace.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/2/2a/London_Mozilla_Workspace.jpg/440px-London_Mozilla_Workspace.jpg 2x" width="220"></img></a></p>
+ <p><a href="http://fakehost/wiki/File:London_Mozilla_Workspace.jpg"><img alt src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/London_Mozilla_Workspace.jpg/220px-London_Mozilla_Workspace.jpg" width="220" height="146" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/2/2a/London_Mozilla_Workspace.jpg/330px-London_Mozilla_Workspace.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/2/2a/London_Mozilla_Workspace.jpg/440px-London_Mozilla_Workspace.jpg 2x" data-file-width="2500" data-file-height="1656"></a></p>
</div>
</div>
<p>There are a number of sub-communities that exist based on their geographical locations, where contributors near each other work together on particular activities, such as localization, marketing, PR and user support.</p>
@@ -156,25 +159,27 @@
</h3>
<div>
<div>
- <p><a href="http://fakehost/wiki/File:Mozilla_Reps.png"><img alt="" data-file-height="183" data-file-width="400" height="101" src="http://upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Mozilla_Reps.png/220px-Mozilla_Reps.png" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Mozilla_Reps.png/330px-Mozilla_Reps.png 1.5x, //upload.wikimedia.org/wikipedia/commons/0/0b/Mozilla_Reps.png 2x" width="220"></img></a></p>
+ <p><a href="http://fakehost/wiki/File:Mozilla_Reps.png"><img alt src="http://upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Mozilla_Reps.png/220px-Mozilla_Reps.png" width="220" height="101" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Mozilla_Reps.png/330px-Mozilla_Reps.png 1.5x, //upload.wikimedia.org/wikipedia/commons/0/0b/Mozilla_Reps.png 2x" data-file-width="400" data-file-height="183"></a></p>
</div>
</div>
<p>The Mozilla Reps program aims to empower and support volunteer Mozillians who want to become official representatives of Mozilla in their region/locale.</p>
<p>The program provides a simple framework and a specific set of tools to help Mozillians to organize and/or attend events, recruit and mentor new contributors, document and share activities, and support their local communities better.</p>
<p>When joining the program, a Mozilla Rep agrees to take on the following responsibilities:</p>
- <ul><li>Represent Mozilla in their country/region</li>
+ <ul>
+ <li>Represent Mozilla in their country/region</li>
<li>Promote the Mozilla Project and its mission</li>
<li>Build on and support existing/future local community efforts and programs</li>
<li>Inspire, recruit and support new contributors</li>
<li>Support and mentor future Mozilla Reps</li>
<li>Document clearly all their activities</li>
- </ul><h3><span id="Conferences_and_events">Conferences and events</span><span><span>[</span><a href="http://fakehost/w/index.php?title=Mozilla&amp;action=edit&amp;section=30" title="Edit section: Conferences and events">edit</a><span>]</span></span>
+ </ul>
+ <h3><span id="Conferences_and_events">Conferences and events</span><span><span>[</span><a href="http://fakehost/w/index.php?title=Mozilla&amp;action=edit&amp;section=30" title="Edit section: Conferences and events">edit</a><span>]</span></span>
</h3>
<h4><span id="Mozilla_Festival">Mozilla Festival</span><span><span>[</span><a href="http://fakehost/w/index.php?title=Mozilla&amp;action=edit&amp;section=31" title="Edit section: Mozilla Festival">edit</a><span>]</span></span>
</h4>
<div>
<div>
- <p><a href="http://fakehost/wiki/File:Fireside_Chat,_Knight%27s_Michael_Maness_and_Dan_Sinker_-_Flickr_-_Knight_Foundation.jpg"><img alt="" data-file-height="854" data-file-width="1280" height="147" src="http://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Fireside_Chat%2C_Knight%27s_Michael_Maness_and_Dan_Sinker_-_Flickr_-_Knight_Foundation.jpg/220px-Fireside_Chat%2C_Knight%27s_Michael_Maness_and_Dan_Sinker_-_Flickr_-_Knight_Foundation.jpg" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Fireside_Chat%2C_Knight%27s_Michael_Maness_and_Dan_Sinker_-_Flickr_-_Knight_Foundation.jpg/330px-Fireside_Chat%2C_Knight%27s_Michael_Maness_and_Dan_Sinker_-_Flickr_-_Knight_Foundation.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Fireside_Chat%2C_Knight%27s_Michael_Maness_and_Dan_Sinker_-_Flickr_-_Knight_Foundation.jpg/440px-Fireside_Chat%2C_Knight%27s_Michael_Maness_and_Dan_Sinker_-_Flickr_-_Knight_Foundation.jpg 2x" width="220"></img></a></p><div>
+ <p><a href="http://fakehost/wiki/File:Fireside_Chat,_Knight%27s_Michael_Maness_and_Dan_Sinker_-_Flickr_-_Knight_Foundation.jpg"><img alt src="http://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Fireside_Chat%2C_Knight%27s_Michael_Maness_and_Dan_Sinker_-_Flickr_-_Knight_Foundation.jpg/220px-Fireside_Chat%2C_Knight%27s_Michael_Maness_and_Dan_Sinker_-_Flickr_-_Knight_Foundation.jpg" width="220" height="147" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Fireside_Chat%2C_Knight%27s_Michael_Maness_and_Dan_Sinker_-_Flickr_-_Knight_Foundation.jpg/330px-Fireside_Chat%2C_Knight%27s_Michael_Maness_and_Dan_Sinker_-_Flickr_-_Knight_Foundation.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Fireside_Chat%2C_Knight%27s_Michael_Maness_and_Dan_Sinker_-_Flickr_-_Knight_Foundation.jpg/440px-Fireside_Chat%2C_Knight%27s_Michael_Maness_and_Dan_Sinker_-_Flickr_-_Knight_Foundation.jpg 2x" data-file-width="1280" data-file-height="854"></a></p><div>
<p>
Speakers from the <a href="http://fakehost/wiki/Knight_Foundation" title="Knight Foundation">Knight Foundation</a> discuss the future of news at the 2011 Mozilla Festival in London.</p></div>
</div>
@@ -190,237 +195,247 @@
<h2><span id="See_also">See also</span><span><span>[</span><a href="http://fakehost/w/index.php?title=Mozilla&amp;action=edit&amp;section=34" title="Edit section: See also">edit</a><span>]</span></span>
</h2>
- <ul><li><a href="http://fakehost/wiki/-zilla_(suffix)" title="-zilla (suffix)">-zilla (suffix)</a></li>
+ <ul>
+ <li><a href="http://fakehost/wiki/-zilla_(suffix)" title="-zilla (suffix)">-zilla (suffix)</a></li>
<li><a href="http://fakehost/wiki/Mozilla_(mascot)" title="Mozilla (mascot)">Mozilla (mascot)</a></li>
<li><i><a href="http://fakehost/wiki/The_Book_of_Mozilla" title="The Book of Mozilla">The Book of Mozilla</a></i></li>
<li><a href="http://fakehost/wiki/Timeline_of_web_browsers" title="Timeline of web browsers">Timeline of web browsers</a></li>
- </ul><h2><span id="References">References</span><span><span>[</span><a href="http://fakehost/w/index.php?title=Mozilla&amp;action=edit&amp;section=35" title="Edit section: References">edit</a><span>]</span></span>
+ </ul>
+ <h2><span id="References">References</span><span><span>[</span><a href="http://fakehost/w/index.php?title=Mozilla&amp;action=edit&amp;section=35" title="Edit section: References">edit</a><span>]</span></span>
</h2>
<div>
- <ol><li id="cite_note-1"><span><b><a href="#cite_ref-1">^</a></b></span> <span>For exceptions, see "Values" section below</span></li>
- <li id="cite_note-2"><span><b><a href="#cite_ref-2">^</a></b></span> <span><cite><a href="https://www.mozilla.org/foundation/moco/" rel="nofollow">"About the Mozilla Corporation"</a>. Mozilla Foundation.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=About+the+Mozilla+Corporation&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fwww.mozilla.org%2Ffoundation%2Fmoco%2F&amp;rft.pub=Mozilla+Foundation&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <ol>
+ <li id="cite_note-1"><span><b><a href="#cite_ref-1">^</a></b></span> <span>For exceptions, see "Values" section below</span></li>
+ <li id="cite_note-2"><span><b><a href="#cite_ref-2">^</a></b></span> <span><cite><a rel="nofollow" href="https://www.mozilla.org/foundation/moco/">"About the Mozilla Corporation"</a>. Mozilla Foundation.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=About+the+Mozilla+Corporation&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fwww.mozilla.org%2Ffoundation%2Fmoco%2F&amp;rft.pub=Mozilla+Foundation&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-3"><span><b><a href="#cite_ref-3">^</a></b></span> <span><cite><a href="http://www.oreilly.com/openbook/opensources/book/netrev.html" rel="nofollow">"Freeing the Source: The Story of Mozilla"</a>. <i>Open Sources: Voices from the Open Source Revolution</i><span>. Retrieved <span>2016-05-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Freeing+the+Source%3A+The+Story+of+Mozilla&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.oreilly.com%2Fopenbook%2Fopensources%2Fbook%2Fnetrev.html&amp;rft.jtitle=Open+Sources%3A+Voices+from+the+Open+Source+Revolution&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-3"><span><b><a href="#cite_ref-3">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.oreilly.com/openbook/opensources/book/netrev.html">"Freeing the Source: The Story of Mozilla"</a>. <i>Open Sources: Voices from the Open Source Revolution</i><span>. Retrieved <span>2016-05-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Freeing+the+Source%3A+The+Story+of+Mozilla&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.oreilly.com%2Fopenbook%2Fopensources%2Fbook%2Fnetrev.html&amp;rft.jtitle=Open+Sources%3A+Voices+from+the+Open+Source+Revolution&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-4"><span><b><a href="#cite_ref-4">^</a></b></span> <span><cite><a href="https://whois.domaintools.com/mozilla.org" rel="nofollow">"Mozilla.org WHOIS, DNS, &amp; Domain Info"</a>. <i>DomainTools</i><span>. Retrieved <span>1 May</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Mozilla.org+WHOIS%2C+DNS%2C+%26+Domain+Info&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fwhois.domaintools.com%2Fmozilla.org&amp;rft.jtitle=DomainTools&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-4"><span><b><a href="#cite_ref-4">^</a></b></span> <span><cite><a rel="nofollow" href="https://whois.domaintools.com/mozilla.org">"Mozilla.org WHOIS, DNS, &amp; Domain Info"</a>. <i>DomainTools</i><span>. Retrieved <span>1 May</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Mozilla.org+WHOIS%2C+DNS%2C+%26+Domain+Info&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fwhois.domaintools.com%2Fmozilla.org&amp;rft.jtitle=DomainTools&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-google-5"><span><b><a href="#cite_ref-google_5-0">^</a></b></span> <span><cite>Payment, S. (2007). <a href="http://books.google.co.uk/books?id=zyIvOn7sKCsC" rel="nofollow"><i>Marc Andreessen and Jim Clark: The Founders of Netscape</i></a>. Rosen Publishing Group. <a href="http://fakehost/wiki/International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <a href="http://fakehost/wiki/Special:BookSources/9781404207196" title="Special:BookSources/9781404207196">9781404207196</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.au=Payment%2C+S.&amp;rft.btitle=Marc+Andreessen+and+Jim+Clark%3A+The+Founders+of+Netscape&amp;rft.date=2007&amp;rft.genre=book&amp;rft_id=%2F%2Fbooks.google.co.uk%2Fbooks%3Fid%3DzyIvOn7sKCsC&amp;rft.isbn=9781404207196&amp;rft.pub=Rosen+Publishing+Group&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-google-5"><span><b><a href="#cite_ref-google_5-0">^</a></b></span> <span><cite>Payment, S. (2007). <a rel="nofollow" href="http://books.google.co.uk/books?id=zyIvOn7sKCsC"><i>Marc Andreessen and Jim Clark: The Founders of Netscape</i></a>. Rosen Publishing Group. <a href="http://fakehost/wiki/International_Standard_Book_Number" title="International Standard Book Number">ISBN</a>&nbsp;<a href="http://fakehost/wiki/Special:BookSources/9781404207196" title="Special:BookSources/9781404207196">9781404207196</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.au=Payment%2C+S.&amp;rft.btitle=Marc+Andreessen+and+Jim+Clark%3A+The+Founders+of+Netscape&amp;rft.date=2007&amp;rft.genre=book&amp;rft_id=%2F%2Fbooks.google.co.uk%2Fbooks%3Fid%3DzyIvOn7sKCsC&amp;rft.isbn=9781404207196&amp;rft.pub=Rosen+Publishing+Group&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-Mozilla_Launch_Announcement-6"><span><b><a href="#cite_ref-Mozilla_Launch_Announcement_6-0">^</a></b></span> <span><cite><a href="https://web.archive.org/web/20021004080737/wp.netscape.com/newsref/pr/newsrelease577.html" rel="nofollow">"Netscape Announces mozilla.org, a Dedicated Team and Web Site Supporting Development of Free Client Source Code"</a>. Netscape. Archived from the original on October 4, 2002<span>. Retrieved <span>2012-08-21</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Netscape+Announces+mozilla.org%2C+a+Dedicated+Team+and+Web+Site+Supporting+Development+of+Free+Client+Source+Code&amp;rft.genre=unknown&amp;rft_id=%2F%2Fwp.netscape.com%2Fnewsref%2Fpr%2Fnewsrelease577.html&amp;rft.pub=Netscape&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span> </span>
+ <li id="cite_note-Mozilla_Launch_Announcement-6"><span><b><a href="#cite_ref-Mozilla_Launch_Announcement_6-0">^</a></b></span> <span><cite><a rel="nofollow" href="https://web.archive.org/web/20021004080737/wp.netscape.com/newsref/pr/newsrelease577.html">"Netscape Announces mozilla.org, a Dedicated Team and Web Site Supporting Development of Free Client Source Code"</a>. Netscape. Archived from the original on October 4, 2002<span>. Retrieved <span>2012-08-21</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Netscape+Announces+mozilla.org%2C+a+Dedicated+Team+and+Web+Site+Supporting+Development+of+Free+Client+Source+Code&amp;rft.genre=unknown&amp;rft_id=%2F%2Fwp.netscape.com%2Fnewsref%2Fpr%2Fnewsrelease577.html&amp;rft.pub=Netscape&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span> </span>
</li>
- <li id="cite_note-7"><span><b><a href="#cite_ref-7">^</a></b></span> <span><cite><a href="http://www.highbeam.com/doc/1G1-20453744.html" rel="nofollow">"Mac vendors ponder Netscape gambit."</a>. <i>Macworld</i>. 1 May 1998<span>. Retrieved <span>2012-08-19</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Mac+vendors+ponder+Netscape+gambit.&amp;rft.date=1998-05-01&amp;rft.genre=article&amp;rft_id=http%3A%2F%2Fwww.highbeam.com%2Fdoc%2F1G1-20453744.html&amp;rft.jtitle=Macworld&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-7"><span><b><a href="#cite_ref-7">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.highbeam.com/doc/1G1-20453744.html">"Mac vendors ponder Netscape gambit."</a>. <i>Macworld</i>. 1 May 1998<span>. Retrieved <span>2012-08-19</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Mac+vendors+ponder+Netscape+gambit.&amp;rft.date=1998-05-01&amp;rft.genre=article&amp;rft_id=http%3A%2F%2Fwww.highbeam.com%2Fdoc%2F1G1-20453744.html&amp;rft.jtitle=Macworld&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-8"><span><b><a href="#cite_ref-8">^</a></b></span> <span><cite>Zawinski, Jamie (1996). <a href="http://www.jwz.org/gruntle/nscpdorm.html" rel="nofollow">"nscp dorm"</a><span>. Retrieved <span>2007-10-12</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.aufirst=Jamie&amp;rft.aulast=Zawinski&amp;rft.btitle=nscp+dorm&amp;rft.date=1996&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.jwz.org%2Fgruntle%2Fnscpdorm.html&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-8"><span><b><a href="#cite_ref-8">^</a></b></span> <span><cite>Zawinski, Jamie (1996). <a rel="nofollow" href="http://www.jwz.org/gruntle/nscpdorm.html">"nscp dorm"</a><span>. Retrieved <span>2007-10-12</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.aufirst=Jamie&amp;rft.aulast=Zawinski&amp;rft.btitle=nscp+dorm&amp;rft.date=1996&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.jwz.org%2Fgruntle%2Fnscpdorm.html&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-9"><span><b><a href="#cite_ref-9">^</a></b></span> <span><cite>Dave Titus with assistance from Andrew Wong. <a href="http://www.davetitus.com/mozilla/" rel="nofollow">"How was Mozilla born"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.au=Dave+Titus+with+assistance+from+Andrew+Wong&amp;rft.btitle=How+was+Mozilla+born&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.davetitus.com%2Fmozilla%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-9"><span><b><a href="#cite_ref-9">^</a></b></span> <span><cite>Dave Titus with assistance from Andrew Wong. <a rel="nofollow" href="http://www.davetitus.com/mozilla/">"How was Mozilla born"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.au=Dave+Titus+with+assistance+from+Andrew+Wong&amp;rft.btitle=How+was+Mozilla+born&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.davetitus.com%2Fmozilla%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-10"><span><b><a href="#cite_ref-10">^</a></b></span> <span><cite><a href="http://www-archive.mozilla.org/hacking/coding-introduction.html" rel="nofollow">"Introduction to Mozilla Source Code"</a>. Mozilla<span>. Retrieved <span>2012-08-18</span></span>. <q>However, mozilla.org wants to emphasize that these milestones are being produced for testing purposes only.</q></cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Introduction+to+Mozilla+Source+Code&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww-archive.mozilla.org%2Fhacking%2Fcoding-introduction.html&amp;rft.pub=Mozilla&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-10"><span><b><a href="#cite_ref-10">^</a></b></span> <span><cite><a rel="nofollow" href="http://www-archive.mozilla.org/hacking/coding-introduction.html">"Introduction to Mozilla Source Code"</a>. Mozilla<span>. Retrieved <span>2012-08-18</span></span>. <q>However, mozilla.org wants to emphasize that these milestones are being produced for testing purposes only.</q></cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Introduction+to+Mozilla+Source+Code&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww-archive.mozilla.org%2Fhacking%2Fcoding-introduction.html&amp;rft.pub=Mozilla&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-11"><span><b><a href="#cite_ref-11">^</a></b></span> <span><cite><a href="http://www.mozilla.org/en-US/press/mozilla-foundation.html" rel="nofollow">"mozilla.org Announces Launch of the Mozilla Foundation to Lead Open-Source Browser Efforts"</a><span>. Retrieved <span>2012-08-18</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=mozilla.org+Announces+Launch+of+the+Mozilla+Foundation+to+Lead+Open-Source+Browser+Efforts&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.mozilla.org%2Fen-US%2Fpress%2Fmozilla-foundation.html&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-11"><span><b><a href="#cite_ref-11">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.mozilla.org/en-US/press/mozilla-foundation.html">"mozilla.org Announces Launch of the Mozilla Foundation to Lead Open-Source Browser Efforts"</a><span>. Retrieved <span>2012-08-18</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=mozilla.org+Announces+Launch+of+the+Mozilla+Foundation+to+Lead+Open-Source+Browser+Efforts&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.mozilla.org%2Fen-US%2Fpress%2Fmozilla-foundation.html&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-12"><span><b><a href="#cite_ref-12">^</a></b></span> <span><cite><a href="http://fakehost/wiki/Brendan_Eich" title="Brendan Eich">Eich, Brendan</a>; <a href="http://fakehost/wiki/Dave_Hyatt" title="Dave Hyatt">David Hyatt</a> (April 2, 2003). <a href="http://www-archive.mozilla.org/roadmap/roadmap-02-Apr-2003.html" rel="nofollow">"mozilla development roadmap"</a>. Mozilla<span>. Retrieved <span>2009-08-02</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.au=David+Hyatt&amp;rft.aufirst=Brendan&amp;rft.aulast=Eich&amp;rft.btitle=mozilla+development+roadmap&amp;rft.date=2003-04-02&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww-archive.mozilla.org%2Froadmap%2Froadmap-02-Apr-2003.html&amp;rft.pub=Mozilla&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-12"><span><b><a href="#cite_ref-12">^</a></b></span> <span><cite><a href="http://fakehost/wiki/Brendan_Eich" title="Brendan Eich">Eich, Brendan</a>; <a href="http://fakehost/wiki/Dave_Hyatt" title="Dave Hyatt">David Hyatt</a> (April 2, 2003). <a rel="nofollow" href="http://www-archive.mozilla.org/roadmap/roadmap-02-Apr-2003.html">"mozilla development roadmap"</a>. Mozilla<span>. Retrieved <span>2009-08-02</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.au=David+Hyatt&amp;rft.aufirst=Brendan&amp;rft.aulast=Eich&amp;rft.btitle=mozilla+development+roadmap&amp;rft.date=2003-04-02&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww-archive.mozilla.org%2Froadmap%2Froadmap-02-Apr-2003.html&amp;rft.pub=Mozilla&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-13"><span><b><a href="#cite_ref-13">^</a></b></span> <span><cite><a href="http://allthingsd.com/20120816/better-browsing-on-your-android-smartphone/" rel="nofollow">"Better Browsing on Your Android Smartphone"</a>. AllThingsD<span>. Retrieved <span>2012-08-18</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Better+Browsing+on+Your+Android+Smartphone&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fallthingsd.com%2F20120816%2Fbetter-browsing-on-your-android-smartphone%2F&amp;rft.pub=AllThingsD&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-13"><span><b><a href="#cite_ref-13">^</a></b></span> <span><cite><a rel="nofollow" href="http://allthingsd.com/20120816/better-browsing-on-your-android-smartphone/">"Better Browsing on Your Android Smartphone"</a>. AllThingsD<span>. Retrieved <span>2012-08-18</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Better+Browsing+on+Your+Android+Smartphone&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fallthingsd.com%2F20120816%2Fbetter-browsing-on-your-android-smartphone%2F&amp;rft.pub=AllThingsD&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-14"><span><b><a href="#cite_ref-14">^</a></b></span> <span><cite><a href="http://www.pcmag.com/article2/0,2817,2407468,00.asp" rel="nofollow">"Mozilla Releases Test Version of Firefox OS"</a>. PC Magazine<span>. Retrieved <span>2012-08-18</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Mozilla+Releases+Test+Version+of+Firefox+OS&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.pcmag.com%2Farticle2%2F0%2C2817%2C2407468%2C00.asp&amp;rft.pub=PC+Magazine&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-14"><span><b><a href="#cite_ref-14">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.pcmag.com/article2/0,2817,2407468,00.asp">"Mozilla Releases Test Version of Firefox OS"</a>. PC Magazine<span>. Retrieved <span>2012-08-18</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Mozilla+Releases+Test+Version+of+Firefox+OS&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.pcmag.com%2Farticle2%2F0%2C2817%2C2407468%2C00.asp&amp;rft.pub=PC+Magazine&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-15"><span><b><a href="#cite_ref-15">^</a></b></span> <span><cite><a href="http://www.engadget.com/2012/06/12/mozilla-marketplace-live-web-apps-like-desktop/" rel="nofollow">"Mozilla Marketplace is live, lets you run web apps like desktop programs"</a>. Engadget<span>. Retrieved <span>2012-08-18</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Mozilla+Marketplace+is+live%2C+lets+you+run+web+apps+like+desktop+programs&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.engadget.com%2F2012%2F06%2F12%2Fmozilla-marketplace-live-web-apps-like-desktop%2F&amp;rft.pub=Engadget&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-15"><span><b><a href="#cite_ref-15">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.engadget.com/2012/06/12/mozilla-marketplace-live-web-apps-like-desktop/">"Mozilla Marketplace is live, lets you run web apps like desktop programs"</a>. Engadget<span>. Retrieved <span>2012-08-18</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Mozilla+Marketplace+is+live%2C+lets+you+run+web+apps+like+desktop+programs&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.engadget.com%2F2012%2F06%2F12%2Fmozilla-marketplace-live-web-apps-like-desktop%2F&amp;rft.pub=Engadget&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-16"><span><b><a href="#cite_ref-16">^</a></b></span> <span><cite>Lardinois, Frederic (November 15, 2012). <a href="http://techcrunch.com/2012/11/15/mozilla-releases-annual-report-for-2011-revenue-up-33-to-163m-majority-from-google/" rel="nofollow">"Mozilla Releases Annual Report For 2011: Revenue Up 33% To $163M, Majority From Google"</a>. <i>techcrunch.com</i>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Mozilla+Releases+Annual+Report+For+2011%3A+Revenue+Up+33%25+To+%24163M%2C+Majority+From+Google&amp;rft.aufirst=Frederic&amp;rft.aulast=Lardinois&amp;rft.date=2012-11-15&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Ftechcrunch.com%2F2012%2F11%2F15%2Fmozilla-releases-annual-report-for-2011-revenue-up-33-to-163m-majority-from-google%2F&amp;rft.jtitle=techcrunch.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-16"><span><b><a href="#cite_ref-16">^</a></b></span> <span><cite>Lardinois, Frederic (November 15, 2012). <a rel="nofollow" href="http://techcrunch.com/2012/11/15/mozilla-releases-annual-report-for-2011-revenue-up-33-to-163m-majority-from-google/">"Mozilla Releases Annual Report For 2011: Revenue Up 33% To $163M, Majority From Google"</a>. <i>techcrunch.com</i>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Mozilla+Releases+Annual+Report+For+2011%3A+Revenue+Up+33%25+To+%24163M%2C+Majority+From+Google&amp;rft.aufirst=Frederic&amp;rft.aulast=Lardinois&amp;rft.date=2012-11-15&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Ftechcrunch.com%2F2012%2F11%2F15%2Fmozilla-releases-annual-report-for-2011-revenue-up-33-to-163m-majority-from-google%2F&amp;rft.jtitle=techcrunch.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-github-17"><span><b><a href="#cite_ref-github_17-0">^</a></b></span> <span><cite><a href="https://github.com/cisco/openh264" rel="nofollow">"cisco/openh264 · GitHub"</a>. github.com<span>. Retrieved <span>2014-04-05</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=cisco%2Fopenh264+%B7+GitHub&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fgithub.com%2Fcisco%2Fopenh264&amp;rft.pub=github.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-github-17"><span><b><a href="#cite_ref-github_17-0">^</a></b></span> <span><cite><a rel="nofollow" href="https://github.com/cisco/openh264">"cisco/openh264 · GitHub"</a>. github.com<span>. Retrieved <span>2014-04-05</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=cisco%2Fopenh264+%B7+GitHub&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fgithub.com%2Fcisco%2Fopenh264&amp;rft.pub=github.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-gigaom-18"><span><b><a href="#cite_ref-gigaom_18-0">^</a></b></span> <span><cite><a href="http://gigaom.com/2013/10/30/mozilla-will-add-h-264-to-firefox-as-cisco-makes-eleventh-hour-push-for-webrtcs-future/" rel="nofollow">"Mozilla will add H.264 to Firefox as Cisco makes eleventh-hour push for WebRTC's future — Tech News and Analysis"</a>. gigaom.com<span>. Retrieved <span>2014-04-05</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Mozilla+will+add+H.264+to+Firefox+as+Cisco+makes+eleventh-hour+push+for+WebRTC%99s+future+%26mdash%3B+Tech+News+and+Analysis&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fgigaom.com%2F2013%2F10%2F30%2Fmozilla-will-add-h-264-to-firefox-as-cisco-makes-eleventh-hour-push-for-webrtcs-future%2F&amp;rft.pub=gigaom.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-gigaom-18"><span><b><a href="#cite_ref-gigaom_18-0">^</a></b></span> <span><cite><a rel="nofollow" href="http://gigaom.com/2013/10/30/mozilla-will-add-h-264-to-firefox-as-cisco-makes-eleventh-hour-push-for-webrtcs-future/">"Mozilla will add H.264 to Firefox as Cisco makes eleventh-hour push for WebRTC's future — Tech News and Analysis"</a>. gigaom.com<span>. Retrieved <span>2014-04-05</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Mozilla+will+add+H.264+to+Firefox+as+Cisco+makes+eleventh-hour+push+for+WebRTC%99s+future+%26mdash%3B+Tech+News+and+Analysis&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fgigaom.com%2F2013%2F10%2F30%2Fmozilla-will-add-h-264-to-firefox-as-cisco-makes-eleventh-hour-push-for-webrtcs-future%2F&amp;rft.pub=gigaom.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-techrepublic-19"><span><b><a href="#cite_ref-techrepublic_19-0">^</a></b></span> <span><cite><a href="http://www.techrepublic.com/blog/australian-technology/cisco-to-release-open-source-h264-codec-mozilla-makes-tactical-retreat/" rel="nofollow">"Cisco to release open-source H.264 codec, Mozilla makes tactical retreat - TechRepublic"</a>. techrepublic.com<span>. Retrieved <span>2014-04-05</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Cisco+to+release+open-source+H.264+codec%2C+Mozilla+makes+tactical+retreat+-+TechRepublic&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.techrepublic.com%2Fblog%2Faustralian-technology%2Fcisco-to-release-open-source-h264-codec-mozilla-makes-tactical-retreat%2F&amp;rft.pub=techrepublic.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-techrepublic-19"><span><b><a href="#cite_ref-techrepublic_19-0">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.techrepublic.com/blog/australian-technology/cisco-to-release-open-source-h264-codec-mozilla-makes-tactical-retreat/">"Cisco to release open-source H.264 codec, Mozilla makes tactical retreat - TechRepublic"</a>. techrepublic.com<span>. Retrieved <span>2014-04-05</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Cisco+to+release+open-source+H.264+codec%2C+Mozilla+makes+tactical+retreat+-+TechRepublic&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.techrepublic.com%2Fblog%2Faustralian-technology%2Fcisco-to-release-open-source-h264-codec-mozilla-makes-tactical-retreat%2F&amp;rft.pub=techrepublic.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-20"><span><b><a href="#cite_ref-20">^</a></b></span> <span><cite><a href="https://blog.mozilla.org/blog/2013/10/30/video-interoperability-on-the-web-gets-a-boost-from-ciscos-h-264-codec/" rel="nofollow">"Video Interoperability on the Web Gets a Boost From Cisco's H.264 Codec"</a>. <q>Of course, this is not a not a complete solution. In a perfect world, codecs, like other basic Internet technologies such as TCP/IP, HTTP, and HTML, would be fully open and free</q></cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Video+Interoperability+on+the+Web+Gets+a+Boost+From+Cisco%99s+H.264+Codec&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fblog.mozilla.org%2Fblog%2F2013%2F10%2F30%2Fvideo-interoperability-on-the-web-gets-a-boost-from-ciscos-h-264-codec%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-20"><span><b><a href="#cite_ref-20">^</a></b></span> <span><cite><a rel="nofollow" href="https://blog.mozilla.org/blog/2013/10/30/video-interoperability-on-the-web-gets-a-boost-from-ciscos-h-264-codec/">"Video Interoperability on the Web Gets a Boost From Cisco's H.264 Codec"</a>. <q>Of course, this is not a not a complete solution. In a perfect world, codecs, like other basic Internet technologies such as TCP/IP, HTTP, and HTML, would be fully open and free</q></cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Video+Interoperability+on+the+Web+Gets+a+Boost+From+Cisco%99s+H.264+Codec&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fblog.mozilla.org%2Fblog%2F2013%2F10%2F30%2Fvideo-interoperability-on-the-web-gets-a-boost-from-ciscos-h-264-codec%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-21"><span><b><a href="#cite_ref-21">^</a></b></span> <span><cite><a href="http://xiphmont.livejournal.com/61927.html" rel="nofollow">"Comments on Cisco, Mozilla, and H.264"</a>. <q>By endorsing Cisco's plan, there's no getting around the fact that we've caved on our principles. That said, principles can't replace being in a practical position to make a difference in the future.</q></cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Comments+on+Cisco%2C+Mozilla%2C+and+H.264&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fxiphmont.livejournal.com%2F61927.html&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span> - Christopher Montgomery wrote in a personal capacity but works for Mozilla in their codecs team</span>
+ <li id="cite_note-21"><span><b><a href="#cite_ref-21">^</a></b></span> <span><cite><a rel="nofollow" href="http://xiphmont.livejournal.com/61927.html">"Comments on Cisco, Mozilla, and H.264"</a>. <q>By endorsing Cisco's plan, there's no getting around the fact that we've caved on our principles. That said, principles can't replace being in a practical position to make a difference in the future.</q></cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Comments+on+Cisco%2C+Mozilla%2C+and+H.264&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fxiphmont.livejournal.com%2F61927.html&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span> - Christopher Montgomery wrote in a personal capacity but works for Mozilla in their codecs team</span>
</li>
- <li id="cite_note-22"><span><b><a href="#cite_ref-22">^</a></b></span> <span><cite><a href="https://wiki.mozilla.org/Game_Creator_Challenge_-Contest_Terms_and_Conditions" rel="nofollow">"Game Creator Challenge -Contest Terms and Conditions"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Game+Creator+Challenge+-Contest+Terms+and+Conditions&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fwiki.mozilla.org%2FGame_Creator_Challenge_-Contest_Terms_and_Conditions&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span> - submissions to the "amateur" category have to be released as free software, but not for the other two categories</span>
+ <li id="cite_note-22"><span><b><a href="#cite_ref-22">^</a></b></span> <span><cite><a rel="nofollow" href="https://wiki.mozilla.org/Game_Creator_Challenge_-Contest_Terms_and_Conditions">"Game Creator Challenge -Contest Terms and Conditions"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Game+Creator+Challenge+-Contest+Terms+and+Conditions&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fwiki.mozilla.org%2FGame_Creator_Challenge_-Contest_Terms_and_Conditions&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span> - submissions to the "amateur" category have to be released as free software, but not for the other two categories</span>
</li>
- <li id="cite_note-23"><span><b><a href="#cite_ref-23">^</a></b></span> <span><cite><a href="http://projects.latimes.com/prop8/donation/8930/" rel="nofollow">"Los Angeles Times - Brendan Eich contribution to Proposition 8"</a>. latimes.com<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Los+Angeles+Times+-+Brendan+Eich+contribution+to+Proposition+8&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fprojects.latimes.com%2Fprop8%2Fdonation%2F8930%2F&amp;rft.pub=latimes.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-23"><span><b><a href="#cite_ref-23">^</a></b></span> <span><cite><a rel="nofollow" href="http://projects.latimes.com/prop8/donation/8930/">"Los Angeles Times - Brendan Eich contribution to Proposition 8"</a>. latimes.com<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Los+Angeles+Times+-+Brendan+Eich+contribution+to+Proposition+8&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fprojects.latimes.com%2Fprop8%2Fdonation%2F8930%2F&amp;rft.pub=latimes.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-arstechnica-24"><span><b><a href="#cite_ref-arstechnica_24-0">^</a></b></span> <span><cite><a href="http://arstechnica.com/business/2014/03/gay-firefox-developers-boycott-mozilla-to-protest-ceo-hire/" rel="nofollow">"Gay Firefox developers boycott Mozilla to protest CEO hire [Updated] | Ars Technica"</a>. arstechnica.com<span>. Retrieved <span>2014-04-05</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Gay+Firefox+developers+boycott+Mozilla+to+protest+CEO+hire+%26%2391%3BUpdated%26%2393%3B+%26%23124%3B+Ars+Technica&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Farstechnica.com%2Fbusiness%2F2014%2F03%2Fgay-firefox-developers-boycott-mozilla-to-protest-ceo-hire%2F&amp;rft.pub=arstechnica.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-arstechnica-24"><span><b><a href="#cite_ref-arstechnica_24-0">^</a></b></span> <span><cite><a rel="nofollow" href="http://arstechnica.com/business/2014/03/gay-firefox-developers-boycott-mozilla-to-protest-ceo-hire/">"Gay Firefox developers boycott Mozilla to protest CEO hire [Updated] | Ars Technica"</a>. arstechnica.com<span>. Retrieved <span>2014-04-05</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Gay+Firefox+developers+boycott+Mozilla+to+protest+CEO+hire+%26%2391%3BUpdated%26%2393%3B+%26%23124%3B+Ars+Technica&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Farstechnica.com%2Fbusiness%2F2014%2F03%2Fgay-firefox-developers-boycott-mozilla-to-protest-ceo-hire%2F&amp;rft.pub=arstechnica.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-25"><span><b><a href="#cite_ref-25">^</a></b></span> <span><cite>Kelly Faircloth (9 April 2012). <a href="http://betabeat.com/2012/04/tech-celeb-makes-prop-8-donation-internet-goes-berserk/" rel="nofollow">"Tech Celeb Makes Prop-8 Donation; Internet Goes Berserk"</a>. <i>BetaBeat</i>. BetaBeat<span>. Retrieved <span>2014-04-28</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Tech+Celeb+Makes+Prop-8+Donation%3B+Internet+Goes+Berserk&amp;rft.au=Kelly+Faircloth&amp;rft.date=2012-04-09&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fbetabeat.com%2F2012%2F04%2Ftech-celeb-makes-prop-8-donation-internet-goes-berserk%2F&amp;rft.jtitle=BetaBeat&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-25"><span><b><a href="#cite_ref-25">^</a></b></span> <span><cite>Kelly Faircloth (9 April 2012). <a rel="nofollow" href="http://betabeat.com/2012/04/tech-celeb-makes-prop-8-donation-internet-goes-berserk/">"Tech Celeb Makes Prop-8 Donation; Internet Goes Berserk"</a>. <i>BetaBeat</i>. BetaBeat<span>. Retrieved <span>2014-04-28</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Tech+Celeb+Makes+Prop-8+Donation%3B+Internet+Goes+Berserk&amp;rft.au=Kelly+Faircloth&amp;rft.date=2012-04-09&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fbetabeat.com%2F2012%2F04%2Ftech-celeb-makes-prop-8-donation-internet-goes-berserk%2F&amp;rft.jtitle=BetaBeat&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-26"><span><b><a href="#cite_ref-26">^</a></b></span> <span><cite><a href="http://i.huffpost.com/gen/1710681/thumbs/o-OKC-900.jpg" rel="nofollow">"Screenshot of OkCupid's statement towards Firefox users"</a>. huffingtonpost.com<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Screenshot+of+OkCupid%27s+statement+towards+Firefox+users&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fi.huffpost.com%2Fgen%2F1710681%2Fthumbs%2Fo-OKC-900.jpg&amp;rft.pub=huffingtonpost.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-26"><span><b><a href="#cite_ref-26">^</a></b></span> <span><cite><a rel="nofollow" href="http://i.huffpost.com/gen/1710681/thumbs/o-OKC-900.jpg">"Screenshot of OkCupid's statement towards Firefox users"</a>. huffingtonpost.com<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Screenshot+of+OkCupid%27s+statement+towards+Firefox+users&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fi.huffpost.com%2Fgen%2F1710681%2Fthumbs%2Fo-OKC-900.jpg&amp;rft.pub=huffingtonpost.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-27"><span><b><a href="#cite_ref-27">^</a></b></span> <span><cite><a href="https://blog.mozilla.org/blog/2014/04/05/faq-on-ceo-resignation/" rel="nofollow">"FAQ on CEO Resignation"</a>. <i>The Mozilla Blog</i><span>. Retrieved <span>2015-04-20</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=FAQ+on+CEO+Resignation&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fblog.mozilla.org%2Fblog%2F2014%2F04%2F05%2Ffaq-on-ceo-resignation%2F&amp;rft.jtitle=The+Mozilla+Blog&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-27"><span><b><a href="#cite_ref-27">^</a></b></span> <span><cite><a rel="nofollow" href="https://blog.mozilla.org/blog/2014/04/05/faq-on-ceo-resignation/">"FAQ on CEO Resignation"</a>. <i>The Mozilla Blog</i><span>. Retrieved <span>2015-04-20</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=FAQ+on+CEO+Resignation&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fblog.mozilla.org%2Fblog%2F2014%2F04%2F05%2Ffaq-on-ceo-resignation%2F&amp;rft.jtitle=The+Mozilla+Blog&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-28"><span><b><a href="#cite_ref-28">^</a></b></span> <span><cite>Baker, Mitchell (3 April 2014). <a href="https://blog.mozilla.org/blog/2014/04/03/brendan-eich-steps-down-as-mozilla-ceo/" rel="nofollow">"Brendan Eich Steps Down as Mozilla CEO"</a>. <i>mozilla blog</i>. Mozilla<span>. Retrieved <span>2014-04-04</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Brendan+Eich+Steps+Down+as+Mozilla+CEO&amp;rft.aufirst=Mitchell&amp;rft.aulast=Baker&amp;rft.date=2014-04-03&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fblog.mozilla.org%2Fblog%2F2014%2F04%2F03%2Fbrendan-eich-steps-down-as-mozilla-ceo%2F&amp;rft.jtitle=mozilla+blog&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-28"><span><b><a href="#cite_ref-28">^</a></b></span> <span><cite>Baker, Mitchell (3 April 2014). <a rel="nofollow" href="https://blog.mozilla.org/blog/2014/04/03/brendan-eich-steps-down-as-mozilla-ceo/">"Brendan Eich Steps Down as Mozilla CEO"</a>. <i>mozilla blog</i>. Mozilla<span>. Retrieved <span>2014-04-04</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Brendan+Eich+Steps+Down+as+Mozilla+CEO&amp;rft.aufirst=Mitchell&amp;rft.aulast=Baker&amp;rft.date=2014-04-03&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fblog.mozilla.org%2Fblog%2F2014%2F04%2F03%2Fbrendan-eich-steps-down-as-mozilla-ceo%2F&amp;rft.jtitle=mozilla+blog&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-29"><span><b><a href="#cite_ref-29">^</a></b></span> <span><cite><a href="http://www.opensecrets.org/indivs/search.php?name=Sam+Yagan&amp;cycle=All&amp;sort=R&amp;state=&amp;zip=&amp;employ=&amp;cand=&amp;submit=Submit+Query" rel="nofollow">"opensecrets.org listing of Sam Yagan's contributions to political candidates"</a>. opensecrets.org<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=opensecrets.org+listing+of+Sam+Yagan%27s+contributions+to+political+candidates&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.opensecrets.org%2Findivs%2Fsearch.php%3Fname%3DSam%2BYagan%26cycle%3DAll%26sort%3DR%26state%3D%26zip%3D%26employ%3D%26cand%3D%26submit%3DSubmit%2BQuery&amp;rft.pub=opensecrets.org&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-29"><span><b><a href="#cite_ref-29">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.opensecrets.org/indivs/search.php?name=Sam+Yagan&amp;cycle=All&amp;sort=R&amp;state=&amp;zip=&amp;employ=&amp;cand=&amp;submit=Submit+Query">"opensecrets.org listing of Sam Yagan's contributions to political candidates"</a>. opensecrets.org<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=opensecrets.org+listing+of+Sam+Yagan%27s+contributions+to+political+candidates&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.opensecrets.org%2Findivs%2Fsearch.php%3Fname%3DSam%2BYagan%26cycle%3DAll%26sort%3DR%26state%3D%26zip%3D%26employ%3D%26cand%3D%26submit%3DSubmit%2BQuery&amp;rft.pub=opensecrets.org&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-30"><span><b><a href="#cite_ref-30">^</a></b></span> <span><cite><a href="http://www.ontheissues.org/house/Chris_Cannon.htm#Civil_Rights" rel="nofollow">"ontheissues.org listing of votes cast by Chris Cannon"</a>. ontheissues.org<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=ontheissues.org+listing+of+votes+cast+by+Chris+Cannon&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.ontheissues.org%2Fhouse%2FChris_Cannon.htm%23Civil_Rights&amp;rft.pub=ontheissues.org&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-30"><span><b><a href="#cite_ref-30">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.ontheissues.org/house/Chris_Cannon.htm#Civil_Rights">"ontheissues.org listing of votes cast by Chris Cannon"</a>. ontheissues.org<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=ontheissues.org+listing+of+votes+cast+by+Chris+Cannon&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.ontheissues.org%2Fhouse%2FChris_Cannon.htm%23Civil_Rights&amp;rft.pub=ontheissues.org&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-31"><span><b><a href="#cite_ref-31">^</a></b></span> <span><cite><a href="http://www.ontheissues.org/HouseVote/Party_2005-627.htm" rel="nofollow">"ontheissues.org listing of votes cast on the permanency of the Patriot Act"</a>. ontheissues.org<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=ontheissues.org+listing+of+votes+cast+on+the+permanency+of+the+Patriot+Act&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.ontheissues.org%2FHouseVote%2FParty_2005-627.htm&amp;rft.pub=ontheissues.org&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-31"><span><b><a href="#cite_ref-31">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.ontheissues.org/HouseVote/Party_2005-627.htm">"ontheissues.org listing of votes cast on the permanency of the Patriot Act"</a>. ontheissues.org<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=ontheissues.org+listing+of+votes+cast+on+the+permanency+of+the+Patriot+Act&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.ontheissues.org%2FHouseVote%2FParty_2005-627.htm&amp;rft.pub=ontheissues.org&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-32"><span><b><a href="#cite_ref-32">^</a></b></span> <span><cite><a href="http://www.ontheissues.org/house/Chris_Cannon_Homeland_Security.htm" rel="nofollow">"ontheissues.org: Chris Cannon on Homeland Security"</a>. ontheissues.org<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=ontheissues.org%3A+Chris+Cannon+on+Homeland+Security&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.ontheissues.org%2Fhouse%2FChris_Cannon_Homeland_Security.htm&amp;rft.pub=ontheissues.org&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-32"><span><b><a href="#cite_ref-32">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.ontheissues.org/house/Chris_Cannon_Homeland_Security.htm">"ontheissues.org: Chris Cannon on Homeland Security"</a>. ontheissues.org<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=ontheissues.org%3A+Chris+Cannon+on+Homeland+Security&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.ontheissues.org%2Fhouse%2FChris_Cannon_Homeland_Security.htm&amp;rft.pub=ontheissues.org&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-33"><span><b><a href="#cite_ref-33">^</a></b></span> <span><cite><a href="http://www.ontheissues.org/house/Chris_Cannon_Abortion.htm" rel="nofollow">"ontheissues.org: Chris Cannon on Abortion"</a>. ontheissues.org<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=ontheissues.org%3A+Chris+Cannon+on+Abortion&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.ontheissues.org%2Fhouse%2FChris_Cannon_Abortion.htm&amp;rft.pub=ontheissues.org&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-33"><span><b><a href="#cite_ref-33">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.ontheissues.org/house/Chris_Cannon_Abortion.htm">"ontheissues.org: Chris Cannon on Abortion"</a>. ontheissues.org<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=ontheissues.org%3A+Chris+Cannon+on+Abortion&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.ontheissues.org%2Fhouse%2FChris_Cannon_Abortion.htm&amp;rft.pub=ontheissues.org&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-34"><span><b><a href="#cite_ref-34">^</a></b></span> <span><cite>Levintova, Hannah (7 April 2014). <a href="http://www.motherjones.com/mojo/2014/04/okcupid-ceo-donate-anti-gay-firefox" rel="nofollow">"OkCupid's CEO Donated to an Anti-Gay Campaign Once, Too"</a>. <i>Hanna Levintova article on motherjones.com</i>. motherjones.com<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=OkCupid%27s+CEO+Donated+to+an+Anti-Gay+Campaign+Once%2C+Too&amp;rft.aufirst=Hannah&amp;rft.aulast=Levintova&amp;rft.date=2014-04-07&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.motherjones.com%2Fmojo%2F2014%2F04%2Fokcupid-ceo-donate-anti-gay-firefox&amp;rft.jtitle=Hanna+Levintova+article+on+motherjones.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-34"><span><b><a href="#cite_ref-34">^</a></b></span> <span><cite>Levintova, Hannah (7 April 2014). <a rel="nofollow" href="http://www.motherjones.com/mojo/2014/04/okcupid-ceo-donate-anti-gay-firefox">"OkCupid's CEO Donated to an Anti-Gay Campaign Once, Too"</a>. <i>Hanna Levintova article on motherjones.com</i>. motherjones.com<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=OkCupid%27s+CEO+Donated+to+an+Anti-Gay+Campaign+Once%2C+Too&amp;rft.aufirst=Hannah&amp;rft.aulast=Levintova&amp;rft.date=2014-04-07&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.motherjones.com%2Fmojo%2F2014%2F04%2Fokcupid-ceo-donate-anti-gay-firefox&amp;rft.jtitle=Hanna+Levintova+article+on+motherjones.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-35"><span><b><a href="#cite_ref-35">^</a></b></span> <span><cite>Lee, Stephanie M. (8 April 2014). <a href="http://blog.sfgate.com/techchron/2014/04/08/okcupid-ceo-once-donated-to-anti-gay-politician/" rel="nofollow">"OKCupid CEO once donated to anti-gay politician"</a>. <i>Stephanie M. Lee's blog on sfgate.com</i>. sfgate.com<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=OKCupid+CEO+once+donated+to+anti-gay+politician&amp;rft.aufirst=Stephanie+M.&amp;rft.aulast=Lee&amp;rft.date=2014-04-08&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fblog.sfgate.com%2Ftechchron%2F2014%2F04%2F08%2Fokcupid-ceo-once-donated-to-anti-gay-politician%2F&amp;rft.jtitle=Stephanie+M.+Lee%27s+blog+on+sfgate.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-35"><span><b><a href="#cite_ref-35">^</a></b></span> <span><cite>Lee, Stephanie M. (8 April 2014). <a rel="nofollow" href="http://blog.sfgate.com/techchron/2014/04/08/okcupid-ceo-once-donated-to-anti-gay-politician/">"OKCupid CEO once donated to anti-gay politician"</a>. <i>Stephanie M. Lee's blog on sfgate.com</i>. sfgate.com<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=OKCupid+CEO+once+donated+to+anti-gay+politician&amp;rft.aufirst=Stephanie+M.&amp;rft.aulast=Lee&amp;rft.date=2014-04-08&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fblog.sfgate.com%2Ftechchron%2F2014%2F04%2F08%2Fokcupid-ceo-once-donated-to-anti-gay-politician%2F&amp;rft.jtitle=Stephanie+M.+Lee%27s+blog+on+sfgate.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-uncrunched.com-36"><span>^ <a href="#cite_ref-uncrunched.com_36-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-uncrunched.com_36-1"><sup><i><b>b</b></i></sup></a></span> <span><cite><a href="http://uncrunched.com/2014/04/06/the-hypocrisy-of-sam-yagan-okcupid/" rel="nofollow">"The Hypocrisy Of Sam Yagan &amp; OkCupid"</a>. <i>uncrunched.com blog</i>. uncrunched.com. 6 April 2014<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=The+Hypocrisy+Of+Sam+Yagan+%26+OkCupid&amp;rft.date=2014-04-06&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Funcrunched.com%2F2014%2F04%2F06%2Fthe-hypocrisy-of-sam-yagan-okcupid%2F&amp;rft.jtitle=uncrunched.com+blog&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-uncrunched.com-36"><span>^ <a href="#cite_ref-uncrunched.com_36-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-uncrunched.com_36-1"><sup><i><b>b</b></i></sup></a></span> <span><cite><a rel="nofollow" href="http://uncrunched.com/2014/04/06/the-hypocrisy-of-sam-yagan-okcupid/">"The Hypocrisy Of Sam Yagan &amp; OkCupid"</a>. <i>uncrunched.com blog</i>. uncrunched.com. 6 April 2014<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=The+Hypocrisy+Of+Sam+Yagan+%26+OkCupid&amp;rft.date=2014-04-06&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Funcrunched.com%2F2014%2F04%2F06%2Fthe-hypocrisy-of-sam-yagan-okcupid%2F&amp;rft.jtitle=uncrunched.com+blog&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-37"><span><b><a href="#cite_ref-37">^</a></b></span> <span><cite>Bellware, Kim (31 March 2014). <a href="http://www.huffingtonpost.com/2014/03/31/okcupid-mozilla_n_5065743.html" rel="nofollow">"OKCupid Publicly Rips Mozilla: 'We Wish Them Nothing But Failure<span>'</span>"</a>. <i>Kim Bellware article on huffingtonpost.com</i>. huffingtonpost.com<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=OKCupid+Publicly+Rips+Mozilla%3A+%27We+Wish+Them+Nothing+But+Failure%27&amp;rft.aufirst=Kim&amp;rft.aulast=Bellware&amp;rft.date=2014-03-31&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.huffingtonpost.com%2F2014%2F03%2F31%2Fokcupid-mozilla_n_5065743.html&amp;rft.jtitle=Kim+Bellware+article+on+huffingtonpost.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-37"><span><b><a href="#cite_ref-37">^</a></b></span> <span><cite>Bellware, Kim (31 March 2014). <a rel="nofollow" href="http://www.huffingtonpost.com/2014/03/31/okcupid-mozilla_n_5065743.html">"OKCupid Publicly Rips Mozilla: 'We Wish Them Nothing But Failure<span>'</span>"</a>. <i>Kim Bellware article on huffingtonpost.com</i>. huffingtonpost.com<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=OKCupid+Publicly+Rips+Mozilla%3A+%27We+Wish+Them+Nothing+But+Failure%27&amp;rft.aufirst=Kim&amp;rft.aulast=Bellware&amp;rft.date=2014-03-31&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.huffingtonpost.com%2F2014%2F03%2F31%2Fokcupid-mozilla_n_5065743.html&amp;rft.jtitle=Kim+Bellware+article+on+huffingtonpost.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-38"><span><b><a href="#cite_ref-38">^</a></b></span> <span><cite><a href="http://www.huffingtonpost.com/2014/03/27/mozilla-ceo-prop-8-_n_5042660.html" rel="nofollow">"Mozilla's Appointment Of Brendan Eich As CEO Sparks Controversy After Prop 8 Donation News Re-Emerges"</a>. <i>huffingtonpost.com article</i>. huffingtonpost.com. 27 March 2014<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Mozilla%27s+Appointment+Of+Brendan+Eich+As+CEO+Sparks+Controversy+After+Prop+8+Donation+News+Re-Emerges&amp;rft.date=2014-03-27&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.huffingtonpost.com%2F2014%2F03%2F27%2Fmozilla-ceo-prop-8-_n_5042660.html&amp;rft.jtitle=huffingtonpost.com+article&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-38"><span><b><a href="#cite_ref-38">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.huffingtonpost.com/2014/03/27/mozilla-ceo-prop-8-_n_5042660.html">"Mozilla's Appointment Of Brendan Eich As CEO Sparks Controversy After Prop 8 Donation News Re-Emerges"</a>. <i>huffingtonpost.com article</i>. huffingtonpost.com. 27 March 2014<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Mozilla%27s+Appointment+Of+Brendan+Eich+As+CEO+Sparks+Controversy+After+Prop+8+Donation+News+Re-Emerges&amp;rft.date=2014-03-27&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.huffingtonpost.com%2F2014%2F03%2F27%2Fmozilla-ceo-prop-8-_n_5042660.html&amp;rft.jtitle=huffingtonpost.com+article&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-39"><span><b><a href="#cite_ref-39">^</a></b></span> <span><cite>Eidelson, Josh (4 April 2014). <a href="http://www.salon.com/2014/04/04/okcupids_gay_rights_stunt_has_its_limits_taking_a_deeper_look_at_the_savvy_ploy/" rel="nofollow">"OkCupid's gay rights stunt has its limits: Taking a deeper look at the savvy ploy"</a>. <i>Josh Eidelson article on salon.com</i>. salon.com<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=OkCupid%99s+gay+rights+stunt+has+its+limits%3A+Taking+a+deeper+look+at+the+savvy+ploy&amp;rft.aufirst=Josh&amp;rft.aulast=Eidelson&amp;rft.date=2014-04-04&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.salon.com%2F2014%2F04%2F04%2Fokcupids_gay_rights_stunt_has_its_limits_taking_a_deeper_look_at_the_savvy_ploy%2F&amp;rft.jtitle=Josh+Eidelson+article+on+salon.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-39"><span><b><a href="#cite_ref-39">^</a></b></span> <span><cite>Eidelson, Josh (4 April 2014). <a rel="nofollow" href="http://www.salon.com/2014/04/04/okcupids_gay_rights_stunt_has_its_limits_taking_a_deeper_look_at_the_savvy_ploy/">"OkCupid's gay rights stunt has its limits: Taking a deeper look at the savvy ploy"</a>. <i>Josh Eidelson article on salon.com</i>. salon.com<span>. Retrieved <span>2014-07-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=OkCupid%99s+gay+rights+stunt+has+its+limits%3A+Taking+a+deeper+look+at+the+savvy+ploy&amp;rft.aufirst=Josh&amp;rft.aulast=Eidelson&amp;rft.date=2014-04-04&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.salon.com%2F2014%2F04%2F04%2Fokcupids_gay_rights_stunt_has_its_limits_taking_a_deeper_look_at_the_savvy_ploy%2F&amp;rft.jtitle=Josh+Eidelson+article+on+salon.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-manifesto-40"><span>^ <a href="#cite_ref-manifesto_40-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-manifesto_40-1"><sup><i><b>b</b></i></sup></a></span> <span><cite><a href="http://www.mozilla.org/about/manifesto/" rel="nofollow">"Mozilla Manifesto"</a>. Mozilla.org<span>. Retrieved <span>2012-03-21</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Mozilla+Manifesto&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.mozilla.org%2Fabout%2Fmanifesto%2F&amp;rft.pub=Mozilla.org&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-manifesto-40"><span>^ <a href="#cite_ref-manifesto_40-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-manifesto_40-1"><sup><i><b>b</b></i></sup></a></span> <span><cite><a rel="nofollow" href="http://www.mozilla.org/about/manifesto/">"Mozilla Manifesto"</a>. Mozilla.org<span>. Retrieved <span>2012-03-21</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Mozilla+Manifesto&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.mozilla.org%2Fabout%2Fmanifesto%2F&amp;rft.pub=Mozilla.org&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-41"><span><b><a href="#cite_ref-41">^</a></b></span> <span><cite><a href="https://www.mozilla.org/en-US/about/manifesto/details/" rel="nofollow">"The Mozilla Manifesto"</a><span>. Retrieved <span>24 July</span> 2015</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=The+Mozilla+Manifesto&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fwww.mozilla.org%2Fen-US%2Fabout%2Fmanifesto%2Fdetails%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-41"><span><b><a href="#cite_ref-41">^</a></b></span> <span><cite><a rel="nofollow" href="https://www.mozilla.org/en-US/about/manifesto/details/">"The Mozilla Manifesto"</a><span>. Retrieved <span>24 July</span> 2015</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=The+Mozilla+Manifesto&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fwww.mozilla.org%2Fen-US%2Fabout%2Fmanifesto%2Fdetails%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-42"><span><b><a href="#cite_ref-42">^</a></b></span> <span><cite><a href="https://web.archive.org/web/20101128150117/http://download-firefox.org/spread-firefox/gecko-layout-engine-and-mozilla-firefox/" rel="nofollow">"Gecko Layout Engine"</a>. download-firefox.org. July 17, 2008. Archived from <a href="http://download-firefox.org/spread-firefox/gecko-layout-engine-and-mozilla-firefox/" rel="nofollow">the original</a> on 2010-11-28<span>. Retrieved <span>2012-05-10</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Gecko+Layout+Engine&amp;rft.date=2008-07-17&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fdownload-firefox.org%2Fspread-firefox%2Fgecko-layout-engine-and-mozilla-firefox%2F&amp;rft.pub=download-firefox.org&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-42"><span><b><a href="#cite_ref-42">^</a></b></span> <span><cite><a rel="nofollow" href="https://web.archive.org/web/20101128150117/http://download-firefox.org/spread-firefox/gecko-layout-engine-and-mozilla-firefox/">"Gecko Layout Engine"</a>. download-firefox.org. July 17, 2008. Archived from <a rel="nofollow" href="http://download-firefox.org/spread-firefox/gecko-layout-engine-and-mozilla-firefox/">the original</a> on 2010-11-28<span>. Retrieved <span>2012-05-10</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Gecko+Layout+Engine&amp;rft.date=2008-07-17&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fdownload-firefox.org%2Fspread-firefox%2Fgecko-layout-engine-and-mozilla-firefox%2F&amp;rft.pub=download-firefox.org&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-w3counter1-43"><span><b><a href="#cite_ref-w3counter1_43-0">^</a></b></span> <span><cite><a href="http://www.w3counter.com/trends" rel="nofollow">"Web Browser Market Share Trends"</a>. <i>W3Counter</i>. Awio Web Services LLC<span>. Retrieved <span>2012-05-10</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Web+Browser+Market+Share+Trends&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.w3counter.com%2Ftrends&amp;rft.jtitle=W3Counter&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-w3counter1-43"><span><b><a href="#cite_ref-w3counter1_43-0">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.w3counter.com/trends">"Web Browser Market Share Trends"</a>. <i>W3Counter</i>. Awio Web Services LLC<span>. Retrieved <span>2012-05-10</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Web+Browser+Market+Share+Trends&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.w3counter.com%2Ftrends&amp;rft.jtitle=W3Counter&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-gs.statcounter.com-44"><span><b><a href="#cite_ref-gs.statcounter.com_44-0">^</a></b></span> <span><cite><a href="http://gs.statcounter.com" rel="nofollow">"Top 5 Browsers"</a>. <i>StatCounter Global Stats</i>. StatCounter<span>. Retrieved <span>2012-05-10</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Top+5+Browsers&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fgs.statcounter.com&amp;rft.jtitle=StatCounter+Global+Stats&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-gs.statcounter.com-44"><span><b><a href="#cite_ref-gs.statcounter.com_44-0">^</a></b></span> <span><cite><a rel="nofollow" href="http://gs.statcounter.com">"Top 5 Browsers"</a>. <i>StatCounter Global Stats</i>. StatCounter<span>. Retrieved <span>2012-05-10</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Top+5+Browsers&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fgs.statcounter.com&amp;rft.jtitle=StatCounter+Global+Stats&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-getclicky1-45"><span><b><a href="#cite_ref-getclicky1_45-0">^</a></b></span> <span><cite><a href="http://www.getclicky.com/marketshare/global/web-browsers/" rel="nofollow">"Web browsers (Global marketshare)"</a>. <i>Clicky</i>. Roxr Software Ltd<span>. Retrieved <span>2012-05-10</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Web+browsers+%28Global+marketshare%29&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.getclicky.com%2Fmarketshare%2Fglobal%2Fweb-browsers%2F&amp;rft.jtitle=Clicky&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-getclicky1-45"><span><b><a href="#cite_ref-getclicky1_45-0">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.getclicky.com/marketshare/global/web-browsers/">"Web browsers (Global marketshare)"</a>. <i>Clicky</i>. Roxr Software Ltd<span>. Retrieved <span>2012-05-10</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Web+browsers+%28Global+marketshare%29&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.getclicky.com%2Fmarketshare%2Fglobal%2Fweb-browsers%2F&amp;rft.jtitle=Clicky&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-46"><span><b><a href="#cite_ref-46">^</a></b></span> <span><cite><a href="http://fakehost/wiki/Ben_Goodger" title="Ben Goodger">Goodger, Ben</a> (February 6, 2006). <a href="https://web.archive.org/web/20110623034401/http://weblogs.mozillazine.org/ben/archives/009698.html" rel="nofollow">"Where Did Firefox Come From?"</a>. Inside Firefox. Archived from <a href="http://weblogs.mozillazine.org/ben/archives/009698.html" rel="nofollow">the original</a> on 2011-06-23<span>. Retrieved <span>2012-01-07</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.aufirst=Ben&amp;rft.aulast=Goodger&amp;rft.btitle=Where+Did+Firefox+Come+From%3F&amp;rft.date=2006-02-06&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fweblogs.mozillazine.org%2Fben%2Farchives%2F009698.html&amp;rft.pub=Inside+Firefox&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-46"><span><b><a href="#cite_ref-46">^</a></b></span> <span><cite><a href="http://fakehost/wiki/Ben_Goodger" title="Ben Goodger">Goodger, Ben</a> (February 6, 2006). <a rel="nofollow" href="https://web.archive.org/web/20110623034401/http://weblogs.mozillazine.org/ben/archives/009698.html">"Where Did Firefox Come From?"</a>. Inside Firefox. Archived from <a rel="nofollow" href="http://weblogs.mozillazine.org/ben/archives/009698.html">the original</a> on 2011-06-23<span>. Retrieved <span>2012-01-07</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.aufirst=Ben&amp;rft.aulast=Goodger&amp;rft.btitle=Where+Did+Firefox+Come+From%3F&amp;rft.date=2006-02-06&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fweblogs.mozillazine.org%2Fben%2Farchives%2F009698.html&amp;rft.pub=Inside+Firefox&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-47"><span><b><a href="#cite_ref-47">^</a></b></span> <span><cite><a href="https://web.archive.org/web/20070914035447/http://www.ibphoenix.com/main.nfs?a=ibphoenix&amp;page=ibp_Mozilla0" rel="nofollow">"Mozilla browser becomes Firebird"</a>. IBPhoenix. Archived from <a href="http://www.ibphoenix.com/main.nfs?a=ibphoenix&amp;page=ibp_Mozilla0" rel="nofollow">the original</a> on 2007-09-14<span>. Retrieved <span>2013-06-10</span></span>. <q>We at IBPhoenix think that having a browser and a database with the same name in the same space will confuse the market, especially as browsers and databases are often used in the same applications</q></cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Mozilla+browser+becomes+Firebird&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.ibphoenix.com%2Fmain.nfs%3Fa%3Dibphoenix%26page%3Dibp_Mozilla0&amp;rft.pub=IBPhoenix&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-47"><span><b><a href="#cite_ref-47">^</a></b></span> <span><cite><a rel="nofollow" href="https://web.archive.org/web/20070914035447/http://www.ibphoenix.com/main.nfs?a=ibphoenix&amp;page=ibp_Mozilla0">"Mozilla browser becomes Firebird"</a>. IBPhoenix. Archived from <a rel="nofollow" href="http://www.ibphoenix.com/main.nfs?a=ibphoenix&amp;page=ibp_Mozilla0">the original</a> on 2007-09-14<span>. Retrieved <span>2013-06-10</span></span>. <q>We at IBPhoenix think that having a browser and a database with the same name in the same space will confuse the market, especially as browsers and databases are often used in the same applications</q></cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Mozilla+browser+becomes+Firebird&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.ibphoenix.com%2Fmain.nfs%3Fa%3Dibphoenix%26page%3Dibp_Mozilla0&amp;rft.pub=IBPhoenix&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-48"><span><b><a href="#cite_ref-48">^</a></b></span> <span><cite>Festa, Paul (May 6, 2003). <a href="http://news.cnet.com/2100-1032_3-1000146.html" rel="nofollow">"Mozilla's Firebird gets wings clipped"</a>. <a href="http://fakehost/wiki/CNET_Networks" title="CNET Networks">CNET</a><span>. Retrieved <span>2007-01-30</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.aufirst=Paul&amp;rft.aulast=Festa&amp;rft.btitle=Mozilla%27s+Firebird+gets+wings+clipped&amp;rft.date=2003-05-06&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fnews.cnet.com%2F2100-1032_3-1000146.html&amp;rft.pub=CNET&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-48"><span><b><a href="#cite_ref-48">^</a></b></span> <span><cite>Festa, Paul (May 6, 2003). <a rel="nofollow" href="http://news.cnet.com/2100-1032_3-1000146.html">"Mozilla's Firebird gets wings clipped"</a>. <a href="http://fakehost/wiki/CNET_Networks" title="CNET Networks">CNET</a><span>. Retrieved <span>2007-01-30</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.aufirst=Paul&amp;rft.aulast=Festa&amp;rft.btitle=Mozilla%27s+Firebird+gets+wings+clipped&amp;rft.date=2003-05-06&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fnews.cnet.com%2F2100-1032_3-1000146.html&amp;rft.pub=CNET&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-49"><span><b><a href="#cite_ref-49">^</a></b></span> <span><cite>Festa, Paul (February 9, 2004). <a href="http://news.cnet.com/2100-7344-5156101.html" rel="nofollow">"Mozilla holds 'fire' in naming fight"</a>. CNET News<span>. Retrieved <span>2007-01-24</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.aufirst=Paul&amp;rft.aulast=Festa&amp;rft.btitle=Mozilla+holds+%27fire%27+in+naming+fight&amp;rft.date=2004-02-09&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fnews.cnet.com%2F2100-7344-5156101.html&amp;rft.pub=CNET+News&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-49"><span><b><a href="#cite_ref-49">^</a></b></span> <span><cite>Festa, Paul (February 9, 2004). <a rel="nofollow" href="http://news.cnet.com/2100-7344-5156101.html">"Mozilla holds 'fire' in naming fight"</a>. CNET News<span>. Retrieved <span>2007-01-24</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.aufirst=Paul&amp;rft.aulast=Festa&amp;rft.btitle=Mozilla+holds+%27fire%27+in+naming+fight&amp;rft.date=2004-02-09&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fnews.cnet.com%2F2100-7344-5156101.html&amp;rft.pub=CNET+News&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-50"><span><b><a href="#cite_ref-50">^</a></b></span> <span><cite><a href="http://www.mozilla.org/en-US/firefox/mobile/features/" rel="nofollow">"Mobile features"</a>. Mozilla<span>. Retrieved <span>2012-06-26</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Mobile+features&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.mozilla.org%2Fen-US%2Ffirefox%2Fmobile%2Ffeatures%2F&amp;rft.pub=Mozilla&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-50"><span><b><a href="#cite_ref-50">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.mozilla.org/en-US/firefox/mobile/features/">"Mobile features"</a>. Mozilla<span>. Retrieved <span>2012-06-26</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Mobile+features&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.mozilla.org%2Fen-US%2Ffirefox%2Fmobile%2Ffeatures%2F&amp;rft.pub=Mozilla&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-51"><span><b><a href="#cite_ref-51">^</a></b></span> <span><cite><a href="https://wiki.mozilla.org/Mobile/Platforms/Android#System_Requirements" rel="nofollow">"Mobile System Requirements"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Mobile+System+Requirements&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fwiki.mozilla.org%2FMobile%2FPlatforms%2FAndroid%23System_Requirements&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-51"><span><b><a href="#cite_ref-51">^</a></b></span> <span><cite><a rel="nofollow" href="https://wiki.mozilla.org/Mobile/Platforms/Android#System_Requirements">"Mobile System Requirements"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Mobile+System+Requirements&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fwiki.mozilla.org%2FMobile%2FPlatforms%2FAndroid%23System_Requirements&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-52"><span><b><a href="#cite_ref-52">^</a></b></span> <span><cite><a href="https://support.mozilla.org/en-US/kb/will-firefox-work-my-mobile-device" rel="nofollow">"Firefox Mobile supported devices"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Firefox+Mobile+supported+devices&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fsupport.mozilla.org%2Fen-US%2Fkb%2Fwill-firefox-work-my-mobile-device&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-52"><span><b><a href="#cite_ref-52">^</a></b></span> <span><cite><a rel="nofollow" href="https://support.mozilla.org/en-US/kb/will-firefox-work-my-mobile-device">"Firefox Mobile supported devices"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Firefox+Mobile+supported+devices&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fsupport.mozilla.org%2Fen-US%2Fkb%2Fwill-firefox-work-my-mobile-device&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-53"><span><b><a href="#cite_ref-53">^</a></b></span> <span><cite><a href="http://www.mirror.co.uk/news/technology/2009/11/09/mozilla-rules-out-firefox-for-iphone-and-blackberry-115875-21809563/" rel="nofollow">"Mozilla rules out Firefox for iPhone and BlackBerry"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Mozilla+rules+out+Firefox+for+iPhone+and+BlackBerry&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.mirror.co.uk%2Fnews%2Ftechnology%2F2009%2F11%2F09%2Fmozilla-rules-out-firefox-for-iphone-and-blackberry-115875-21809563%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-53"><span><b><a href="#cite_ref-53">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.mirror.co.uk/news/technology/2009/11/09/mozilla-rules-out-firefox-for-iphone-and-blackberry-115875-21809563/">"Mozilla rules out Firefox for iPhone and BlackBerry"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Mozilla+rules+out+Firefox+for+iPhone+and+BlackBerry&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.mirror.co.uk%2Fnews%2Ftechnology%2F2009%2F11%2F09%2Fmozilla-rules-out-firefox-for-iphone-and-blackberry-115875-21809563%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-54"><span><b><a href="#cite_ref-54">^</a></b></span> <span><cite><a href="http://www.mozilla.org/firefox/os/" rel="nofollow">"Boot to Gecko Project"</a>. Mozilla. March 2012<span>. Retrieved <span>2012-03-30</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Boot+to+Gecko+Project&amp;rft.date=2012-03&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.mozilla.org%2Ffirefox%2Fos%2F&amp;rft.pub=Mozilla&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-54"><span><b><a href="#cite_ref-54">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.mozilla.org/firefox/os/">"Boot to Gecko Project"</a>. Mozilla. March 2012<span>. Retrieved <span>2012-03-30</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Boot+to+Gecko+Project&amp;rft.date=2012-03&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.mozilla.org%2Ffirefox%2Fos%2F&amp;rft.pub=Mozilla&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-55"><span><b><a href="#cite_ref-55">^</a></b></span> <span><cite><a href="https://www.mozilla.org/en-US/firefox/os/devices/" rel="nofollow">"Firefox OS - Devices &amp; Availability"</a>. <i>Mozilla</i><span>. Retrieved <span>2015-12-30</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Firefox+OS+-+Devices+%26+Availability&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fwww.mozilla.org%2Fen-US%2Ffirefox%2Fos%2Fdevices%2F&amp;rft.jtitle=Mozilla&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-55"><span><b><a href="#cite_ref-55">^</a></b></span> <span><cite><a rel="nofollow" href="https://www.mozilla.org/en-US/firefox/os/devices/">"Firefox OS - Devices &amp; Availability"</a>. <i>Mozilla</i><span>. Retrieved <span>2015-12-30</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Firefox+OS+-+Devices+%26+Availability&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fwww.mozilla.org%2Fen-US%2Ffirefox%2Fos%2Fdevices%2F&amp;rft.jtitle=Mozilla&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-56"><span><b><a href="#cite_ref-56">^</a></b></span> <span><cite><a href="https://blog.lizardwrangler.com/2012/07/06/thunderbird-stability-and-community-innovation/" rel="nofollow">"Thunderbird: Stability and Community Innovation | Mitchell's Blog"</a>. <i>blog.lizardwrangler.com</i><span>. Retrieved <span>2015-04-20</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Thunderbird%3A+Stability+and+Community+Innovation+%7C+Mitchell%27s+Blog&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fblog.lizardwrangler.com%2F2012%2F07%2F06%2Fthunderbird-stability-and-community-innovation%2F&amp;rft.jtitle=blog.lizardwrangler.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-56"><span><b><a href="#cite_ref-56">^</a></b></span> <span><cite><a rel="nofollow" href="https://blog.lizardwrangler.com/2012/07/06/thunderbird-stability-and-community-innovation/">"Thunderbird: Stability and Community Innovation | Mitchell's Blog"</a>. <i>blog.lizardwrangler.com</i><span>. Retrieved <span>2015-04-20</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Thunderbird%3A+Stability+and+Community+Innovation+%7C+Mitchell%27s+Blog&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fblog.lizardwrangler.com%2F2012%2F07%2F06%2Fthunderbird-stability-and-community-innovation%2F&amp;rft.jtitle=blog.lizardwrangler.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-57"><span><b><a href="#cite_ref-57">^</a></b></span> <span><cite><a href="https://lwn.net/Articles/165080/" rel="nofollow">"Two discontinued browsers"</a>. LWN.net. 21 December 2005<span>. Retrieved <span>2012-08-19</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Two+discontinued+browsers&amp;rft.date=2005-12-21&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Flwn.net%2FArticles%2F165080%2F&amp;rft.pub=LWN.net&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-57"><span><b><a href="#cite_ref-57">^</a></b></span> <span><cite><a rel="nofollow" href="https://lwn.net/Articles/165080/">"Two discontinued browsers"</a>. LWN.net. 21 December 2005<span>. Retrieved <span>2012-08-19</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Two+discontinued+browsers&amp;rft.date=2005-12-21&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Flwn.net%2FArticles%2F165080%2F&amp;rft.pub=LWN.net&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-58"><span><b><a href="#cite_ref-58">^</a></b></span> <span><cite><a href="http://home.kairo.at/blog/2007-06/seamonkey_r_trademarks_registered" rel="nofollow">"SeaMonkey trademarks registered!"</a>. kairo.at. 2007-05-22<span>. Retrieved <span>2013-06-10</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=SeaMonkey+trademarks+registered%21&amp;rft.date=2007-05-22&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fhome.kairo.at%2Fblog%2F2007-06%2Fseamonkey_r_trademarks_registered&amp;rft.pub=kairo.at&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-58"><span><b><a href="#cite_ref-58">^</a></b></span> <span><cite><a rel="nofollow" href="http://home.kairo.at/blog/2007-06/seamonkey_r_trademarks_registered">"SeaMonkey trademarks registered!"</a>. kairo.at. 2007-05-22<span>. Retrieved <span>2013-06-10</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=SeaMonkey+trademarks+registered%21&amp;rft.date=2007-05-22&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fhome.kairo.at%2Fblog%2F2007-06%2Fseamonkey_r_trademarks_registered&amp;rft.pub=kairo.at&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-59"><span><b><a href="#cite_ref-59">^</a></b></span> <span><cite><a href="http://www.bugzilla.org/installation-list/" rel="nofollow">"Bugzilla Installation List"</a><span>. Retrieved <span>2014-09-18</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Bugzilla+Installation+List&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.bugzilla.org%2Finstallation-list%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-59"><span><b><a href="#cite_ref-59">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.bugzilla.org/installation-list/">"Bugzilla Installation List"</a><span>. Retrieved <span>2014-09-18</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Bugzilla+Installation+List&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.bugzilla.org%2Finstallation-list%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-BE201106-60"><span>^ <a href="#cite_ref-BE201106_60-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-BE201106_60-1"><sup><i><b>b</b></i></sup></a></span> <span><cite><a href="http://fakehost/wiki/Brendan_Eich" title="Brendan Eich">Eich, Brendan</a> (21 June 2011). <a href="http://brendaneich.com/2011/06/new-javascript-engine-module-owner/" rel="nofollow">"New JavaScript Engine Module Owner"</a>. BrendanEich.com.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.aufirst=Brendan&amp;rft.aulast=Eich&amp;rft.btitle=New+JavaScript+Engine+Module+Owner&amp;rft.date=2011-06-21&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fbrendaneich.com%2F2011%2F06%2Fnew-javascript-engine-module-owner%2F&amp;rft.pub=BrendanEich.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-BE201106-60"><span>^ <a href="#cite_ref-BE201106_60-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-BE201106_60-1"><sup><i><b>b</b></i></sup></a></span> <span><cite><a href="http://fakehost/wiki/Brendan_Eich" title="Brendan Eich">Eich, Brendan</a> (21 June 2011). <a rel="nofollow" href="http://brendaneich.com/2011/06/new-javascript-engine-module-owner/">"New JavaScript Engine Module Owner"</a>. BrendanEich.com.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.aufirst=Brendan&amp;rft.aulast=Eich&amp;rft.btitle=New+JavaScript+Engine+Module+Owner&amp;rft.date=2011-06-21&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fbrendaneich.com%2F2011%2F06%2Fnew-javascript-engine-module-owner%2F&amp;rft.pub=BrendanEich.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-61"><span><b><a href="#cite_ref-61">^</a></b></span> <span><cite><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=759422#c0" rel="nofollow">"Bug 759422 - Remove use of e4x in account creation"</a>. Bugzilla@Mozilla. 2012-08-17<span>. Retrieved <span>2012-08-18</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Bug+759422+-+Remove+use+of+e4x+in+account+creation&amp;rft.date=2012-08-17&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fbugzilla.mozilla.org%2Fshow_bug.cgi%3Fid%3D759422%23c0&amp;rft.pub=Bugzilla%40Mozilla&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-61"><span><b><a href="#cite_ref-61">^</a></b></span> <span><cite><a rel="nofollow" href="https://bugzilla.mozilla.org/show_bug.cgi?id=759422#c0">"Bug 759422 - Remove use of e4x in account creation"</a>. Bugzilla@Mozilla. 2012-08-17<span>. Retrieved <span>2012-08-18</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Bug+759422+-+Remove+use+of+e4x+in+account+creation&amp;rft.date=2012-08-17&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fbugzilla.mozilla.org%2Fshow_bug.cgi%3Fid%3D759422%23c0&amp;rft.pub=Bugzilla%40Mozilla&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-62"><span><b><a href="#cite_ref-62">^</a></b></span> <span><cite><a href="https://developer.mozilla.org/en-US/docs/SpiderMonkey" rel="nofollow">"SpiderMonkey"</a>. Mozilla Developer Network. 2012-08-15<span>. Retrieved <span>2012-08-18</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=SpiderMonkey&amp;rft.date=2012-08-15&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FSpiderMonkey&amp;rft.pub=Mozilla+Developer+Network&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-62"><span><b><a href="#cite_ref-62">^</a></b></span> <span><cite><a rel="nofollow" href="https://developer.mozilla.org/en-US/docs/SpiderMonkey">"SpiderMonkey"</a>. Mozilla Developer Network. 2012-08-15<span>. Retrieved <span>2012-08-18</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=SpiderMonkey&amp;rft.date=2012-08-15&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FSpiderMonkey&amp;rft.pub=Mozilla+Developer+Network&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-63"><span><b><a href="#cite_ref-63">^</a></b></span> <span><cite><a href="http://www.mozilla.org/rhino/history.html" rel="nofollow">"Rhino History"</a>. <a href="http://fakehost/wiki/Mozilla_Foundation" title="Mozilla Foundation">Mozilla Foundation</a><span>. Retrieved <span>2008-03-20</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Rhino+History&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.mozilla.org%2Frhino%2Fhistory.html&amp;rft.pub=Mozilla+Foundation&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-63"><span><b><a href="#cite_ref-63">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.mozilla.org/rhino/history.html">"Rhino History"</a>. <a href="http://fakehost/wiki/Mozilla_Foundation" title="Mozilla Foundation">Mozilla Foundation</a><span>. Retrieved <span>2008-03-20</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Rhino+History&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.mozilla.org%2Frhino%2Fhistory.html&amp;rft.pub=Mozilla+Foundation&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-64"><span><b><a href="#cite_ref-64">^</a></b></span> <span><cite><a href="https://github.com/servo/servo/wiki/Roadmap" rel="nofollow">"Roadmap"</a><span>. Retrieved <span>10 May</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Roadmap&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fgithub.com%2Fservo%2Fservo%2Fwiki%2FRoadmap&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-64"><span><b><a href="#cite_ref-64">^</a></b></span> <span><cite><a rel="nofollow" href="https://github.com/servo/servo/wiki/Roadmap">"Roadmap"</a><span>. Retrieved <span>10 May</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Roadmap&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fgithub.com%2Fservo%2Fservo%2Fwiki%2FRoadmap&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-65"><span><b><a href="#cite_ref-65">^</a></b></span> <span><cite>Larabel, Michael. <a href="https://www.phoronix.com/scan.php?page=news_item&amp;px=Servo-9-May-2016" rel="nofollow">"Servo Continues Making Progress For Shipping Components In Gecko, Browser.html"</a>. <i>Phoronix.com</i><span>. Retrieved <span>10 May</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Servo+Continues+Making+Progress+For+Shipping+Components+In+Gecko%2C+Browser.html&amp;rft.aufirst=Michael&amp;rft.aulast=Larabel&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fwww.phoronix.com%2Fscan.php%3Fpage%3Dnews_item%26px%3DServo-9-May-2016&amp;rft.jtitle=Phoronix.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-65"><span><b><a href="#cite_ref-65">^</a></b></span> <span><cite>Larabel, Michael. <a rel="nofollow" href="https://www.phoronix.com/scan.php?page=news_item&amp;px=Servo-9-May-2016">"Servo Continues Making Progress For Shipping Components In Gecko, Browser.html"</a>. <i>Phoronix.com</i><span>. Retrieved <span>10 May</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Servo+Continues+Making+Progress+For+Shipping+Components+In+Gecko%2C+Browser.html&amp;rft.aufirst=Michael&amp;rft.aulast=Larabel&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fwww.phoronix.com%2Fscan.php%3Fpage%3Dnews_item%26px%3DServo-9-May-2016&amp;rft.jtitle=Phoronix.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-66"><span><b><a href="#cite_ref-66">^</a></b></span> <span><cite><a href="https://mozvr.com" rel="nofollow">"Mozilla VR"</a>. <i>Mozilla VR</i><span>. Retrieved <span>2016-10-27</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Mozilla+VR&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fmozvr.com&amp;rft.jtitle=Mozilla+VR&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-66"><span><b><a href="#cite_ref-66">^</a></b></span> <span><cite><a rel="nofollow" href="https://mozvr.com">"Mozilla VR"</a>. <i>Mozilla VR</i><span>. Retrieved <span>2016-10-27</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Mozilla+VR&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fmozvr.com&amp;rft.jtitle=Mozilla+VR&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-67"><span><b><a href="#cite_ref-67">^</a></b></span> <span><cite><a href="https://login.persona.org/" rel="nofollow"><i>Persona</i></a>, Mozilla</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Persona&amp;rft.genre=book&amp;rft_id=https%3A%2F%2Flogin.persona.org%2F&amp;rft.pub=Mozilla&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-67"><span><b><a href="#cite_ref-67">^</a></b></span> <span><cite><a rel="nofollow" href="https://login.persona.org/"><i>Persona</i></a>, Mozilla</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Persona&amp;rft.genre=book&amp;rft_id=https%3A%2F%2Flogin.persona.org%2F&amp;rft.pub=Mozilla&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-68"><span><b><a href="#cite_ref-68">^</a></b></span> <span><cite><a href="https://developer.mozilla.org/en-US/Persona" rel="nofollow">"Persona"</a>. <i>Mozilla Developer Network</i><span>. Retrieved <span>2016-10-27</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Persona&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2FPersona&amp;rft.jtitle=Mozilla+Developer+Network&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-68"><span><b><a href="#cite_ref-68">^</a></b></span> <span><cite><a rel="nofollow" href="https://developer.mozilla.org/en-US/Persona">"Persona"</a>. <i>Mozilla Developer Network</i><span>. Retrieved <span>2016-10-27</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Persona&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2FPersona&amp;rft.jtitle=Mozilla+Developer+Network&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-69"><span><b><a href="#cite_ref-69">^</a></b></span> <span><cite><a href="https://webmaker.org/en-US/about/" rel="nofollow"><i>About Mozilla Webmaker</i></a>, Mozilla</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=About+Mozilla+Webmaker&amp;rft.genre=book&amp;rft_id=https%3A%2F%2Fwebmaker.org%2Fen-US%2Fabout%2F&amp;rft.pub=Mozilla&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-69"><span><b><a href="#cite_ref-69">^</a></b></span> <span><cite><a rel="nofollow" href="https://webmaker.org/en-US/about/"><i>About Mozilla Webmaker</i></a>, Mozilla</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=About+Mozilla+Webmaker&amp;rft.genre=book&amp;rft_id=https%3A%2F%2Fwebmaker.org%2Fen-US%2Fabout%2F&amp;rft.pub=Mozilla&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-lifehacker.com-70"><span>^ <a href="#cite_ref-lifehacker.com_70-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-lifehacker.com_70-1"><sup><i><b>b</b></i></sup></a></span> <span><cite>Alan Henry. <a href="http://lifehacker.com/mozilla-webmaker-teaches-you-how-to-build-web-sites-ap-1553277374" rel="nofollow">"Mozilla Webmaker Teaches You to Build Web Sites, Apps, and More"</a>. <i>Lifehacker</i>. Gawker Media.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Mozilla+Webmaker+Teaches+You+to+Build+Web+Sites%2C+Apps%2C+and+More&amp;rft.au=Alan+Henry&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Flifehacker.com%2Fmozilla-webmaker-teaches-you-how-to-build-web-sites-ap-1553277374&amp;rft.jtitle=Lifehacker&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
+ <li id="cite_note-lifehacker.com-70"><span>^ <a href="#cite_ref-lifehacker.com_70-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-lifehacker.com_70-1"><sup><i><b>b</b></i></sup></a></span> <span><cite>Alan Henry. <a rel="nofollow" href="http://lifehacker.com/mozilla-webmaker-teaches-you-how-to-build-web-sites-ap-1553277374">"Mozilla Webmaker Teaches You to Build Web Sites, Apps, and More"</a>. <i>Lifehacker</i>. Gawker Media.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Mozilla+Webmaker+Teaches+You+to+Build+Web+Sites%2C+Apps%2C+and+More&amp;rft.au=Alan+Henry&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Flifehacker.com%2Fmozilla-webmaker-teaches-you-how-to-build-web-sites-ap-1553277374&amp;rft.jtitle=Lifehacker&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"></span>
</span>
</li>
- <li id="cite_note-71"><span><b><a href="#cite_ref-71">^</a></b></span> <span><cite><a href="https://wiki.mozilla.org/Air_Mozilla" rel="nofollow">"Air Mozilla"</a>. Mozilla Wiki.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Air+Mozilla&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fwiki.mozilla.org%2FAir_Mozilla&amp;rft.pub=Mozilla+Wiki&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-71"><span><b><a href="#cite_ref-71">^</a></b></span> <span><cite><a rel="nofollow" href="https://wiki.mozilla.org/Air_Mozilla">"Air Mozilla"</a>. Mozilla Wiki.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Air+Mozilla&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fwiki.mozilla.org%2FAir_Mozilla&amp;rft.pub=Mozilla+Wiki&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- <li id="cite_note-72"><span><b><a href="#cite_ref-72">^</a></b></span> <span><cite><a href="https://blog.mozilla.org/mrz/2012/04/17/air-mozilla-reboot-phase-i/" rel="nofollow">"Air Mozilla Reboot, Phase I"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Air+Mozilla+Reboot%2C+Phase+I&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fblog.mozilla.org%2Fmrz%2F2012%2F04%2F17%2Fair-mozilla-reboot-phase-i%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
+ <li id="cite_note-72"><span><b><a href="#cite_ref-72">^</a></b></span> <span><cite><a rel="nofollow" href="https://blog.mozilla.org/mrz/2012/04/17/air-mozilla-reboot-phase-i/">"Air Mozilla Reboot, Phase I"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Air+Mozilla+Reboot%2C+Phase+I&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fblog.mozilla.org%2Fmrz%2F2012%2F04%2F17%2Fair-mozilla-reboot-phase-i%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"></span>
</span>
</li>
- </ol></div>
- <p><a href="http://www.techsive.com/2014/09/how-to-resume-failed-downloads-in.html" rel="nofollow">Constant downloads failure in firefox</a></p>
+ </ol>
+ </div>
+ <p><a rel="nofollow" href="http://www.techsive.com/2014/09/how-to-resume-failed-downloads-in.html">Constant downloads failure in firefox</a></p>
<h2><span id="External_links">External links</span><span><span>[</span><a href="http://fakehost/w/index.php?title=Mozilla&amp;action=edit&amp;section=36" title="Edit section: External links">edit</a><span>]</span></span>
</h2>
- <table readabilityDataTable="0" role="presentation"><tr><td>
- <a href="http://fakehost/wiki/File:Commons-logo.svg"><img alt="" data-file-height="1376" data-file-width="1024" height="40" src="http://upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/30px-Commons-logo.svg.png" srcset="//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/45px-Commons-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/59px-Commons-logo.svg.png 2x" width="30"></img></a>
+ <table role="presentation" readabilityDataTable="0">
+ <tr>
+ <td>
+ <a href="http://fakehost/wiki/File:Commons-logo.svg"><img alt src="http://upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/30px-Commons-logo.svg.png" width="30" height="40" srcset="//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/45px-Commons-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/59px-Commons-logo.svg.png 2x" data-file-width="1024" data-file-height="1376"></a>
</td>
<td>Wikimedia Commons has media related to <i><b><a href="https://commons.wikimedia.org/wiki/Category:Mozilla" title="commons:Category:Mozilla">Mozilla</a></b></i>.</td>
- </tr></table><ul><li><span><span><a href="http://mozilla.org/" rel="nofollow">Official website</a></span></span>, including <a href="https://www.mozilla.org/en-US/about/manifesto/" rel="nofollow">the Mozilla Manifesto</a></li>
- <li><a href="https://wiki.mozilla.org/" rel="nofollow">Mozilla Wiki</a>(<a href="https://wiki.mozilla.org/Timeline" title="mozillawiki:Timeline">Major time line of community development</a>)</li>
- <li><a href="http://hg.mozilla.org/" rel="nofollow">Mozilla Mercurial Repository</a></li>
+ </tr>
+ </table>
+ <ul>
+ <li><span><span><a rel="nofollow" href="http://mozilla.org/">Official website</a></span></span>, including <a rel="nofollow" href="https://www.mozilla.org/en-US/about/manifesto/">the Mozilla Manifesto</a></li>
+ <li><a rel="nofollow" href="https://wiki.mozilla.org/">Mozilla Wiki</a>(<a href="https://wiki.mozilla.org/Timeline" title="mozillawiki:Timeline">Major time line of community development</a>)</li>
+ <li><a rel="nofollow" href="http://hg.mozilla.org/">Mozilla Mercurial Repository</a></li>
</ul>
+
diff --git a/test/test-pages/wordpress/expected.html b/test/test-pages/wordpress/expected.html
index 1f47d8f..801cdc4 100644
--- a/test/test-pages/wordpress/expected.html
+++ b/test/test-pages/wordpress/expected.html
@@ -1,14 +1,20 @@
-<article id="post-67202" itemprop="blogPost" itemscope="itemscope" itemtype="http://schema.org/BlogPosting"><div itemprop="articleBody">
+<article id="post-67202" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">
+
+
+
+
+
+ <div itemprop="articleBody">
<p>
- <a href="https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?ssl=1"><img alt="" data-attachment-id="57913" data-comments-opened="0" data-image-description="" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="stack-overflow" data-large-file="https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?fit=500%2C196&amp;ssl=1" data-medium-file="https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?fit=300%2C117&amp;ssl=1" data-orig-file="https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?fit=1650%2C646&amp;ssl=1" data-orig-size="1650,646" data-permalink="https://wptavern.com/stack-overflow-documentation-is-now-in-beta/stack-overflow" height="252" sizes="(max-width: 1025px) 100vw, 1025px" src="https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?resize=1025%2C401&amp;ssl=1" srcset="https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?w=1650&amp;ssl=1 1650w, https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?resize=300%2C117&amp;ssl=1 300w, https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?resize=768%2C301&amp;ssl=1 768w, https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?resize=500%2C196&amp;ssl=1 500w, https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?resize=1025%2C401&amp;ssl=1 1025w" width="644"></img></a>
+ <a href="https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?ssl=1"><img data-attachment-id="57913" data-permalink="https://wptavern.com/stack-overflow-documentation-is-now-in-beta/stack-overflow" data-orig-file="https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?fit=1650%2C646&amp;ssl=1" data-orig-size="1650,646" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="stack-overflow" data-image-description data-medium-file="https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?fit=300%2C117&amp;ssl=1" data-large-file="https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?fit=500%2C196&amp;ssl=1" src="https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?resize=1025%2C401&amp;ssl=1" alt srcset="https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?w=1650&amp;ssl=1 1650w, https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?resize=300%2C117&amp;ssl=1 300w, https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?resize=768%2C301&amp;ssl=1 768w, https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?resize=500%2C196&amp;ssl=1 500w, https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?resize=1025%2C401&amp;ssl=1 1025w" sizes="(max-width: 1025px) 100vw, 1025px" width="644" height="252"></a>
</p>
<p>Stack Overflow published its analysis of <a href="https://stackoverflow.blog/2017/03/09/developer-hiring-trends-2017/" target="_blank">2017 hiring trends</a> based on the targeting options employers selected when posting to <a href="http://stackoverflow.com/jobs" target="_blank">Stack Overflow Jobs</a>. The report, which compares data from 200 companies since 2015, ranks ReactJS, Docker, and Ansible at the top of the fastest growing skills in demand. When comparing the percentage change from 2015 to 2016, technologies like AJAX, Backbone.js, jQuery, and WordPress are less in demand.</p>
<p>
- <a href="https://i2.wp.com/wptavern.com/wp-content/uploads/2017/03/ChangesinDemand.png?ssl=1"><img alt="" data-attachment-id="67214" data-comments-opened="0" data-image-description="" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="ChangesinDemand" data-large-file="https://i2.wp.com/wptavern.com/wp-content/uploads/2017/03/ChangesinDemand.png?fit=437%2C500&amp;ssl=1" data-medium-file="https://i2.wp.com/wptavern.com/wp-content/uploads/2017/03/ChangesinDemand.png?fit=262%2C300&amp;ssl=1" data-orig-file="https://i2.wp.com/wptavern.com/wp-content/uploads/2017/03/ChangesinDemand.png?fit=975%2C1115&amp;ssl=1" data-orig-size="975,1115" data-permalink="https://wptavern.com/stack-overflow-jobs-data-shows-reactjs-skills-in-high-demand-wordpress-market-oversaturated-with-developers/changesindemand" height="736" sizes="(max-width: 975px) 100vw, 975px" src="https://i2.wp.com/wptavern.com/wp-content/uploads/2017/03/ChangesinDemand.png?resize=975%2C1115&amp;ssl=1" srcset="https://i2.wp.com/wptavern.com/wp-content/uploads/2017/03/ChangesinDemand.png?w=975&amp;ssl=1 975w, https://i2.wp.com/wptavern.com/wp-content/uploads/2017/03/ChangesinDemand.png?resize=262%2C300&amp;ssl=1 262w, https://i2.wp.com/wptavern.com/wp-content/uploads/2017/03/ChangesinDemand.png?resize=768%2C878&amp;ssl=1 768w, https://i2.wp.com/wptavern.com/wp-content/uploads/2017/03/ChangesinDemand.png?resize=437%2C500&amp;ssl=1 437w" width="644"></img></a>
+ <a href="https://i2.wp.com/wptavern.com/wp-content/uploads/2017/03/ChangesinDemand.png?ssl=1"><img data-attachment-id="67214" data-permalink="https://wptavern.com/stack-overflow-jobs-data-shows-reactjs-skills-in-high-demand-wordpress-market-oversaturated-with-developers/changesindemand" data-orig-file="https://i2.wp.com/wptavern.com/wp-content/uploads/2017/03/ChangesinDemand.png?fit=975%2C1115&amp;ssl=1" data-orig-size="975,1115" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="ChangesinDemand" data-image-description data-medium-file="https://i2.wp.com/wptavern.com/wp-content/uploads/2017/03/ChangesinDemand.png?fit=262%2C300&amp;ssl=1" data-large-file="https://i2.wp.com/wptavern.com/wp-content/uploads/2017/03/ChangesinDemand.png?fit=437%2C500&amp;ssl=1" src="https://i2.wp.com/wptavern.com/wp-content/uploads/2017/03/ChangesinDemand.png?resize=975%2C1115&amp;ssl=1" alt srcset="https://i2.wp.com/wptavern.com/wp-content/uploads/2017/03/ChangesinDemand.png?w=975&amp;ssl=1 975w, https://i2.wp.com/wptavern.com/wp-content/uploads/2017/03/ChangesinDemand.png?resize=262%2C300&amp;ssl=1 262w, https://i2.wp.com/wptavern.com/wp-content/uploads/2017/03/ChangesinDemand.png?resize=768%2C878&amp;ssl=1 768w, https://i2.wp.com/wptavern.com/wp-content/uploads/2017/03/ChangesinDemand.png?resize=437%2C500&amp;ssl=1 437w" sizes="(max-width: 975px) 100vw, 975px" width="644" height="736"></a>
</p>
<p>Stack Overflow also measured the demand relative to the available developers in different tech skills. The demand for backend, mobile, and database engineers is higher than the number of qualified candidates available. WordPress is last among the oversaturated fields with a surplus of developers relative to available positions.</p>
<p>
- <a href="https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?ssl=1"><img alt="" data-attachment-id="67216" data-comments-opened="0" data-image-description="" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="HighDemand" data-large-file="https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?fit=500%2C438&amp;ssl=1" data-medium-file="https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?fit=300%2C263&amp;ssl=1" data-orig-file="https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?fit=975%2C854&amp;ssl=1" data-orig-size="975,854" data-permalink="https://wptavern.com/stack-overflow-jobs-data-shows-reactjs-skills-in-high-demand-wordpress-market-oversaturated-with-developers/highdemand" height="564" sizes="(max-width: 975px) 100vw, 975px" src="https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?resize=975%2C854&amp;ssl=1" srcset="https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?w=975&amp;ssl=1 975w, https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?resize=300%2C263&amp;ssl=1 300w, https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?resize=768%2C673&amp;ssl=1 768w, https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?resize=500%2C438&amp;ssl=1 500w, https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?resize=571%2C500&amp;ssl=1 571w" width="644"></img></a>
+ <a href="https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?ssl=1"><img data-attachment-id="67216" data-permalink="https://wptavern.com/stack-overflow-jobs-data-shows-reactjs-skills-in-high-demand-wordpress-market-oversaturated-with-developers/highdemand" data-orig-file="https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?fit=975%2C854&amp;ssl=1" data-orig-size="975,854" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="HighDemand" data-image-description data-medium-file="https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?fit=300%2C263&amp;ssl=1" data-large-file="https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?fit=500%2C438&amp;ssl=1" src="https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?resize=975%2C854&amp;ssl=1" alt srcset="https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?w=975&amp;ssl=1 975w, https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?resize=300%2C263&amp;ssl=1 300w, https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?resize=768%2C673&amp;ssl=1 768w, https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?resize=500%2C438&amp;ssl=1 500w, https://i1.wp.com/wptavern.com/wp-content/uploads/2017/03/HighDemand.png?resize=571%2C500&amp;ssl=1 571w" sizes="(max-width: 975px) 100vw, 975px" width="644" height="564"></a>
</p>
<p>In looking at these results, it’s important to consider the inherent biases within the Stack Overflow ecosystem. In 2016, the site surveyed more than 56,000 developers but noted that the survey was “biased against devs who don’t speak English.” The average age of respondents was 29.6 years old and 92.8% of them were male. </p>
<p>For two years running, Stack Overflow survey respondents have <a href="https://wptavern.com/stack-overflow-survey-results-show-wordpress-is-trending-up-despite-being-ranked-among-most-dreaded-technologies" target="_blank">ranked WordPress among the most dreaded technologies</a> that they would prefer not to use. This may be one reason why employers wouldn’t be looking to advertise positions on the site’s job board, which is the primary source of the data for this report.</p>
@@ -26,4 +32,8 @@
</div>
- </article> \ No newline at end of file
+
+
+
+
+ </article> \ No newline at end of file
diff --git a/test/test-pages/yahoo-1/expected.html b/test/test-pages/yahoo-1/expected.html
index deea6c8..c532a62 100644
--- a/test/test-pages/yahoo-1/expected.html
+++ b/test/test-pages/yahoo-1/expected.html
@@ -1,44 +1,50 @@
-<div data-reactid="406" id="Col1-0-ContentCanvas-Proxy">
- <div data-reactid="407" id="Col1-0-ContentCanvas">
- <article data-reactid="408" data-type="story" data-uuid="80b35014-fba3-377e-adc5-47fb44f61fa7"><figure data-reactid="409" data-type="image"><p><img alt="The PlayStation VR" data-reactid="411" src="http://l1.yimg.com/ny/api/res/1.2/589noY9BZNdmsUUQf6L1AQ--/YXBwaWQ9aGlnaGxhbmRlcjtzbT0xO3c9NzQ0O2g9NjY5/http://media.zenfs.com/en/homerun/feed_manager_auto_publish_494/4406ef57dcb40376c513903b03bef048"></img></p>
+<div id="Col1-0-ContentCanvas-Proxy" data-reactid="406">
+ <div id="Col1-0-ContentCanvas" data-reactid="407">
+ <article data-uuid="80b35014-fba3-377e-adc5-47fb44f61fa7" data-type="story" data-reactid="408">
+ <figure data-type="image" data-reactid="409">
+ <p><img alt="The PlayStation VR" src="http://l1.yimg.com/ny/api/res/1.2/589noY9BZNdmsUUQf6L1AQ--/YXBwaWQ9aGlnaGxhbmRlcjtzbT0xO3c9NzQ0O2g9NjY5/http://media.zenfs.com/en/homerun/feed_manager_auto_publish_494/4406ef57dcb40376c513903b03bef048" data-reactid="411"></p>
<div data-reactid="413">
- <figcaption data-reactid="414" title="Sony’s PlayStation VR."><p>Sony’s PlayStation VR.</p>
+ <figcaption title="Sony’s PlayStation VR." data-reactid="414">
+ <p>Sony’s PlayStation VR.</p>
</figcaption></div>
- </figure><div data-reactid="418">
- <p data-reactid="419" data-type="text">Virtual reality has officially reached the consoles. And it’s pretty good! <a href="http://finance.yahoo.com/news/review-playstation-vr-is-comfortable-and-affordable-but-lacks-must-have-games-165053851.html">Sony’s PlayStation VR</a> is extremely comfortable and reasonably priced, and while it’s lacking killer apps, it’s loaded with lots of interesting ones.</p>
- <p data-reactid="420" data-type="text">But which ones should you buy? I’ve played just about every launch game, and while some are worth your time, others you might want to skip. To help you decide what’s what, I’ve put together this list of the eight PSVR games worth considering.</p>
- <h3 data-reactid="421" data-type="text"><a href="https://www.playstation.com/en-us/games/rez-infinite-ps4/" rel="nofollow noopener noreferrer" target="_blank">“Rez Infinite” ($30)</a></h3>
- <p data-reactid="422"><iframe data-reactid="423" data-type="videoIframe" src="https://www.youtube.com/embed/YlDxEOwj5j8"></iframe></p>
- <p data-reactid="424" data-type="text">Beloved cult hit “Rez” gets the VR treatment to help launch the PSVR, and the results are terrific. It includes a fully remastered take on the original “Rez” – you zoom through a Matrix-like computer system, shooting down enemies to the steady beat of thumping electronica – but the VR setting makes it incredibly immersive. It gets better the more you play it, too; unlock the amazing Area X mode and you’ll find yourself flying, shooting and bobbing your head to some of the trippiest visuals yet seen in VR.</p>
- <h3 data-reactid="425" data-type="text"><a href="https://www.playstation.com/en-us/games/thumper-ps4/" rel="nofollow noopener noreferrer" target="_blank">“Thumper” ($20)</a></h3>
- <p data-reactid="426"><iframe data-reactid="427" data-type="videoIframe" src="https://www.youtube.com/embed/gtPGX8i1Eaw"></iframe></p>
- <p data-reactid="428" data-type="text">What would happen if Tron, the board game Simon, a Clown beetle, Cthulhu and a noise band met in VR? Chaos, for sure, and also “Thumper.” Called a “violent rhythm game” by its creators, “Thumper” is, well, a violent rhythm game that’s also a gorgeous, unsettling and totally captivating assault on the senses. With simple controls and a straightforward premise – click the X button and the analog stick in time with the music as you barrel down a neon highway — it’s one of the rare games that works equally well both in and out of VR. But since you have PSVR, play it there. It’s marvelous.</p>
- <h3 data-reactid="429" data-type="text"><a href="https://www.playstation.com/en-us/games/until-dawn-rush-of-blood-ps4/" rel="nofollow noopener noreferrer" target="_blank">“Until Dawn: Rush of Blood” ($20)</a></h3>
- <p data-reactid="430"><iframe data-reactid="431" data-type="videoIframe" src="https://www.youtube.com/embed/EL3svUfC8Ds"></iframe></p>
- <p data-reactid="432" data-type="text">Cheeky horror game “Until Dawn” was a breakout hit for the PS4 last year, channeling the classic “dumb teens in the woods” horror trope into an effective interactive drama. Well, forget all that if you fire up “Rush of Blood,” because this one sticks you front and center on a rollercoaster ride from Hell. Literally. You ride through a dimly-lit carnival of terror, dual-wielding pistols as you take down targets, hideous pig monsters and, naturally, maniac clowns. Be warned: If the bad guys don’t get you, the jump scares will.</p>
- <h3 data-reactid="433" data-type="text"><a href="https://www.playstation.com/en-us/games/headmaster-ps4/" rel="nofollow noopener noreferrer" target="_blank">“Headmaster” ($20)</a></h3>
- <p data-reactid="434"><iframe data-reactid="435" data-type="videoIframe" src="https://www.youtube.com/embed/a7CSMKw1E7g"></iframe></p>
- <p data-reactid="436" data-type="text">Soccer meets “Portal” in the weird (and weirdly fun) “Headmaster,” a game about heading soccer balls into nets, targets and a variety of other things while stuck in some diabolical training facility. While at first it seems a little basic, increasingly challenging shots and a consistently entertaining narrative keep it from running off the pitch. Funny, ridiculous and as easy as literally moving your head back and forth, it’s a pleasant PSVR surprise.</p>
- <h3 data-reactid="437" data-type="text"><a href="https://www.playstation.com/en-us/games/rigs-mechanized-combat-league-ps4/" rel="nofollow noopener noreferrer" target="_blank">“RIGS: Mechanized Combat League” ($50)</a></h3>
- <p data-reactid="438"><iframe data-reactid="439" data-type="videoIframe" src="https://www.youtube.com/embed/Rnqlf9EQ2zA"></iframe></p>
- <p data-reactid="440" data-type="text">Giant mechs + sports? That’s the gist of this robotic blast-a-thon, which pits two teams of three against one another in gorgeous, explosive and downright fun VR combat. At its best, “RIGS” marries the thrill of fast-paced competitive shooters with the insanity of piloting a giant mech in VR. It can, however, be one of the barfier PSVR games. So pack your Dramamine, you’re going to have to ease yourself into this one.</p>
- <h3 data-reactid="441" data-type="text"><a href="https://www.playstation.com/en-us/games/batman-arkham-vr-ps4/" rel="nofollow noopener noreferrer" target="_blank">“Batman Arkham VR” ($20)</a></h3>
- <p data-reactid="442"><iframe data-reactid="443" data-type="videoIframe" src="https://www.youtube.com/embed/eS4g0py16N8"></iframe></p>
- <p data-reactid="444" data-type="text">“I’m Batman,” you will say. And you’ll actually be right this time, because you are Batman in this detective yarn, and you know this because you actually grab the famous cowl and mask, stick it on your head, and stare into the mirrored reflection of Rocksteady Games’ impressive Dark Knight character model. It lacks the action of its fellow “Arkham” games and runs disappointingly short, but it’s a high-quality experience that really shows off how powerfully immersive VR can be.</p>
- <h3 data-reactid="445" data-type="text"><a href="https://www.playstation.com/en-us/games/job-simulator-the-2050-archives-ps4/" rel="nofollow noopener noreferrer" target="_blank">“Job Simulator” ($30)</a></h3>
- <p data-reactid="446"><iframe data-reactid="447" data-type="videoIframe" src="https://www.youtube.com/embed/3-iMlQIGH8Y"></iframe></p>
- <p data-reactid="448" data-type="text">There are a number of good VR ports in the PSVR launch lineup, but the HTC Vive launch game “Job Simulator” might be the best. Your task? Lots of tasks, actually, from cooking food to fixing cars to working in an office, all for robots, because did I mention you were in the future? Infinitely charming and surprisingly challenging, it’s a great showpiece for VR.</p>
- <h3 data-reactid="449" data-type="text"><a href="https://www.playstation.com/en-us/games/eve-valkyrie-ps4/" rel="nofollow noopener noreferrer" target="_blank">“Eve Valkyrie” ($60)</a></h3>
- <p data-reactid="450"><iframe data-reactid="451" data-type="videoIframe" src="https://www.youtube.com/embed/0KFHw12CTbo"></iframe></p>
- <p data-reactid="452" data-type="text">Already a hit on the Oculus Rift, this space dogfighting game was one of the first to really show off how VR can turn a traditional game experience into something special. It’s pricey and not quite as hi-res as the Rift version, but “Eve Valkyrie” does an admirable job filling the void left since “Battlestar Galactica” ended. Too bad there aren’t any Cylons in it (or are there?)</p>
- <p data-reactid="453" data-type="text"><em><strong>More games news:</strong></em></p>
- <ul data-reactid="454" data-type="list"><li data-reactid="455"><a href="https://www.yahoo.com/tech/skylanders-imaginators-will-let-you-create-and-3d-print-your-own-action-figure-143838550.html">‘Skylanders Imaginators’ will let you create and 3D print your own action figures</a></li>
+ </figure>
+ <div data-reactid="418">
+ <p data-type="text" data-reactid="419">Virtual reality has officially reached the consoles. And it’s pretty good! <a href="http://finance.yahoo.com/news/review-playstation-vr-is-comfortable-and-affordable-but-lacks-must-have-games-165053851.html">Sony’s PlayStation VR</a> is extremely comfortable and reasonably priced, and while it’s lacking killer apps, it’s loaded with lots of interesting ones.</p>
+ <p data-type="text" data-reactid="420">But which ones should you buy? I’ve played just about every launch game, and while some are worth your time, others you might want to skip. To help you decide what’s what, I’ve put together this list of the eight PSVR games worth considering.</p>
+ <h3 data-type="text" data-reactid="421"><a href="https://www.playstation.com/en-us/games/rez-infinite-ps4/" rel="nofollow noopener noreferrer" target="_blank">“Rez Infinite” ($30)</a></h3>
+ <p data-reactid="422"><iframe data-type="videoIframe" src="https://www.youtube.com/embed/YlDxEOwj5j8" data-reactid="423"></iframe></p>
+ <p data-type="text" data-reactid="424">Beloved cult hit “Rez” gets the VR treatment to help launch the PSVR, and the results are terrific. It includes a fully remastered take on the original “Rez” – you zoom through a Matrix-like computer system, shooting down enemies to the steady beat of thumping electronica – but the VR setting makes it incredibly immersive. It gets better the more you play it, too; unlock the amazing Area X mode and you’ll find yourself flying, shooting and bobbing your head to some of the trippiest visuals yet seen in VR.</p>
+ <h3 data-type="text" data-reactid="425"><a href="https://www.playstation.com/en-us/games/thumper-ps4/" rel="nofollow noopener noreferrer" target="_blank">“Thumper” ($20)</a></h3>
+ <p data-reactid="426"><iframe data-type="videoIframe" src="https://www.youtube.com/embed/gtPGX8i1Eaw" data-reactid="427"></iframe></p>
+ <p data-type="text" data-reactid="428">What would happen if Tron, the board game Simon, a Clown beetle, Cthulhu and a noise band met in VR? Chaos, for sure, and also “Thumper.” Called a “violent rhythm game” by its creators, “Thumper” is, well, a violent rhythm game that’s also a gorgeous, unsettling and totally captivating assault on the senses. With simple controls and a straightforward premise – click the X button and the analog stick in time with the music as you barrel down a neon highway — it’s one of the rare games that works equally well both in and out of VR. But since you have PSVR, play it there. It’s marvelous.</p>
+ <h3 data-type="text" data-reactid="429"><a href="https://www.playstation.com/en-us/games/until-dawn-rush-of-blood-ps4/" rel="nofollow noopener noreferrer" target="_blank">“Until Dawn: Rush of Blood” ($20)</a></h3>
+ <p data-reactid="430"><iframe data-type="videoIframe" src="https://www.youtube.com/embed/EL3svUfC8Ds" data-reactid="431"></iframe></p>
+ <p data-type="text" data-reactid="432">Cheeky horror game “Until Dawn” was a breakout hit for the PS4 last year, channeling the classic “dumb teens in the woods” horror trope into an effective interactive drama. Well, forget all that if you fire up “Rush of Blood,” because this one sticks you front and center on a rollercoaster ride from Hell. Literally. You ride through a dimly-lit carnival of terror, dual-wielding pistols as you take down targets, hideous pig monsters and, naturally, maniac clowns. Be warned: If the bad guys don’t get you, the jump scares will.</p>
+ <h3 data-type="text" data-reactid="433"><a href="https://www.playstation.com/en-us/games/headmaster-ps4/" rel="nofollow noopener noreferrer" target="_blank">“Headmaster” ($20)</a></h3>
+ <p data-reactid="434"><iframe data-type="videoIframe" src="https://www.youtube.com/embed/a7CSMKw1E7g" data-reactid="435"></iframe></p>
+ <p data-type="text" data-reactid="436">Soccer meets “Portal” in the weird (and weirdly fun) “Headmaster,” a game about heading soccer balls into nets, targets and a variety of other things while stuck in some diabolical training facility. While at first it seems a little basic, increasingly challenging shots and a consistently entertaining narrative keep it from running off the pitch. Funny, ridiculous and as easy as literally moving your head back and forth, it’s a pleasant PSVR surprise.</p>
+ <h3 data-type="text" data-reactid="437"><a href="https://www.playstation.com/en-us/games/rigs-mechanized-combat-league-ps4/" rel="nofollow noopener noreferrer" target="_blank">“RIGS: Mechanized Combat League” ($50)</a></h3>
+ <p data-reactid="438"><iframe data-type="videoIframe" src="https://www.youtube.com/embed/Rnqlf9EQ2zA" data-reactid="439"></iframe></p>
+ <p data-type="text" data-reactid="440">Giant mechs + sports? That’s the gist of this robotic blast-a-thon, which pits two teams of three against one another in gorgeous, explosive and downright fun VR combat. At its best, “RIGS” marries the thrill of fast-paced competitive shooters with the insanity of piloting a giant mech in VR. It can, however, be one of the barfier PSVR games. So pack your Dramamine, you’re going to have to ease yourself into this one.</p>
+ <h3 data-type="text" data-reactid="441"><a href="https://www.playstation.com/en-us/games/batman-arkham-vr-ps4/" rel="nofollow noopener noreferrer" target="_blank">“Batman Arkham VR” ($20)</a></h3>
+ <p data-reactid="442"><iframe data-type="videoIframe" src="https://www.youtube.com/embed/eS4g0py16N8" data-reactid="443"></iframe></p>
+ <p data-type="text" data-reactid="444">“I’m Batman,” you will say. And you’ll actually be right this time, because you are Batman in this detective yarn, and you know this because you actually grab the famous cowl and mask, stick it on your head, and stare into the mirrored reflection of Rocksteady Games’ impressive Dark Knight character model. It lacks the action of its fellow “Arkham” games and runs disappointingly short, but it’s a high-quality experience that really shows off how powerfully immersive VR can be.</p>
+ <h3 data-type="text" data-reactid="445"><a href="https://www.playstation.com/en-us/games/job-simulator-the-2050-archives-ps4/" rel="nofollow noopener noreferrer" target="_blank">“Job Simulator” ($30)</a></h3>
+ <p data-reactid="446"><iframe data-type="videoIframe" src="https://www.youtube.com/embed/3-iMlQIGH8Y" data-reactid="447"></iframe></p>
+ <p data-type="text" data-reactid="448">There are a number of good VR ports in the PSVR launch lineup, but the HTC Vive launch game “Job Simulator” might be the best. Your task? Lots of tasks, actually, from cooking food to fixing cars to working in an office, all for robots, because did I mention you were in the future? Infinitely charming and surprisingly challenging, it’s a great showpiece for VR.</p>
+ <h3 data-type="text" data-reactid="449"><a href="https://www.playstation.com/en-us/games/eve-valkyrie-ps4/" rel="nofollow noopener noreferrer" target="_blank">“Eve Valkyrie” ($60)</a></h3>
+ <p data-reactid="450"><iframe data-type="videoIframe" src="https://www.youtube.com/embed/0KFHw12CTbo" data-reactid="451"></iframe></p>
+ <p data-type="text" data-reactid="452">Already a hit on the Oculus Rift, this space dogfighting game was one of the first to really show off how VR can turn a traditional game experience into something special. It’s pricey and not quite as hi-res as the Rift version, but “Eve Valkyrie” does an admirable job filling the void left since “Battlestar Galactica” ended. Too bad there aren’t any Cylons in it (or are there?)</p>
+ <p data-type="text" data-reactid="453"><em><strong>More games news:</strong></em></p>
+ <ul data-type="list" data-reactid="454">
+ <li data-reactid="455"><a href="https://www.yahoo.com/tech/skylanders-imaginators-will-let-you-create-and-3d-print-your-own-action-figure-143838550.html">‘Skylanders Imaginators’ will let you create and 3D print your own action figures</a></li>
<li data-reactid="456"><a href="https://www.yahoo.com/tech/review-high-flying-nba-2k17-has-a-career-year-184135248.html">Review: High-flying ‘NBA 2K17’ has a career year</a></li>
<li data-reactid="457"><a href="https://www.yahoo.com/tech/review-race-at-your-own-speed-in-big-beautiful-forza-horizon-3-195337170.html">Review: Race at your own speed in big, beautiful ‘Forza Horizon 3’</a></li>
<li data-reactid="458"><a href="https://www.yahoo.com/tech/sonys-playstation-4-pro-shows-promise-potential-161304037.html">Sony’s PlayStation 4 Pro shows promise, potential and plenty of pretty lighting</a></li>
<li data-reactid="459"><a href="https://www.yahoo.com/tech/review-madden-nfl-17-runs-000000394.html">Review: ‘Madden NFL 17’ runs hard, plays it safe</a></li>
- </ul><p data-reactid="460" data-type="text"><i>Ben Silverman is on Twitter at</i>
- <a href="https://twitter.com/ben_silverman" rel="nofollow noopener noreferrer" target="_blank"> <i>ben_silverman</i></a><i>.</i></p>
+ </ul>
+ <p data-type="text" data-reactid="460"><i>Ben Silverman is on Twitter at</i>
+ <a href="https://twitter.com/ben_silverman" target="_blank" rel="nofollow noopener noreferrer"> <i>ben_silverman</i></a><i>.</i></p>
</div>
</article></div>
diff --git a/test/test-pages/yahoo-2/expected.html b/test/test-pages/yahoo-2/expected.html
index 9bc5f6f..ef3e99d 100644
--- a/test/test-pages/yahoo-2/expected.html
+++ b/test/test-pages/yahoo-2/expected.html
@@ -1,6 +1,7 @@
<div id="tgt1-Col1-2-ContentCanvas-Proxy">
<div id="tgt1-Col1-2-ContentCanvas">
- <article data-type="story" data-uuid="8dd27580-6b4e-3cfb-a389-5b1ab90bd0eb"><div>
+ <article data-uuid="8dd27580-6b4e-3cfb-a389-5b1ab90bd0eb" data-type="story">
+ <div>
<div>
<div>
diff --git a/test/test-pages/yahoo-3/expected-metadata.json b/test/test-pages/yahoo-3/expected-metadata.json
index 8af68c0..1af6b8f 100644
--- a/test/test-pages/yahoo-3/expected-metadata.json
+++ b/test/test-pages/yahoo-3/expected-metadata.json
@@ -1,6 +1,6 @@
{
"Author": "By GILLIAN MOHNEY\n March 11, 2015 3:46 PM",
- "Direction": null,
+ "Direction": "ltr",
"Excerpt": "A photographer and Navy veteran is fighting back after a photo she posted to Facebook started an online backlash. Vanessa Hicks said she had no idea her photo would be considered controversial. The photo, from a military family’s newborn photo shoot, showed a newborn infant wrapped in an American flag held by his father, who was in his military uniform. Hicks, a Navy veteran herself and the wife of an active-duty Navy member, said her intention was to honor the flag as well as her clients, who wanted to incorporate their military service in the photo shoot.",
"Image": "https:\/\/s.yimg.com\/bt\/api\/res\/1.2\/qZaM9MLUOrxLg4IfXt_Niw--\/YXBwaWQ9eW5ld3NfbGVnbztxPTc1O3c9NjAw\/http:\/\/media.zenfs.com\/en-US\/video\/video.abcnewsplus.com\/559ecdbafdb839129816b5c79a996975.cf.png",
"Title": "Veteran Wraps Baby in American Flag, Photo Sparks Controversy",
diff --git a/test/test-pages/yahoo-3/expected.html b/test/test-pages/yahoo-3/expected.html
index c5d7e33..d5fb222 100644
--- a/test/test-pages/yahoo-3/expected.html
+++ b/test/test-pages/yahoo-3/expected.html
@@ -1,28 +1,39 @@
<div>
- <div id="Main" role="main" tabindex="0">
- <section data-ylk="mid:mediacontentbreakingnews;mpos:1;t1:a3;t2:mod-bkn;sec:mod-bkn;" id="mediacontentbreakingnews"><p><span>'GMA' Cookie Search:</span> </p>
+ <div id="Main" tabindex="0" role="main">
+ <section id="mediacontentbreakingnews" data-ylk="mid:mediacontentbreakingnews;mpos:1;t1:a3;t2:mod-bkn;sec:mod-bkn;">
+ <p><span>'GMA' Cookie Search:</span> </p>
</section>
- <section data-type="story" data-uuid="4250eebf-bbb0-3c95-8fd0-3cb4d3daf93c" data-ylk="t1:a3;t2:ct-mod;sec:ct-mod;itc:0;rspns:nav;" id="mediacontentstory"><div>
+
+ <section id="mediacontentstory" data-uuid="4250eebf-bbb0-3c95-8fd0-3cb4d3daf93c" data-type="story" data-ylk="t1:a3;t2:ct-mod;sec:ct-mod;itc:0;rspns:nav;">
+ <div>
- <div itemscope="" itemtype="https://schema.org/Article">
+
+
+ <div itemscope itemtype="https://schema.org/Article">
- <meta content="2015-03-11T19:46:14Z" itemprop="datePublished"></meta><meta content="Veteran Wraps Baby in American Flag, Photo Sparks Controversy" itemprop="headline"></meta><meta content="" itemprop="alternativeHeadline"></meta><meta content="https://media.zenfs.com/en-US/video/video.abcnewsplus.com/559ecdbafdb839129816b5c79a996975" itemprop="image"></meta><meta content="A photographer and Navy veteran is fighting back after a photo she posted to Facebook started an online backlash. Vanessa Hicks said she had no idea her photo would be considered controversial. The photo, from a military family’s newborn photo shoot, showed a newborn infant wrapped in an American flag held by his father, who was in his military uniform. Hicks, a Navy veteran herself and the wife of an active-duty Navy member, said her intention was to honor the flag as well as her clients, who wanted to incorporate their military service in the photo shoot." itemprop="description"></meta><p>A photographer and Navy veteran is fighting back after a photo she posted to <a data-rapid_p="13" href="http://abcnews.go.com/topics/business/companies/facebook-inc.htm" id="ramplink_Facebook_" target="_blank">Facebook</a> started an online backlash.</p>
+ <meta itemprop="datePublished" content="2015-03-11T19:46:14Z">
+ <meta itemprop="headline" content="Veteran Wraps Baby in American Flag, Photo Sparks Controversy">
+ <meta itemprop="alternativeHeadline" content>
+ <meta itemprop="image" content="https://media.zenfs.com/en-US/video/video.abcnewsplus.com/559ecdbafdb839129816b5c79a996975">
+ <meta itemprop="description" content="A photographer and Navy veteran is fighting back after a photo she posted to Facebook started an online backlash. Vanessa Hicks said she had no idea her photo would be considered controversial. The photo, from a military family’s newborn photo shoot, showed a newborn infant wrapped in an American flag held by his father, who was in his military uniform. Hicks, a Navy veteran herself and the wife of an active-duty Navy member, said her intention was to honor the flag as well as her clients, who wanted to incorporate their military service in the photo shoot.">
+ <p>A photographer and Navy veteran is fighting back after a photo she posted to <a id="ramplink_Facebook_" href="http://abcnews.go.com/topics/business/companies/facebook-inc.htm" target="_blank" data-rapid_p="13">Facebook</a> started an online backlash.</p>
<p>Vanessa Hicks said she had no idea her photo would be considered controversial. The photo, from a military family’s newborn photo shoot, showed a newborn infant wrapped in an American flag held by his father, who was in his military uniform.</p>
<p>Hicks, a Navy veteran herself and the wife of an active-duty Navy member, said her intention was to honor the flag as well as her clients, who wanted to incorporate their military service in the photo shoot.</p>
- <p><a data-rapid_p="14" href="http://abcnews.go.com/WNT/video/pizza-patriots-making-special-super-bowl-delivery-troops-28633975" target="_blank">Pizza Man Making Special Delivery Pizza Delivery to Afghanistan During Super Bowl</a></p>
- <p><a data-rapid_p="15" href="http://abcnews.go.com/Health/superbug-scope-maker-altered-design-make-cleaning-easier/story?id=29417816" target="_blank">Redesigned Scopes Fail to Stop 'Superbug Outbreaks</a></p>
- <p><a data-rapid_p="16" href="http://abcnews.go.com/Travel/video/antarctica-penguin-post-office-job-attracts-record-number-29247380" target="_blank">Antarctica 'Penguin Post Office' Attracts Record Number of Applicants</a></p>
+ <p><a href="http://abcnews.go.com/WNT/video/pizza-patriots-making-special-super-bowl-delivery-troops-28633975" target="_blank" data-rapid_p="14">Pizza Man Making Special Delivery Pizza Delivery to Afghanistan During Super Bowl</a></p>
+ <p><a href="http://abcnews.go.com/Health/superbug-scope-maker-altered-design-make-cleaning-easier/story?id=29417816" target="_blank" data-rapid_p="15">Redesigned Scopes Fail to Stop 'Superbug Outbreaks</a></p>
+ <p><a href="http://abcnews.go.com/Travel/video/antarctica-penguin-post-office-job-attracts-record-number-29247380" target="_blank" data-rapid_p="16">Antarctica 'Penguin Post Office' Attracts Record Number of Applicants</a></p>
<p>“This is what he was fighting for, his son wrapped in an American flag,” Hicks told ABC News. However, when she posted the image on her page, she started to get comments accusing her of desecrating the flag.</p>
<p>On one Facebook page an unidentified poster put up her picture writing and wrote they found it was “disrespectful, rude, tacky, disgusting, and against the U.S. Flag Code.”</p>
- <p><span id="schemaorg"><div><figure data-orig-index="2"><a data-rapid_p="17" id="cover-c9b69c1a26e19ae9fe744763dc31e9ac" name="cover-c9b69c1a26e19ae9fe744763dc31e9ac"></a><div><p>View photo</p><p><span>.</span></p></div><img alt="Vanessa Hicks" data-preembed="image" src="https://s3.yimg.com/bt/api/res/1.2/GNtA09EDJWzWfpBzGYJS0Q--/YXBwaWQ9eW5ld3NfbGVnbztxPTg1O3c9NjMw/http://media.zenfs.com/en_us/gma/us.abcnews.gma.com/HT_flag_baby_jtm_150311_16x9_992.jpg" title="Vanessa Hicks" width="630"></img></figure><p>Vanessa Hicks</p>
+ <p><span id="schemaorg"><div><figure data-orig-index="2"> <a name="cover-c9b69c1a26e19ae9fe744763dc31e9ac" id="cover-c9b69c1a26e19ae9fe744763dc31e9ac" data-rapid_p="17"></a><div><p>View photo</p><p><span>.</span></p></div><img alt="Vanessa Hicks" data-preembed="image" src="https://s3.yimg.com/bt/api/res/1.2/GNtA09EDJWzWfpBzGYJS0Q--/YXBwaWQ9eW5ld3NfbGVnbztxPTg1O3c9NjMw/http://media.zenfs.com/en_us/gma/us.abcnews.gma.com/HT_flag_baby_jtm_150311_16x9_992.jpg" title="Vanessa Hicks" width="630"></figure>
+ <p>Vanessa Hicks</p>
</div>
</span>
- </p><p>The Federal Flag Code has guidelines for the proper treatment of the U.S. Flag but there are no rules for punishment related to violations. In the past, the <a data-rapid_p="18" href="http://abcnews.go.com/topics/news/us/supreme-court.htm" target="_blank">Supreme Court</a> has found that people are protected from punishment under the First Amendment for manipulating or even burning the flag.
+ </p><p>The Federal Flag Code has guidelines for the proper treatment of the U.S. Flag but there are no rules for punishment related to violations. In the past, the <a href="http://abcnews.go.com/topics/news/us/supreme-court.htm" target="_blank" data-rapid_p="18">Supreme Court</a> has found that people are protected from punishment under the First Amendment for manipulating or even burning the flag.
</p>
<p>Hicks said she was surprised when messages suddenly started to pop up on her Facebook page and even her own website criticizing her photos.</p>
<p>She said she stayed up until 4 a.m. recently to take down comments from her business and company page, even on shoots that had nothing to do with the flag.</p>
@@ -32,11 +43,14 @@
<p>Hicks, whose husband is still on active duty in the Navy, said the flag is a symbol of U.S. freedoms including the First Amendment right to free speech.</p>
<p>“[My husband] wouldn’t die for a flag, he would die for the freedoms that this country offers,” she told ABC News.</p>
<p>After her story grabbed local headlines, Hicks has been inundated by requests for photos shoots, and she said she plans to give 15 percent of all profits related to these shoots to the USO.</p>
- </div>
+
+
+ </div>
</div>
</section>
+
diff --git a/test/test-pages/yahoo-4/expected-metadata.json b/test/test-pages/yahoo-4/expected-metadata.json
index c8459ad..18324c4 100644
--- a/test/test-pages/yahoo-4/expected-metadata.json
+++ b/test/test-pages/yahoo-4/expected-metadata.json
@@ -1,5 +1,5 @@
{
- "Author": null,
+ "Author": "個人",
"Direction": null,
"Excerpt": "トレンドマイクロは3月9日、Wi-Fi利用時の通信を暗号化し保護するスマホ・タブレット - Yahoo!ニュース(CNET Japan)",
"Image": "http:\/\/i.yimg.jp\/images\/jpnews\/cre\/common\/all\/images\/fbico_ogp_600x600.png",
diff --git a/test/test-pages/youth/expected.html b/test/test-pages/youth/expected.html
index f4ae9da..30ffb0b 100644
--- a/test/test-pages/youth/expected.html
+++ b/test/test-pages/youth/expected.html
@@ -2,7 +2,7 @@
<div id="content">
<div id="container">
<div>
- <p><img alt="海外留学生看两会:出国前后关注点大不同" height="269" oldsrc="W020170310313653868929.jpg" src="http://fakehost/test/W020170310313653868929.jpg" title="海外留学生看两会:出国前后关注点大不同" width="400"></img></p>
+ <p><img title="海外留学生看两会:出国前后关注点大不同" alt="海外留学生看两会:出国前后关注点大不同" src="http://fakehost/test/W020170310313653868929.jpg" oldsrc="W020170310313653868929.jpg" height="269" width="400"></p>
<p>图为马素湘在澳大利亚悉尼游玩时的近影。</p>
<p>  <strong>出国前后关注点大不同</strong></p>
<p>  <strong>出国前:政治科目会出啥考题?</strong></p>
@@ -12,7 +12,7 @@
<p>   无独有偶,英国剑桥大学的李博灏也有着类似的经历。他表示,在国内读本科时,虽然关注过两会,但并不像现在这样,将关注点放在国家社会经济迫切需要解决的难题与问题上。“出国前更关心与我们学生的实际问题以及切身利益相关的议题,比如奖学金、助学金的发放与申请;相关工作行业就业前景等。”</p>
<p>   在英国求学6年后,李博灏希望能够学有所用,为国家发展过程中遇到的难题寻求解决办法。因此随着课题研究的深入,他更加关注国家和社会目前所面临的挑战,比如中等收入陷阱、供给侧改革、创意创新产业的发展等议题。</p>
<p>   还有一些学子表示,出国前对两会不太了解,出国后反而对两会热点多了些思考。在澳大利亚墨尔本留学的马素湘说:“想不关注都难啊!刷微博看新闻到处都是两会的消息。而且我现在学的是新闻专业,对世界发生的大小事都会留意。随着年龄、阅历增长,家国情怀也渐长,会关心国家发展的各方面问题。”</p>
- <p><img alt="" oldsrc="W020170310313654043127.jpg" src="http://fakehost/test/W020170310313654043127.jpg"></img></p>
+ <p><img src="http://fakehost/test/W020170310313654043127.jpg" alt oldsrc="W020170310313654043127.jpg"></p>
<p>图为李博灏在瑞士日内日瓦联合国欧洲总部的近影。</p>
<p>  <strong>关注点多与所学专业相关</strong></p>
<p>  <strong>法学专业热议法定婚龄</strong> <strong>很多人关心供给侧改革</strong></p>
@@ -20,7 +20,7 @@
<p>   对此提案,卢宇有着自己的看法,“百花齐放的局面固然可喜,但也不能一哄而上,国家应该提高行业准入门槛,完善新能源汽车准入管理规则,从源头上进行制度创新,将一些不具备新能源汽车生产资质的厂家淘汰出局,并高度关注电池系统安全问题,严格执行充电桩生产的国际标准。”</p>
<p>   马素湘表示,“出国读研之前,我在国内学习法学,因此对相关的问题比较感兴趣。今年两会上人大代表黄细花提出把法定婚龄降低到18岁的提案;而在微博的热搜榜上,一本儿童性教育读物引起了极大的争议。我认为降低婚龄并不适合我国国情。因为性教育的缺乏导致我国大部分人在18岁之前没有接受过完整的性教育,思想行动上也不够成熟,如何能够对自己的人生和自己的另一半负责?所以我希望能有人大代表提议在国民儿童阶段完善我国的性教育,而不是为了鼓励生育将法定婚龄提前。”</p>
<p>   李博灏是英国剑桥大学制造业研究所创新设计管理中心的一名博士。他格外关注的话题是供给侧结构性改革,知识产权保护,消费升级等议题。“我的博士研究课题是关于推动创新设计密集型产业的发展从而帮助中等收入国家克服中等收入陷阱的探索,因此一直十分关注国内关于供给侧改革的相关议题。通过本届两会对于该议题的进一步关注,我希望可以有效地帮助我了解供给侧改革与中等收入陷阱问题目前的发展状况以及解决情况;也希望可以与更多的机构取得联系,并帮助他们了解该议题最前沿的研究与解决方案。”</p>
- <p><img alt="" oldsrc="W020170310313654453091.jpg" src="http://fakehost/test/W020170310313654453091.jpg"></img></p>
+ <p><img src="http://fakehost/test/W020170310313654453091.jpg" alt oldsrc="W020170310313654453091.jpg"></p>
<p>图为卢宇与祖国五星红旗和联合国会旗的合影。</p>
<p>  <strong> 两会成为了解国情的窗口</strong></p>
<p>  <strong> 盼准确把握国家发展需求 愿寻求机遇回国有所作为</strong></p>