Help
RSS
API
Feed
Maltego
Contact
Domain > westlandcovers.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2014-10-03
75.126.8.230
(
ClassC
)
2024-11-08
18.215.18.41
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: nginxDate: Fri, 08 Nov 2024 01:59:06 GMTContent-Type: text/htmlContent-Length: 162Connection: keep-aliveLocation: https://westlandcovers.com/ html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>nginx/center>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Fri, 08 Nov 2024 01:59:06 GMTContent-Type: text/html; charsetUTF-8Content-Length: 157305Connection: keep-aliveVary: Accept-EncodingPragma: no-cacheExpires: -1Cache-Control: no-store, no-cache, must-revalidate, max-age0Accept-Ranges: bytes !doctype html>html langen>!-- 888v2 --> head> script srcdata:text/javascript;base64,dmFyIEJBU0VfVVJMPSdodHRwc1x1MDAzQVx1MDAyRlx1MDAyRndlc3RsYW5kY292ZXJzLmNvbVx1MDAyRic7CiAgICAgIHZhciByZXF1aXJlPXsKICAgICAgICAnYmFzZVVybCc6J2h0dHBzXHUwMDNBXHUwMDJGXHUwMDJGZGl4MWNmMXp1YXlvdS5jbG91ZGZyb250Lm5ldFx1MDAyRnN0YXRpY1x1MDAyRnZlcnNpb24xNzI3NzA0MDQ2XHUwMDJGZnJvbnRlbmRcdTAwMkZQZWFybFx1MDAyRndlc3RsYW5kY292ZXJzX3VzX2N1c3RvbVx1MDAyRmVuX1VTJ307>/script> meta charsetutf-8/> meta nametitle contentCustom Boat Covers - Bimini Tops | Westland/> meta namedescription contentProtect your boat, pwc, motor, and more with a custom boat cover from Westland. Featuring our custom Exact Fit covers, and semi-custom Select Fit covers, you will be sure to find a boat cover that fits your boat perfectly./> meta namekeywords contentboat cover, bimini top, custom boat covers, westland covers, westland industries/> meta namerobots contentINDEX,FOLLOW/> meta nameviewport contentwidthdevice-width, initial-scale1, maximum-scale1.0, user-scalableno/> meta nameformat-detection contenttelephoneno/> title>Custom Boat Covers - Bimini Tops | Westland /title> link relstylesheet typetext/css mediaall hrefhttps://dix1cf1zuayou.cloudfront.net/static/version1727704046/_cache/merged/f33b9543e57264658f256096099b2859.min.css /> link asstyle relpreload typetext/css mediascreen and (min-width: 1200px) hrefhttps://dix1cf1zuayou.cloudfront.net/static/version1727704046/frontend/Pearl/westlandcovers_us_custom/en_US/css/styles-l.min.css onloadthis.relstylesheet /> noscript> link hrefhttps://dix1cf1zuayou.cloudfront.net/static/version1727704046/frontend/Pearl/westlandcovers_us_custom/en_US/css/styles-l.min.css mediascreen and (min-width: 1200px) relstylesheet typetext/css> /noscript> link relpreload asfont crossoriginanonymous hrefhttps://dix1cf1zuayou.cloudfront.net/static/version1727704046/frontend/Pearl/westlandcovers_us_custom/en_US/fonts/opensans/light/opensans-300.woff2 /> link relpreload asfont crossoriginanonymous hrefhttps://dix1cf1zuayou.cloudfront.net/static/version1727704046/frontend/Pearl/westlandcovers_us_custom/en_US/fonts/opensans/regular/opensans-400.woff2 /> link relpreload asfont crossoriginanonymous hrefhttps://dix1cf1zuayou.cloudfront.net/static/version1727704046/frontend/Pearl/westlandcovers_us_custom/en_US/fonts/opensans/semibold/opensans-600.woff2 /> link relpreload asfont crossoriginanonymous hrefhttps://dix1cf1zuayou.cloudfront.net/static/version1727704046/frontend/Pearl/westlandcovers_us_custom/en_US/fonts/opensans/bold/opensans-700.woff2 /> link relpreload asfont crossoriginanonymous hrefhttps://dix1cf1zuayou.cloudfront.net/static/version1727704046/frontend/Pearl/westlandcovers_us_custom/en_US/fonts/Luma-Icons.woff2 /> link relpreload asfont crossoriginanonymous hrefhttps://dix1cf1zuayou.cloudfront.net/static/version1727704046/frontend/Pearl/westlandcovers_us_custom/en_US/WeltPixel_DesignElements/fonts/Simple-Line-Icons.woff2 /> link relpreload asfont crossoriginanonymous hrefhttps://dix1cf1zuayou.cloudfront.net/static/version1727704046/frontend/Pearl/westlandcovers_us_custom/en_US/WeltPixel_DesignElements/fonts/lined-icons.woff2 /> link relpreload asfont crossoriginanonymous hrefhttps://dix1cf1zuayou.cloudfront.net/static/version1727704046/frontend/Pearl/westlandcovers_us_custom/en_US/WeltPixel_DesignElements/fonts/font-icons.woff2 /> link relcanonical hrefhttps://westlandcovers.com /> link relicon typeimage/x-icon hrefhttps://d2v1xobx8qu3lm.cloudfront.net/media/favicon/stores/9/favicon.ico /> link relshortcut icon typeimage/x-icon hrefhttps://d2v1xobx8qu3lm.cloudfront.net/media/favicon/stores/9/favicon.ico /> script typeapplication/ld+json srcdata:application/ld+json;base64,ewogICJAY29udGV4dCI6ICJodHRwczovL3NjaGVtYS5vcmciLAogICJAZ3JhcGgiOiBbCiAgICB7CiAgICAgICJAdHlwZSI6ICJPcmdhbml6YXRpb24iLAogICAgICAidXJsIjogImh0dHBzOi8vd2VzdGxhbmRjb3ZlcnMuY29tLyIsCiAgICAgICJsb2dvIjogImh0dHBzOi8vZDJ2MXhvYng4cXUzbG0uY2xvdWRmcm9udC5uZXQvbWVkaWEvbG9nby9zdG9yZXMvOS93ZXN0bGFuZC1sb2dvLmdpZiIKICAgIH0sCiAgICB7CiAgICAgICJAdHlwZSI6ICJXZWJTaXRlIiwKICAgICAgInVybCI6ICJodHRwczovL3dlc3RsYW5kY292ZXJzLmNvbS8iLAogICAgICAicG90ZW50aWFsQWN0aW9uIjogewogICAgICAgICJAdHlwZSI6ICJTZWFyY2hBY3Rpb24iLAogICAgICAgICJ0YXJnZXQiOiAiaHR0cHM6Ly93ZXN0bGFuZGNvdmVycy5jb20vY2F0YWxvZ3NlYXJjaC9yZXN1bHQvP3E9e3NlYXJjaF90ZXJtX3N0cmluZ30iLAogICAgICAgICJxdWVyeS1pbnB1dCI6ICJyZXF1aXJlZCBuYW1lPXNlYXJjaF90ZXJtX3N0cmluZyIKICAgICAgfQogICAgfQogIF0KfQ>/script> script srcdata:text/javascript;base64,d2luZG93LmdldFdwQ29va2llPWZ1bmN0aW9uKG5hbWUpewogICAgICAgIG1hdGNoPWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKG5hbWUrJz0oW147XSspJykpOwogICAgICAgIGlmKG1hdGNoKXJldHVybiBkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbMV0ucmVwbGFjZSgvXCsvZywnICcpKTsKICAgICAgfTsKICAgICAgd2luZG93LmRhdGFMYXllcj13aW5kb3cuZGF0YUxheWVyfHxbXTsKICAgICAgdmFyIGRsT2JqZWN0cz1bewogICAgICAgICJwYWdlTmFtZSI6IkN1c3RvbSBCb2F0IENvdmVycyAtIEJpbWluaSBUb3BzIHwgV2VzdGxhbmQiLCJwYWdlVHlwZSI6ImhvbWUifQogICAgICAgICAgICAgICAgICAgIF07CiAgICAgIGZvcih2YXIgaSBpbiBkbE9iamVjdHMpewogICAgICAgIHdpbmRvdy5kYXRhTGF5ZXIucHVzaChkbE9iamVjdHNbaV0pOwogICAgICB9CiAgICAgIHZhciB3cENvb2tpZXM9Wyd3cF9jdXN0b21lcklkJywnd3BfY3VzdG9tZXJHcm91cCddOwogICAgICB3cENvb2tpZXMubWFwKGZ1bmN0aW9uKGNvb2tpZU5hbWUpewogICAgICAgIHZhciBjb29raWVWYWx1ZT13aW5kb3cuZ2V0V3BDb29raWUoY29va2llTmFtZSk7CiAgICAgICAgaWYoY29va2llVmFsdWUpewogICAgICAgICAgdmFyIGRsT2JqZWN0PXsKICAgICAgICAgIH07CiAgICAgICAgICBkbE9iamVjdFtjb29raWVOYW1lLnJlcGxhY2UoJ3dwXycsJycpXT1jb29raWVWYWx1ZTsKICAgICAgICAgIHdpbmRvdy5kYXRhTGF5ZXIucHVzaChkbE9iamVjdCk7CiAgICAgICAgfQogICAgICB9CiAgICAgICAgICAgICAgICAgICApOw>/script> !-- Google Tag Manager --> script>(function(w,d,s,l,i){ wlwl||; wl.push({ gtm.start:new Date().getTime(),event:gtm.js} ); var fd.getElementsByTagName(s)0,jd.createElement(s),dll!dataLayer?&l+l:; j.asynctrue; j.srchttps://www.googletagmanager.com/gtm.js?id+i+dl+>m_authN2xZRm_jK9R8wazKCRdZhg>m_previewenv-1>m_cookies_winx; f.parentNode.insertBefore(j,f); } )(window,document,script,dataLayer,GTM-56GDDNZ); window.getWpGA4Cookiefunction(name){ matchdocument.cookie.match(new RegExp(name+(^;+))); if(match)return decodeURIComponent(match1.replace(/\+/g, )); }; window.dataLayerwindow.dataLayer||; var dl4Objects{ pageName:Custom Boat Covers - Bimini Tops | Westland,pageType:home} ; for(var i in dl4Objects){ window.dataLayer.push({ ecommerce:null} ); window.dataLayer.push(dl4Objectsi); } var wpGA4Cookieswp_ga4_customerId,wp_ga4_customerGroup; wpGA4Cookies.map(function(cookieName){ var cookieValuewindow.getWpGA4Cookie(cookieName); if(cookieValue){ var dl4Object{ }; dl4ObjectcookieName.replace(wp_ga4_,)cookieValue; window.dataLayer.push(dl4Object); } } ); (function(w,d,s,l,i){ wlwl||; wl.push({ gtm.start:new Date().getTime(),event:gtm.js} ); var fd.getElementsByTagName(s)0,jd.createElement(s),dll!dataLayer?&l+l:; j.asynctrue; j.srchttps://www.googletagmanager.com/gtm.js?id+i+dl+>m_authpFRp6YqR-OVGuZQbUJWtBg>m_previewenv-1>m_cookies_winx; f.parentNode.insertBefore(j,f); } )(window,document,script,dataLayer,GTM-MTQFQCF); /script> !-- End Google Tag Manager --> link relstylesheet typetext/css mediaall hrefhttps://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css> script typetext/javascript srcdata:text/javascript;base64,V2ViRm9udENvbmZpZz17CiAgICAgICAgZ29vZ2xlOnsKICAgICAgICAgIGZhbWlsaWVzOlsiTW9udHNlcnJhdDo5MDAsNDAwLGJvbGQ6bGF0aW4mZGlzcGxheT1zd2FwIl19CiAgICAgIH07CiAgICAgIChmdW5jdGlvbigpewogICAgICAgIHZhciB3Zj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICB3Zi5zcmM9KCdodHRwczonPT1kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbD8naHR0cHMnOidodHRwJykrJzovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL3dlYmZvbnQvMS41LjE4L3dlYmZvbnQuanMnOwogICAgICAgIHdmLnR5cGU9J3RleHQvamF2YXNjcmlwdCc7CiAgICAgICAgd2YuYXN5bmM9J3RydWUnOwogICAgICAgIHZhciBzPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsKICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHdmLHMpOwogICAgICB9CiAgICAgICkoKTs>/script> /head> body data-containerbody data-mage-init{loaderAjax: {}, loader: { icon: https://dix1cf1zuayou.cloudfront.net/static/version1727704046/frontend/Pearl/westlandcovers_us_custom/en_US/images/loader-2.gif}} idhtml-body classtheme-pearl store-view-westland_covers_us_store_view page-layout-1column wp-sl cms-westland-home-us cms-index-index page-layout-fullscreen> !-- Google Tag Manager (noscript) --> noscript> iframe srchttps://www.googletagmanager.com/ns.html?idGTM-56GDDNZ>m_authN2xZRm_jK9R8wazKCRdZhg>m_previewenv-1>m_cookies_winx height0 width0 styledisplay:none;visibility:hidden> /iframe> /noscript> !-- End Google Tag Manager (noscript) --> !-- Google Tag Manager (noscript) --> noscript> iframe srchttps://www.googletagmanager.com/ns.html?idGTM-MTQFQCF>m_authpFRp6YqR-OVGuZQbUJWtBg>m_previewenv-1>m_cookies_winx height0 width0 styledisplay:none;visibility:hidden> /iframe> /noscript> !-- End Google Tag Manager (noscript) --> div idcookie-status>The store will not work correctly in the case when cookies are disabled. /div> noscript> div classmessage global noscript> div classcontent> p> strong>JavaScript seems to be disabled in your browser. /strong> span> For the best experience on our site, be sure to turn on Javascript in your browser. /span> /p> /div> /div> /noscript> form styledisplay:none; classform actionhttps://westlandcovers.com/sociallogin/account/loginPost/ methodpost idsociallogin-form data-mage-init{validation:{}} > input nameform_key typehidden valueJJ4QNdKxRobtOHv8 /> input idsociallogin-referer namereferer typehidden value /> input namesociallogin-checkout typehidden value /> input idsociallogin-submit typesubmit value /> /form> div classpage-wrapper> div classab-navigation page-header page-header-v1 header> div classwsmobileheader clearfix> a idwsnavtoggle classwsanimated-arrow> span> /span> /a> span classsmllogo> a href/> img srchttps://d2v1xobx8qu3lm.cloudfront.net/media/logo/stores/10/westland-logo.gif width115px height33px altWestland Covers Logo /> /a> /span> div classwscartbutton showcart clearfix> a classaction showcart href data-bindscope: minicart_content> i classicon-shopping-cart> /i> span classcounter qty empty data-bindcss: { empty: !!getCartParam(summary_count) false }, blockLoader: isLoading> span iddesktop-counter classcounter-number> !-- ko text: getCartParam(summary_count) --> !-- /ko --> /span> /span> /a> /div> div classwssearch clearfix> i classwsopensearch icon-search3> /i> i classwsclosesearch icon-line-cross> /i> div classwssearchform clearfix> form classtopmenusearch idmac_search_mini_form actionhttps://westlandcovers.com/catalogsearch/result/ methodget> button classbtnstyle typesubmit titleSearch> i classsearchicon icon-search3> /i> /button> input idsearch data-mage-init{quickSearch:{ formSelector:#mac_search_mini_form, url:https://westlandcovers.com/search/ajax/suggest/, destinationSelector:#mac_search_autocomplete} } typetext nameq value placeholderSearch products for your boat classinput-text vertically-black maxlength128 rolecombobox aria-haspopupfalse aria-expandedfalse aria-autocompleteboth autocompleteoff/> div classblock block-content> div idsearchautocomplete classsearchautocomplete vertically-black stylewidth: 350px; background: #FFFFFF; color: #000000> div idsearch_autocomplete classwpx-search-autocomplete-hidden> /div> div classcontainer-autocomplete> div classprod-container> /div> div classmore-results> a onclickdocument.getElementById(search_mini_form).submit() classadvanced_search> /a> /div> /div> /div> /div> /form> /div> /div> /div> div classheaderfull header> div classwsmain> div classsmllogo> a href/> img srchttps://d2v1xobx8qu3lm.cloudfront.net/media/logo/westland-logo.gif altWestland Covers Logo stylewidth: 85%; padding-top: 10px; /> /a> /div> nav classwsmenu clearfix> ul classwsmenu-list> li aria-haspopuptrue> a href/boat-covers.html classnavtext> span> /span> span classremovecaret>Boat Covers /span> /a> /li> li aria-haspopuptrue> a href/bimini-tops.html classnavtext> span> /span> span classremovecaret>Bimini Tops /span> /a> /li> li aria-haspopuptrue> a href# classnavtext fullmenu> span> /span> span>Specialty Covers i classicon-chevron-down> /i> /span> /a> div classwsmegamenu clearfix> div classcontainer-fluid> div classrow> div classcol-lg-2 col-md-2 > a href/center-console-cover.html> ul classwstliststy04 clearfix> li> img loadinglazy srchttps://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/home/console_cover_cat.jpg altCenter Console Covers> /li> li classwstheading clearfix>Center Console Covers /li> /ul> /a> /div> div classcol-lg-2 col-md-2 > a href/universal-t-top-center-console-cover.html> ul classwstliststy04 clearfix> li> img loadinglazy srchttps://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/home/ttop_cover_cat.jpg altT-Top Console Covers> /li> li classwstheading clearfix>T-Top Console Covers /li> /ul> /a> /div> div classcol-lg-2 col-md-2 > a href/t-top-extension.html> ul classwstliststy04 clearfix> li> img loadinglazy srchttps://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/home/ttop_extension_cat.jpg altExtend The Shade®> /li> li classwstheading clearfix>Extend The Shade® /li> /ul> /a> /div> div classcol-lg-2 col-md-2 > a href/motor-hoods.html> ul classwstliststy04 clearfix> li> img loadinglazy srchttps://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/home/motor_hood_cat.jpg altMotor Hoods> /li> li classwstheading clearfix>Motor Hoods /li> /ul> /a> /div> div classcol-lg-2 col-md-2 > a href/pwc-covers.html> ul classwstliststy04 clearfix> li> img loadinglazy srchttps://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/home/pwc_cat.jpg altPWC Covers> /li> li classwstheading clearfix>PWC Covers /li> /ul> /a> /div> div classcol-lg-2 col-md-2 > a href/pedestal-boat-seat-cover.html> ul classwstliststy04 clearfix> li> img loadinglazy srchttps://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/home/pedestal_seat_cat.jpg altPedestal Boat Seat Covers> /li> li classwstheading clearfix>Pedestal Boat Seat Covers /li> /ul> /a> /div> /div> /div> /div> /li> li aria-haspopuptrue> a href/accessories.html classnavtext fullmenu> span> /span> span>Accessories i classicon-chevron-down> /i> /span> /a> div classwsmegamenu clearfix> div classcontainer-fluid> div classrow> div classcol-lg-12> div classcoveraccnav> a href/accessories/boat-cover-support-systems.html> ul classwstliststy04 clearfix> li> img loadinglazy srchttps://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/product/hangtyte-system-1.jpg altBoat Cover Support Systems> /li> li classwstheading clearfix>Boat Cover Support Systems /li> /ul> /a> /div> div classcoveraccnav> a href/accessories/bimini-mounts.html> ul classwstliststy04 clearfix> li> img loadinglazy srchttps://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/product/side-slide-track-mount-with-knob-3.jpg altBimini Mounts> /li> li classwstheading clearfix>Bimini Mounts /li> /ul> /a> /div> div classcoveraccnav> a href/accessories/boat-cover-straps-and-cinching.html> ul classwstliststy04 clearfix> li> img loadinglazy srchttps://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/product/tie-down-kit-black-3.jpg altBoat Cover Straps and Cinching> /li> li classwstheading clearfix>Boat Cover Straps & Cinching /li> /ul> /a> /div> div classcoveraccnav> a href/accessories/bimini-fittings.html> ul classwstliststy04 clearfix> li> img loadinglazy srchttps://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/product/7-8-in-split-jaw-slide-ss-1.jpg altBimini Fittings> /li> li classwstheading clearfix>Bimini Fittings /li> /ul> /a> /div> div classcoveraccnav> a href/accessories/bimini-straps-and-strut-braces.html> ul classwstliststy04 clearfix> li> img loadinglazy srchttps://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/product/hold-down-straps-2.jpg altBimini Straps and Strut Braces> /li> li classwstheading clearfix>Bimini Straps & Strut Braces /li> /ul> /a> /div> div classcoveraccnav> a href/accessories/cover-care.html> ul classwstliststy04 clearfix> li> img loadinglazy srchttps://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/home/tear_repair_cat.jpg altCover Care> /li> li classwstheading clearfix>Cover Care /li> /ul> /a> /div> div classcoveraccnav> a href/accessories/slide-track-assemblies.html> ul classwstliststy04 clearfix> li> img loadinglazy srchttps://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/product/kit-slide-track-36-in-with-deck-mount-L.jpg altSlide Track Assemblies> /li> li classwstheading clearfix>Slide Track Assemblies /li> /ul> /a> /div> /div> /div> /div> /div> /li> li classwssearchbar clearfix> form classtopmenusearch idsearch_mini_form actionhttps://westlandcovers.com/catalogsearch/result/ methodget> input idsearch_desktop data-mage-init{quickSearch:{ formSelector:#search_mini_form, url:https://westlandcovers.com/search/ajax/suggest/, destinationSelector:#search_autocomplete} } typetext nameq value placeholderSearch products for your boat classinput-text vertically-black maxlength128 rolecombobox aria-haspopupfalse aria-expandedfalse aria-autocompleteboth autocompleteon/> button classbtnstyle typesubmit titleSearch> i classsearchicon icon-search3> /i> /button> div classblock block-content> div idsearchautocomplete classsearchautocomplete searchautocomplete_desktop vertically-black stylewidth: 350px; background: #FFFFFF; color: #000000> div idsearch_autocomplete classwpx-search-autocomplete-hidden> /div> div classcontainer-autocomplete> div classprod-container> /div> div classmore-results> a onclickdocument.getElementById(search_mini_form).submit() classadvanced_search> /a> /div> /div> /div> /div> /form> /li> li classwscarticon clearfix> div data-blockminicart classminicart-wrapper quickcart-wrapper minicart-weltpixel styleline-height: 59px;> a classaction showcart hrefhttps://westlandcovers.com/checkout/cart/ data-bindscope: minicart_content> span classhidetxt>Shopping Cart /span> span classcounter qty empty data-bindcss: { empty: !!getCartParam(summary_count) false }, blockLoader: isLoading> span classcounter-number> !-- ko text: getCartParam(summary_count) --> !-- /ko --> /span> span classcounter-label> !-- ko if: getCartParam(summary_count) --> !-- ko text: getCartParam(summary_count) --> !-- /ko --> !-- ko i18n: items --> !-- /ko --> !-- /ko --> /span> /span> /a> div classblock block-minicart block-quickcart empty data-roledropdownDialog data-mage-init{dropdownDialog:{ appendTo:data-blockminicart, triggerTarget:.showcart, timeout: 2000, closeOnMouseLeave: false, closeOnEscape: true, triggerClass:active, parentClass:active, buttons:}} > div idminicart-content-wrapper classquickcart-content-wrapper data-bindscope: minicart_content> !-- ko template: getTemplate() --> !-- /ko --> /div> /div> style> .block-content-quickcart .quickcart-top { background: #0F6DB6; color: #FFFFFF; height: 50px; line-height: 50px; } .block-content-quickcart .quickcart-top button.close { height: 50px; } .block-content-quickcart .quickcart-top button.close span { color: #FFFFFF; } .block-content-quickcart .quickcart-top .action.close::before { color: #FFFFFF; } .block-content-quickcart .quickcart-bottom-container .subtotal { background: #F6F6F6; color: #000000; } /style> /div> /li> li aria-haspopuptrue classwsshopmyaccount> a href# classsl-ajax-login> i classicon-user stylefont-size: 20px;> /i> span classmobilenavtext>Sign In /span> span classmobileonly stylepadding-left: 10px;>Sign In /span> /a> /li> li aria-haspopuptrue classwsshopmyaccount > a href# classfullmenu> i classicon-question-sign stylefont-size: 20px;> /i> span classmobilenavtext>Support /span> span classmobileonly stylepadding-left: 10px;>Support /span> /a> ul classsub-menu> li> a href/knowledge-base> i classicon-question-sign> /i>Help Center /a> /li> li> a href/westland-dealer-locations> i classicon-map-marker> /i>Local Support /a> /li> li> a href/blog> i classicon-pencil2> /i>Blog /a> /li> li> a href/fabric-options> i classicon-th> /i>Fabric Options /a> /li> li> a href/warranty> i classicon-shield> /i>Warranty /a> /li> li> a href/contact> i classicon-envelope-alt> /i>Contact /a> /li> li stylepadding: 10px; text-align: center;> a hreftel:8008357992 classmacphone> i classicon-phone3> /i>(800) 835-7992 /a> /li> /ul> /li> /ul> /nav> /div> /div> /div> div classheader-global-promo> div classglobal-notification-wrapper data-mage-init{WeltPixel_CustomHeader/js/globalPromo: {}}> div classnotice-inner> div idcarousel stylebackground: #0f6db6; padding: 5px; height: 27px; overflow: hidden;> div classbtn-bar> div idbuttons> a idprev classicon-angle-left href# stylecolor:#fff!important;> /a> a idnext classicon-angle-right href# stylecolor:#fff!important;> /a> /div> /div> div idslides> ul> li classslide> div classquoteContainer stylecolor: #fff;> i classicon-truck2 wpx-i> /i> span classwpx-sub>FREE SHIPPING /span> a idopener classwpx-link stylecolor: #fff; cursor: pointer; white-space: nowrap;>See Details /a> div iddialog classmac-modal title styledisplay: none;> p>Free Shipping valid only on boat covers and bimini tops and valid only within the contiguous USA. /p> /div> /div> /li>li classslide> div classquoteContainer styledisplay: block;> span classwpx-sub>20% OFF SELECT FIT AND EXACT FIT BOAT COVERS/span> a idopener classwpx-link stylecolor: #fff; cursor: pointer; white-space: nowrap;>See Details/a> div iddialog classmac-modal title styledisplay: none;> p>Limited Time Only!/p> /div> /div>/li> /ul> /div> /div> style>.icon-angle-right, .icon-angle-left{ color:#fff !important; } .icon-angle-right, .icon-angle-left{ color:#333 !important; } .quoteContainer { display: block !important; } .wpx-sub { padding-right: 8px; } @media screen and (max-width: 1000px) { .quoteContainer{ font-size: 1rem!important; align-content: center; } } .notice-inner { width:100%!important; } /style> /div> /div> /div> main idmaincontent classpage-main> a idcontentarea tabindex-1> /a> div classpage messages> div data-placeholdermessages> /div> div data-bindscope: messages> !-- ko if: cookieMessages && cookieMessages.length > 0 --> div aria-atomictrue rolealert data-bindforeach: { data: cookieMessages, as: message } classmessages> div data-bindattr: { class: message- + message.type + + message.type + message, data-ui-id: message- + message.type }> div data-bindhtml: $parent.prepareMessageForHtml(message.text)> /div> /div> /div> !-- /ko --> !-- ko if: messages().messages && messages().messages.length > 0 --> div aria-atomictrue rolealert classmessages data-bindforeach: { data: messages().messages, as: message }> div data-bindattr: { class: message- + message.type + + message.type + message, data-ui-id: message- + message.type }> div data-bindhtml: $parent.prepareMessageForHtml(message.text)> /div> /div> /div> !-- /ko --> /div> /div> div classcolumns> div classcolumn main> div idajaxlogin-popup data-bindscope:ajaxLogin styledisplay: none;> !-- ko template: getTemplate() --> !-- /ko --> /div> input nameform_key typehidden valueJJ4QNdKxRobtOHv8 /> div idauthenticationPopup data-bindscope:authenticationPopup, style: {display: none}> !-- ko template: getTemplate() --> !-- /ko --> /div> div data-mage-init{feedReport:}> /div> section idsection1 classhome-section-video stylebackground-image:url(https://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/home/westland-home-hero-min.jpg);> div classwestland-home-content center> h1 stylecolor: #fff; text-shadow: 5px 5px 5px rgba(0,0,0,0.25); max-width: 650px; margin-bottom:0;>20% off Select Fit and Exact Fit Covers/h1>br>br> /div>/section> section idcoverwizard classhero-finder container-fluid> div classrow> div classcol-lg-10 divcenter> span styledisplay:inline-block; background:#fb620b; color:#fff; padding:10px; font-weight:bold;>Cover Wizard™ /span> a href#boatstylefinder stylecolor:#fff;margin: 0 10px;text-shadow: 3px 3px 3px rgb(0 0 0 / 25%); white-space: nowrap; classhidden-xs hidden-sm> i classicon-info-sign> /i> Dont see your boat listed? /a> div classamfinder-common-wrapper amfinder-horizontal idamfinder_14 locationcms> form idmac-finder methodpost actionhttps://westlandcovers.com/amfinder/index/search/> input typehidden namefinder_id value14/> input typehidden nameback_url valueaHR0cHM6Ly93ZXN0bGFuZGNvdmVycy5jb20vZmluZGVyL2NvdmVyLXdpemFyZC5odG1s/> input typehidden namereset_url valueaHR0cHM6Ly93ZXN0bGFuZGNvdmVycy5jb20v/> input typehidden namecategory_id value34/> input typehidden namecurrent_apply_url valueaHR0cHM6Ly93ZXN0bGFuZGNvdmVycy5jb20v/> ul class> li classam-item -list-item amdropdown> div classdropdown-title>Select Make /div> div classdropdown-element amshopby-clearer> div classamfinder-select-wrapper> select idfinder-14--52 data-dropdown-id52namefinder52 data-amfinder-jsselect classamfinder-select> option value0>Make /option> option value86629 >AB Inflatable /option> option value93472 >Achilles /option> option value70228 >Advantage /option> option value90873 >Aftershock /option> option value59317 >Allegro /option> option value48350 >Alumacraft /option> option value91370 >American Skier /option> option value94061 >Apex /option> option value86637 >Aquapro Inflatables /option> option value73150 >Aquasport /option> option value94060 >Arima /option> option value82153 >Armada /option> option value61223 >Astro /option> option value88460 >Australian Flightcraft /option> option value86630 >Avenger /option> option value85997 >Avenger OF Canada /option> option value49343 >Avon /option> option value94793 >Axis /option> option value70959 >Azure /option> option value80101 >Baja /option> option value55605 >Bayliner /option> option value78928 >Bennington /option> option value93469 >Blazer /option> option value94062 >Blue Wave /option> option value79528 >Bluewater /option> option value89634 >Boston Whaler /option> option value70227 >Bryant /option> option value90236 >Cajun /option> option value85347 >Calabria /option> option value91930 >Caliber /option> option value72454 >Campion /option> option value79526 >Caravelle /option> option value94063 >Caribe Inflatables /option> option value77966 >Carolina Skiff /option> option value91931 >Carrera /option> option value82696 >Celebrity /option> option value91367 >Champion /option> option value63962 >Chaparral /option> option value72027 >Cheetah /option> option value82154 >Chris Craft /option> option value58333 >Cobalt /option> option value72028 >Cobra /option> option value69882 >Commander /option> option value94795 >Conquest /option> option value80579 >Correct Craft /option> option value86640 >Crestliner /option> option value62766 >Crownline /option> option value82697 >Donzi /option> option value93470 >Duracraft /option> option value81732 >Dynasty /option> option value47869 >Ebbtide /option> option value92449 >Eliminator /option> option value92450 >Essex /option> option value49344 >Fisher /option> option value82698 >Formula /option> option value59784 >Four Winns /option> option value52089 >G III /option> option value89038 >Galaxie OF California /option> option value86639 >Gekko /option> option value86625 >Glacier BAY /option> option value65340 >Glastron /option> option value77967 >Godfrey Pontoons & Deck Boats /option> option value84843 >Grady White /option> option value86631 >Gregor /option> option value93468 >Gregor/Delta /option> option value94786 >Grumman /option> option value85993 >Harbercraft /option> option value93039 >Hewescraft /option> option value52503 >Hydra Sport /option> option value88461 >Hydrodyne /option> option value94787 >Hydrostream /option> option value94796 >Infinity /option> option value85994 >Interior Fiberglas /option> option value72029 >Javelin /option> option value92451 >Katana /option> option value86632 >Kenner /option> option value94788 >KEY West /option> option value90872 >King Fisher /option> option value80578 >Klamath /option> option value94792 >Laguna /option> option value71552 >Larson /option> option value92452 >Lazer /option> option value89037 >Livingston /option> option value61659 >Lowe /option> option value54393 >Lund /option> option value89036 >Magic /option> option value86626 >Mako /option> option value67339 >Malibu /option> option value74844 >Mariah /option> option value76984 >Marlin /option> option value85350 >Mastercraft /option> option value52949 >Maxum /option> option value85998 >MB Sports /option> option value94799 >Mckenzie /option> option value86628 >Mercury /option> option value85995 >Milan /option> option value82699 >Mirage /option> option value61660 >Monterey /option> option value69068 >Moomba /option> option value90876 >Nitro /option> option value83177 >Nordic /option> option value85996 >North American Sleekcraft /option> option value91368 >Paramount /option> option value86638 >Pearson Unlimited /option> option value94794 >Polarkraft /option> option value84846 >Princecraft /option> option value77486 >Procraft /option> option value84844 >Proline /option> option value53889 >Quantum /option> option value86636 >Quest /option> option value90871 >Ranger Boats /option> option value93471 >Redfin /option> option value70960 >Regal /option> option value66386 >Reinell/Beachcraft /option> option value93466 >Rendova /option> option value63371 >Rinker /option> option value86633 >Robalo /option> option value91369 >Safari /option> option value87980 >Sanger /option> option value49342 >Scout /option> option value57965 >SEA ARK /option> option value85349 >SEA Arrow /option> option value90874 >SEA DOO /option> option value92454 >SEA Nymph /option> option value86634 >SEA PRO /option> option value50112 >SEA RAY /option> option value59318 >Seaswirl /option> option value78930 >Shockwave /option> option value83179 >Skeeter /option> option value74845 >SKI Centurion /option> option value94800 >SKI Supreme /option> option value79527 >SKI West /option> option value92453 >Sleek II BY KAL Kustom /option> option value92456 >Sleekcraft /option> option value54392 >Smoker Craft /option> option value91372 >Spectrum/Bluefin /option> option value87978 >Starcraft /option> option value51142 >Stingray /option> option value91366 >Stratos /option> option value94801 >SUB SEA System /option> option value55604 >Sugar Sand /option> option value94789 >SUN Tracker /option> option value82152 >Sunbird /option> option value69067 >Supra /option> option value88459 >Supreme /option> option value89035 >Svfara /option> option value89633 >Sylvan /option> option value92455 >Tahiti BY KAL Kustom /option> option value73151 >Tahiti/Caribbean /option> option value77968 >Tahoe /option> option value94797 >Tahoe Pontoons /option> option value84845 >Tide Runner /option> option value90875 >Tidecraft /option> option value68646 >Tige /option> option value85348 >Toyota /option> option value73152 >Tracker /option> option value63961 >Triton /option> option value86635 >Triumph /option> option value78929 >Trophy /option> option value91371 >Ultra /option> option value87977 >Veranda /option> option value75642 >VIP /option> option value94790 >Vision /option> option value93467 >Walker BAY /option> option value94798 >Warlock /option> option value83178 >Wellcraft /option> option value86627 >Winner /option> option value51657 >Xpress (Aluma-Weld) /option> option value87979 >Yamaha /option> option value73966 >Zodiac /option> /select> /div> /div> /li> li classam-item -list-item amdropdown> div classdropdown-title>Select Year /div> div classdropdown-element amshopby-clearer> div classamfinder-select-wrapper> select idfinder-14--53 data-dropdown-id53namefinder53disabled disabled data-amfinder-jsselect classamfinder-select> option value0>Year /option> /select> /div> /div> /li> li classam-item -list-item amdropdown> div classdropdown-title>Select Model /div> div classdropdown-element amshopby-clearer> div classamfinder-select-wrapper> select idfinder-14--54 data-dropdown-id54namefinder54disabled disabled data-amfinder-jsselect classamfinder-select> option value0>Model /option> /select> /div> /div> /li> li classam-item -list-item amdropdown> div classdropdown-title>Select Option /div> div classdropdown-element amshopby-clearer> div classamfinder-select-wrapper> select idfinder-14--55 data-dropdown-id55namefinder55disabled disabled data-amfinder-jsselect classamfinder-select> option value0>Option /option> /select> /div> /div> /li> li classlast -list-item> div classamfinder-buttons no-display data-amfinder-jsbuttons> button classbutton action primary titleFind typesubmit>Find /button> button classbutton secondary namereset value1 titleReset typesubmit>Reset /button> /div> /li> /ul> /form> /div> br/> /div> /div> /section> !-- SUBNAV --> !-- BODY --> section classcontainer-fluid canvashq nopadding> div classrow> div classcol-lg-6 col-sm-12 nopadding> img srchttps://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/home/exact-fit-boat-cover-by-westland.jpg width900px height500px altWestland Boat Cover Image> /div> div classcol-lg-5 col-sm-12> h2 classtopmargin>Your Original Canvas Headquarters™ /h2> p>We know that finding the perfect cover or bimini top can be difficult - but it doesnt have to be! Here at Westland, we are dedicated in providing high quality, affordable, custom boat covers with the best customer service in the industry. From our Worlds Best Fitting Exact Fit® Covers, to our line of affordable Select Fit® Covers, we guarantee that we have a cover to fit your boat - and your budget! See for yourself by searching your Year, Make, and Model boat in our a href#coverwizard>Cover Wizard™. /a> /p> div classrow> div classcol-md-4 col-sm-12 stylemin-height: 70px;> div classcenter> i classicon-trophy styledisplay:block;font-size:50px;> /i> h3 classnotopmargin>40 YEARS EXPERIENCE /h3> /div> /div> div classcol-md-4 col-sm-12 stylemin-height: 70px;> div classcenter> i classicon-anchor styledisplay:block;font-size:50px;> /i> h3 classnotopmargin>150 BOAT MANUFACTURERS /h3> /div> /div> div classcol-md-4 col-sm-12 stylemin-height: 70px;> div classcenter> i classicon-shield styledisplay:block;font-size:50px;> /i> h3 classnotopmargin>10 YEAR WARRANTY /h3> /div> /div> /div> /div> /div> /section> section classcenter container-fluid nopadding> div classrow> div classcol-lg-6 col-sm-12 nopadding nomargin styleheight:600px; background: linear-gradient(rgba(0,0,0,0.25),rgba(0,0,0,0.25)),url(https://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/home/boat-covers-min.jpg) center center; background-size:cover;> div classhomecollage-content> h2>Boat Covers /h2> a href/boat-covers.html> button>Shop Now /button> /a> /div> /div> div classcol-lg-6 col-sm-12 nopadding> div classcol-lg-12 nomargin nopadding styleheight:300px; background: linear-gradient(rgba(0,0,0,0.25),rgba(0,0,0,0.25)),url(https://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/home/bimini-tops-home_1-min.jpg) center center; background-size:cover;> div classhomecollage-content> h2>Bimini Tops /h2> a href/bimini-tops.html> button>Shop Now /button> /a> /div> /div> div classcol-lg-12 nomargin nopadding styleheight:300px; background: linear-gradient(rgba(0,0,0,0.25),rgba(0,0,0,0.25)),url(https://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/home/specialty-covers-home_1-min.jpg) center center; background-size:cover;> div classhomecollage-content> h2>Specialty Covers /h2> a href/specialty-covers-and-accessories> button>Shop Now /button> /a> /div> /div> /div> /div> /section> section classcontainer homestylefinder> a nameboatstylefinder> /a> div classrow> div classcol-lg-12 col-xs-12 stylepadding-right:0;> h2>SHOP BY BOAT STYLE /h2> div classamfinder-common-wrapper amfinder-horizontal idamfinder_15 locationcms> form methodpost actionhttps://westlandcovers.com/amfinder/index/search/ classopen> input typehidden namefinder_id value15/> input typehidden nameback_url valueaHR0cHM6Ly93ZXN0bGFuZGNvdmVycy5jb20vZmluZGVyL2JvYXQtc3R5bGUtZmluZGVyLmh0bWw,/> input typehidden namereset_url valueaHR0cHM6Ly93ZXN0bGFuZGNvdmVycy5jb20v/> input typehidden namecategory_id value34/> input typehidden namecurrent_apply_url valueaHR0cHM6Ly93ZXN0bGFuZGNvdmVycy5jb20v/> ul class> li classam-item -list-item col-md-8 col-sm-12 amgrid> div classdropdown-title>1. | Select Boat Style /div> div classdropdown-element amshopby-clearer> div classamfinder-dropdown-wrapper data-amfinder-jswrapper> div classamfinder-dropdown-grid amfinder-dropdown idfinder-15--56 data-dropdown-id56 data-amfinder-jsselect> span data-amfinder-jstext>Boat Style: /span> span classamfinder-reset titleReset option data-amfinderreset> /span> /div> div classmacfinder-details data-amfinder-jsselect-details> div classamfinder-close data-amfinder-jsclose>× /div> div classamfinder-item data-amfinder-jsitem> input typeradio namefinder56 iditem-56-0 classam-input-hidden value305174 data-item-labelCenter/Side Console data-amfinder-jsinput-hidden data-name-jsfinder-15--56 > label foritem-56-0 classam-label nameCenter/Side Console> div classamfinder-img > img srchttps://d2v1xobx8qu3lm.cloudfront.net/media/amasty/finder/images/CenterSide Console/15.jpg altCenter/Side Console titleCenter/Side Console classamfinder-pic> /div> p classamfinder-label>Center/Side Console /p> /label> /div> div classamfinder-item data-amfinder-jsitem> input typeradio namefinder56 iditem-56-1 classam-input-hidden value305179 data-item-labelCruiser data-amfinder-jsinput-hidden data-name-jsfinder-15--56 > label foritem-56-1 classam-label nameCruiser> div classamfinder-img > img srchttps://d2v1xobx8qu3lm.cloudfront.net/media/amasty/finder/images/Cruiser/15.jpg altCruiser titleCruiser classamfinder-pic> /div> p classamfinder-label>Cruiser /p> /label> /div> div classamfinder-item data-amfinder-jsitem> input typeradio namefinder56 iditem-56-2 classam-input-hidden value305176 data-item-labelCuddy Boat data-amfinder-jsinput-hidden data-name-jsfinder-15--56 > label foritem-56-2 classam-label nameCuddy Boat> div classamfinder-img > img srchttps://d2v1xobx8qu3lm.cloudfront.net/media/amasty/finder/images/Cuddy Boat/15.jpg altCuddy Boat titleCuddy Boat classamfinder-pic> /div> p classamfinder-label>Cuddy Boat /p> /label> /div> div classamfinder-item data-amfinder-jsitem> input typeradio namefinder56 iditem-56-3 classam-input-hidden value305172 data-item-labelFishing Boat data-amfinder-jsinput-hidden data-name-jsfinder-15--56 > label foritem-56-3 classam-label nameFishing Boat> div classamfinder-img > img srchttps://d2v1xobx8qu3lm.cloudfront.net/media/amasty/finder/images/Fishing Boat/15.jpg altFishing Boat titleFishing Boat classamfinder-pic> /div> p classamfinder-label>Fishing Boat /p> /label> /div> div classamfinder-item data-amfinder-jsitem> input typeradio namefinder56 iditem-56-4 classam-input-hidden value305180 data-item-labelInflatable/Dinghy data-amfinder-jsinput-hidden data-name-jsfinder-15--56 > label foritem-56-4 classam-label nameInflatable/Dinghy> div classamfinder-img > img srchttps://d2v1xobx8qu3lm.cloudfront.net/media/amasty/finder/images/InflatableDinghy/15.jpg altInflatable/Dinghy titleInflatable/Dinghy classamfinder-pic> /div> p classamfinder-label>Inflatable/Dinghy /p> /label> /div> div classamfinder-item data-amfinder-jsitem> input typeradio namefinder56 iditem-56-5 classam-input-hidden value305173 data-item-labelJet Boat data-amfinder-jsinput-hidden data-name-jsfinder-15--56 > label foritem-56-5 classam-label nameJet Boat> div classamfinder-img > img srchttps://d2v1xobx8qu3lm.cloudfront.net/media/amasty/finder/images/Jet Boat/15.jpg altJet Boat titleJet Boat classamfinder-pic> /div> p classamfinder-label>Jet Boat /p> /label> /div> div classamfinder-item data-amfinder-jsitem> input typeradio namefinder56 iditem-56-6 classam-input-hidden value305178 data-item-labelPontoon/Deck Boat data-amfinder-jsinput-hidden data-name-jsfinder-15--56 > label foritem-56-6 classam-label namePontoon/Deck Boat> div classamfinder-img > img srchttps://d2v1xobx8qu3lm.cloudfront.net/media/amasty/finder/images/PontoonDeck Boat/15.jpg altPontoon/Deck Boat titlePontoon/Deck Boat classamfinder-pic> /div> p classamfinder-label>Pontoon/Deck Boat /p> /label> /div> div classamfinder-item data-amfinder-jsitem> input typeradio namefinder56 iditem-56-7 classam-input-hidden value305177 data-item-labelRunabout data-amfinder-jsinput-hidden data-name-jsfinder-15--56 > label foritem-56-7 classam-label nameRunabout> div classamfinder-img > img srchttps://d2v1xobx8qu3lm.cloudfront.net/media/amasty/finder/images/Runabout/15.jpg altRunabout titleRunabout classamfinder-pic> /div> p classamfinder-label>Runabout /p> /label> /div> div classamfinder-item data-amfinder-jsitem> input typeradio namefinder56 iditem-56-8 classam-input-hidden value305175 data-item-labelWakeboard/Ski Boat data-amfinder-jsinput-hidden data-name-jsfinder-15--56 > label foritem-56-8 classam-label nameWakeboard/Ski Boat> div classamfinder-img > img srchttps://d2v1xobx8qu3lm.cloudfront.net/media/amasty/finder/images/WakeboardSki Boat/15.jpg altWakeboard/Ski Boat titleWakeboard/Ski Boat classamfinder-pic> /div> p classamfinder-label>Wakeboard/Ski Boat /p> /label> /div> /div> /div> /div> /li> li classam-item -list-item col-md-4 col-sm-12 amdropdown> div classdropdown-title>2. | Select Boat Substyle /div> div classdropdown-element amshopby-clearer> div classamfinder-dropdown-wrapper data-amfinder-jswrapper> div class amfinder-dropdown idfinder-15--57 data-dropdown-id57disabled disabled data-amfinder-jsselect> span data-amfinder-jstext>Boat Substyle: /span> span classamfinder-reset titleReset option data-amfinderreset> /span> /div> div classamfinder-details data-amfinder-jsselect-details> div classamfinder-close data-amfinder-jsclose>× /div> /div> /div> /div> /li> li classam-item -list-item col-md-4 col-sm-12 amdropdown> div classdropdown-title>3. | Select Centerline Length /div> div classdropdown-element amshopby-clearer> div classamfinder-select-wrapper> select idfinder-15--58 data-dropdown-id58namefinder58disabled disabled data-amfinder-jsselect classamfinder-select> option value0>Centerline Length /option> /select> /div> /div> /li> li classam-item -list-item col-md-4 col-sm-12 amdropdown> div classdropdown-title>4. | Select Beam Width /div> div classdropdown-element amshopby-clearer> div classamfinder-select-wrapper> select idfinder-15--59 data-dropdown-id59namefinder59disabled disabled data-amfinder-jsselect classamfinder-select> option value0>Beam Width /option> /select> /div> /div> /li> li classam-item -list-item col-md-4 col-sm-12 amdropdown> div classdropdown-title>5. | Select Drive Type /div> div classdropdown-element amshopby-clearer> div classamfinder-select-wrapper> select idfinder-15--60 data-dropdown-id60namefinder60disabled disabled data-amfinder-jsselect classamfinder-select> option value0>Drive Type /option> /select> /div> /div> /li> li classlast -list-item> div classamfinder-buttons no-display data-amfinder-jsbuttons> button classbutton action primary titleFind typesubmit>Find /button> button classbutton action secondary namereset value1 titleReset typesubmit>Reset /button> /div> /li> /ul> /form> /div> span idscrollpoint> /span> br/> /div> /div> /section> section classcontainer-fluid homevid nopadding stylemargin-top: 50px; margin-bottom: 50px; background-color: #0f6db6; color:#fff> div classrow> div classcol-lg-6 nomargin nopadding> video playsinline autoplayautoplay muted looploop styledisplay: block;> source srchttps://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/home/Westland-Manufacturing-Video.mp4 typevideo/mp4> /video> /div> div classcol-lg-6> div stylepadding: 15% 5%;> h2 stylefont-size:2em; color:#fff;>We are the Marine Fabric Experts /h2> p stylefont-size: 1.25em;>Brought to you by the same team trusted by todays top boat manufacturers, Westlands Exact Fit® boat covers provide a strong>factory fit /strong> and strong>superior quality /strong> - at a strong>fraction of the cost. /strong> /p> a stylemargin-right:1em; href/blog/post/the-best-boat-covers-are-crafted-with-expertise> button>Our Process /button> /a> a href/fabric-options> button classsecondary>Our Fabrics /button> /a> /div> /div> /div> /section> section classcontainer-fluid> div classrow> div classcol-lg-5 col-lg-push-1 col-sm-12> h3>We know you. Weve got you covered. /h3> blockquote classquote> p>You work hard all week, either making a living out on the water or just waiting for your chance to get out there. When the time finally comes that you can leave shore and enjoy your boat with family and friends, we’re right there with you. /p> p>At Westland, we love your boat as much as you do. With one hundred shared years of quality and craftsmanship under our belt, we know that our products will protect your investment for years to come. /p> p>Whether you use your boat as a part of your job, as a part of your lifestyle, or just for recreation - you can rest assured that Westland will always be there with the best products and service in the industry. In fact, you can even call us and talk to one of our marine canvas experts. /p> p>Just so you know, we don’t just answer the phone, we’re staffed with real industry experts who can help you with any selection, service, or maintenance questions you might have. Give it try, we’d love to hear from you! /p> p>Now, we encourage you to explore our website, talk to our team of fabric experts, and learn more about our products, our history, and a commitment to quality and craftsmanship that you won’t find anywhere else. /p> p> b>Welcome home. Welcome to Westland! /b> /p> /blockquote> /div> div classcol-lg-5 col-lg-push-1 col-sm-12> img src/pub/media/wysiwyg/pearl_theme/Loader.gif data-originalhttps://d2v1xobx8qu3lm.cloudfront.net/media/westlandcovers/home/pontoon-boat-cover-from-westland.jpg width763px height508px classlazy altpontoon boat cover /> /div> /div> /section> /div> /div> /main> footer classpage-footer> div classfooter content> div classpre-footer> div classpre-footer-content> div classcol-sm-2 col-xs-12> /div> div classcol-sm-4 col-xs-12> a href/westland-dealer-locations target_self> svg classprefooter-svg idDealerSVG data-nameDealerSVG xmlnshttp://www.w3.org/2000/svg viewBox0 0 45 47.09> defs> style>.cls-1{ fill:#0b74bc; } /style> /defs> title>Find A Dealer Icon /title> path classcls-1 dM30.66,39.35c-2.83,4.23-4.33,5.14-5.66,5.14h0c-.69,0-2.24,0-5.69-5.14C9.64,39.87,2.5,41.7,2.5,43.87c0,2.58,10.07,4.67,22.5,4.67s22.5-2.09,22.5-4.67C47.5,41.7,40.34,39.87,30.66,39.35Z transformtranslate(-2.5 -1.46)/> path classcls-1 dM25,7.31a8.37,8.37,0,1,0,8.36,8.37A8.38,8.38,0,0,0,25,7.31Z transformtranslate(-2.5 -1.46)/> path classcls-1 dM25,1.46A14.24,14.24,0,0,0,10.78,15.68c0,5.18,4.15,13.46,5.93,16.79,1.37,2.54,6,10.85,8.29,10.85h0c2.29,0,6.92-8.31,8.29-10.85,1.78-3.33,5.93-11.61,5.93-16.79A14.24,14.24,0,0,0,25,1.46ZM37.16,15.68C37.16,23.51,27,39.77,25,41.19c-2-1.43-12.16-17.68-12.16-25.51a12.16,12.16,0,1,1,24.32,0Z transformtranslate(-2.5 -1.46)/> /svg> p classpre-footer-subtitle>Local Support /p> p classpre-footer-title> button>View Local Dealers /button> /p> /a> /div> div classcol-sm-4 col-xs-12> svg classprefooter-svg idSupportSVG data-nameSupportSVG xmlnshttp://www.w3.org/2000/svg viewBox0 0 45 48.59> defs> style>.cls-1{ fill:#0b74bc; } /style> /defs> title>Support Icon /title> path classcls-1 dM35.63.71A11.87,11.87,0,1,0,47.5,12.58,11.86,11.86,0,0,0,35.63.71ZM37.17,18.9H34.31V16.15h2.86Zm.8-5.68a3.56,3.56,0,0,0-1.07.91,2.61,2.61,0,0,0-.19,1.21H34.37V15a5.16,5.16,0,0,1,.25-2.09A5.66,5.66,0,0,1,36,11.66a3.06,3.06,0,0,0,.81-.8A1.71,1.71,0,0,0,37,10a1.34,1.34,0,0,0-.43-1.06,1.47,1.47,0,0,0-1-.39c-1.08,0-1.68.76-1.81,2.28l-2.5-.36a4.78,4.78,0,0,1,1.51-3.11,4.42,4.42,0,0,1,3-1,4.52,4.52,0,0,1,3,1A3.31,3.31,0,0,1,40,9.92,3.87,3.87,0,0,1,38,13.22Z transformtranslate(-2.5 -0.71)/> path classcls-1 dM35.9,26.62l-.66,0A13.85,13.85,0,0,1,24.71,3.77a18.26,18.26,0,0,0-4.41-.18c-9.43.71-14.72,8-14.18,15.08.18,2.43-2.38,6.85-3.43,9C2,29.09,3.21,30,4.9,29.89s2.21.18,2.34,2,.23,3,.32,4.23A3.89,3.89,0,0,0,12,39.8l4.71-.36.75,9.85c10.77-.81,15.64-5,15.64-5s-.13-1.72-.48-6.4C32.32,34.16,34.48,31.1,35.9,26.62Z transformtranslate(-2.5 -0.71)/> /svg> p classpre-footer-subtitle>Support /p> p classpre-footer-title> select stylewidth:80% idsupport-select> option value>Please Select... /option> option value/knowledge-base>Help Center /option> option value/fabric-options>Fabric Options /option> option value/warranty>Warranty /option> option value/blog>How-To/Blog /option> option value/westland-dealer-locations>Local Support /option> option value/contact>Contact Us /option> /select> /p> /div> div classcol-sm-2 col-xs-12> /div> /div> /div> style> /style> div classfooter-v1> div classfooter-v1-content> div classcol-sm-4 col-xs-12 nopaddingleft stylemargin-top:40px;> a href/ target_self> img classlazy src/pub/media/wysiwyg/pearl_theme/Loader.gif data-originalhttps://d2v1xobx8qu3lm.cloudfront.net/media/logo/Westland-White.png altWestland Covers Logo width120px /> /a> p> i classicon-line-mail stylemargin-right: 7px;> /i> a hrefmailto:customerservice@westlandcovers.com>customerservice@westlandcovers.com /a> br> i classicon icon-phone3 stylemargin-right: 7px;> /i> a hreftel:8008357992>800-835-7992 /a> br> i classicon-map-marker stylemargin-right: 7px;> /i> a hrefhttps://goo.gl/maps/XUzBQWpwEuGxHKD6A target_blank>Vonore, TN 37885 USA /a> /p> /div> div classcol-sm-2 col-xs-12 nopaddingleft> p classfooter-title>Shop By /p> ul classfooter links> li classnav item> a href/boat-covers.html>Boat Covers /a> /li> li classnav item> a href/bimini-tops.html>Bimini Tops /a> /li> li classnav item> a href/specialty-covers-and-accessories>Specialty Covers /a> /li> li classnav item> a href/accessories.html>Cover Accessories /a> /li> /ul> /div> div classcol-sm-2 col-xs-12 nopaddingleft> p classfooter-title>Company /p> ul classfooter links> li classnav item> a href/about-westland>About Us /a> /li> li classnav item> a href/blog>Blog /a> /li> li classnav item> a href/contact>Contact Us /a> /li> /ul> /div> div classcol-sm-2 col-xs-12 nopaddingleft> p classfooter-title>Support /p> ul classfooter links> li classnav item> a href/knowledge-base>Help Center /a> /li> li classnav item> a href/westland-dealer-locations>Local Support /a> /li> li classnav item> a href/sales/guest/form/>Orders & Returns /a> /li> li classnav item> a href/become-a-westland-dealer>Become a Dealer /a> /li> /ul> /div> !--div classcol-sm-3 col-xs-12 nopaddingleft stylemargin-top: 60px;>a titleNMMA hrefhttp://www.nmma.org/membership/join/accessory-manufacturers-division target_blank>img classlazy src/pub/media/wysiwyg/pearl_theme/Loader.gif data-original/pub/media/home/nmma-member.svg stylemax-width:250px; altProud member of NMMA />/a>/div>--> div classcol-xs-12 border-v1> div classpull-left-md> div classnewsletter-subscribe> form actionhttps://westlandcovers.com/newsletter/subscriber/new/ methodpost idnewsletter-footer data-mage-init{validation: {errorClass: mage-error}}> div classform-group> input nameemail typeemail idnewsletter-bottom placeholderEnter your email address data-validate{required:true, validate-email:true} classinput-text required-entry validate-email stylewidth:auto; min-width:300px; margin: 10px 5px; /> button classbutton titleSubscribe typesubmit> span>Sign Up /span> /button> /div> /form> /div> /div> div classpull-right-md social-icons-v1> a classsocial-icons si-borderless si-facebook hrefhttps://www.facebook.com/westlandcovers/> i classicon-facebook> /i> i classicon-facebook> /i> /a> a classsocial-icons si-borderless si-youtube hrefhttps://www.youtube.com/channel/UC9pQnfJ42VnEtzw-Aftv00g> i classicon-youtube> /i> i classicon-youtube> /i> /a> /div> /div> div classcol-xs-12 footer-nav center> a href/catalogsearch/advanced/>Advanced Search /a> | a href/privacy-policy-cookie-restriction-mode>Privacy Policy /a> | a href/terms-and-conditions>Terms & Conditions /a> /div> /div> /div> style> /style> /div> /footer> div classsocial-login block-container idemail_modal> div classmodal-title data-roletitle>Email address is required to login /div> div classblock> div classblock-content> form classemail-form idsociallogin_form_email data-mage-init{validation:{}}> fieldset classfieldset data-hasrequired* Required Fields> div classfield note>Please enter your email address below to create account. /div> div classfield email required> label foremail_address classlabel> span>Email /span> /label> div classcontrol> input typeemail namereal-email altemail idreal_email_address classinput-text sl-input-email data-validate{required:true, validate-email:true}/> input typehidden nameredirect-url value /> /div> /div> /fieldset> div classactions-toolbar sl-submit-email> div classprimary> button typebutton idsociallogin_send_email classaction send primary> span>Sign In /span> /button> /div> /div> /form> /div> /div> /div> div idam-recaptcha-container data-bindscope:amRecaptcha> /div> style> /style> small classcopyright> span>©2024 Westland. All Rights Reserved. /span> /small> /div> script typetext/javascript srchttps://dix1cf1zuayou.cloudfront.net/static/version1727704046/frontend/Pearl/westlandcovers_us_custom/en_US/requirejs/require.js>/script> script typetext/javascript srchttps://dix1cf1zuayou.cloudfront.net/static/version1727704046/frontend/Pearl/westlandcovers_us_custom/en_US/mage/requirejs/mixins.js>/script> script typetext/javascript srchttps://dix1cf1zuayou.cloudfront.net/static/version1727704046/frontend/Pearl/westlandcovers_us_custom/en_US/requirejs-config.js>/script> script typetext/javascript srchttps://dix1cf1zuayou.cloudfront.net/static/version1727704046/frontend/Pearl/westlandcovers_us_custom/en_US/js/mac_navigation.js>/script> script typetext/javascript srcdata:text/javascript;base64,ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2Nvb2tpZS1zdGF0dXMiKS5zdHlsZS5kaXNwbGF5PSJub25lIjs>/script> script typetext/x-magento-init> { *: { Magento_PageCache/js/form-key-provider: {}, cookieStatus: {}, mage/cookies: { expires: null, path: \/, domain: .westlandcovers.com, secure: false, lifetime: 172800 }, Magento_Customer/js/section-config: { sections: { stores/store/switch: * , stores/store/switchrequest: * , directory/currency/switch: * , *: messages , customer/account/logout: *, recently_viewed_product, recently_compared_product, persistent , customer/account/loginpost: * , customer/account/createpost: * , customer/account/editpost: * , customer/ajax/login: checkout-data, cart, captcha , catalog/product_compare/add: compare-products, wp_ga4, gtm , catalog/product_compare/remove: compare-products , catalog/product_compare/clear: compare-products , sales/guest/reorder: cart, ammessages , sales/order/reorder: cart, ammessages , checkout/cart/add: cart, directory-data, ammessages, wp_ga4, gtm, wp_confirmation_popup , checkout/cart/delete: cart, ammessages, wp_ga4, gtm , checkout/cart/updatepost: cart, ammessages , checkout/cart/updateitemoptions: cart, ammessages , checkout/cart/couponpost: cart, ammessages , checkout/cart/estimatepost: cart, ammessages , checkout/cart/estimateupdatepost: cart, ammessages , checkout/onepage/saveorder: cart, checkout-data, last-ordered-items, ammessages , checkout/sidebar/removeitem: cart, ammessages, wp_ga4, gtm , checkout/sidebar/updateitemqty: cart, ammessages , rest/*/v1/carts/*/payment-information: cart, last-ordered-items, instant-purchase, ammessages, wp_ga4, gtm , rest/*/v1/guest-carts/*/payment-information: cart, ammessages, wp_ga4, gtm , rest/*/v1/guest-carts/*/selected-payment-method: cart, checkout-data, ammessages , rest/*/v1/carts/*/selected-payment-method: cart, checkout-data, instant-purchase, ammessages , customer/address/*: instant-purchase , customer/account/*: instant-purchase , vault/cards/deleteaction: instant-purchase , multishipping/checkout/overviewpost: cart, ammessages , persistent/index/unsetcookie: persistent , review/product/post: review , paypal/express/placeorder: cart, checkout-data, ammessages , paypal/payflowexpress/placeorder: cart, checkout-data, ammessages , paypal/express/onauthorization: cart, checkout-data, ammessages , wishlist/index/add: wishlist, wp_ga4, gtm , wishlist/index/remove: wishlist , wishlist/index/updateitemoptions: wishlist , wishlist/index/update: wishlist , wishlist/index/cart: wishlist, cart, wp_ga4, gtm , wishlist/index/fromcart: wishlist, cart , wishlist/index/allcart: wishlist, cart, wp_ga4, gtm , wishlist/shared/allcart: wishlist, cart , wishlist/shared/cart: cart , faq/index/save: faq , amasty_promo/cart/add: cart, ammessages , braintree/paypal/placeorder: ammessages , authorizenet/directpost_payment/place: ammessages , amazon_pay/checkout/completesession: cart, checkout-data, last-ordered-items , checkout/cart/configure: wp_ga4, gtm , rest/*/v1/guest-carts/*/shipping-information: wp_ga4, gtm , rest/*/v1/carts/*/shipping-information: wp_ga4, gtm , weltpixel_quickview/index/updatecart: cart , sociallogin/account/login: * , sociallogin/account/loginpost: * }, clientSideSections: checkout-data, cart-data, faq_product , baseUrls: https://westlandcovers.com/ , sectionNames: messages, customer, compare-products, last-ordered-items, cart, directory-data, instant-purchase, loggedAsCustomer, captcha, persistent, review, wishlist, faq, ammessages, wp_ga4, gtm, wp_confirmation_popup, recently_viewed_product, recently_compared_product, product_data_storage, paypal-billing-agreement }, Magento_Ui/js/block-loader: https://dix1cf1zuayou.cloudfront.net/static/version1727704046/frontend/Pearl/westlandcovers_us_custom/en_US/images/loader-1.gif, Magento_Ui/js/core/app: { components: { minicart_content: { children: { subtotal.container: { children: { subtotal: { children: { subtotal.totals: { config: { display_cart_subtotal_incl_tax: 0, display_cart_subtotal_excl_tax: 1, template: Magento_Tax\/checkout\/minicart\/subtotal\/totals }, children: { subtotal.totals.msrp: { component: Magento_Msrp\/js\/view\/checkout\/minicart\/subtotal\/totals, config: { displayArea: minicart-subtotal-hidden, template: Magento_Msrp\/checkout\/minicart\/subtotal\/totals } } }, component: Magento_Tax\/js\/view\/checkout\/minicart\/subtotal\/totals } }, component: uiComponent, config: { template: Magento_Checkout\/minicart\/subtotal } } }, component: uiComponent, config: { displayArea: subtotalContainer } }, item.renderer: { component: Magento_Checkout\/js\/view\/cart-item-renderer, config: { displayArea: defaultRenderer, template: WeltPixel_QuickCart\/minicart\/item\/default.html }, children: { item.image: { component: Magento_Catalog\/js\/view\/image, config: { template: Magento_Catalog\/product\/image, displayArea: itemImage } }, checkout.cart.item.price.sidebar: { component: uiComponent, config: { template: Magento_Checkout\/minicart\/item\/price, displayArea: priceSidebar } } } }, extra_info: { component: uiComponent, config: { displayArea: extraInfo }, children: { affirm_minicard: { component: Astound_Affirm\/js\/view\/minicart, config: { template: Astound_Affirm\/minicart\/info } } } }, promotion: { component: uiComponent, config: { displayArea: promotion } } }, config: { itemRenderer: { default: defaultRenderer, simple: defaultRenderer, virtual: defaultRenderer }, template: WeltPixel_QuickCart\/minicart\/content }, component: Magento_Checkout\/js\/view\/minicart }, messages: { component: Magento_Theme/js/view/messages }, finder_notification: { component: Amasty_Finder/js/notification }, storage-manager: { component: Magento_Catalog/js/storage-manager, appendTo: , storagesConfiguration: { recently_viewed_product: { requestConfig: { syncUrl: https:\/\/westlandcovers.com\/catalog\/product\/frontend_action_synchronize\/ }, lifetime: 1000, allowToSendRequest: null }, recently_compared_product: { requestConfig: { syncUrl: https:\/\/westlandcovers.com\/catalog\/product\/frontend_action_synchronize\/ }, lifetime: 1000, allowToSendRequest: null }, product_data_storage: { updateRequestConfig: { url: https:\/\/westlandcovers.com\/rest\/westland_covers_us_store_view\/V1\/products-render-info }, requestConfig: { syncUrl: https:\/\/westlandcovers.com\/catalog\/product\/frontend_action_synchronize\/ }, allowToSendRequest: null } } } } }, Magento_Customer/js/customer-data: { sectionLoadUrl: https:\/\/westlandcovers.com\/customer\/section\/load\/, expirableSectionLifetime: 60, expirableSectionNames: cart, persistent, cookieLifeTime: 172800, updateSessionUrl: https:\/\/westlandcovers.com\/customer\/account\/updateSession\/ }, Magento_Customer/js/invalidation-processor: { invalidationRules: { website-rule: { Magento_Customer/js/invalidation-rules/website-rule: { scopeConfig: { websiteId: 9 } } } } } }, #ajaxlogin-popup: { Magento_Ui/js/core/app: { components: { ajaxLogin: { component: WeltPixel_SocialLogin\/js\/view\/ajaxlogin-popup, children: { messages: { component: Magento_Ui\/js\/view\/messages, displayArea: messages }, recaptcha-register: { component: Magento_ReCaptchaFrontendUi\/js\/reCaptcha, displayArea: additional-register-form-fields, reCaptchaId: recaptcha-ajaxregister-popup, settings: { rendering: { sitekey: 6Lf2mS4UAAAAALq-pQ4HdAtbaURMZGMQ8m98ER8k, badge: inline, size: invisible, theme: light, hl: }, invisible: true } } } } } } }, #authenticationPopup: { Magento_Ui/js/core/app: { components: { authenticationPopup: { component: WeltPixel_SocialLogin\/js\/view\/authentication-popup, children: { messages: { component: Magento_Ui\/js\/view\/messages, displayArea: messages }, captcha: { component: Magento_Captcha\/js\/view\/checkout\/loginCaptcha, displayArea: additional-login-form-fields, formId: user_login, configSource: checkout }, amazon-button: { component: Amazon_Pay\/js\/view\/login-button-wrapper, sortOrder: 0, displayArea: additional-login-form-fields, config: { tooltip: Securely login to our website using your existing Amazon details. } } }, ajaxLogin: { children: { recaptcha-register: { settings: { rendering: { sitekey: 6Lf2mS4UAAAAALq-pQ4HdAtbaURMZGMQ8m98ER8k, badge: inline, size: invisible, theme: light, hl: }, invisible: true } } } } } } } }, body: { pageCache: { url: https:\/\/westlandcovers.com\/page_cache\/block\/render\/, handles: default, cms_index_index, cms_page_view, cms_index_index_id_westland-home-us, weltpixel_custom_header_v1, weltpixel_custom_header_globalpromo_belowmenu, weltpixel_design_elements_bootstrap_grid, weltpixel_design_elements_fonts_core, weltpixel_design_elements_fonts_extended, weltpixel_design_elements_bootstrap_tables, weltpixel_design_elements_toggles_accordions_tabs, weltpixel_design_elements_pricing_boxes, weltpixel_design_elements_headings_blockquotes, weltpixel_design_elements_dividers, weltpixel_design_elements_brand_lists, weltpixel_design_elements_responsive_helpers, weltpixel_design_elements_smooth_scrolling, weltpixel_design_elements_alert_boxes, weltpixel_design_elements_testimonials, weltpixel_design_elements_flexslider, weltpixel_design_elements_buttons, weltpixel_design_elements_sections, weltpixel_design_elements_parallax, weltpixel_design_elements_animations_core, weltpixel_design_elements_animations_extended, weltpixel_design_elements_remove_calendar_css, weltpixel_cms_page_view, weltpixel_googlecards_remove_opengraph, weltpixel_googlecards_remove_schema, weltpixel_quickcart_sidebar, ajaxlogin_customer_signed_out, weltpixel_speedoptimization_remove_printcss, originalRequest: { route: cms, controller: index, action: index, uri: \/ }, versionCookieName: private_content_version } }, #am-recaptcha-container: { Magento_Ui/js/core/app: { components: { amRecaptcha: { component: Amasty_InvisibleCaptcha/js/view/am-recaptcha } } } } } /script> script srcdata:text/javascript;base64,d2luZG93LmNvb2tpZXNDb25maWc9d2luZG93LmNvb2tpZXNDb25maWd8fHsKICAgICAgfTsKICAgICAgd2luZG93LmNvb2tpZXNDb25maWcuc2VjdXJlPXRydWU7CiAgICByZXF1aXJlLmNvbmZpZyh7CiAgICAgICAgbWFwOnsKICAgICAgICAgICcqJzp7CiAgICAgICAgICAgIHd5c2l3eWdBZGFwdGVyOidtYWdlL2FkbWluaHRtbC93eXNpd3lnL3RpbnlfbWNlL3RpbnltY2U0QWRhcHRlcid9CiAgICAgICAgfQogICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHJlcXVpcmUoWydBbWFzdHlfSW52aXNpYmxlQ2FwdGNoYS9qcy9tb2RlbC9hbS1yZWNhcHRjaGEnLF0sZnVuY3Rpb24oYW1SZWNhcHRjaGFNb2RlbCl7CiAgICAgICAgYW1SZWNhcHRjaGFNb2RlbC5zZXRDb25maWcoewogICAgICAgICAgImZvcm1zVG9Qcm90ZWN0IjoiZm9ybVx1MDA1QmFjdGlvblx1MDAyQVx1MDAzRFx1MDAyMmZhcVx1MDAyRmluZGV4XHUwMDJGc2F2ZVx1MDAyMlx1MDA1RCxmb3JtXHUwMDVCYWN0aW9uXHUwMDJBXHUwMDNEXHUwMDIycmV2aWV3XHUwMDJGcHJvZHVjdFx1MDAyRnBvc3RcdTAwMjJcdTAwNUQsZm9ybVx1MDA1QmFjdGlvblx1MDAyQVx1MDAzRFx1MDAyMmZhcVx1MDAyRmluZGV4XHUwMDJGc2F2ZVx1MDAyMlx1MDA1RCIsImlzRW5hYmxlZE9uUGF5bWVudHMiOiIiLCJjaGVja291dFJlY2FwdGNoYVZhbGlkYXRlVXJsIjoiaHR0cHM6Ly93ZXN0bGFuZGNvdmVycy5jb20vYW1jYXB0aGNhL2NoZWNrb3V0L3ZhbGlkYXRlLyIsImludmlzaWJsZUNhcHRjaGFDdXN0b21Gb3JtIjoiLTEiLCJyZWNhcHRjaGFDb25maWciOnsKICAgICAgICAgICAgImxhbmciOiJobFx1MDAzRGVuIiwidGhlbWUiOiJsaWdodCIsImJhZGdlIjoiYm90dG9tbGVmdCIsInNpdGVrZXkiOiI2TGYybVM0VUFBQUFBTHEtcFE0SGRBdGJhVVJNWkdNUThtOThFUjhrIn0KICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfQogICAgICAgICAgICAgICAgICAgKTsKICAgIHdpbmRvdy5za2lwTW9kdWxlcz1bImN1c3RvbWVyXC9hY2NvdW50Iiwic29jaWFsbG9naW5cL2FjY291bnQiXTsKICAgICAgd2luZG93LnF1ZXJ5UGFyYW09J3NvY2lhbGxvZ2luX3JlZmVyZXJfc3RvcmUnOwogICAgICB3aW5kb3cuaXNTbEd1ZXN0Q2hlY2tvdXRFbmFibGVkPSIxIjsKICAgICAgcmVxdWlyZShbJ3NsUmVmZXJlciddKTsKICAgIHJlcXVpcmVqcyhbJ2pxdWVyeScsJ3VuZGVyc2NvcmUnLCd3ZWx0cGl4ZWxfc2VhcmNoYXV0b2NvbXBsZXRlJ10sZnVuY3Rpb24oJCxfLHNlYXJjaEF1dG9Db21wbGV0ZSl7CiAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAgICAgICAgIHZhciBpc0VuYWJsZVBvcHVsYXJTdWdnZXN0aW9ucz0nMScsaXNFbmFibGVDYXRlZ29yeVNlYXJjaD0nMCcsaXNFbmFibGVBdXRvQ29tcGxldGU9JzEnLHByZXZpb3VzU2VhcmNoPScnOwogICAgICAgICAgd2luZG93Lm1pbk51bWJlck9mQ2hhcmFjdGVycz0nMyc7CiAgICAgICAgICB3aW5kb3cuYmFzZVVSTD0naHR0cHM6Ly93ZXN0bGFuZGNvdmVycy5jb20vJzsKICAgICAgICAgICQoJ2h0bWwnKS5vbignY2xpY2snLGZ1bmN0aW9uKGV2ZW50KXsKICAgICAgICAgICAgdmFyIHRhcmdldENsYXNzPSQoZXZlbnQudGFyZ2V0KS5hdHRyKCdjbGFzcycpLHNlYXJjaENsYXNzPSdzZWFyY2hhdXRvY29tcGxldGUnOwogICAgICAgICAgICBpZih0YXJnZXRDbGFzcyE9c2VhcmNoQ2xhc3MpCiAgICAgICAgICAgICAgJCgnIycrc2VhcmNoQ2xhc3MpLmhpZGUoKTsKICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgIGlmKGlzRW5hYmxlQXV0b0NvbXBsZXRlfHxpc0VuYWJsZVBvcHVsYXJTdWdnZXN0aW9uc3x8aXNFbmFibGVDYXRlZ29yeVNlYXJjaCl7CiAgICAgICAgICAgICQoJy5zZWFyY2gtYXV0b2NvbXBsZXRlJykucmVtb3ZlKCk7CiAgICAgICAgICAgICQoJyNzZWFyY2gnKS5vbigna2V5dXAnLF8uZGVib3VuY2UoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICB2YXIgdmFsdWU9JCh0aGlzKS52YWwoKTsKICAgICAgICAgICAgICBpZih2YWx1ZT09cHJldmlvdXNTZWFyY2gmJiQoJyNzZWFyY2hfYXV0b2NvbXBsZXRlJykuaXMoJzp2aXNpYmxlJykpewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBwcmV2aW91c1NlYXJjaD12YWx1ZTsKICAgICAgICAgICAgICBpZihpc0VuYWJsZUF1dG9Db21wbGV0ZSYmdmFsdWUubGVuZ3RoPj13aW5kb3cubWluTnVtYmVyT2ZDaGFyYWN0ZXJzKXsKICAgICAgICAgICAgICAgICQoIi5zZWFyY2ggLmNvbnRyb2wiKS5hZGRDbGFzcygibG9hZGVyLWFqYXgiKTsKICAgICAgICAgICAgICAgIHNlYXJjaEF1dG9Db21wbGV0ZS5hamF4U2VhcmNoKCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAkKCcjc2VhcmNoYXV0b2NvbXBsZXRlJykuaGlkZSgpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAgICw3NTApKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICB9CiAgICAgICAgICAgICAgICAgICAgICk7CiAgICByZXF1aXJlKFsnanF1ZXJ5JywnanF1ZXJ5L3VpJ10sZnVuY3Rpb24oJCl7CiAgICAgICAgalF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgJCgiLmZ1bGxtZW51Iikub24oJ2NsaWNrJyxmdW5jdGlvbigpewogICAgICAgICAgICAkKHRoaXMpLnNpYmxpbmdzKCIud3NtZW51LWNsaWNrIikuY2xpY2soKTsKICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgIH0KICAgICAgICAgICAgICAgICAgICk7CiAgICByZXF1aXJlanMoWydqcXVlcnknLCd1bmRlcnNjb3JlJywnd2VsdHBpeGVsX3NlYXJjaGF1dG9jb21wbGV0ZSddLGZ1bmN0aW9uKCQsXyxzZWFyY2hBdXRvQ29tcGxldGUpewogICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgICB2YXIgaXNFbmFibGVQb3B1bGFyU3VnZ2VzdGlvbnM9JzEnLGlzRW5hYmxlQ2F0ZWdvcnlTZWFyY2g9JzAnLGlzRW5hYmxlQXV0b0NvbXBsZXRlPScxJyxwcmV2aW91c1NlYXJjaD0nJzsKICAgICAgICAgIHdpbmRvdy5taW5OdW1iZXJPZkNoYXJhY3RlcnM9JzMnOwogICAgICAgICAgd2luZG93LmJhc2VVUkw9J2h0dHBzOi8vd2VzdGxhbmRjb3ZlcnMuY29tLyc7CiAgICAgICAgICAkKCdodG1sJykub24oJ2NsaWNrJyxmdW5jdGlvbihldmVudCl7CiAgICAgICAgICAgIHZhciB0YXJnZXRDbGFzcz0kKGV2ZW50LnRhcmdldCkuYXR0cignY2xhc3MnKSxzZWFyY2hDbGFzcz0nc2VhcmNoYXV0b2NvbXBsZXRlJzsKICAgICAgICAgICAgaWYoISQoZXZlbnQudGFyZ2V0KS5wYXJlbnRzKCdmb3JtLnRvcG1lbnVzZWFyY2gnKS5sZW5ndGgpewogICAgICAgICAgICAgICQoJyMnK3NlYXJjaENsYXNzKS5oaWRlKCk7CiAgICAgICAgICAgICAgJCgnLicrc2VhcmNoQ2xhc3MrJ19kZXNrdG9wJykuaGlkZSgpOwogICAgICAgICAgICAgICQoJyNzZWFyY2gnKS52YWwoJycpOwogICAgICAgICAgICAgICQoJyNzZWFyY2hfZGVza3RvcCcpLnZhbCgnJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgIGlmKGlzRW5hYmxlQXV0b0NvbXBsZXRlfHxpc0VuYWJsZVBvcHVsYXJTdWdnZXN0aW9uc3x8aXNFbmFibGVDYXRlZ29yeVNlYXJjaCl7CiAgICAgICAgICAgICQoJy5zZWFyY2gtYXV0b2NvbXBsZXRlJykucmVtb3ZlKCk7CiAgICAgICAgICAgICQoJyNzZWFyY2hfZGVza3RvcCcpLm9uKCdrZXl1cCcsXy5kZWJvdW5jZShmdW5jdGlvbigpewogICAgICAgICAgICAgIHZhciB2YWx1ZT0kKHRoaXMpLnZhbCgpOwogICAgICAgICAgICAgICQoIiNzZWFyY2giKS52YWwodmFsdWUpOwogICAgICAgICAgICAgIGlmKHZhbHVlPT1wcmV2aW91c1NlYXJjaCYmJCgnI3NlYXJjaF9hdXRvY29tcGxldGUnKS5pcygnOnZpc2libGUnKSl7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHByZXZpb3VzU2VhcmNoPXZhbHVlOwogICAgICAgICAgICAgIGlmKGlzRW5hYmxlQXV0b0NvbXBsZXRlJiZ2YWx1ZS5sZW5ndGg+PXdpbmRvdy5taW5OdW1iZXJPZkNoYXJhY3RlcnMpewogICAgICAgICAgICAgICAgJCgiLnNlYXJjaCAuY29udHJvbCIpLmFkZENsYXNzKCJsb2FkZXItYWpheCIpOwogICAgICAgICAgICAgICAgc2VhcmNoQXV0b0NvbXBsZXRlLmFqYXhTZWFyY2goKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICQoJyNzZWFyY2hhdXRvY29tcGxldGUnKS5oaWRlKCk7CiAgICAgICAgICAgICAgICAkKCcuc2VhcmNoYXV0b2NvbXBsZXRlJykuaGlkZSgpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLDI1MCkpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgKTsKICAgIHJlcXVpcmUoWydqcXVlcnknXSxmdW5jdGlvbigkKXsKICAgICAgICB2YXIgcmVzaXplSWRDbG9zZSxzZWFyY2hNb2Q9JCgiI3NlYXJjaC1tb2QiKSxzZWFyY2hJbnB1dD0kKCcjc2VhcmNoJyksdWE9d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQsbXNpZT11YS5pbmRleE9mKCJNU0lFICIpOwogICAgICAgICQod2luZG93KS5yZXNpemUoZnVuY3Rpb24oKXsKICAgICAgICAgIGNsZWFyVGltZW91dChyZXNpemVJZENsb3NlKTsKICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgaWYoZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHwvRWRnZS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7CiAgICAgICAgICAkKCIub3Blbi1tb2RhbC1zZWFyY2giKS53cmFwKCI8YSBocmVmPScjc2VhcmNoLW1vZCc+PC9hPiIpOwogICAgICAgIH0KICAgICAgICAkKCIub3Blbi1tb2RhbC1zZWFyY2giKS5vbignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICAgICAgICBpZihtc2llPjB8fCEhbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvVHJpZGVudC4qcnZcOjExXC4vKSl7CiAgICAgICAgICAgIHNlYXJjaE1vZC5hZGRDbGFzcygiaXNPcGVuSUUiKTsKICAgICAgICAgIH0KICAgICAgICAgIHNlYXJjaE1vZC5hZGRDbGFzcygiaXNPcGVuIik7CiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgIHNlYXJjaElucHV0LnNlbGVjdCgpOwogICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAsNTAwKTsKICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoPSdzZWFyY2gtbW9kJzsKICAgICAgICAgIGlmKCQoJy5wYWdlLWhlYWRlcicpLmhhc0NsYXNzKCdwYWdlLWhlYWRlci12NCcpKXsKICAgICAgICAgICAgJCgiLm5hdi1zZWN0aW9ucy00LnN0aWNreS1oZWFkZXIiKS5hdHRyKCdzdHlsZScsJ3otaW5kZXg6IDAgIWltcG9ydGFudCcpOwogICAgICAgICAgICAkKCIubmF2LXRvZ2dsZSIpLmF0dHIoJ3N0eWxlJywnei1pbmRleDogMCcpOwogICAgICAgICAgfQogICAgICAgICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKCIiLGRvY3VtZW50LnRpdGxlLHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSk7CiAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAkKCIuYmxvY2suYmxvY2stY29udGVudCIpLm9uKCdjbGljaycsZnVuY3Rpb24oKXsKICAgICAgICAgIG9uQ2xpY2tTZWFyY2hCdG4oc2VhcmNoTW9kKTsKICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgJCgiLmNsb3NlYnV0dG9uIikub24oJ2NsaWNrJyxmdW5jdGlvbihlKXsKICAgICAgICAgIGNsb3NlU2VhcmNoTW9kYWwoc2VhcmNoTW9kKTsKICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoPSdzZWFyY2gtbW9kJzsKICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2g9JyMnOwogICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoIiIsZG9jdW1lbnQudGl0bGUsd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKTsKICAgICAgICAgICAgaWYobXNpZT4wfHwhIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL1RyaWRlbnQuKnJ2XDoxMVwuLykpewogICAgICAgICAgICAgIHNlYXJjaE1vZC5yZW1vdmVDbGFzcygiaXNPcGVuSUUiKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAsNTAwKTsKICAgICAgICAgIGlmKCQoJy5wYWdlLWhlYWRlcicpLmhhc0NsYXNzKCdwYWdlLWhlYWRlci12NCcpKXsKICAgICAgICAgICAgJCgiLm5hdi1zZWN0aW9ucy00LnN0aWNreS1oZWFkZXIiKS5hdHRyKCdzdHlsZScsJ3otaW5kZXg6IDEwICFpbXBvcnRhbnQnKTsKICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICQoIi5uYXYtdG9nZ2xlIikuYXR0cignc3R5bGUnLCd6LWluZGV4OiAxNCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgLDUwMCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICBmdW5jdGlvbiBvbkNsaWNrU2VhcmNoQnRuKHNlYXJjaE1vZCl7CiAgICAgICAgICBpZihzZWFyY2hNb2QuaGFzQ2xhc3MoImlzT3BlbiIpKXsKICAgICAgICAgICAgJCgnYm9keScpLmFkZENsYXNzKCJoaWRlc2Nyb2xsIik7CiAgICAgICAgICAgICQoJy5hY3Rpb25zLndweC1wb3Mtc2VhcmNoIGJ1dHRvbicpLnByb3AoImRpc2FibGVkIixmYWxzZSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIGNsb3NlU2VhcmNoTW9kYWwoc2VhcmNoTW9kKXsKICAgICAgICAgIGlmKHNlYXJjaE1vZC5sZW5ndGgpewogICAgICAgICAgICBzZWFyY2hJbnB1dC52YWwoJycpOwogICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgJCgnYm9keScpLnJlbW92ZUNsYXNzKCdoaWRlc2Nyb2xsJyk7CiAgICAgICAgICAgICAgJCgnI3NlYXJjaGF1dG9jb21wbGV0ZScpLmhpZGUoKTsKICAgICAgICAgICAgICAkKCcuc2VhcmNoYXV0b2NvbXBsZXRlJykuaGlkZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgLDEwKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgICAgICAgICAgICAgICk7CiAgICByZXF1aXJlKFsnanF1ZXJ5J10sZnVuY3Rpb24oJCl7CiAgICAgICAgdmFyIHJlc2l6ZUlkQ2xvc2Usc2VhcmNoTW9kPSQoIiNzZWFyY2gtbW9kIiksc2VhcmNoSW5wdXQ9JCgnI3NlYXJjaCcpLHVhPXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LG1zaWU9dWEuaW5kZXhPZigiTVNJRSAiKTsKICAgICAgICAkKHdpbmRvdykucmVzaXplKGZ1bmN0aW9uKCl7CiAgICAgICAgICBjbGVhclRpbWVvdXQocmVzaXplSWRDbG9zZSk7CiAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgIGlmKGRvY3VtZW50LmRvY3VtZW50TW9kZXx8L0VkZ2UvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpewogICAgICAgICAgJCgiLm9wZW4tbW9kYWwtc2VhcmNoIikud3JhcCgiPGEgaHJlZj0nI3NlYXJjaC1tb2QnPjwvYT4iKTsKICAgICAgICB9CiAgICAgICAgJCgiLm9wZW4tbW9kYWwtc2VhcmNoIikub24oJ2NsaWNrJyxmdW5jdGlvbigpewogICAgICAgICAgaWYobXNpZT4wfHwhIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL1RyaWRlbnQuKnJ2XDoxMVwuLykpewogICAgICAgICAgICBzZWFyY2hNb2QuYWRkQ2xhc3MoImlzT3BlbklFIik7CiAgICAgICAgICB9CiAgICAgICAgICBzZWFyY2hNb2QuYWRkQ2xhc3MoImlzT3BlbiIpOwogICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICBzZWFyY2hJbnB1dC5zZWxlY3QoKTsKICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgLDUwMCk7CiAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaD0nc2VhcmNoLW1vZCc7CiAgICAgICAgICBpZigkKCcucGFnZS1oZWFkZXInKS5oYXNDbGFzcygncGFnZS1oZWFkZXItdjQnKSl7CiAgICAgICAgICAgICQoIi5uYXYtc2VjdGlvbnMtNC5zdGlja3ktaGVhZGVyIikuYXR0cignc3R5bGUnLCd6LWluZGV4OiAwICFpbXBvcnRhbnQnKTsKICAgICAgICAgICAgJCgiLm5hdi10b2dnbGUiKS5hdHRyKCdzdHlsZScsJ3otaW5kZXg6IDAnKTsKICAgICAgICAgIH0KICAgICAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSgiIixkb2N1bWVudC50aXRsZSx3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpOwogICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgJCgiLmJsb2NrLmJsb2NrLWNvbnRlbnQiKS5vbignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICAgICAgICBvbkNsaWNrU2VhcmNoQnRuKHNlYXJjaE1vZCk7CiAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICQoIi5jbG9zZWJ1dHRvbiIpLm9uKCdjbGljaycsZnVuY3Rpb24oZSl7CiAgICAgICAgICBjbG9zZVNlYXJjaE1vZGFsKHNlYXJjaE1vZCk7CiAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaD0nc2VhcmNoLW1vZCc7CiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoPScjJzsKICAgICAgICAgICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKCIiLGRvY3VtZW50LnRpdGxlLHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSk7CiAgICAgICAgICAgIGlmKG1zaWU+MHx8ISFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9UcmlkZW50Lipydlw6MTFcLi8pKXsKICAgICAgICAgICAgICBzZWFyY2hNb2QucmVtb3ZlQ2xhc3MoImlzT3BlbklFIik7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgLDUwMCk7CiAgICAgICAgICBpZigkKCcucGFnZS1oZWFkZXInKS5oYXNDbGFzcygncGFnZS1oZWFkZXItdjQnKSl7CiAgICAgICAgICAgICQoIi5uYXYtc2VjdGlvbnMtNC5zdGlja3ktaGVhZGVyIikuYXR0cignc3R5bGUnLCd6LWluZGV4OiAxMCAhaW1wb3J0YW50Jyk7CiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAkKCIubmF2LXRvZ2dsZSIpLmF0dHIoJ3N0eWxlJywnei1pbmRleDogMTQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICw1MDApOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgZnVuY3Rpb24gb25DbGlja1NlYXJjaEJ0bihzZWFyY2hNb2QpewogICAgICAgICAgaWYoc2VhcmNoTW9kLmhhc0NsYXNzKCJpc09wZW4iKSl7CiAgICAgICAgICAgICQoJ2JvZHknKS5hZGRDbGFzcygiaGlkZXNjcm9sbCIpOwogICAgICAgICAgICAkKCcuYWN0aW9ucy53cHgtcG9zLXNlYXJjaCBidXR0b24nKS5wcm9wKCJkaXNhYmxlZCIsZmFsc2UpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBjbG9zZVNlYXJjaE1vZGFsKHNlYXJjaE1vZCl7CiAgICAgICAgICBpZihzZWFyY2hNb2QubGVuZ3RoKXsKICAgICAgICAgICAgc2VhcmNoSW5wdXQudmFsKCcnKTsKICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICAgICQoJ2JvZHknKS5yZW1vdmVDbGFzcygnaGlkZXNjcm9sbCcpOwogICAgICAgICAgICAgICQoJyNzZWFyY2hhdXRvY29tcGxldGUnKS5oaWRlKCk7CiAgICAgICAgICAgICAgJCgnLnNlYXJjaGF1dG9jb21wbGV0ZScpLmhpZGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICwxMCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgICAgICAgICAgICAgICApOwogICAgd2luZG93LmNoZWNrb3V0PXsKICAgICAgICAic2hvcHBpbmdDYXJ0VXJsIjoiaHR0cHM6XC9cL3dlc3RsYW5kY292ZXJzLmNvbVwvY2hlY2tvdXRcL2NhcnRcLyIsImNoZWNrb3V0VXJsIjoiaHR0cHM6XC9cL3dlc3RsYW5kY292ZXJzLmNvbVwvY2hlY2tvdXRcLyIsInVwZGF0ZUl0ZW1RdHlVcmwiOiJodHRwczpcL1wvd2VzdGxhbmRjb3ZlcnMuY29tXC9jaGVja291dFwvc2lkZWJhclwvdXBkYXRlSXRlbVF0eVwvIiwicmVtb3ZlSXRlbVVybCI6Imh0dHBzOlwvXC93ZXN0bGFuZGNvdmVycy5jb21cL2NoZWNrb3V0XC9zaWRlYmFyXC9yZW1vdmVJdGVtXC8iLCJpbWFnZVRlbXBsYXRlIjoiTWFnZW50b19DYXRhbG9nXC9wcm9kdWN0XC9pbWFnZV93aXRoX2JvcmRlcnMiLCJiYXNlVXJsIjoiaHR0cHM6XC9cL3dlc3RsYW5kY292ZXJzLmNvbVwvIiwibWluaWNhcnRNYXhJdGVtc1Zpc2libGUiOjUsIndlYnNpdGVJZCI6IjkiLCJtYXhJdGVtc1RvRGlzcGxheSI6MTAsInN0b3JlSWQiOiI5Iiwic3RvcmVHcm91cElkIjoiOSIsImFzTG93QXNBY3RpdmVNaW5pQ2FydCI6ZmFsc2UsImFwciI6IjAuMTAiLCJtb250aHMiOiIxMiIsImxvZ28iOiJibHVlIiwic2NyaXB0IjoiaHR0cHM6XC9cL2NkbjEuYWZmaXJtLmNvbVwvanNcL3YyXC9hZmZpcm0uanMiLCJwdWJsaWNfYXBpX2tleSI6bnVsbCwibWluX29yZGVyX3RvdGFsIjoiMC4wMSIsIm1heF9vcmRlcl90b3RhbCI6IjUwMDAwIiwiY3VycmVuY3lfcmF0ZSI6bnVsbCwiZGlzcGxheV9jYXJ0X3N1YnRvdGFsX2luY2xfdGF4IjowLCJkaXNwbGF5X2NhcnRfc3VidG90YWxfZXhjbF90YXgiOjEsImVsZW1lbnRfaWQiOiJhbHNfbWNjIiwicHJvbW9faWQiOiIiLCJjb2xvcl9pZCI6ImJsdWUiLCJjdXN0b21lckxvZ2luVXJsIjoiaHR0cHM6XC9cL3dlc3RsYW5kY292ZXJzLmNvbVwvY3VzdG9tZXJcL2FjY291bnRcL2xvZ2luXC9yZWZlcmVyXC9hSFIwY0hNNkx5OTNaWE4wYkdGdVpHTnZkbVZ5Y3k1amIyMHZcLyIsImlzUmVkaXJlY3RSZXF1aXJlZCI6ZmFsc2UsImF1dG9jb21wbGV0ZSI6Im9mZiIsImNhcHRjaGEiOnsKICAgICAgICAgICJ1c2VyX2xvZ2luIjp7CiAgICAgICAgICAgICJpc0Nhc2VTZW5zaXRpdmUiOmZhbHNlLCJpbWFnZUhlaWdodCI6NTAsImltYWdlU3JjIjoiIiwicmVmcmVzaFVybCI6Imh0dHBzOlwvXC93ZXN0bGFuZGNvdmVycy5jb21cL2NhcHRjaGFcL3JlZnJlc2hcLyIsImlzUmVxdWlyZWQiOmZhbHNlLCJ0aW1lc3RhbXAiOjE3Mjg3MDIxNjN9CiAgICAgICAgfQogICAgICB9Ow>/script> script srcdata:text/javascript;base64,cmVxdWlyZShbImpxdWVyeSIsImpxdWVyeS91aSJdLGZ1bmN0aW9uKCQpewogICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgICAkKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICQoIiNkaWFsb2ciKS5kaWFsb2coewogICAgICAgICAgICAgIGF1dG9PcGVuOmZhbHNlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgJCgiI29wZW5lciIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAkKCIjZGlhbG9nIikuZGlhbG9nKCJvcGVuIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgIH0KICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgIH0KICAgICAgICAgICAgICAgICAgICk7>/script> script srcdata:text/javascript;base64,d2luZG93LmFqYXhMb2dpbj17CiAgICAgICAgImF1dG9jb21wbGV0ZSI6Im9mZiIsImN1c3RvbWVyUmVnaXN0ZXJVcmwiOiJodHRwczpcL1wvd2VzdGxhbmRjb3ZlcnMuY29tXC9jdXN0b21lclwvYWNjb3VudFwvY3JlYXRlXC8iLCJjdXN0b21lckZvcmdvdFBhc3N3b3JkVXJsIjoiaHR0cHM6XC9cL3dlc3RsYW5kY292ZXJzLmNvbVwvY3VzdG9tZXJcL2FjY291bnRcL2ZvcmdvdHBhc3N3b3JkXC8iLCJiYXNlVXJsIjoiaHR0cHM6XC9cL3dlc3RsYW5kY292ZXJzLmNvbVwvIn07CiAgICAgIHdpbmRvdy5wb3B1cFN0eWxlPSJwb3B1cCI7CiAgICAgIHdpbmRvdy5pc0VuYWJsZWQ9MTsKICAgIHdpbmRvdy5hdXRoZW50aWNhdGlvblBvcHVwPXsKICAgICAgICAiYXV0b2NvbXBsZXRlIjoib2ZmIiwiY3VzdG9tZXJSZWdpc3RlclVybCI6Imh0dHBzOlwvXC93ZXN0bGFuZGNvdmVycy5jb21cL2N1c3RvbWVyXC9hY2NvdW50XC9jcmVhdGVcLyIsImN1c3RvbWVyRm9yZ290UGFzc3dvcmRVcmwiOiJodHRwczpcL1wvd2VzdGxhbmRjb3ZlcnMuY29tXC9jdXN0b21lclwvYWNjb3VudFwvZm9yZ290cGFzc3dvcmRcLyIsImJhc2VVcmwiOiJodHRwczpcL1wvd2VzdGxhbmRjb3ZlcnMuY29tXC8ifQ>/script> script typetext/javascript srcdata:text/javascript;base64,IHJlcXVpcmUoWydqcXVlcnknLCdBbWFzdHlfRmluZGVyL2pzL2FtZmluZGVyJ10sZnVuY3Rpb24oJCl7CiAgICAgICAgdmFyIGZpbmRlckNvbmZpZz17CiAgICAgICAgICAiYWpheFVybCI6Imh0dHBzOlwvXC93ZXN0bGFuZGNvdmVycy5jb21cL2FtZmluZGVyXC9pbmRleFwvb3B0aW9uc1wvIiwiaXNQYXJ0aWFsU2VhcmNoIjowLCJhdXRvU3VibWl0IjowLCJpc0Nob3NlbkVuYWJsZSI6MSwiY29udGFpbmVySWQiOiJhbWZpbmRlcl8xNCIsImxvYWRpbmdUZXh0IjoiTG9hZGluZy4uLiJ9OwogICAgICAgICQoIiMiK2ZpbmRlckNvbmZpZy5jb250YWluZXJJZCkuYW1maW5kZXIoZmluZGVyQ29uZmlnKTsKICAgICAgICAkKCcuYW1maW5kZXItaXRlbScpLm9uKCdjbGljaycsZnVuY3Rpb24oKXsKICAgICAgICAgICQoJy5hbWZpbmRlci1kZXRhaWxzJykuaGlkZSgpOwogICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAkKCIuYW1maW5kZXItaXRlbSIpLm9uKCdjbGljaycsZnVuY3Rpb24oKXsKICAgICAgICAgIGlmKCQod2luZG93KS53aWR0aCgpPDc2Nyl7CiAgICAgICAgICAgICQoW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCxkb2N1bWVudC5ib2R5XSkuYW5pbWF0ZSh7CiAgICAgICAgICAgICAgc2Nyb2xsVG9wOiQoIiNzY3JvbGxwb2ludCIpLm9mZnNldCgpLnRvcC01NTB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsMTAwKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgIAogICAgcmVxdWlyZShbJ2pxdWVyeScsJ0FtYXN0eV9GaW5kZXIvanMvYW1maW5kZXInXSxmdW5jdGlvbigkKXsKICAgICAgICB2YXIgZmluZGVyQ29uZmlnPXsKICAgICAgICAgICJhamF4VXJsIjoiaHR0cHM6XC9cL3dlc3RsYW5kY292ZXJzLmNvbVwvYW1maW5kZXJcL2luZGV4XC9vcHRpb25zXC8iLCJpc1BhcnRpYWxTZWFyY2giOjAsImF1dG9TdWJtaXQiOjAsImlzQ2hvc2VuRW5hYmxlIjoxLCJjb250YWluZXJJZCI6ImFtZmluZGVyXzE1IiwibG9hZGluZ1RleHQiOiJMb2FkaW5nLi4uIn07CiAgICAgICAgJCgiIyIrZmluZGVyQ29uZmlnLmNvbnRhaW5lcklkKS5hbWZpbmRlcihmaW5kZXJDb25maWcpOwogICAgICAgICQoJyNmaW5kZXItMi0tNycpLmNoYW5nZShmdW5jdGlvbigpewogICAgICAgICAgaWYoJCh0aGlzKS52YWwoKT09MTU3Nnx8JCh0aGlzKS52YWwoKT09MTU3OHx8JCh0aGlzKS52YWwoKT09MTQ3OHx8JCh0aGlzKS52YWwoKT09MTQ4MCl7CiAgICAgICAgICAgICQoJyNhbXMtYWxlcnQnKS5yZW1vdmUoKQogICAgICAgICAgICAkKCcjZmluZGVyLTItLTcnKS5hZnRlcignPGRpdiBpZD0iYW1zLWFsZXJ0IiBjbGFzcz0iYWxlcnQtZGFuZ2VyIiBzdHlsZT0icGFkZGluZzogMTBweDsgbWFyZ2luOiAxMHB4IDA7IGJvcmRlci1yYWRpdXM6IDRweDsiPjxpIGNsYXNzPSJpY29uLWxpbmUtYmFuIj48L2k+IDxiPk5vdCBjb21wYXRpYmxlIHdpdGggMjAxNyAmIG5ld2VyIFZlcmFkbyBvdXRib2FyZHMgMjUwaHAgYW5kIGFib3ZlPC9iPjwvZGl2PicpfQogICAgICAgICAgZWxzZXsKICAgICAgICAgICAgJCgnI2Ftcy1hbGVydCcpLnJlbW92ZSgpfQogICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICQoJyNmaW5kZXItMi0tNScpLmNoYW5nZShmdW5jdGlvbigpewogICAgICAgICAgJCgnI2Ftcy1hbGVydCcpLnJlbW92ZSgpfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgJCgnI2ZpbmRlci0yLS02JykuY2hhbmdlKGZ1bmN0aW9uKCl7CiAgICAgICAgICAkKCcjYW1zLWFsZXJ0JykucmVtb3ZlKCl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAkKCcuYW1maW5kZXItZGV0YWlscycpLm9uKCdjbGljaycsZnVuY3Rpb24oKXsKICAgICAgICAgICQoJy5hbWZpbmRlci1kZXRhaWxzJykuaGlkZSgpOwogICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3VwcG9ydC1zZWxlY3QiKS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLG15RnVuY3Rpb24pOwogICAgICBmdW5jdGlvbiBteUZ1bmN0aW9uKCl7CiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWY9dGhpcy52YWx1ZX0KICAgIHJlcXVpcmUoWydqcXVlcnknLCdkZXNpZ25lbGVtZW50c19iYXNlJ10sZnVuY3Rpb24oJCxTRU1JQ09MT05CQVNFKXsKICAgICAgICB2YXIgb3B0aW9ucz17CiAgICAgICAgICAiYnJlYWtwb2ludHMiOnsKICAgICAgICAgICAgInh4cyI6ewogICAgICAgICAgICAgICJlbnRlciI6MCwiZXhpdCI6MzE5fQogICAgICAgICAgICAsInhzIjp7CiAgICAgICAgICAgICAgImVudGVyIjoiMzIwIiwiZXhpdCI6NDc5fQogICAgICAgICAgICAsInMiOnsKICAgICAgICAgICAgICAiZW50ZXIiOiI0ODAiLCJleGl0Ijo2Mzl9CiAgICAgICAgICAgICwibSI6ewogICAgICAgICAgICAgICJlbnRlciI6IjY0MCIsImV4aXQiOjExOTl9CiAgICAgICAgICAgICwibCI6ewogICAgICAgICAgICAgICJlbnRlciI6IjEyMDAiLCJleGl0IjoxMDIzfQogICAgICAgICAgICAsInhsIjp7CiAgICAgICAgICAgICAgImVudGVyIjoiMTAyNCIsImV4aXQiOjEwMDAwfQogICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgJChkb2N1bWVudCkucmVhZHkoU0VNSUNPTE9OQkFTRS53aWRnZXQuaW5pdChvcHRpb25zKSk7CiAgICAgICAgJCh3aW5kb3cpLm9uKCdyZXNpemUnLGZ1bmN0aW9uKCl7CiAgICAgICAgICB2YXIgdD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgIFNFTUlDT0xPTkJBU0Uud2lkZ2V0LnJlc3BvbnNpdmVXcENsYXNzZXMoKTsKICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgLDUwMCk7CiAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgIH0KICAgICAgICAgICAgICAgICAgICk7CiAgICB3aW5kb3cuUGVhcmw9d2luZG93LlBlYXJsfHx7CiAgICAgIH07CiAgICAgIHdpbmRvdy5QZWFybC5zY3JvbGxDb2xsYXBzaWJsZVRvVG9wPTA7CiAgICB3aW5kb3cud3BMYXp5TG9hZD13aW5kb3cud3BMYXp5TG9hZHx8ewogICAgICB9OwogICAgICB3aW5kb3cud3BMYXp5TG9hZC5lZmZlY3Q9ImZhZGVJbiI7CiAgICAgIHdpbmRvdy53cExhenlMb2FkLmVmZmVjdHNwZWVkPTA7CiAgICAgIHdpbmRvdy53cExhenlMb2FkLmltYWdlbG9hZGVyPSJodHRwczovL2RpeDFjZjF6dWF5b3UuY2xvdWRmcm9udC5uZXQvc3RhdGljL3ZlcnNpb24xNzI3NzA0MDQ2L2Zyb250ZW5kL1BlYXJsL3dlc3RsYW5kY292ZXJzX3VzX2N1c3RvbS9lbl9VUy9XZWx0UGl4ZWxfTGF6eUxvYWRpbmcvaW1hZ2VzL0xvYWRlci5naWYiOwogICAgICB3aW5kb3cud3BMYXp5TG9hZC50aHJlc2hvbGQ9IjAiOwogICAgICByZXF1aXJlKFsnanF1ZXJ5JywnV2VsdFBpeGVsX0xhenlMb2FkaW5nL2pzL2pxdWVyeV9sYXp5bG9hZCddLGZ1bmN0aW9uKCQpewogICAgICAgICQoImltZy5sYXp5IikubGF6eWxvYWQoewogICAgICAgICAgZWZmZWN0OiJmYWRlSW4iLGVmZmVjdHNwZWVkOjAsaW1hZ2Vsb2FkZXI6Imh0dHBzOi8vZGl4MWNmMXp1YXlvdS5jbG91ZGZyb250Lm5ldC9zdGF0aWMvdmVyc2lvbjE3Mjc3MDQwNDYvZnJvbnRlbmQvUGVhcmwvd2VzdGxhbmRjb3ZlcnNfdXNfY3VzdG9tL2VuX1VTL1dlbHRQaXhlbF9MYXp5TG9hZGluZy9pbWFnZXMvTG9hZGVyLmdpZiIsdGhyZXNob2xkOiIwIixsb2FkOmZ1bmN0aW9uKGVsZW1lbnRzX2xlZnQsc2V0dGluZ3MpewogICAgICAgICAgICAkKHRoaXMpLmNzcyh7CiAgICAgICAgICAgICAgJ21heC13aWR0aCc6JzEwMCUnfQogICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICB9CiAgICAgICAgICAgICApOwogICAgcmVxdWlyZShbJ2pxdWVyeScsJ3dwUHJvZHVjdExhYmVscyddLGZ1bmN0aW9uKCQsd3BQcm9kdWN0TGFiZWxzKXsKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgdmFyIHJlcXVlc3RVcmw9J2h0dHBzOi8vd2VzdGxhbmRjb3ZlcnMuY29tL3dwcHJvZHVjdGxhYmVscy9wcm9kdWN0L2luZGV4Lyc7CiAgICAgICAgICB3cFByb2R1Y3RMYWJlbHMuaW5pdChyZXF1ZXN0VXJsKTsKICAgICAgICAgICQoZG9jdW1lbnQpLnRyaWdnZXIoIndwcHJvZHVjdGxhYmVsczppbml0Iik7CiAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgfQogICAgICAgICAgICAgICAgICAgKTsKICAgIHdpbmRvdy5vcGVuTWluaWNhcnQ9JzEnOwogICAgICB3aW5kb3cuc2hvdWxkT3Blbk1pbmljYXJ0PScxJzsKICAgICAgd2luZG93Lm9wZW5NaW5pY2FydERpc3BsYXlPcHRpb25zPSdib3RoJzsKICAgICAgcmVxdWlyZWpzKFsnanF1ZXJ5Jywnd2VsdHBpeGVsX3F1aWNrY2FydCddLGZ1bmN0aW9uKCQscXVpY2tjYXJ0KXsKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICAgICAgICAgdmFyIG1vYmlsZUJyZWFrcG9pbnQ9MTIwMDsKICAgICAgICAgIHF1aWNrY2FydC5pbml0aWFsaXplKG1vYmlsZUJyZWFrcG9pbnQpOwogICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgIH0KICAgICAgICAgICAgICAgKTsKICAgIHdpbmRvdy5zb2NpYWxsb2dpbkJ1dHRvbnM9J1x1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAzQ2Rpdlx1MDAyMGNsYXNzXHUwMDNEXHUwMDIyc29jaWFsbG9naW5cdTAwMkR3cmFwcGVyXHUwMDIwYmxvY2tcdTAwMkRjdXN0b21lclx1MDAyRGxvZ2luXHUwMDIwbG9naW5cdTAwMkRjb250YWluZXJcdTAwMjJcdTAwM0VcdTAwM0NkaXZcdTAwMjBjbGFzc1x1MDAzRFx1MDAyMmJsb2NrXHUwMDIwc29jaWFsbG9naW5cdTAwMkRibG9ja1x1MDAyMlx1MDAzRVx1MDAzQ2Rpdlx1MDAyMGNsYXNzXHUwMDNEXHUwMDIyc29jaWFsbG9naW5cdTAwMkRibG9ja1x1MDAyRHRpdGxlXHUwMDIwYmxvY2tcdTAwMkR0aXRsZVx1MDAyMlx1MDAzRVx1MDAzQ3N0cm9uZ1x1MDAyMHJvbGVcdTAwM0RcdTAwMjJoZWFkaW5nXHUwMDIyXHUwMDIwYXJpYVx1MDAyRGxldmVsXHUwMDNEXHUwMDIyMlx1MDAyMlx1MDAzRUxvZ2luXHUwMDIwV2l0aFx1MDAyMFNvY2lhbFx1MDAyMFByb2ZpbGVcdTAwM0NcdTAwMkZzdHJvbmdcdTAwM0VcdTAwM0NcdTAwMkZkaXZcdTAwM0VcdTAwM0NkaXZcdTAwMjBjbGFzc1x1MDAzRFx1MDAyMnNvY2lhbGxvZ2luXHUwMDJEcGFkZGluZ1x1MDAyMlx1MDAzRVx1MDAyMFx1MDAzQ2Rpdlx1MDAyMGNsYXNzXHUwMDNEXHUwMDIyc29jaWFsbG9naW5cdTAwMkRib3hcdTAwMjJcdTAwM0VcdTAwM0NhXHUwMDIwY2xhc3NcdTAwM0RcdTAwMjJzb2NpYWxsb2dpblx1MDAyRGJ1dHRvblx1MDAyMGJ1dHRvblx1MDAyRGZiXHUwMDIyXHUwMDIwcmVsXHUwMDNEXHUwMDIybm9mb2xsb3dcdTAwMjJcdTAwMjBocmVmXHUwMDNEXHUwMDIyamF2YXNjcmknKydwdFx1MDAzQXZvaWRcdTAwMjgwXHUwMDI5XHUwMDNCXHUwMDIyXHUwMDIwZGF0YVx1MDAyRGhyZWZcdTAwM0RcdTAwMjJodHRwc1x1MDAzQVx1MDAyRlx1MDAyRnd3dy5mYWNlYm9vay5jb21cdTAwMkZkaWFsb2dcdTAwMkZvYXV0aFx1MDAyRlx1MDAzRmNsaWVudF9pZFx1MDAzRDkzMjM0MjA1MDY4ODk3NVx1MDAyNmRpc3BsYXlcdTAwM0Rwb3B1cFx1MDAyNnJlZGlyZWN0X3VyaVx1MDAzRGh0dHBzXHUwMDNBXHUwMDJGXHUwMDJGd2VzdGxhbmRjb3ZlcnMuY29tXHUwMDJGc29jaWFsbG9naW5cdTAwMkZhY2NvdW50XHUwMDJGbG9naW5cdTAwMkZ0eXBlXHUwMDJGZmJcdTAwMkZcdTAwMjZzY29wZVx1MDAzRGVtYWlsXHUwMDIyXHUwMDIwXHUwMDNFXHUwMDNDc3Bhblx1MDAyMGNsYXNzXHUwMDNEXHUwMDIyc29jaWFsbG9naW5cdTAwMkRpY29uXHUwMDIwc2xcdTAwMkRmYlx1MDAyMlx1MDAzRVx1MDAzQ1x1MDAyRnNwYW5cdTAwM0VcdTAwM0NcdTAwMkZhXHUwMDNFXHUwMDNDXHUwMDJGZGl2XHUwMDNFXHUwMDNDXHUwMDJGZGl2XHUwMDNFXHUwMDNDXHUwMDJGZGl2XHUwMDNFXHUwMDNDXHUwMDJGZGl2XHUwMDNFXHUwMDNDc2NyaScrJ3B0XHUwMDNFXHUwMDBBXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwaWZcdTAwMjBcdTAwMjh3aW5kb3cuc29jaWFsbG9naW5CdXR0b25zXHUwMDI5XHUwMDIwXHUwMDdCXHUwMDBBXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwd2luZG93LmVtYWlsRm9ybVVybFx1MDAyMFx1MDAzRFx1MDAyMFx1MDAyMmh0dHBzXHUwMDNBXHUwMDJGXHUwMDJGd2VzdGxhbmRjb3ZlcnMuY29tXHUwMDJGc29jaWFsbG9naW5cdTAwMkZhY2NvdW50XHUwMDJGZW1haWxcdTAwMkZcdTAwMjJcdTAwM0JcdTAwMEFcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjB3aW5kb3cudHdpdHRlck9hdXRoVXJsXHUwMDIwXHUwMDNEXHUwMDIwXHUwMDIyaHR0cHNcdTAwM0FcdTAwMkZcdTAwMkZ3ZXN0bGFuZGNvdmVycy5jb21cdTAwMkZzb2NpYWxsb2dpblx1MDAyRmFqYXhcdTAwMkZ0d2l0dGVyb2F1dGhcdTAwMkZcdTAwMjJcdTAwM0JcdTAwMEFcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjB3aW5kb3cuY2FydFBhZ2VBY2NvcmRpb25TdGF0ZVx1MDAyMFx1MDAzRFx1MDAyMFx1MDAyMjFcdTAwMjJcdTAwM0JcdTAwMEFcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjB3aW5kb3cuaXNDdXN0b21lclx1MDAyMFx1MDAzRFx1MDAyMFx1MDAyMlx1MDAyMlx1MDAzQlx1MDAwQVx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMHdpbmRvdy5pc1NsQ3VzdG9tUG9wdXBVc2VkXHUwMDIwXHUwMDNEXHUwMDIwXHUwMDIyMVx1MDAyMlx1MDAzQlx1MDAwQVx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMHJlcXVpcmVcdTAwMjhcdTAwNUJcdTAwMjdzb2NpYWxsb2dpblx1MDAyN1x1MDA1RCxcdTAwMjBmdW5jdGlvblx1MDAyOFx1MDAyOVx1MDA3Qlx1MDAwQVx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMHNsLnNvY2lhbExvZ2luQ2xpY2tcdTAwMjhcdTAwMjlcdTAwM0JcdTAwMEFcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBzbC5zbFdpZGdldEluaXRcdTAwMjhcdTAwMjcxXHUwMDI3XHUwMDI5XHUwMDNCXHUwMDBBXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwc2wuc2VuZEVtYWlsQ2xpY2tcdTAwMjhcdTAwMjlcdTAwM0JcdTAwMEFcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBzbC5lbWFpbFBvcFVwXHUwMDI4XHUwMDI5XHUwMDNCXHUwMDBBXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDdEXHUwMDI5XHUwMDNCXHUwMDBBXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDdEXHUwMDNDXHUwMDJGc2NyaScrJ3B0XHUwMDNFJzsKICAgIHJlcXVpcmUoWydqcXVlcnknLCdkZXNpZ25lbGVtZW50c19kZWZhdWx0J10sZnVuY3Rpb24oJCxTRU1JQ09MT05ERUZBVUxUKXsKICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShTRU1JQ09MT05ERUZBVUxULndpZGdldC5pbml0KCkpOwogICAgICAgICQod2luZG93KS5vbigncmVzaXplJyxmdW5jdGlvbigpewogICAgICAgICAgdmFyIHQ9c2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICBTRU1JQ09MT05ERUZBVUxULndpZGdldC5kYXRhUmVzcG9uc2l2ZUNsYXNzZXMoKTsKICAgICAgICAgICAgU0VNSUNPTE9OREVGQVVMVC53aWRnZXQuZGF0YVJlc3BvbnNpdmVIZWlnaHRzKCk7CiAgICAgICAgICAgIFNFTUlDT0xPTkRFRkFVTFQud2lkZ2V0LnZlcnRpY2FsTWlkZGxlKCk7CiAgICAgICAgICAgIFNFTUlDT0xPTkRFRkFVTFQud2lkZ2V0LmZ1bGxTY3JlZW4oKTsKICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgLDUwMCk7CiAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgIH0KICAgICAgICAgICAgICAgICAgICk7CiAgICByZXF1aXJlKFsnanF1ZXJ5JywndG9nZ2xlc19hY2NvcmRpb25zX3RhYnMnXSxmdW5jdGlvbigkLFNFTUlDT0xPTlRBQlMpewogICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KFNFTUlDT0xPTlRBQlMud2lkZ2V0LmluaXQoKSk7CiAgICAgICAgJCh3aW5kb3cpLm9uKCdyZXNpemUnLGZ1bmN0aW9uKCl7CiAgICAgICAgICB2YXIgdD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgIFNFTUlDT0xPTlRBQlMud2lkZ2V0LnRhYnNKdXN0aWZ5KCk7CiAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICw1MDApOwogICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApOwogICAgICB9CiAgICAgICAgICAgICAgICAgICApOwogIHJlcXVpcmUoWydqcXVlcnknLCdoZWFkaW5nc19ibG9ja3F1b3RlcyddLGZ1bmN0aW9uKCQsU0VNSUNPTE9OSEVBRElOR1MpewogICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KFNFTUlDT0xPTkhFQURJTkdTLndpZGdldC5pbml0KCkpOwogICAgICB9CiAgICAgICAgICAgICAgICAgICApOwogICAgcmVxdWlyZShbJ2pxdWVyeScsJ3Ntb290aF9zY3JvbGxpbmcnXSxmdW5jdGlvbigkLFNFTUlDT0xPTlNNT09USFNDUk9MTCl7CiAgICAgICAgJChkb2N1bWVudCkucmVhZHkoU0VNSUNPTE9OU01PT1RIU0NST0xMLndpZGdldC5pbml0KCkpOwogICAgICB9CiAgICAgICAgICAgICAgICAgICApOwogICAgcmVxdWlyZShbJ2pxdWVyeScsJ0FsZXJ0J10sZnVuY3Rpb24oJCl7CiAgICAgIH0KICAgICAgICAgICAgICAgICAgICk7CiAgICByZXF1aXJlKFsnanF1ZXJ5JywnZGVzaWduZWxlbWVudHNfZGVmYXVsdCcsJ3Rlc3RpbW9uaWFsc0dyaWQnXSxmdW5jdGlvbigkLFNFTUlDT0xPTkRFRkFVTFQsU0VNSUNPTE9OU1RFU1RJTU9OSUFMU0dSSUQpewogICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgICAgICAgICBTRU1JQ09MT05ERUZBVUxULndpZGdldC5pbml0KCk7CiAgICAgICAgICBTRU1JQ09MT05TVEVTVElNT05JQUxTR1JJRC53aWRnZXQuaW5pdCgpOwogICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgJCh3aW5kb3cpLm9uKCdyZXNpemUnLGZ1bmN0aW9uKCl7CiAgICAgICAgICB2YXIgdD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgIFNFTUlDT0xPTlNURVNUSU1PTklBTFNHUklELndpZGdldC50ZXN0aW1vbmlhbHNHcmlkKCk7CiAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICw1MDApOwogICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApOwogICAgICB9CiAgICAgICAgICAgICAgICAgICApOwogICAgcmVxdWlyZShbJ2pxdWVyeScsJ2xvYWRfZmxleF9zbGlkZXInXSxmdW5jdGlvbigkLFNFTUlDT0xPTkZMRVhTTElERVIpewogICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KFNFTUlDT0xPTkZMRVhTTElERVIud2lkZ2V0LmluaXQoKSk7CiAgICAgIH0KICAgICAgICAgICAgICAgICAgICk7CiAgICByZXF1aXJlKFsnanF1ZXJ5JywnRHJvcGRvd24nLCdCdXR0b24nXSxmdW5jdGlvbigkKXsKICAgICAgfQogICAgICAgICAgICAgICAgICAgKTsKICAgIHJlcXVpcmUoWydqcXVlcnknLCdsb2FkX3BhcmFsbGF4J10sZnVuY3Rpb24oJCxTRU1JQ09MT05QQVJBTExBWCl7CiAgICAgICAgJChkb2N1bWVudCkucmVhZHkoU0VNSUNPTE9OUEFSQUxMQVgud2lkZ2V0LmluaXQoKSk7CiAgICAgIH0KICAgICAgICAgICAgICAgICAgICk7CiAgIHJlcXVpcmUoWydqcXVlcnknLCdhbmltYXRpb25zJ10sZnVuY3Rpb24oJCxTRU1JQ09MT05TQU5JTUFUSU9OUyl7CiAgICAgICAgJChkb2N1bWVudCkucmVhZHkoU0VNSUNPTE9OU0FOSU1BVElPTlMud2lkZ2V0LmluaXQoKSk7CiAgICAgIH0KICAgICAgICAgICAgICAgICAgICk7CiAgICByZXF1aXJlKFsnanF1ZXJ5Jywnd2VsdHBpeGVsX2dhNF9wZXJzaXN0ZW50TGF5ZXInLCd3ZWx0cGl4ZWxfZ2E0X2d0bScsJ01hZ2VudG9fQ3VzdG9tZXIvanMvY3VzdG9tZXItZGF0YSddLGZ1bmN0aW9uKCQsd3BHYTRQZXJzRGwsd3BHYTRndG0sY3VzdG9tZXJEYXRhKXsKICAgICAgICAkKGRvY3VtZW50KS5hamF4Q29tcGxldGUoZnVuY3Rpb24oZXZlbnQseGhyLHNldHRpbmdzKXsKICAgICAgICAgIGlmKHNldHRpbmdzLnVybC5zZWFyY2goJy9jdXN0b21lclwvc2VjdGlvblwvbG9hZC8nKT4wKXsKICAgICAgICAgICAgdmFyIHJlc3BvbnNlPXhoci5yZXNwb25zZUpTT047CiAgICAgICAgICAgIGlmKHJlc3BvbnNlLndwX2dhNCl7CiAgICAgICAgICAgICAgdmFyIGRhdGFMYXllckRhdGE9JC5wYXJzZUpTT04ocmVzcG9uc2Uud3BfZ2E0LmRhdGFsYXllcik7CiAgICAgICAgICAgICAgZm9yKGluZGV4IGluIGRhdGFMYXllckRhdGEpewogICAgICAgICAgICAgICAgd2luZG93LmRhdGFMYXllci5wdXNoKHsKICAgICAgICAgICAgICAgICAgZWNvbW1lcmNlOm51bGx9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgd2luZG93LmRhdGFMYXllci5wdXNoKGRhdGFMYXllckRhdGFbaW5kZXhdKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICB2YXIgd3BQZXJzRGxPcHRpb25zPXsKICAgICAgICAgICdzdG9yYWdlRXhwaXJ5VGltZSc6MzB9OwogICAgICAgIHZhciB3cEd0bU9wdGlvbnM9ewogICAgICAgICAgJ2VuYWJsZWQnOjAsJ3BlcnNEYXRhTGF5ZXInOndwR2E0UGVyc0RsfTsKICAgICAgICB3cEdhNFBlcnNEbC5pbml0KHdwUGVyc0RsT3B0aW9ucyk7CiAgICAgICAgd3BHYTRndG0udHJhY2tQcm9tb3Rpb24od3BHdG1PcHRpb25zKTsKICAgICAgfQogICAgICAgICAgICAgICAgICAgKTsKICAgIHJlcXVpcmUoWydqcXVlcnknLCd3ZWx0cGl4ZWxfcGVyc2lzdGVudExheWVyJywnd2VsdHBpeGVsX2d0bScsJ01hZ2VudG9fQ3VzdG9tZXIvanMvY3VzdG9tZXItZGF0YSddLGZ1bmN0aW9uKCQsd3BQZXJzRGwsd3BndG0sY3VzdG9tZXJEYXRhKXsKICAgICAgICAkKGRvY3VtZW50KS5hamF4Q29tcGxldGUoZnVuY3Rpb24oZXZlbnQseGhyLHNldHRpbmdzKXsKICAgICAgICAgIGlmKHNldHRpbmdzLnVybC5zZWFyY2goJy9jdXN0b21lclwvc2VjdGlvblwvbG9hZC8nKT4wKXsKICAgICAgICAgICAgdmFyIHJlc3BvbnNlPXhoci5yZXNwb25zZUpTT047CiAgICAgICAgICAgIGlmKHJlc3BvbnNlLmd0bSl7CiAgICAgICAgICAgICAgdmFyIGRhdGFMYXllckRhdGE9JC5wYXJzZUpTT04ocmVzcG9uc2UuZ3RtLmRhdGFsYXllcik7CiAgICAgICAgICAgICAgZm9yKGluZGV4IGluIGRhdGFMYXllckRhdGEpewogICAgICAgICAgICAgICAgd2luZG93LmRhdGFMYXllci5wdXNoKGRhdGFMYXllckRhdGFbaW5kZXhdKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICB2YXIgd3BQZXJzRGxPcHRpb25zPXsKICAgICAgICAgICdzdG9yYWdlRXhwaXJ5VGltZSc6MzB9OwogICAgICAgIHZhciB3cEd0bU9wdGlvbnM9ewogICAgICAgICAgJ2VuYWJsZWQnOjAsJ3BlcnNEYXRhTGF5ZXInOndwUGVyc0RsfTsKICAgICAgICB3cFBlcnNEbC5pbml0KHdwUGVyc0RsT3B0aW9ucyk7CiAgICAgICAgd3BndG0udHJhY2tQcm9tb3Rpb24od3BHdG1PcHRpb25zKTsKICAgICAgfQogICAgICAgICAgICAgICAgICAgKTsKCiAgICAgIChmdW5jdGlvbih3KXsKICAgICAgICAidXNlIHN0cmljdCI7CiAgICAgICAgaWYoIXcubG9hZENTUyl7CiAgICAgICAgICB3LmxvYWRDU1M9ZnVuY3Rpb24oKXsKICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIHcucmVsb2FkT25SZXNpemU9ZmFsc2U7CiAgICAgICAgdmFyIHJwPWxvYWRDU1MucmVscHJlbG9hZD17CiAgICAgICAgfTsKICAgICAgICBycC5zdXBwb3J0PShmdW5jdGlvbigpewogICAgICAgICAgdmFyIHJldDsKICAgICAgICAgIHRyeXsKICAgICAgICAgICAgcmV0PXcuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpLnJlbExpc3Quc3VwcG9ydHMoInByZWxvYWQiKTsKICAgICAgICAgIH0KICAgICAgICAgIGNhdGNoKGUpewogICAgICAgICAgICByZXQ9ZmFsc2U7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKXsKICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgICAgICAgICAgICAgKSgpOwogICAgICAgIHJwLmJpbmRNZWRpYVRvZ2dsZT1mdW5jdGlvbihsaW5rKXsKICAgICAgICAgIHZhciBmaW5hbE1lZGlhPWxpbmsubWVkaWF8fCJhbGwiOwogICAgICAgICAgZnVuY3Rpb24gZW5hYmxlU3R5bGVzaGVldCgpewogICAgICAgICAgICBpZihsaW5rLmFkZEV2ZW50TGlzdGVuZXIpewogICAgICAgICAgICAgIGxpbmsucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsZW5hYmxlU3R5bGVzaGVldCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZihsaW5rLmF0dGFjaEV2ZW50KXsKICAgICAgICAgICAgICBsaW5rLmRldGFjaEV2ZW50KCJvbmxvYWQiLGVuYWJsZVN0eWxlc2hlZXQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCJvbmxvYWQiLG51bGwpOwogICAgICAgICAgICBsaW5rLm1lZGlhPWZpbmFsTWVkaWE7CiAgICAgICAgICB9CiAgICAgICAgICBpZihsaW5rLmFkZEV2ZW50TGlzdGVuZXIpewogICAgICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGVuYWJsZVN0eWxlc2hlZXQpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZihsaW5rLmF0dGFjaEV2ZW50KXsKICAgICAgICAgICAgbGluay5hdHRhY2hFdmVudCgib25sb2FkIixlbmFibGVTdHlsZXNoZWV0KTsKICAgICAgICAgIH0KICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKICAgICAgICAgICAgbGluay5yZWw9InN0eWxlc2hlZXQiOwogICAgICAgICAgICBsaW5rLm1lZGlhPSJvbmx5IHgiOwogICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICBzZXRUaW1lb3V0KGVuYWJsZVN0eWxlc2hlZXQsMzAwMCk7CiAgICAgICAgfTsKICAgICAgICBycC5wb2x5PWZ1bmN0aW9uKCl7CiAgICAgICAgICBpZihycC5zdXBwb3J0KCkpewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgbGlua3M9dy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpOwogICAgICAgICAgZm9yKHZhciBpPTA7aTxsaW5rcy5sZW5ndGg7aSsrKXsKICAgICAgICAgICAgdmFyIGxpbms9bGlua3NbaV07CiAgICAgICAgICAgIGlmKGxpbmsucmVsPT09InByZWxvYWQiJiZsaW5rLmdldEF0dHJpYnV0ZSgiYXMiKT09PSJzdHlsZSImJiFsaW5rLmdldEF0dHJpYnV0ZSgiZGF0YS1sb2FkY3NzIikpewogICAgICAgICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCJkYXRhLWxvYWRjc3MiLHRydWUpOwogICAgICAgICAgICAgIHJwLmJpbmRNZWRpYVRvZ2dsZShsaW5rKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgaWYoIXJwLnN1cHBvcnQoKSl7CiAgICAgICAgICBycC5wb2x5KCk7CiAgICAgICAgICB2YXIgcnVuPXcuc2V0SW50ZXJ2YWwocnAucG9seSw1MDApOwogICAgICAgICAgaWYody5hZGRFdmVudExpc3RlbmVyKXsKICAgICAgICAgICAgdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbigpewogICAgICAgICAgICAgIHJwLnBvbHkoKTsKICAgICAgICAgICAgICB3LmNsZWFySW50ZXJ2YWwocnVuKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZih3LmF0dGFjaEV2ZW50KXsKICAgICAgICAgICAgdy5hdHRhY2hFdmVudCgib25sb2FkIixmdW5jdGlvbigpewogICAgICAgICAgICAgIHJwLnBvbHkoKTsKICAgICAgICAgICAgICB3LmNsZWFySW50ZXJ2YWwocnVuKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLGZ1bmN0aW9uKCl7CiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7CiAgICAgICAgICAgIGlmKCF3LnJlbG9hZE9uUmVzaXplKXsKICAgICAgICAgICAgICB3LnJlbG9hZE9uUmVzaXplPXRydWU7CiAgICAgICAgICAgICAgaWYocnAuc3VwcG9ydCgpKXsKICAgICAgICAgICAgICAgIHZhciBsaW5rcz13LmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIik7CiAgICAgICAgICAgICAgICBmb3IodmFyIGk9MDtpPGxpbmtzLmxlbmd0aDtpKyspewogICAgICAgICAgICAgICAgICB2YXIgbGluaz1saW5rc1tpXTsKICAgICAgICAgICAgICAgICAgaWYobGluay5yZWw9PT0icHJlbG9hZCImJmxpbmsuZ2V0QXR0cmlidXRlKCJhcyIpPT09InN0eWxlIil7CiAgICAgICAgICAgICAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoIm9ubG9hZCIsbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgbGluay5yZWw9InN0eWxlc2hlZXQiOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICBycC5wb2x5KCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICw1MDAwKTsKICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLGZ1bmN0aW9uKCl7CiAgICAgICAgICBpZighdy5yZWxvYWRPblJlc2l6ZSl7CiAgICAgICAgICAgIHcucmVsb2FkT25SZXNpemU9dHJ1ZTsKICAgICAgICAgICAgaWYocnAuc3VwcG9ydCgpKXsKICAgICAgICAgICAgICB2YXIgbGlua3M9dy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpOwogICAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8bGlua3MubGVuZ3RoO2krKyl7CiAgICAgICAgICAgICAgICB2YXIgbGluaz1saW5rc1tpXTsKICAgICAgICAgICAgICAgIGlmKGxpbmsucmVsPT09InByZWxvYWQiJiZsaW5rLmdldEF0dHJpYnV0ZSgiYXMiKT09PSJzdHlsZSIpewogICAgICAgICAgICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgib25sb2FkIixudWxsKTsKICAgICAgICAgICAgICAgICAgbGluay5yZWw9InN0eWxlc2hlZXQiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgIHJwLnBvbHkoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgaWYodHlwZW9mIGV4cG9ydHMhPT0idW5kZWZpbmVkIil7CiAgICAgICAgICBleHBvcnRzLmxvYWRDU1M9bG9hZENTUzsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgIHcubG9hZENTUz1sb2FkQ1NTOwogICAgICAgIH0KICAgICAgfQogICAgICAgKHR5cGVvZiBnbG9iYWwhPT0idW5kZWZpbmVkIj9nbG9iYWw6dGhpcykpOw>/script> /body>/html>
Subdomains
Date
Domain
IP
www.westlandcovers.com
2014-10-03
75.126.8.230
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]