/* testPool:*//* Cached for key:d586f0742df55d2c9c6eb27ceb0ab444:a0e9605d0592865965221d43a244157d*/try{!function(){var e=document,t=e.createElement("script"),e=e.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src="//js.moatads.com/demandmedia48529581241/moatheader.js",e.parentNode.insertBefore(t,e)}();var googletag=googletag||{};googletag.cmd=googletag.cmd||[],function(){var e=document,t=e.createElement("script"),o="https:"===e.location.protocol,a=e.getElementsByTagName("script")[0];t.async=!0,t.type="text/javascript",t.src=(o?"https:":"http:")+"//www.googletagservices.com/tag/js/gpt.js",a.parentNode.insertBefore(t,a)}()}catch(err){window.onerror(err,"ehow.com/module","0","gpt")}function queryURI(e){e=e||window.location.search;for(var t,n=/\+/g,r=/([^?&;=]+)=?([^?&;]*)/g,o=function(e){return decodeURIComponent(e.replace(n," "))},i=e.substring(1);t=r.exec(i);)urlQueryString[o(t[1])]=o(t[2]);return urlQueryString}if(!dmjs.isIE8){String.format=function(e){var t,n,r;if(0===arguments.length)return null;for(t=e,n=1,r=arguments.length;r>n;n++)t=t.replace(new RegExp("\\{"+(n-1)+"\\}","gm"),arguments[n]);return t},Array.prototype.remove=function(e,t){var n=this.slice((t||e)+1||this.length);return this.length=0>e?this.length+e:e,this.push.apply(this,n)},Array.indexOf||(Array.prototype.indexOf=function(e){var t,n;for(t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1}),"function"!=typeof Object.create&&(Object.create=function(e){var t=function(){return this};return t.prototype=e,new t}),window.location.redirect=function(e){var t=document.createElement("a");return t.click?(t.setAttribute("href",e),t.style.display="none",document.body.appendChild(t),void t.click()):void(window.location=e)};var ehow={},lsapp=LSAPP={},dmjs=window.dmjs||{};dmjs.global=dmjs.global||{},dmjs.onFBInit=[],dmjs.revenueTags=dmjs.revenueTags||[],dmjs.scope=function(e){e()},dmjs.execute=dmjs.scope,dmjs.partial=function(e){var t=Array.prototype.slice.call(arguments,1);return function(){var n=Array.prototype.slice.call(arguments);return n.unshift.apply(n,t),e.apply(window,n)}},dmjs.scope(function(){dmjs.array={},dmjs.array.forEach=function(e,t,n){var r,o;for(r=e.length,o=0;r>o;o++)e.hasOwnProperty(o)&&t.call(n,e[o],o,e)}}),dmjs.updateMetaTag=function(e,t){for(var n=document.getElementsByTagName("meta"),r=0;r<n.length;r++)n[r].getAttribute("name")&&n[r].getAttribute("name")===e&&n[r].setAttribute("content",t)};var _JT;dmjs.translation={"article-rc-widget-title":"Top 5 To Try"},dmjs.maintenance={author_profile:!0,comments:{enabled:!0,facebook_comments:!0},dart:!1,google_ads:!0,js_logging:!0,search:{botcheck:!1,box:{channel_filter:!1,suggest:!1},query_filter:!0,record_query:!1,record_results:!1,throttling:!0,useragent_blacklist:!1,"related-searches":!0},show_omniture_link_set:!0,social_proof:!0},dmjs.setting={i18n:{lang:"en-us"},ads:{dart:{siteCode:"dmd.ehow",server:"http://ad.doubleclick.net/"}},beacon:{server:"http://beacon.ehow.com/"},cdn:{cdnImage:"http://v5-static.ehowcdn.com",cdnAssets:"//v5-static.ehowcdn.com/",proxy:"//img-aws.ehowcdn.com"},env:"production",tablet:{video:{ipad:"iPad",silk:"Silk",android:"Android"}},platform:{mobile:{mobileexplorer:null,openwave:null,"opera mini":null,operamini:null,elaine:null,palmsource:null,"digital paths":null,avantgo:null,xiino:null,palmscape:null,nokia:null,ericsson:null,blackBerry:null,motorola:null,netfront:null,windowsce:null,"google-bot":null,palmos:null,symbian:null,ipod:"iPod",iphone:"iPhone",android:"Android",nokiae7:"NokiaE7",webOS:"PalmPre","windows phone":"Windows","googlebot-mobile":"Googlebot-Mobile"},tablet:{ipad:"iPad",silk:"Silk",android:"Android"},versionstring:{ipad:"os",iphone:"os",ipod:"os",android:"android",windows:"os"}},video:{url:"http://once.unicornmedia.com/now/od/auto/305f3605-907b-45e6-8938-3444d51e052b/f7529abe-1f00-4185-b1ad-33ca5daecb5e/%s/content.once"}},window.onerror=function(e,t,n,r){if(void 0==t||-1===t.indexOf("ehow")||void 0==n)return!0;var o,i=new Image,a=[],s={error:e,file:t,line:n,useragent:navigator.userAgent,module:r||"none"};for(o in s)a.push(o+"="+escape(s[o]));i.src="/services/jslogging/log/?"+a.join("&")},function(){var e=[],t=!1;dmjs.addLoadEvent=function(n,r){if(t)return void n();if("function"==typeof r){var o=r;r=arguments[2]}void 0==r&&(r=3),e.push({fn:n,priority:r,cb:o})},dmjs.fireEvents=function(){t=!0,dmjs.sortQueue();for(var n=0;n<e.length;n++)"string"==typeof e[n].fn?$.ajax({url:e[n].fn,dataType:"script",success:e[n].cb,error:function(){return!1}}):e[n].fn()},dmjs.sortQueue=function(){e.sort(function(e,t){return e.priority-t.priority})},dmjs.addEvent=function(e,t,n,r){if(e.addEventListener)return e.addEventListener(t,n,r),!0;if(e.attachEvent){var o=e.attachEvent("on"+t,n);return o}window.onerror("addEvent Failed for evt:"+t,"ehow.com/loadevent.plugin.js","0")}}();try{!function(e,t){dmjs[e]=dmjs.isIE8?dmjs.addLoadEvent:t()}("domready",function(){var e,t=[],n=document,r="DOMContentLoaded",o=/^loaded|^c/.test(n.readyState);return o||n.addEventListener(r,e=function(){for(n.removeEventListener(r,e),o=1;e=t.shift();)e()}),function(e){o?e():t.push(e)}})}catch(err){dmjs.domready=dmjs.addLoadEvent}dmjs.cookies={cookieCache:null,createCookie:function(e,t,n,r){var o=new Date,i="",a=r||"/";n&&(o.setTime(o.getTime()+24*n*60*60*1e3),i="; expires="+o.toGMTString()),document.cookie=e+"="+t+i+"; path="+a,this.cookieCache[e.replace(" ","")]=t},readCookie:function(e){if(!this.cookieCache){this.cookieCache={};for(var t=document.cookie.split(";"),n=t.length;n--;){var r=t[n].split("=");this.cookieCache[r[0].replace(" ","")]=r[1]}}return this.cookieCache[e]||null},eraseCookie:function(e){createCookie(e,"",-1)}},dmjs.platform={tablet:null,mobile:null,version:null,knownSources:[{key:"google",domain:"com"},{key:"bing",domain:"com"},{key:"pinterest",domain:"com"},{key:"facebook",domain:"com"},{key:"zergnet",domain:"com"},{key:"ask",domain:"com"},{key:"baidu",domain:"com"},{key:"aol",domain:"com"},{key:"ad",domain:"net"},{key:"ehow",domain:"com"}],init:function(e){var t=dmjs.cookies.readCookie("platformjs");if(t&&"production"==dmjs.setting.env){var n=JSON.parse(t);this.tablet=n.tablet,this.mobile=n.mobile,this.version=n.version}else{var r=e.toLowerCase();-1!=r.indexOf("mobile")&&(this.mobile=this._parsePlatform(r,dmjs.setting.platform.mobile)),this.mobile||(this.tablet=this._parsePlatform(r,dmjs.setting.platform.tablet)),this.version=this._parseVersion(r,this.isTablet()?this.tablet:this.mobile),this.version=this.version?parseFloat(this.version):null,dmjs.cookies.createCookie("platformjs",JSON.stringify(this),365)}},isTablet:function(){return null!=this.tablet&&null==this.mobile},isMobile:function(){return null!=this.mobile},isAndroid:function(){return"android"==this.tablet||"android"==this.mobile},isIOS:function(){return this.isTablet()&&null!=this.tablet.match(/iphone|ipad|ipod/i)||this.isMobile()&&null!=this.mobile.match(/iphone|ipad|ipod/i)},getParameterByName:function(e){e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var t=new RegExp("[\\?&]"+e+"=([^&#]*)"),n=t.exec(location.search);return null==n?"":decodeURIComponent(n[1].replace(/\+/g," "))},getPageReferrer:function(){var e,t,n,r=document.referrer,o="",i=this.knownSources.length,a=this.getParameterByName("utm_campaign");for(e=0;i>e;e++)if(t=r.split("/"),!(t.length<3||(n=t[2].split("."),n.length<2||-1==n[n.length-2].indexOf(this.knownSources[e].key)||-1==n[n.length-1].indexOf(this.knownSources[e].domain)))){o=this.knownSources[e].key;break}return"partnerads_test1_desktop"===a?a:""!=o?o:""===r?"direct":"other"},getPageType:function(){return"undefined"!=typeof window.AMP_CONFIG?"amp":"html"},_parsePlatform:function(e,t){var n=[];for(var r in t){var o=t[r];o&&n.push(o)}var i=e.match(new RegExp(n.join("|"),"i"));return i?i[0]:null},_parseVersion:function(e,t){var n=dmjs.setting.platform.versionstring[t]?dmjs.setting.platform.versionstring[t]:t,r=e.match(new RegExp(n+"[\\s);/]*([\\d._]+)[\\s);]*","i")),o=r&&r.length>1?r[1]:null;return o?o.replace("_","."):null}},dmjs.platform.init(navigator.userAgent);var urlQueryString={},googleAds=function(){window.google_ad_num=0;var e=[],t={},n=-1,r={},o=function(e){return e.replace(/"/gi,"&quot;")},a=function(e,t){for(var n in t)"undefined"==typeof e[n]&&(e[n]=t[n]);return~~e.google_num_radlinks<~~t.google_num_radlinks&&(e.google_num_radlinks=t.google_num_radlinks),e},s=function(){return n<e.length?e[n]:!1},d=function(){var o=s();if(a(o,googleAds.defaults),t[o.adUnitId]&&(o=e[n]=a(t[o.adUnitId],o)),o){if(!o.enabled)return n++,void d();o.google_num_radlinks?(window.google_radlink_request_done=l,window.google_ad_request_done=function(){}):(window.google_radlink_request_done=function(){},window.google_ad_request_done=c),document.write("<script>");for(var i in o)if("function"!=typeof o[i]&&"object"!=typeof o[i]){if("google_ad_channel"==i){var u=queryURI(),f=u.utm_medium||"",g=dmjs.cookies.readCookie("utm_medium");""==f&&g?f=g:""!=f&&1==f.match(/(\w{1,25})/g).length?dmjs.cookies.createCookie("utm_medium",f,1):f="";var m=u.utm_source,h=u.ref;if(("ask"==m||"IACB2B"==m)&&h&&""==f){var p=h;""!=p&&1==p.match(/(\w{1,25})/g).length&&(dmjs.cookies.createCookie("utm_medium",p,1),f+=p)}if(o[i]+=""!=f?","+f:"",r[o.adUnitId])for(var b=r[o.adUnitId].length;b--;)o[i]+=""!=r[o.adUnitId][b]?","+r[o.adUnitId][b]:""}document.write("google_kw"===i?"var "+i+' = decodeURIComponent("'+encodeURIComponent(o[i])+'");':"var "+i+" = '"+o[i]+"';")}document.write("google_skip = google_ad_num;"),document.write("</script>"),document.write('<script src="//pagead2.googlesyndication.com/pagead/show_ads.js"></script>')}},l=function(e){if(0!=e.length){var t=s();if(!t)return;var r=t.templates&&t.templates.relatedAds?t.templates.relatedAds:googleAds.templates.relatedAds;googleAds.preRender&&(r=googleAds.preRender(t));var o=e[0].radlink_token;for(i=1;i<e.length;i++)o+="|"+e[i].radlink_token;var a=e[0].term;for(i=1;i<e.length;i++)a+="|"+e[i].term;r=r||googleAds.templates.relatedAds,dmjs.domready(function(){ehow.relatedAdsManager?ehow.relatedAdsManager.load({ads:e,currentAd:t,terms:a,tokens:o}):$("#"+t.adUnitId).template(r,{ads:e,currentAd:t,terms:a,tokens:o})})}n++,d()},c=function(e){if(0!=e.length){var t=s();if(!t)return;var r=e[0].type,i=t.templates&&t.templates[r]?t.templates[r]:googleAds.templates[r];googleAds.preRender&&(i=googleAds.preRender(t)),dmjs.domready(function(){$("#"+t.adUnitId).template(i,{ads:e,currentAd:t,clean:o})}),window.google_ad_num+=e.length}n++,d()},u=function(){e.sort(function(e,t){return e.priority-t.priority})};return{getAds:function(){return e},overrideAd:function(e,n){t[e]=t[e]?a(n,t[e]):n},addChannel:function(e,t){r[e]||(r[e]=[]),r[e].push(t)},addAdUnit:function(t){e.push(t)},render:function(){u(),n=0,d()},addAdUnits:function(e){for(var t=0;t<e.length;t++)this.addAdUnit(e[t]);this.render()},defaults:{enabled:!0,google_ad_type:"text_image_flash",google_ad_output:"js",google_safe:"high",google_abtest:"false",google_adtest:"off",google_ad_section:"default",google_encoding:"utf8",google_language:"en"},templates:{text:'<div class="GoogleTextAd">					<a class="header" href="{!= google_info.feedback_url !}">Ads by Google</a>					<ul>					{! for (var i = 0; i < ads.length; i++) { !}						<li class="Ad">							<a rel="nofollow" target="_blank" href="{!= ads[i].url !}" title="go to {!= clean(ads[i].visible_url) !}" class="title">								<span>{!= ads[i].line1 !}</span>							</a>							<a rel="nofollow" target="_blank" href="{!= ads[i].url !}" title="go to {!= clean(ads[i].visible_url) !}" class="baseurl url">								{!= ads[i].visible_url !}							</a>							<p class="copy">{!= ads[i].line2 !} {!= ads[i].line3 !}</p>						</li>					{! } !}					</ul>				</div>',image:'<div class="GoogleImageAd"> 						<a class="header" href="{!= google_info.feedback_url !}">Ads by Google</a> 						<a href="{!= ads[0].url !}" title="go to {!= clean(ads[0].visible_url) !}" target="_blank" class="Ad" >							<img src="{!= ads[0].image_url !}" width="{!= ads[0].image_width !}" height="{!= ads[0].image_height !}" border="0" alt="" />						</a> 					</div>',flash:'<div class="GoogleFlashAd">						<a class="header" href="{!= google_info.feedback_url !}">Ads by Google</a> 						<div class="Ad">							<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="{!= ads[0].image_width !}" height="{!= ads[0].image_height !}"><param name="movie" value="{!= ads[0].image_url !}"><param name="quality" value="high"><param name="AllowScriptAccess" value="never"><embed src="{!= ads[0].image_url !}" width="{!= ads[0].image_width !}" height="{!= ads[0].image_height !}" type="application/x-shockwave-flash" AllowScriptAccess="never" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></object>						</div>					</div>',relatedAds:'<ul class="RelatedAds unstyled list"> 							{! for (var i = 0; i < ads.length; i++) { !}								<li> 									<span>{!= ads[i].term !}</span></li>							{! }!} 						</ul>'}}}(),DartUtils=function(){return{takeover:function(e,t,n){dmjs.domready(function(){dmjs.hasTakeoverSkin=!0;var r=1020,o=$(window).width(),i=($(window).height(),(o-r)/2-10),a=n.headerHeight||130;if($(window).resize(function(){o=$(window).width(),i=(o-r)/2-10}),n.noClick||($(document).mousemove(function(e){(e.clientX<i+22&&e.clientX>i-208||e.clientX>r+i-6&&e.clientX<r+2*i&&e.clientX<r+i+213)&&e.clientY>a?$("html").css("cursor","pointer"):$("html").css("cursor","default")}),$(document).unbind("click"),$(document).bind("click",function(e){(0!=e.clientX||0!=e.clientY)&&(e.clientX<i+22&&e.clientX>i-208||e.clientX>r+i-6&&e.clientX<r+2*i&&e.clientX<r+i+213)&&(n.sameWindow?window.location=t:window.open(t))})),e&&($("html").css("background-image","url("+e+")").css("background-position","center 131px").css("background-repeat","no-repeat"),$("body").css({"background-color":"#fff",width:"1030px",margin:"0 auto"}),$("#Header").css({"min-width":"1030px"})),n.takeoverBanner){var s=$("<a>",{css:{cursor:"pointer",display:"block",height:"175px",width:"100%"}}).attr("href",t);$("#PromoAd990x90").after(s)}n.fixedBg&&$("html").css("background-attachment","fixed").css("background-position","center 0"),n.bgcolor&&$("html").css("background-color",n.bgcolor)})},clear:function(){dmjs.domready(function(){dmjs.hasTakeoverSkin=!1,$(document).unbind("mousemove"),$(document).unbind("click"),$("html").css({cursor:"","background-image":"","background-position":"","background-repeat":"","background-attachment":"","background-color":""}),$("body").css({"background-color":"",width:"",margin:""}),$("#Header").css({"min-width":""})})},AdUnit300x600:function(){dmjs.domready(function(){$("#Dart300x250").attr("data-dartAdSize","[300, 600]").attr("data-dartAdParams","[{ sz: '300x600' }]").css("height","600px")})},HomeDepotTYNBranding:function(e,t){dmjs.domready(function(){$tyn=$("article .thingsYouNeed"),$tyn.find(".header").css("background","#f3842a"),$tyn.find(".container").css("background","none"),$tyn.css({position:"relative",backgroundImage:"none",backgroundColor:"#fff",border:"1px solid #ccc",paddingBottom:"30px",paddingLeft:"0",marginBottom:"20px"});var n=$("<a href='"+t+"'><img src='"+e+"' /></a>").insertAfter($tyn.find("ul"));n.css({display:"block",marginTop:"5px"}).find("img").css("width","145px");var r=$("<a href='"+t+"'>Get what you need for every<br />project at HomeDepot.com</a>").insertAfter(n);r.css({display:"block",position:"absolute",height:"30px",width:"175px",padding:"5px",background:"#f3842a",color:"#fff",textAlign:"center",left:"0px",bottom:"0px"});var o=$("<div class='dropShadow'></div>").insertAfter(r);o.css({position:"absolute",width:"185px",height:"20px",background:"url(http://v5-static.ehowcdn.com/ui/images/pages/article/things-needed-dropshadow.png) no-repeat -7px 100% #fff",left:"0px",bottom:"-20px"}),$tyn.find("li").css("borderColor","#ccc"),$(".ContentCuration",$tyn).remove()})},TYNBranding:function(e,t){dmjs.domready(function(){if($tyn=$("article .thingsYouNeed"),$tyn.addClass("branded"),t.image){var n=$("<a target='_blank' style='text-align: center;' href='"+e+"'><img src='"+t.image+"' /></a>").insertAfter($tyn.find(".container"));$tyn.css("backgroundColor","#f4f7f6"),$tyn.find(".container").css("paddingBottom","5px"),n.css({display:"block"}).find("img").css("width","185px")}if(t.headerColor&&$tyn.find(".header").css({background:t.headerColor,color:"#fff",padding:"5px 0"}),t.bgColor&&$tyn.find(".container").css("backgroundColor",t.bgColor),t.lineColor&&$tyn.find("span.title").css("borderBottomColor",t.lineColor),t.tagline){var r=$("<a target='_blank' href='"+e+"'>"+t.tagline+"</a>").insertAfter($tyn.find("ul"));r.css({display:"block",fontSize:"11px",color:"#999",textAlign:"center",marginTop:"5px"})}$(".ContentCuration",$tyn).remove()})},MilfCompanion:function(){dartAds.renderAdDynamic(".adx238",[{sz:"238x24"}],238,24)}}}(),liveRamp={partnerId:"450766",iframeTagId:"450776",emailTagId:"450786",pixelBaseUrl:"http://idsync.rlcdn.com",iframeBaseUrl:"//ei.rlcdn.com",outputPixel:function(){var e=$.cookie("cookie_id");e||(e=this.generateUUID(),$.cookie("cookie_id",e));var t=this.pixelBaseUrl+"/"+this.partnerId+".gif?partner_uid="+e;$("body").append('<img height="0" width="0" border="0" vspace="0" hspace="0" style="display:none;" src="'+t+'" />')},outputIframe:function(e){if(e){var t=this.getHashedEmail(e),n=this.iframeBaseUrl+"/"+this.iframeTagId+".html?s="+t;$("body").append('<iframe src="'+n+'" name="_rlcdn" width="0" height="0" frameborder="0"></iframe>')}},generateUUID:function(){var e=(new Date).getTime();window.performance&&"function"==typeof window.performance.now&&(e+=performance.now());var t="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){var n=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"==t?n:3&n|8).toString(16)});return t},getHashedEmail:function(e){var t=e.trim().toLowerCase(),n=new jsSHA("SHA-1","TEXT");return n.update(t),n.getHash("HEX")}};!function(e){function t(e,t,n){var r,o,i,f,g,m,v,w,k,y=0,A=[],_=0,x=!1,E=[],j=[],C=!1;if(n=n||{},r=n.encoding||"UTF8",k=n.numRounds||1,i=u(t,r),k!==parseInt(k,10)||1>k)throw Error("numRounds must a integer >= 1");if("SHA-1"!==e)throw Error("Chosen SHA variant is not supported");g=512,m=p,v=b,f=160,w=function(e){return e.slice()},o=h(e),this.setHMACKey=function(t,n,i){var a;if(!0===x)throw Error("HMAC key already set");if(!0===C)throw Error("Cannot set HMAC key after calling update");if(r=(i||{}).encoding||"UTF8",n=u(n,r)(t),t=n.binLen,n=n.value,a=g>>>3,i=a/4-1,t/8>a){for(n=v(n,t,0,h(e),f);n.length<=i;)n.push(0);n[i]&=4294967040}else if(a>t/8){for(;n.length<=i;)n.push(0);n[i]&=4294967040}for(t=0;i>=t;t+=1)E[t]=909522486^n[t],j[t]=1549556828^n[t];o=m(E,o),y=g,x=!0},this.update=function(e){var t,n,r,a=0,s=g>>>5;for(t=i(e,A,_),e=t.binLen,n=t.value,t=e>>>5,r=0;t>r;r+=s)e>=a+g&&(o=m(n.slice(r,r+s),o),a+=g);y+=a,A=n.slice(a>>>5),_=e%g,C=!0},this.getHash=function(t,n){var r,i,u,g;if(!0===x)throw Error("Cannot call getHash after setting HMAC key");switch(u=c(n),t){case"HEX":r=function(e){return a(e,f,u)};break;case"B64":r=function(e){return s(e,f,u)};break;case"BYTES":r=function(e){return d(e,f)};break;case"ARRAYBUFFER":try{i=new ArrayBuffer(0)}catch(m){throw Error("ARRAYBUFFER not supported by this environment")}r=function(e){return l(e,f)};break;default:throw Error("format must be HEX, B64, BYTES, or ARRAYBUFFER")}for(g=v(A.slice(),_,y,w(o),f),i=1;k>i;i+=1)g=v(g,f,0,h(e),f);return r(g)},this.getHMAC=function(t,n){var r,i,u,p;if(!1===x)throw Error("Cannot call getHMAC without first setting HMAC key");switch(u=c(n),t){case"HEX":r=function(e){return a(e,f,u)};break;case"B64":r=function(e){return s(e,f,u)};break;case"BYTES":r=function(e){return d(e,f)};break;case"ARRAYBUFFER":try{r=new ArrayBuffer(0)}catch(b){throw Error("ARRAYBUFFER not supported by this environment")}r=function(e){return l(e,f)};break;default:throw Error("outputFormat must be HEX, B64, BYTES, or ARRAYBUFFER")}return i=v(A.slice(),_,y,w(o),f),p=m(j,h(e)),p=v(i,f,g,p,f),r(p)}}function n(e,t,n){var r,o,i,a,s,d=e.length;if(t=t||[0],n=n||0,s=n>>>3,0!==d%2)throw Error("String of HEX type must be in byte increments");for(r=0;d>r;r+=2){if(o=parseInt(e.substr(r,2),16),isNaN(o))throw Error("String of HEX type contains invalid characters");for(a=(r>>>1)+s,i=a>>>2;t.length<=i;)t.push(0);t[i]|=o<<8*(3-a%4)}return{value:t,binLen:4*d+n}}function r(e,t,n){var r,o,i,a,s=[],s=t||[0];for(n=n||0,o=n>>>3,r=0;r<e.length;r+=1)t=e.charCodeAt(r),a=r+o,i=a>>>2,s.length<=i&&s.push(0),s[i]|=t<<8*(3-a%4);return{value:s,binLen:8*e.length+n}}function o(e,t,n){var r,o,i,a,s,d,l=[],c=0,l=t||[0];if(n=n||0,t=n>>>3,-1===e.search(/^[a-zA-Z0-9=+\/]+$/))throw Error("Invalid character in base-64 string");if(o=e.indexOf("="),e=e.replace(/\=/g,""),-1!==o&&o<e.length)throw Error("Invalid '=' found in base-64 string");for(o=0;o<e.length;o+=4){for(s=e.substr(o,4),i=a=0;i<s.length;i+=1)r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(s[i]),a|=r<<18-6*i;for(i=0;i<s.length-1;i+=1){for(d=c+t,r=d>>>2;l.length<=r;)l.push(0);l[r]|=(a>>>16-8*i&255)<<8*(3-d%4),c+=1}}return{value:l,binLen:8*c+n}}function i(e,t,n){var r,o,i,a=[],a=t||[0];for(n=n||0,r=n>>>3,t=0;t<e.byteLength;t+=1)i=t+r,o=i>>>2,a.length<=o&&a.push(0),a[o]|=e[t]<<8*(3-i%4);return{value:a,binLen:8*e.byteLength+n}}function a(e,t,n){var r="";t/=8;var o,i;for(o=0;t>o;o+=1)i=e[o>>>2]>>>8*(3-o%4),r+="0123456789abcdef".charAt(i>>>4&15)+"0123456789abcdef".charAt(15&i);return n.outputUpper?r.toUpperCase():r}function s(e,t,n){var r,o,i,a="",s=t/8;for(r=0;s>r;r+=3)for(o=s>r+1?e[r+1>>>2]:0,i=s>r+2?e[r+2>>>2]:0,i=(e[r>>>2]>>>8*(3-r%4)&255)<<16|(o>>>8*(3-(r+1)%4)&255)<<8|i>>>8*(3-(r+2)%4)&255,o=0;4>o;o+=1)a+=t>=8*r+6*o?"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(i>>>6*(3-o)&63):n.b64Pad;return a}function d(e,t){var n,r,o="",i=t/8;for(n=0;i>n;n+=1)r=e[n>>>2]>>>8*(3-n%4)&255,o+=String.fromCharCode(r);return o}function l(e,t){var n,r=t/8,o=new ArrayBuffer(r);for(n=0;r>n;n+=1)o[n]=e[n>>>2]>>>8*(3-n%4)&255;return o}function c(e){var t={outputUpper:!1,b64Pad:"=",shakeLen:-1};if(e=e||{},t.outputUpper=e.outputUpper||!1,!0===e.hasOwnProperty("b64Pad")&&(t.b64Pad=e.b64Pad),"boolean"!=typeof t.outputUpper)throw Error("Invalid outputUpper formatting option");if("string"!=typeof t.b64Pad)throw Error("Invalid b64Pad formatting option");return t}function u(e,t){var a;switch(t){case"UTF8":case"UTF16BE":case"UTF16LE":break;default:throw Error("encoding must be UTF8, UTF16BE, or UTF16LE")}switch(e){case"HEX":a=n;break;case"TEXT":a=function(e,n,r){var o,i,a,s,d,l=[],c=[],u=0,l=n||[0];if(n=r||0,a=n>>>3,"UTF8"===t)for(o=0;o<e.length;o+=1)for(r=e.charCodeAt(o),c=[],128>r?c.push(r):2048>r?(c.push(192|r>>>6),c.push(128|63&r)):55296>r||r>=57344?c.push(224|r>>>12,128|r>>>6&63,128|63&r):(o+=1,r=65536+((1023&r)<<10|1023&e.charCodeAt(o)),c.push(240|r>>>18,128|r>>>12&63,128|r>>>6&63,128|63&r)),i=0;i<c.length;i+=1){for(d=u+a,s=d>>>2;l.length<=s;)l.push(0);l[s]|=c[i]<<8*(3-d%4),u+=1}else if("UTF16BE"===t||"UTF16LE"===t)for(o=0;o<e.length;o+=1){for(r=e.charCodeAt(o),"UTF16LE"===t&&(i=255&r,r=i<<8|r>>>8),d=u+a,s=d>>>2;l.length<=s;)l.push(0);l[s]|=r<<8*(2-d%4),u+=2}return{value:l,binLen:8*u+n}};break;case"B64":a=o;break;case"BYTES":a=r;break;case"ARRAYBUFFER":try{a=new ArrayBuffer(0)}catch(s){throw Error("ARRAYBUFFER not supported by this environment")}a=i;break;default:throw Error("format must be HEX, TEXT, B64, BYTES, or ARRAYBUFFER")}return a}function f(e,t){return e<<t|e>>>32-t}function g(e,t){var n=(65535&e)+(65535&t);return((e>>>16)+(t>>>16)+(n>>>16)&65535)<<16|65535&n}function m(e,t,n,r,o){var i=(65535&e)+(65535&t)+(65535&n)+(65535&r)+(65535&o);return((e>>>16)+(t>>>16)+(n>>>16)+(r>>>16)+(o>>>16)+(i>>>16)&65535)<<16|65535&i}function h(e){var t=[];if("SHA-1"!==e)throw Error("No SHA variants supported");return t=[1732584193,4023233417,2562383102,271733878,3285377520]}function p(e,t){var n,r,o,i,a,s,d,l=[];for(n=t[0],r=t[1],o=t[2],i=t[3],a=t[4],d=0;80>d;d+=1)l[d]=16>d?e[d]:f(l[d-3]^l[d-8]^l[d-14]^l[d-16],1),s=20>d?m(f(n,5),r&o^~r&i,a,1518500249,l[d]):40>d?m(f(n,5),r^o^i,a,1859775393,l[d]):60>d?m(f(n,5),r&o^r&i^o&i,a,2400959708,l[d]):m(f(n,5),r^o^i,a,3395469782,l[d]),a=i,i=o,o=f(r,30),r=n,n=s;return t[0]=g(n,t[0]),t[1]=g(r,t[1]),t[2]=g(o,t[2]),t[3]=g(i,t[3]),t[4]=g(a,t[4]),t}function b(e,t,n,r){var o;for(o=(t+65>>>9<<4)+15;e.length<=o;)e.push(0);for(e[t>>>5]|=128<<24-t%32,t+=n,e[o]=4294967295&t,e[o-1]=t/4294967296|0,t=e.length,o=0;t>o;o+=16)r=p(e.slice(o,o+16),r);return r}"function"==typeof define&&define.amd?define(function(){return t}):"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(module.exports=t),exports=t):e.jsSHA=t}(this)}