yarr/src/assets/javascripts/Readability.min.js
2021-02-26 13:49:37 +00:00

3 lines
27 KiB
JavaScript

function Readability(e,t){if(t&&t.documentElement)e=t,t=arguments[2];else if(!e||!e.documentElement)throw new Error("First argument to Readability constructor should be a document object.");t=t||{},this._doc=e,this._docJSDOMParser=this._doc.firstChild.__JSDOMParser__,this._articleTitle=null,this._articleByline=null,this._articleDir=null,this._articleSiteName=null,this._attempts=[],this._debug=!!t.debug,this._maxElemsToParse=t.maxElemsToParse||this.DEFAULT_MAX_ELEMS_TO_PARSE,this._nbTopCandidates=t.nbTopCandidates||this.DEFAULT_N_TOP_CANDIDATES,this._charThreshold=t.charThreshold||this.DEFAULT_CHAR_THRESHOLD,this._classesToPreserve=this.CLASSES_TO_PRESERVE.concat(t.classesToPreserve||[]),this._keepClasses=!!t.keepClasses,this._flags=this.FLAG_STRIP_UNLIKELYS|this.FLAG_WEIGHT_CLASSES|this.FLAG_CLEAN_CONDITIONALLY;var r;this._debug?(r=function(i){var l=i.nodeName+" ";if(i.nodeType==i.TEXT_NODE)return l+'("'+i.textContent+'")';var a=i.className&&"."+i.className.replace(/ /g,"."),s="";return i.id?s="(#"+i.id+a+")":a&&(s="("+a+")"),l+s},this.log=function(){if(typeof dump!="undefined"){var i=Array.prototype.map.call(arguments,function(a){return a&&a.nodeName?r(a):a}).join(" ");dump("Reader: (Readability) "+i+`
`)}else if(typeof console!="undefined"){var l=["Reader: (Readability) "].concat(arguments);console.log.apply(console,l)}}):this.log=function(){}}Readability.prototype={FLAG_STRIP_UNLIKELYS:1,FLAG_WEIGHT_CLASSES:2,FLAG_CLEAN_CONDITIONALLY:4,ELEMENT_NODE:1,TEXT_NODE:3,DEFAULT_MAX_ELEMS_TO_PARSE:0,DEFAULT_N_TOP_CANDIDATES:5,DEFAULT_TAGS_TO_SCORE:"section,h2,h3,h4,h5,h6,p,td,pre".toUpperCase().split(","),DEFAULT_CHAR_THRESHOLD:500,REGEXPS:{unlikelyCandidates:/-ad-|ai2html|banner|breadcrumbs|combx|comment|community|cover-wrap|disqus|extra|footer|gdpr|header|legends|menu|related|remark|replies|rss|shoutbox|sidebar|skyscraper|social|sponsor|supplemental|ad-break|agegate|pagination|pager|popup|yom-remote/i,okMaybeItsACandidate:/and|article|body|column|content|main|shadow/i,positive:/article|body|content|entry|hentry|h-entry|main|page|pagination|post|text|blog|story/i,negative:/hidden|^hid$| hid$| hid |^hid |banner|combx|comment|com-|contact|foot|footer|footnote|gdpr|masthead|media|meta|outbrain|promo|related|scroll|share|shoutbox|sidebar|skyscraper|sponsor|shopping|tags|tool|widget/i,extraneous:/print|archive|comment|discuss|e[\-]?mail|share|reply|all|login|sign|single|utility/i,byline:/byline|author|dateline|writtenby|p-author/i,replaceFonts:/<(\/?)font[^>]*>/gi,normalize:/\s{2,}/g,videos:/\/\/(www\.)?((dailymotion|youtube|youtube-nocookie|player\.vimeo|v\.qq)\.com|(archive|upload\.wikimedia)\.org|player\.twitch\.tv)/i,shareElements:/(\b|_)(share|sharedaddy)(\b|_)/i,nextLink:/(next|weiter|continue|>([^\|]|$)|»([^\|]|$))/i,prevLink:/(prev|earl|old|new|<|«)/i,whitespace:/^\s*$/,hasContent:/\S$/,srcsetUrl:/(\S+)(\s+[\d.]+[xw])?(\s*(?:,|$))/g,b64DataUrl:/^data:\s*([^\s;,]+)\s*;\s*base64\s*,/i},DIV_TO_P_ELEMS:["A","BLOCKQUOTE","DL","DIV","IMG","OL","P","PRE","TABLE","UL","SELECT"],ALTER_TO_DIV_EXCEPTIONS:["DIV","ARTICLE","SECTION","P"],PRESENTATIONAL_ATTRIBUTES:["align","background","bgcolor","border","cellpadding","cellspacing","frame","hspace","rules","style","valign","vspace"],DEPRECATED_SIZE_ATTRIBUTE_ELEMS:["TABLE","TH","TD","HR","PRE"],PHRASING_ELEMS:["ABBR","AUDIO","B","BDO","BR","BUTTON","CITE","CODE","DATA","DATALIST","DFN","EM","EMBED","I","IMG","INPUT","KBD","LABEL","MARK","MATH","METER","NOSCRIPT","OBJECT","OUTPUT","PROGRESS","Q","RUBY","SAMP","SCRIPT","SELECT","SMALL","SPAN","STRONG","SUB","SUP","TEXTAREA","TIME","VAR","WBR"],CLASSES_TO_PRESERVE:["page"],HTML_ESCAPE_MAP:{lt:"<",gt:">",amp:"&",quot:'"',apos:"'"},_postProcessContent:function(e){this._fixRelativeUris(e),this._keepClasses||this._cleanClasses(e)},_removeNodes:function(e,t){if(this._docJSDOMParser&&e._isLiveNodeList)throw new Error("Do not pass live node lists to _removeNodes");for(var r=e.length-1;r>=0;r--){var i=e[r],l=i.parentNode;l&&(!t||t.call(this,i,r,e))&&l.removeChild(i)}},_replaceNodeTags:function(e,t){if(this._docJSDOMParser&&e._isLiveNodeList)throw new Error("Do not pass live node lists to _replaceNodeTags");for(var r=e.length-1;r>=0;r--){var i=e[r];this._setNodeTag(i,t)}},_forEachNode:function(e,t){Array.prototype.forEach.call(e,t,this)},_someNode:function(e,t){return Array.prototype.some.call(e,t,this)},_everyNode:function(e,t){return Array.prototype.every.call(e,t,this)},_concatNodeLists:function(){var e=Array.prototype.slice,t=e.call(arguments),r=t.map(function(i){return e.call(i)});return Array.prototype.concat.apply([],r)},_getAllNodesWithTag:function(e,t){return e.querySelectorAll?e.querySelectorAll(t.join(",")):[].concat.apply([],t.map(function(r){var i=e.getElementsByTagName(r);return Array.isArray(i)?i:Array.from(i)}))},_cleanClasses:function(e){var t=this._classesToPreserve,r=(e.getAttribute("class")||"").split(/\s+/).filter(function(i){return t.indexOf(i)!=-1}).join(" ");for(r?e.setAttribute("class",r):e.removeAttribute("class"),e=e.firstElementChild;e;e=e.nextElementSibling)this._cleanClasses(e)},_fixRelativeUris:function(e){var t=this._doc.baseURI,r=this._doc.documentURI;function i(s){if(t==r&&s.charAt(0)=="#")return s;try{return new URL(s,t).href}catch(c){}return s}var l=this._getAllNodesWithTag(e,["a"]);this._forEachNode(l,function(s){var c=s.getAttribute("href");if(c)if(c.indexOf("javascript:")===0)if(s.childNodes.length===1&&s.childNodes[0].nodeType===this.TEXT_NODE){var n=this._doc.createTextNode(s.textContent);s.parentNode.replaceChild(n,s)}else{for(var h=this._doc.createElement("span");s.childNodes.length>0;)h.appendChild(s.childNodes[0]);s.parentNode.replaceChild(h,s)}else s.setAttribute("href",i(c))});var a=this._getAllNodesWithTag(e,["img","picture","figure","video","audio","source"]);this._forEachNode(a,function(s){var c=s.getAttribute("src"),n=s.getAttribute("poster"),h=s.getAttribute("srcset");if(c&&s.setAttribute("src",i(c)),n&&s.setAttribute("poster",i(n)),h){var o=h.replace(this.REGEXPS.srcsetUrl,function(E,v,_,N){return i(v)+(_||"")+N});s.setAttribute("srcset",o)}})},_getArticleTitle:function(){var e=this._doc,t="",r="";try{t=r=e.title.trim(),typeof t!="string"&&(t=r=this._getInnerText(e.getElementsByTagName("title")[0]))}catch(o){}var i=!1;function l(o){return o.split(/\s+/).length}if(/ [\|\-\\\/>»] /.test(t))i=/ [\\\/>»] /.test(t),t=r.replace(/(.*)[\|\-\\\/>»] .*/gi,"$1"),l(t)<3&&(t=r.replace(/[^\|\-\\\/>»]*[\|\-\\\/>»](.*)/gi,"$1"));else if(t.indexOf(": ")!==-1){var a=this._concatNodeLists(e.getElementsByTagName("h1"),e.getElementsByTagName("h2")),s=t.trim(),c=this._someNode(a,function(o){return o.textContent.trim()===s});c||(t=r.substring(r.lastIndexOf(":")+1),l(t)<3?t=r.substring(r.indexOf(":")+1):l(r.substr(0,r.indexOf(":")))>5&&(t=r))}else if(t.length>150||t.length<15){var n=e.getElementsByTagName("h1");n.length===1&&(t=this._getInnerText(n[0]))}t=t.trim().replace(this.REGEXPS.normalize," ");var h=l(t);return h<=4&&(!i||h!=l(r.replace(/[\|\-\\\/>»]+/g,""))-1)&&(t=r),t},_prepDocument:function(){var e=this._doc;this._removeNodes(this._getAllNodesWithTag(e,["style"])),e.body&&this._replaceBrs(e.body),this._replaceNodeTags(this._getAllNodesWithTag(e,["font"]),"SPAN")},_nextElement:function(e){for(var t=e;t&&t.nodeType!=this.ELEMENT_NODE&&this.REGEXPS.whitespace.test(t.textContent);)t=t.nextSibling;return t},_replaceBrs:function(e){this._forEachNode(this._getAllNodesWithTag(e,["br"]),function(t){for(var r=t.nextSibling,i=!1;(r=this._nextElement(r))&&r.tagName=="BR";){i=!0;var l=r.nextSibling;r.parentNode.removeChild(r),r=l}if(i){var a=this._doc.createElement("p");for(t.parentNode.replaceChild(a,t),r=a.nextSibling;r;){if(r.tagName=="BR"){var s=this._nextElement(r.nextSibling);if(s&&s.tagName=="BR")break}if(!this._isPhrasingContent(r))break;var c=r.nextSibling;a.appendChild(r),r=c}for(;a.lastChild&&this._isWhitespace(a.lastChild);)a.removeChild(a.lastChild);a.parentNode.tagName==="P"&&this._setNodeTag(a.parentNode,"DIV")}})},_setNodeTag:function(e,t){if(this.log("_setNodeTag",e,t),this._docJSDOMParser)return e.localName=t.toLowerCase(),e.tagName=t.toUpperCase(),e;for(var r=e.ownerDocument.createElement(t);e.firstChild;)r.appendChild(e.firstChild);e.parentNode.replaceChild(r,e),e.readability&&(r.readability=e.readability);for(var i=0;i<e.attributes.length;i++)try{r.setAttribute(e.attributes[i].name,e.attributes[i].value)}catch(l){}return r},_prepArticle:function(e){this._cleanStyles(e),this._markDataTables(e),this._fixLazyImages(e),this._cleanConditionally(e,"form"),this._cleanConditionally(e,"fieldset"),this._clean(e,"object"),this._clean(e,"embed"),this._clean(e,"h1"),this._clean(e,"footer"),this._clean(e,"link"),this._clean(e,"aside");var t=this.DEFAULT_CHAR_THRESHOLD;this._forEachNode(e.children,function(a){this._cleanMatchedNodes(a,function(s,c){return this.REGEXPS.shareElements.test(c)&&s.textContent.length<t})});var r=e.getElementsByTagName("h2");if(r.length===1){var i=(r[0].textContent.length-this._articleTitle.length)/this._articleTitle.length;if(Math.abs(i)<.5){var l=!1;i>0?l=r[0].textContent.includes(this._articleTitle):l=this._articleTitle.includes(r[0].textContent),l&&this._clean(e,"h2")}}this._clean(e,"iframe"),this._clean(e,"input"),this._clean(e,"textarea"),this._clean(e,"select"),this._clean(e,"button"),this._cleanHeaders(e),this._cleanConditionally(e,"table"),this._cleanConditionally(e,"ul"),this._cleanConditionally(e,"div"),this._removeNodes(this._getAllNodesWithTag(e,["p"]),function(a){var s=a.getElementsByTagName("img").length,c=a.getElementsByTagName("embed").length,n=a.getElementsByTagName("object").length,h=a.getElementsByTagName("iframe").length,o=s+c+n+h;return o===0&&!this._getInnerText(a,!1)}),this._forEachNode(this._getAllNodesWithTag(e,["br"]),function(a){var s=this._nextElement(a.nextSibling);s&&s.tagName=="P"&&a.parentNode.removeChild(a)}),this._forEachNode(this._getAllNodesWithTag(e,["table"]),function(a){var s=this._hasSingleTagInsideElement(a,"TBODY")?a.firstElementChild:a;if(this._hasSingleTagInsideElement(s,"TR")){var c=s.firstElementChild;if(this._hasSingleTagInsideElement(c,"TD")){var n=c.firstElementChild;n=this._setNodeTag(n,this._everyNode(n.childNodes,this._isPhrasingContent)?"P":"DIV"),a.parentNode.replaceChild(n,a)}}})},_initializeNode:function(e){switch(e.readability={contentScore:0},e.tagName){case"DIV":e.readability.contentScore+=5;break;case"PRE":case"TD":case"BLOCKQUOTE":e.readability.contentScore+=3;break;case"ADDRESS":case"OL":case"UL":case"DL":case"DD":case"DT":case"LI":case"FORM":e.readability.contentScore-=3;break;case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":case"TH":e.readability.contentScore-=5;break}e.readability.contentScore+=this._getClassWeight(e)},_removeAndGetNext:function(e){var t=this._getNextNode(e,!0);return e.parentNode.removeChild(e),t},_getNextNode:function(e,t){if(!t&&e.firstElementChild)return e.firstElementChild;if(e.nextElementSibling)return e.nextElementSibling;do e=e.parentNode;while(e&&!e.nextElementSibling);return e&&e.nextElementSibling},_checkByline:function(e,t){if(this._articleByline)return!1;if(e.getAttribute!==void 0)var r=e.getAttribute("rel"),i=e.getAttribute("itemprop");return(r==="author"||i&&i.indexOf("author")!==-1||this.REGEXPS.byline.test(t))&&this._isValidByline(e.textContent)?(this._articleByline=e.textContent.trim(),!0):!1},_getNodeAncestors:function(e,t){t=t||0;for(var r=0,i=[];e.parentNode&&(i.push(e.parentNode),!(t&&++r===t));)e=e.parentNode;return i},_grabArticle:function(e){this.log("**** grabArticle ****");var t=this._doc,r=e!==null;if(e=e||this._doc.body,!e)return this.log("No body found in document. Abort."),null;for(var i=e.innerHTML;;){for(var l=this._flagIsActive(this.FLAG_STRIP_UNLIKELYS),a=[],s=this._doc.documentElement;s;){var c=s.className+" "+s.id;if(!this._isProbablyVisible(s)){this.log("Removing hidden node - "+c),s=this._removeAndGetNext(s);continue}if(this._checkByline(s,c)){s=this._removeAndGetNext(s);continue}if(l){if(this.REGEXPS.unlikelyCandidates.test(c)&&!this.REGEXPS.okMaybeItsACandidate.test(c)&&!this._hasAncestorTag(s,"table")&&s.tagName!=="BODY"&&s.tagName!=="A"){this.log("Removing unlikely candidate - "+c),s=this._removeAndGetNext(s);continue}if(s.getAttribute("role")=="complementary"){this.log("Removing complementary content - "+c),s=this._removeAndGetNext(s);continue}}if((s.tagName==="DIV"||s.tagName==="SECTION"||s.tagName==="HEADER"||s.tagName==="H1"||s.tagName==="H2"||s.tagName==="H3"||s.tagName==="H4"||s.tagName==="H5"||s.tagName==="H6")&&this._isElementWithoutContent(s)){s=this._removeAndGetNext(s);continue}if(this.DEFAULT_TAGS_TO_SCORE.indexOf(s.tagName)!==-1&&a.push(s),s.tagName==="DIV"){for(var n=null,h=s.firstChild;h;){var o=h.nextSibling;if(this._isPhrasingContent(h))n!==null?n.appendChild(h):this._isWhitespace(h)||(n=t.createElement("p"),s.replaceChild(n,h),n.appendChild(h));else if(n!==null){for(;n.lastChild&&this._isWhitespace(n.lastChild);)n.removeChild(n.lastChild);n=null}h=o}if(this._hasSingleTagInsideElement(s,"P")&&this._getLinkDensity(s)<.25){var E=s.children[0];s.parentNode.replaceChild(E,s),s=E,a.push(s)}else this._hasChildBlockElement(s)||(s=this._setNodeTag(s,"P"),a.push(s))}s=this._getNextNode(s)}var v=[];this._forEachNode(a,function(T){if(!(!T.parentNode||typeof T.parentNode.tagName=="undefined")){var A=this._getInnerText(T);if(!(A.length<25)){var J=this._getNodeAncestors(T,3);if(J.length!==0){var w=0;w+=1,w+=A.split(",").length,w+=Math.min(Math.floor(A.length/100),3),this._forEachNode(J,function(d,k){if(!(!d.tagName||!d.parentNode||typeof d.parentNode.tagName=="undefined")){if(typeof d.readability=="undefined"&&(this._initializeNode(d),v.push(d)),k===0)var W=1;else k===1?W=2:W=k*3;d.readability.contentScore+=w/W}})}}}});for(var _=[],N=0,x=v.length;N<x;N+=1){var b=v[N],p=b.readability.contentScore*(1-this._getLinkDensity(b));b.readability.contentScore=p,this.log("Candidate:",b,"with score "+p);for(var y=0;y<this._nbTopCandidates;y++){var F=_[y];if(!F||p>F.readability.contentScore){_.splice(y,0,b),_.length>this._nbTopCandidates&&_.pop();break}}}var u=_[0]||null,X=!1,g;if(u===null||u.tagName==="BODY"){u=t.createElement("DIV"),X=!0;for(var B=e.childNodes;B.length;)this.log("Moving child out:",B[0]),u.appendChild(B[0]);e.appendChild(u),this._initializeNode(u)}else if(u){for(var D=[],I=1;I<_.length;I++)_[I].readability.contentScore/u.readability.contentScore>=.75&&D.push(this._getNodeAncestors(_[I]));var C=3;if(D.length>=C)for(g=u.parentNode;g.tagName!=="BODY";){for(var O=0,G=0;G<D.length&&O<C;G++)O+=Number(D[G].includes(g));if(O>=C){u=g;break}g=g.parentNode}u.readability||this._initializeNode(u),g=u.parentNode;for(var H=u.readability.contentScore,Q=H/3;g.tagName!=="BODY";){if(!g.readability){g=g.parentNode;continue}var V=g.readability.contentScore;if(V<Q)break;if(V>H){u=g;break}H=g.readability.contentScore,g=g.parentNode}for(g=u.parentNode;g.tagName!="BODY"&&g.children.length==1;)u=g,g=u.parentNode;u.readability||this._initializeNode(u)}var m=t.createElement("DIV");r&&(m.id="readability-content");var Z=Math.max(10,u.readability.contentScore*.2);g=u.parentNode;for(var j=g.children,R=0,Y=j.length;R<Y;R++){var f=j[R],S=!1;if(this.log("Looking at sibling node:",f,f.readability?"with score "+f.readability.contentScore:""),this.log("Sibling has score",f.readability?f.readability.contentScore:"Unknown"),f===u)S=!0;else{var $=0;if(f.className===u.className&&u.className!==""&&($+=u.readability.contentScore*.2),f.readability&&f.readability.contentScore+$>=Z)S=!0;else if(f.nodeName==="P"){var K=this._getLinkDensity(f),q=this._getInnerText(f),M=q.length;(M>80&&K<.25||M<80&&M>0&&K===0&&q.search(/\.( |$)/)!==-1)&&(S=!0)}}S&&(this.log("Appending node:",f),this.ALTER_TO_DIV_EXCEPTIONS.indexOf(f.nodeName)===-1&&(this.log("Altering sibling:",f,"to div."),f=this._setNodeTag(f,"DIV")),m.appendChild(f),R-=1,Y-=1)}if(this._debug&&this.log("Article content pre-prep: "+m.innerHTML),this._prepArticle(m),this._debug&&this.log("Article content post-prep: "+m.innerHTML),X)u.id="readability-page-1",u.className="page";else{var P=t.createElement("DIV");P.id="readability-page-1",P.className="page";for(var z=m.childNodes;z.length;)P.appendChild(z[0]);m.appendChild(P)}this._debug&&this.log("Article content after paging: "+m.innerHTML);var U=!0,L=this._getInnerText(m,!0).length;if(L<this._charThreshold)if(U=!1,e.innerHTML=i,this._flagIsActive(this.FLAG_STRIP_UNLIKELYS))this._removeFlag(this.FLAG_STRIP_UNLIKELYS),this._attempts.push({articleContent:m,textLength:L});else if(this._flagIsActive(this.FLAG_WEIGHT_CLASSES))this._removeFlag(this.FLAG_WEIGHT_CLASSES),this._attempts.push({articleContent:m,textLength:L});else if(this._flagIsActive(this.FLAG_CLEAN_CONDITIONALLY))this._removeFlag(this.FLAG_CLEAN_CONDITIONALLY),this._attempts.push({articleContent:m,textLength:L});else{if(this._attempts.push({articleContent:m,textLength:L}),this._attempts.sort(function(T,A){return A.textLength-T.textLength}),!this._attempts[0].textLength)return null;m=this._attempts[0].articleContent,U=!0}if(U){var ee=[g,u].concat(this._getNodeAncestors(g));return this._someNode(ee,function(T){if(!T.tagName)return!1;var A=T.getAttribute("dir");return A?(this._articleDir=A,!0):!1}),m}}},_isValidByline:function(e){return typeof e=="string"||e instanceof String?(e=e.trim(),e.length>0&&e.length<100):!1},_unescapeHtmlEntities:function(e){if(!e)return e;var t=this.HTML_ESCAPE_MAP;return e.replace(/&(quot|amp|apos|lt|gt);/g,function(r,i){return t[i]}).replace(/&#(?:x([0-9a-z]{1,4})|([0-9]{1,4}));/gi,function(r,i,l){var a=parseInt(i||l,i?16:10);return String.fromCharCode(a)})},_getArticleMetadata:function(){var e={},t={},r=this._doc.getElementsByTagName("meta"),i=/\s*(dc|dcterm|og|twitter)\s*:\s*(author|creator|description|title|site_name)\s*/gi,l=/^\s*(?:(dc|dcterm|og|twitter|weibo:(article|webpage))\s*[\.:]\s*)?(author|creator|description|title|site_name)\s*$/i;return this._forEachNode(r,function(a){var s=a.getAttribute("name"),c=a.getAttribute("property"),n=a.getAttribute("content");if(!!n){var h=null,o=null;if(c&&(h=c.match(i),h))for(var E=h.length-1;E>=0;E--)o=h[E].toLowerCase().replace(/\s/g,""),t[o]=n.trim();!h&&s&&l.test(s)&&(o=s,n&&(o=o.toLowerCase().replace(/\s/g,"").replace(/\./g,":"),t[o]=n.trim()))}}),e.title=t["dc:title"]||t["dcterm:title"]||t["og:title"]||t["weibo:article:title"]||t["weibo:webpage:title"]||t.title||t["twitter:title"],e.title||(e.title=this._getArticleTitle()),e.byline=t["dc:creator"]||t["dcterm:creator"]||t.author,e.excerpt=t["dc:description"]||t["dcterm:description"]||t["og:description"]||t["weibo:article:description"]||t["weibo:webpage:description"]||t.description||t["twitter:description"],e.siteName=t["og:site_name"],e.title=this._unescapeHtmlEntities(e.title),e.byline=this._unescapeHtmlEntities(e.byline),e.excerpt=this._unescapeHtmlEntities(e.excerpt),e.siteName=this._unescapeHtmlEntities(e.siteName),e},_isSingleImage:function(e){return e.tagName==="IMG"?!0:e.children.length!==1||e.textContent.trim()!==""?!1:this._isSingleImage(e.children[0])},_unwrapNoscriptImages:function(e){var t=Array.from(e.getElementsByTagName("img"));this._forEachNode(t,function(i){for(var l=0;l<i.attributes.length;l++){var a=i.attributes[l];switch(a.name){case"src":case"srcset":case"data-src":case"data-srcset":return}if(/\.(jpg|jpeg|png|webp)/i.test(a.value))return}i.parentNode.removeChild(i)});var r=Array.from(e.getElementsByTagName("noscript"));this._forEachNode(r,function(i){var l=e.createElement("div");if(l.innerHTML=i.innerHTML,!!this._isSingleImage(l)){var a=i.previousElementSibling;if(a&&this._isSingleImage(a)){var s=a;s.tagName!=="IMG"&&(s=a.getElementsByTagName("img")[0]);for(var c=l.getElementsByTagName("img")[0],n=0;n<s.attributes.length;n++){var h=s.attributes[n];if(h.value!==""&&(h.name==="src"||h.name==="srcset"||/\.(jpg|jpeg|png|webp)/i.test(h.value))){if(c.getAttribute(h.name)===h.value)continue;var o=h.name;c.hasAttribute(o)&&(o="data-old-"+o),c.setAttribute(o,h.value)}}i.parentNode.replaceChild(l.firstElementChild,a)}}})},_removeScripts:function(e){this._removeNodes(this._getAllNodesWithTag(e,["script"]),function(t){return t.nodeValue="",t.removeAttribute("src"),!0}),this._removeNodes(this._getAllNodesWithTag(e,["noscript"]))},_hasSingleTagInsideElement:function(e,t){return e.children.length!=1||e.children[0].tagName!==t?!1:!this._someNode(e.childNodes,function(r){return r.nodeType===this.TEXT_NODE&&this.REGEXPS.hasContent.test(r.textContent)})},_isElementWithoutContent:function(e){return e.nodeType===this.ELEMENT_NODE&&e.textContent.trim().length==0&&(e.children.length==0||e.children.length==e.getElementsByTagName("br").length+e.getElementsByTagName("hr").length)},_hasChildBlockElement:function(e){return this._someNode(e.childNodes,function(t){return this.DIV_TO_P_ELEMS.indexOf(t.tagName)!==-1||this._hasChildBlockElement(t)})},_isPhrasingContent:function(e){return e.nodeType===this.TEXT_NODE||this.PHRASING_ELEMS.indexOf(e.tagName)!==-1||(e.tagName==="A"||e.tagName==="DEL"||e.tagName==="INS")&&this._everyNode(e.childNodes,this._isPhrasingContent)},_isWhitespace:function(e){return e.nodeType===this.TEXT_NODE&&e.textContent.trim().length===0||e.nodeType===this.ELEMENT_NODE&&e.tagName==="BR"},_getInnerText:function(e,t){t=typeof t=="undefined"?!0:t;var r=e.textContent.trim();return t?r.replace(this.REGEXPS.normalize," "):r},_getCharCount:function(e,t){return t=t||",",this._getInnerText(e).split(t).length-1},_cleanStyles:function(e){if(!(!e||e.tagName.toLowerCase()==="svg")){for(var t=0;t<this.PRESENTATIONAL_ATTRIBUTES.length;t++)e.removeAttribute(this.PRESENTATIONAL_ATTRIBUTES[t]);this.DEPRECATED_SIZE_ATTRIBUTE_ELEMS.indexOf(e.tagName)!==-1&&(e.removeAttribute("width"),e.removeAttribute("height"));for(var r=e.firstElementChild;r!==null;)this._cleanStyles(r),r=r.nextElementSibling}},_getLinkDensity:function(e){var t=this._getInnerText(e).length;if(t===0)return 0;var r=0;return this._forEachNode(e.getElementsByTagName("a"),function(i){r+=this._getInnerText(i).length}),r/t},_getClassWeight:function(e){if(!this._flagIsActive(this.FLAG_WEIGHT_CLASSES))return 0;var t=0;return typeof e.className=="string"&&e.className!==""&&(this.REGEXPS.negative.test(e.className)&&(t-=25),this.REGEXPS.positive.test(e.className)&&(t+=25)),typeof e.id=="string"&&e.id!==""&&(this.REGEXPS.negative.test(e.id)&&(t-=25),this.REGEXPS.positive.test(e.id)&&(t+=25)),t},_clean:function(e,t){var r=["object","embed","iframe"].indexOf(t)!==-1;this._removeNodes(this._getAllNodesWithTag(e,[t]),function(i){if(r){for(var l=0;l<i.attributes.length;l++)if(this.REGEXPS.videos.test(i.attributes[l].value))return!1;if(i.tagName==="object"&&this.REGEXPS.videos.test(i.innerHTML))return!1}return!0})},_hasAncestorTag:function(e,t,r,i){r=r||3,t=t.toUpperCase();for(var l=0;e.parentNode;){if(r>0&&l>r)return!1;if(e.parentNode.tagName===t&&(!i||i(e.parentNode)))return!0;e=e.parentNode,l++}return!1},_getRowAndColumnCount:function(e){for(var t=0,r=0,i=e.getElementsByTagName("tr"),l=0;l<i.length;l++){var a=i[l].getAttribute("rowspan")||0;a&&(a=parseInt(a,10)),t+=a||1;for(var s=0,c=i[l].getElementsByTagName("td"),n=0;n<c.length;n++){var h=c[n].getAttribute("colspan")||0;h&&(h=parseInt(h,10)),s+=h||1}r=Math.max(r,s)}return{rows:t,columns:r}},_markDataTables:function(e){for(var t=e.getElementsByTagName("table"),r=0;r<t.length;r++){var i=t[r],l=i.getAttribute("role");if(l=="presentation"){i._readabilityDataTable=!1;continue}var a=i.getAttribute("datatable");if(a=="0"){i._readabilityDataTable=!1;continue}var s=i.getAttribute("summary");if(s){i._readabilityDataTable=!0;continue}var c=i.getElementsByTagName("caption")[0];if(c&&c.childNodes.length>0){i._readabilityDataTable=!0;continue}var n=["col","colgroup","tfoot","thead","th"],h=function(E){return!!i.getElementsByTagName(E)[0]};if(n.some(h)){this.log("Data table because found data-y descendant"),i._readabilityDataTable=!0;continue}if(i.getElementsByTagName("table")[0]){i._readabilityDataTable=!1;continue}var o=this._getRowAndColumnCount(i);if(o.rows>=10||o.columns>4){i._readabilityDataTable=!0;continue}i._readabilityDataTable=o.rows*o.columns>10}},_fixLazyImages:function(e){this._forEachNode(this._getAllNodesWithTag(e,["img","picture","figure"]),function(t){if(t.src&&this.REGEXPS.b64DataUrl.test(t.src)){var r=this.REGEXPS.b64DataUrl.exec(t.src);if(r[1]==="image/svg+xml")return;for(var i=!1,l=0;l<t.attributes.length;l++){var a=t.attributes[l];if(a.name!=="src"&&/\.(jpg|jpeg|png|webp)/i.test(a.value)){i=!0;break}}if(i){var s=t.src.search(/base64\s*/i)+7,c=t.src.length-s;c<133&&t.removeAttribute("src")}}if(!((t.src||t.srcset&&t.srcset!="null")&&t.className.toLowerCase().indexOf("lazy")===-1)){for(var n=0;n<t.attributes.length;n++)if(a=t.attributes[n],!(a.name==="src"||a.name==="srcset")){var h=null;if(/\.(jpg|jpeg|png|webp)\s+\d/.test(a.value)?h="srcset":/^\s*\S+\.(jpg|jpeg|png|webp)\S*\s*$/.test(a.value)&&(h="src"),h){if(t.tagName==="IMG"||t.tagName==="PICTURE")t.setAttribute(h,a.value);else if(t.tagName==="FIGURE"&&!this._getAllNodesWithTag(t,["img","picture"]).length){var o=this._doc.createElement("img");o.setAttribute(h,a.value),t.appendChild(o)}}}}})},_cleanConditionally:function(e,t){if(!!this._flagIsActive(this.FLAG_CLEAN_CONDITIONALLY)){var r=t==="ul"||t==="ol";this._removeNodes(this._getAllNodesWithTag(e,[t]),function(i){var l=function(y){return y._readabilityDataTable};if(t==="table"&&l(i)||this._hasAncestorTag(i,"table",-1,l))return!1;var a=this._getClassWeight(i),s=0;if(this.log("Cleaning Conditionally",i),a+s<0)return!0;if(this._getCharCount(i,",")<10){for(var c=i.getElementsByTagName("p").length,n=i.getElementsByTagName("img").length,h=i.getElementsByTagName("li").length-100,o=i.getElementsByTagName("input").length,E=0,v=this._getAllNodesWithTag(i,["object","embed","iframe"]),_=0;_<v.length;_++){for(var N=0;N<v[_].attributes.length;N++)if(this.REGEXPS.videos.test(v[_].attributes[N].value))return!1;if(v[_].tagName==="object"&&this.REGEXPS.videos.test(v[_].innerHTML))return!1;E++}var x=this._getLinkDensity(i),b=this._getInnerText(i).length,p=n>1&&c/n<.5&&!this._hasAncestorTag(i,"figure")||!r&&h>c||o>Math.floor(c/3)||!r&&b<25&&(n===0||n>2)&&!this._hasAncestorTag(i,"figure")||!r&&a<25&&x>.2||a>=25&&x>.5||E===1&&b<75||E>1;return p}return!1})}},_cleanMatchedNodes:function(e,t){for(var r=this._getNextNode(e,!0),i=this._getNextNode(e);i&&i!=r;)t.call(this,i,i.className+" "+i.id)?i=this._removeAndGetNext(i):i=this._getNextNode(i)},_cleanHeaders:function(e){this._removeNodes(this._getAllNodesWithTag(e,["h1","h2"]),function(t){return this._getClassWeight(t)<0})},_flagIsActive:function(e){return(this._flags&e)>0},_removeFlag:function(e){this._flags=this._flags&~e},_isProbablyVisible:function(e){return(!e.style||e.style.display!="none")&&!e.hasAttribute("hidden")&&(!e.hasAttribute("aria-hidden")||e.getAttribute("aria-hidden")!="true"||e.className&&e.className.indexOf&&e.className.indexOf("fallback-image")!==-1)},parse:function(){if(this._maxElemsToParse>0){var e=this._doc.getElementsByTagName("*").length;if(e>this._maxElemsToParse)throw new Error("Aborting parsing document; "+e+" elements found")}this._unwrapNoscriptImages(this._doc),this._removeScripts(this._doc),this._prepDocument();var t=this._getArticleMetadata();this._articleTitle=t.title;var r=this._grabArticle();if(!r)return null;if(this.log("Grabbed: "+r.innerHTML),this._postProcessContent(r),!t.excerpt){var i=r.getElementsByTagName("p");i.length>0&&(t.excerpt=i[0].textContent.trim())}var l=r.textContent;return{title:this._articleTitle,byline:t.byline||this._articleByline,dir:this._articleDir,content:r.innerHTML,textContent:l,length:l.length,excerpt:t.excerpt,siteName:t.siteName||this._articleSiteName}}},typeof module=="object"&&(module.exports=Readability);