It looks like this is a web page, not a feed. I looked for a feed associated with this page, but couldn't find one. Please enter the address of your feed to validate.

Source: http://phonerepairlowell.com/

  1. <!doctype html >
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="en"
  3.      class="">
  4. <head>
  5.    
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40. <script type="text/javascript">
  41.    window._currentDevice = 'desktop';
  42.    window.Parameters = window.Parameters || {
  43.        HomeUrl: 'https://www.phonerepairlowell.com/',
  44.        AccountUUID: '0cab5bfedb304f35a5c8dd304c2f3272',
  45.        SystemID: 'US_DIRECT_PRODUCTION',
  46.        SiteAlias: 'f2b98c6b',
  47.        SiteType: atob('RFVEQU9ORQ=='),
  48.        PublicationDate: 'Thu Mar 21 02:48:16 UTC 2024',
  49.        ExternalUid: null,
  50.        IsSiteMultilingual: false,
  51.        InitialPostAlias: '',
  52.        InitialDynamicItem: '',
  53.        DynamicPageInfo: {
  54.            isDynamicPage: false,
  55.            base64JsonRowData: 'null',
  56.        },
  57.        InitialPageAlias: 'home',
  58.        InitialPageUuid: '7ff00ebdd2d948f8882bf205967eed17',
  59.        InitialPageId: '1147580510',
  60.        InitialEncodedPageAlias: 'aG9tZQ==',
  61.        CurrentPageUrl: '',
  62.        IsCurrentHomePage: true,
  63.        AllowAjax: false,
  64.        AfterAjaxCommand: null,
  65.        HomeLinkText: 'Back To Home',
  66.        UseGalleryModule: false,
  67.        CurrentThemeName: 'Layout Theme',
  68.        ThemeVersion: '42870',
  69.        DefaultPageAlias: '',
  70.        RemoveDID: true,
  71.        WidgetStyleID: null,
  72.        IsHeaderFixed: false,
  73.        IsHeaderSkinny: false,
  74.        IsBfs: true,
  75.        StorePageAlias: 'null',
  76.        StorePagesUrls: 'e30=',
  77.        IsNewStore: 'false',
  78.        StorePath: '',
  79.        StoreId: 'null',
  80.        StoreVersion: 0,
  81.        StoreBaseUrl: '',
  82.        StoreCleanUrl: true,
  83.        StoreDisableScrolling: true,
  84.        IsStoreSuspended: false,
  85.        NotificationSubDomain: 'phonerepairlowell38af42c7',
  86.        HasCustomDomain: true,
  87.        showCookieNotification: false,
  88.        cookiesNotificationMarkup: 'null',
  89.        translatedPageUrl: '',
  90.        isFastMigrationSite: false,
  91.        sidebarPosition: 'NA',
  92.        currentLanguage: 'en',
  93.        currentLocale: 'en',
  94.        NavItems: '{}',
  95.        errors: {
  96.            general: 'There was an error connecting to the page.<br/> Make sure you are not offline.',
  97.            password: 'Incorrect name/password combination',
  98.            tryAgain: 'Try again'
  99.        },
  100.        NavigationAreaParams: {
  101.            ShowBackToHomeOnInnerPages: true,
  102.            NavbarSize: 4,
  103.            NavbarLiveHomePage: 'https://www.phonerepairlowell.com/',
  104.            BlockContainerSelector: '.dmBody',
  105.            NavbarSelector: '#dmNav:has(a)',
  106.            SubNavbarSelector: '#subnav_main'
  107.        },
  108.        hasCustomCode: true,
  109.        planID: '7',
  110.        customTemplateId: 'null',
  111.        siteTemplateId: 'null',
  112.        productId: 'DM_DIRECT',
  113.        disableTracking: false,
  114.        pageType: 'FROM_SCRATCH',
  115.        isRuntimeServer: true,
  116.        isInEditor: false,
  117.    };
  118.  
  119.    window.Parameters.LayoutID = {};
  120.    window.Parameters.LayoutID[window._currentDevice] = 6;
  121.    window.Parameters.LayoutVariationID = {};
  122.    window.Parameters.LayoutVariationID[window._currentDevice] = 5;
  123. </script>
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147. <!-- Injecting site-wide to the head -->
  148.  
  149.  
  150.  
  151.  
  152. <!-- End Injecting site-wide to the head -->
  153.  
  154. <!-- Inject secured cdn script -->
  155.  
  156.  
  157. <!-- ========= Meta Tags ========= -->
  158. <!-- PWA settings -->
  159. <script>
  160.    function toHash(str) {
  161.        var hash = 5381, i = str.length;
  162.        while (i) {
  163.            hash = hash * 33 ^ str.charCodeAt(--i)
  164.        }
  165.        return hash >>> 0
  166.    }
  167. </script>
  168. <script>
  169.    (function (global) {
  170.    //const cacheKey = global.cacheKey;
  171.    const isOffline = 'onLine' in navigator && navigator.onLine === false;
  172.    const hasServiceWorkerSupport = 'serviceWorker' in navigator;
  173.    if (isOffline) {
  174.        console.log('offline mode');
  175.    }
  176.    if (!hasServiceWorkerSupport) {
  177.        console.log('service worker is not supported');
  178.    }
  179.    if (hasServiceWorkerSupport && !isOffline) {
  180.        window.addEventListener('load', function () {
  181.            const serviceWorkerPath = '/runtime-service-worker.js?v=3';
  182.            navigator.serviceWorker
  183.                .register(serviceWorkerPath, { scope: './' })
  184.                .then(
  185.                    function (registration) {
  186.                        // Registration was successful
  187.                        console.log(
  188.                            'ServiceWorker registration successful with scope: ',
  189.                            registration.scope
  190.                        );
  191.                    },
  192.                    function (err) {
  193.                        // registration failed :(
  194.                        console.log('ServiceWorker registration failed: ', err);
  195.                    }
  196.                )
  197.                .catch(function (err) {
  198.                    console.log(err);
  199.                });
  200.        });
  201.  
  202.        // helper function to refresh the page
  203.        var refreshPage = (function () {
  204.            var refreshing;
  205.            return function () {
  206.                if (refreshing) return;
  207.                // prevent multiple refreshes
  208.                var refreshkey = 'refreshed' + location.href;
  209.                var prevRefresh = localStorage.getItem(refreshkey);
  210.                if (prevRefresh) {
  211.                    localStorage.removeItem(refreshkey);
  212.                    if (Date.now() - prevRefresh < 30000) {
  213.                        return; // dont go into a refresh loop
  214.                    }
  215.                }
  216.                refreshing = true;
  217.                localStorage.setItem(refreshkey, Date.now());
  218.                console.log('refereshing page');
  219.                window.location.reload();
  220.            };
  221.        })();
  222.  
  223.        function messageServiceWorker(data) {
  224.            return new Promise(function (resolve, reject) {
  225.                if (navigator.serviceWorker.controller) {
  226.                    var worker = navigator.serviceWorker.controller;
  227.                    var messageChannel = new MessageChannel();
  228.                    messageChannel.port1.onmessage = replyHandler;
  229.                    worker.postMessage(data, [messageChannel.port2]);
  230.                    function replyHandler(event) {
  231.                        resolve(event.data);
  232.                    }
  233.                } else {
  234.                    resolve();
  235.                }
  236.            });
  237.        }
  238.    }
  239. })(window);
  240. </script>
  241. <!-- Add manifest -->
  242. <!-- End PWA settings -->
  243.  
  244.  
  245. <meta http-equiv="Content-type" content="text/html;charset=utf-8">
  246. <meta charset="utf-8">
  247.  
  248. <link rel="canonical" href="https://www.phonerepairlowell.com/">
  249.  
  250. <meta id="view" name="viewport" content="initial-scale=1, minimum-scale=1, maximum-scale=5, viewport-fit=cover">
  251. <meta name="apple-mobile-web-app-capable" content="yes">
  252.  
  253. <!--Add favorites icons-->
  254.  
  255. <link rel="apple-touch-icon" href="https://irp.cdn-website.com/f2b98c6b/dms3rep/multi/TECHPRO-01.png"/>
  256.  
  257. <link rel="icon" type="image/x-icon" href="https://irp.cdn-website.com/f2b98c6b/site_favicon_16_1667422288314.ico"/>
  258.  
  259. <!-- End favorite icons -->
  260. <link rel="preconnect" href="https://lirp.cdn-website.com/" />
  261.  
  262.  
  263.  
  264. <!-- render the required CSS and JS in the head section -->
  265. <script>
  266.    window.SystemID = 'US_DIRECT_PRODUCTION';
  267.  
  268.    if(!window.dmAPI) {
  269.        window.dmAPI = {
  270.            registerExternalRuntimeComponent: function() {
  271.            },
  272.            getCurrentDeviceType: function() {
  273.                return window._currentDevice;
  274.            }
  275.        };
  276.    }
  277.  
  278.    if (!window.requestIdleCallback) {
  279.        window.requestIdleCallback = function (fn) {
  280.            setTimeout(fn, 0);
  281.        }
  282.    }
  283. </script>
  284.  
  285. <!-- loadCSS function header.jsp-->
  286.  
  287.    
  288.    
  289.    
  290.  
  291.  
  292. <script id="d-js-load-css">
  293. /**
  294. * There are a few <link> tags with CSS resource in them that are preloaded in the page
  295. * in each of those there is a "onload" handler which invokes the loadCSS callback
  296. * defined here.
  297. * We are monitoring 3 main CSS files - the runtime, the global and the page.
  298. * When each load we check to see if we can append them all in a batch. If threre
  299. * is no page css (which may happen on inner pages) then we do not wait for it
  300. */
  301. (function () {
  302.  let cssLinks = {};
  303.  function loadCssLink(link) {
  304.    link.onload = null;
  305.    link.rel = "stylesheet";
  306.    link.type = "text/css";
  307.  }
  308.  
  309.    function checkCss() {
  310.      const pageCssLink = document.querySelector("[id*='CssLink']");
  311.      const widgetCssLink = document.querySelector("[id*='widgetCSS']");
  312.  
  313.        if (cssLinks && cssLinks.runtime && cssLinks.global && (!pageCssLink || cssLinks.page) && (!widgetCssLink || cssLinks.widget)) {
  314.            const storedRuntimeCssLink = cssLinks.runtime;
  315.            const storedPageCssLink = cssLinks.page;
  316.            const storedGlobalCssLink = cssLinks.global;
  317.            const storedWidgetCssLink = cssLinks.widget;
  318.  
  319.            storedGlobalCssLink.disabled = true;
  320.            loadCssLink(storedGlobalCssLink);
  321.  
  322.            if (storedPageCssLink) {
  323.                storedPageCssLink.disabled = true;
  324.                loadCssLink(storedPageCssLink);
  325.            }
  326.  
  327.            if(storedWidgetCssLink) {
  328.                storedWidgetCssLink.disabled = true;
  329.                loadCssLink(storedWidgetCssLink);
  330.            }
  331.  
  332.            storedRuntimeCssLink.disabled = true;
  333.            loadCssLink(storedRuntimeCssLink);
  334.  
  335.            requestAnimationFrame(() => {
  336.                setTimeout(() => {
  337.                    storedRuntimeCssLink.disabled = false;
  338.                    storedGlobalCssLink.disabled = false;
  339.                    if (storedPageCssLink) {
  340.                      storedPageCssLink.disabled = false;
  341.                    }
  342.                    if (storedWidgetCssLink) {
  343.                      storedWidgetCssLink.disabled = false;
  344.                    }
  345.                    // (SUP-4179) Clear the accumulated cssLinks only when we're
  346.                    // sure that the document has finished loading and the document
  347.                    // has been parsed.
  348.                    if(document.readyState === 'interactive') {
  349.                      cssLinks = null;
  350.                    }
  351.                }, 0);
  352.            });
  353.        }
  354.    }
  355.  
  356.  
  357.  function loadCSS(link) {
  358.    try {
  359.      var urlParams = new URLSearchParams(window.location.search);
  360.      var noCSS = !!urlParams.get("nocss");
  361.      var cssTimeout = urlParams.get("cssTimeout") || 0;
  362.  
  363.      if (noCSS) {
  364.        return;
  365.      }
  366.      if (link.href.includes("d-css-runtime")) {
  367.        cssLinks.runtime = link;
  368.        checkCss();
  369.      } else if (link.id === "siteGlobalCss") {
  370.        cssLinks.global = link;
  371.        checkCss();
  372.      }
  373.      
  374.      else if (link.id.includes("CssLink")) {
  375.        cssLinks.page = link;
  376.        checkCss();
  377.      } else if (link.id.includes("widgetCSS")) {
  378.        cssLinks.widget = link;
  379.        checkCss();
  380.      }
  381.      
  382.      else {
  383.        requestIdleCallback(function () {
  384.          window.setTimeout(function () {
  385.            loadCssLink(link);
  386.          }, parseInt(cssTimeout, 10));
  387.        });
  388.      }
  389.    } catch (e) {
  390.      throw e
  391.    }
  392.  }
  393.  window.loadCSS = window.loadCSS || loadCSS;
  394. })();
  395. </script>
  396.  
  397.  
  398.  
  399. <script data-role="deferred-init" type="text/javascript">
  400.    /* usage: window.getDeferred(<deferred name>).resolve() or window.getDeferred(<deferred name>).promise.then(...)*/
  401.    function Def(){this.promise=new Promise((function(a,b){this.resolve=a,this.reject=b}).bind(this))}
  402.    const defs={};
  403.    window.getDeferred=function(a){return null==defs[a]&&(defs[a]=new Def),defs[a]}
  404.    window.waitForDeferred = function (b, a, c) {
  405.      let d = window?.getDeferred?.(b);
  406.      d
  407.        ? d.promise.then(a)
  408.        : c && ["complete", "interactive"].includes(document.readyState)
  409.        ? setTimeout(a, 1)
  410.        : c
  411.        ? document.addEventListener("DOMContentLoaded", a)
  412.        : console.error(`Deferred  does not exist`);
  413.    };
  414. </script>
  415. <style id="forceCssIncludes">
  416.    /* This file is auto-generated from a `scss` file with the same name */
  417.  
  418. .videobgwrapper{overflow:hidden;position:absolute;z-index:0;width:100%;height:100%;top:0;left:0;pointer-events:none;border-radius:inherit}.videobgframe{position:absolute;width:101%;height:100%;top:50%;left:50%;transform:translateY(-50%) translateX(-50%);object-fit:fill}#dm video.videobgframe{margin:0}@media (max-width:767px){.dmRoot .dmPhotoGallery.newPhotoGallery:not(.photo-gallery-done){min-height:80vh}}@media (min-width:1025px){.dmRoot .dmPhotoGallery.newPhotoGallery:not(.photo-gallery-done){min-height:45vh}}@media (min-width:768px) and (max-width:1024px){.responsiveTablet .dmPhotoGallery.newPhotoGallery:not(.photo-gallery-done){min-height:45vh}}#dm [data-show-on-page-only]{display:none!important}#dmRoot div.stickyHeaderFix div.site_content{margin-top:0!important}#dmRoot div.stickyHeaderFix div.hamburger-header-container{position:relative}
  419.    
  420. </style>
  421. <style id="cssVariables" type="text/css">
  422.    
  423. </style>
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447. <!-- Google Fonts Include -->
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461. <!-- loadCSS function fonts.jsp-->
  462.  
  463.  
  464.  
  465. <link type="text/css" rel="stylesheet" href="https://irp.cdn-website.com/fonts/css2?family=Poppins:wght@100;200;300;400;500;600;700;800;900&family=Lato:wght@100;300;400;700;900&family=Lora:wght@400..700&family=Source+Sans+Pro:wght@200;300;400;600;700;900&amp;subset=latin-ext&amp;display=swap"  />
  466.  
  467.  
  468.  
  469.  
  470.  
  471. <!-- RT CSS Include d-css-runtime-desktop-one-package-structured-global-->
  472. <link rel="stylesheet" type="text/css" href="https://static.cdn-website.com/mnlt/production/4287/_dm/s/rt/dist/css/d-css-runtime-desktop-one-package-structured-global.min.css" />
  473.  
  474. <!-- End of RT CSS Include -->
  475.  
  476. <link type="text/css" rel="stylesheet" href="https://irp.cdn-website.com/WIDGET_CSS/db695ab6876545de0302d56aa2ad5d8d.css" id="widgetCSS" />
  477.  
  478. <!-- Support `img` size attributes -->
  479. <style>img[width][height] {
  480.  height: auto;
  481. }</style>
  482.  
  483. <!-- Support showing sticky element on page only -->
  484. <style>
  485.  body[data-page-alias="home"] #dm [data-show-on-page-only="home"] {
  486.    display: block !important;
  487.  }
  488. </style>
  489.  
  490. <!-- This is populated in Ajax navigation -->
  491. <style id="pageAdditionalWidgetsCss" type="text/css">
  492. </style>
  493.  
  494.  
  495.  
  496.  
  497. <!-- Site CSS -->
  498. <link type="text/css" rel="stylesheet" href="https://irp.cdn-website.com/f2b98c6b/files/f2b98c6b_withFlex_1.min.css?v=336" id="siteGlobalCss" />
  499.  
  500.  
  501.  
  502. <style id="customWidgetStyle" type="text/css">
  503.  
  504. </style>
  505. <style id="innerPagesStyle" type="text/css">
  506.    
  507. </style>
  508.  
  509.  
  510. <style
  511.        id="additionalGlobalCss" type="text/css"
  512. >
  513. </style>
  514.  
  515. <!-- Page CSS -->
  516. <link type="text/css" rel="stylesheet" href="https://irp.cdn-website.com/f2b98c6b/files/f2b98c6b_home_withFlex_1.min.css?v=336" id="homeCssLink" />
  517.  
  518. <style id="pagestyle" type="text/css">
  519.    
  520. </style>
  521.  
  522. <style id="pagestyleDevice" type="text/css">
  523.    
  524. </style>
  525.  
  526. <!-- Flex Sections CSS -->
  527.  
  528.  
  529.  
  530.  
  531.  
  532. <style id="globalFontSizeStyle" type="text/css">
  533.    .font-size-72, .size-72, .size-72 > font { font-size: 72px !important; }.font-size-35, .size-35, .size-35 > font { font-size: 35px !important; }.font-size-19, .size-19, .size-19 > font { font-size: 19px !important; }.font-size-17, .size-17, .size-17 > font { font-size: 17px !important; }.font-size-22, .size-22, .size-22 > font { font-size: 22px !important; }.font-size-15, .size-15, .size-15 > font { font-size: 15px !important; }
  534. </style>
  535. <style id="pageFontSizeStyle" type="text/css">
  536. </style>
  537.  
  538.  
  539.  
  540.  
  541. <style id="hideAnimFix">
  542.  .dmDesktopBody:not(.editGrid) [data-anim-desktop]:not([data-anim-desktop='none']), .dmDesktopBody:not(.editGrid) [data-anim-extended] {
  543.    visibility: hidden;
  544.  }
  545.  .dmDesktopBody:not(.editGrid) .dmNewParagraph[data-anim-desktop]:not([data-anim-desktop='none']), .dmDesktopBody:not(.editGrid) .dmNewParagraph[data-anim-extended] {
  546.    visibility: hidden !important;
  547.  }
  548. </style>
  549.  
  550.  
  551.  
  552.  
  553. <style id="fontFallbacks">
  554.    @font-face {
  555.  font-family: "Poppins Fallback";
  556.  src: local('Arial');
  557.  ascent-override: 92.326%;
  558.  descent-override: 30.7753%;
  559.  line-gap-override: 8.793%;
  560.  size-adjust: 113.7274%;
  561. }@font-face {
  562.  font-family: "Lato Fallback";
  563.  src: local('Arial');
  564.  ascent-override: 101.3181%;
  565.  descent-override: 21.865%;
  566.  size-adjust: 97.4159%;
  567.  line-gap-override: 0%;
  568. }@font-face {
  569.  font-family: "Lora Fallback";
  570.  src: local('Arial');
  571.  ascent-override: 95.2907%;
  572.  descent-override: 25.9539%;
  573.  size-adjust: 105.5717%;
  574.  line-gap-override: 0%;
  575. }
  576. </style>
  577.  
  578.  
  579. <!-- End render the required css and JS in the head section -->
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586. <meta property="og:type" content="website">
  587. <script type="application/ld+json">
  588.    {
  589.        "@context" : "https://schema.org",
  590.        "@type" : "WebSite",
  591.        "name" : "Techpro",
  592.        "url" : "https://www.phonerepairlowell.com/"
  593.    }
  594. </script>
  595.  <meta property="og:image" content="https://lirp.cdn-website.com/f2b98c6b/dms3rep/multi/opt/logo-1920w.jpg"/>
  596.  <title>
  597.    Techpro Lowell, MA | Mobile Repair Shop | Tablet Repair &amp; More
  598.  </title>
  599.  <meta name="keywords" content="techpro, phone repair, cell phone repair, lowell, ma, smartphone repair, mobile phone repair, iphone repair, phone repair near me, apple watch repair, laptop repair, ipad repair, computer repair"/>
  600.  <meta name="description" content="Fast &amp; reliable cellphone repairs in Lowell, MA. Expert iPhone repair and fix for tablets, computers, iPads. Quick 30-minute service in Lowell, Dracut, Tynsgboro, Nashua."/>
  601.  <script type="application/ld+json">
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608. {
  609.  "@context": "https://schema.org",
  610.  "@graph": [
  611.    {
  612.      "@type": "SiteNavigationElement",
  613.      "@id": "https://phonerepairlowell.com#Main Menu",
  614.      "name": "Home",
  615.      "url": "https://phonerepairlowell.com"
  616.    },
  617.    {
  618.      "@type": "SiteNavigationElement",
  619.      "@id": "https://phonerepairlowell.com#Main Menu",
  620.      "name": "Repair",
  621.      "url": "https://phonerepairlowell.com/repair"
  622.    },
  623.    {
  624.      "@type": "SiteNavigationElement",
  625.      "@id": "https://phonerepairlowell.com#Main Menu",
  626.      "name": "iPhone Repairs",
  627.      "url": "https://phonerepairlowell.com/iphone-repairs"
  628.    },
  629.    {
  630.      "@type": "SiteNavigationElement",
  631.      "@id": "https://phonerepairlowell.com#Main Menu",
  632.      "name": "iPad Repairs",
  633.      "url": "https://phonerepairlowell.com/ipad-repairs"
  634.    },
  635.    {
  636.      "@type": "SiteNavigationElement",
  637.      "@id": "https://phonerepairlowell.com#Main Menu",
  638.      "name": "Smartphone Repairs",
  639.      "url": "https://phonerepairlowell.com/smart-phone-repairs"
  640.    },
  641.    {
  642.      "@type": "SiteNavigationElement",
  643.      "@id": "https://phonerepairlowell.com#Main Menu",
  644.      "name": "Apple Watch Repairs",
  645.      "url": "https://phonerepairlowell.com/apple-watch-repair"
  646.    },
  647.    {
  648.      "@type": "SiteNavigationElement",
  649.      "@id": "https://phonerepairlowell.com#Main Menu",
  650.      "name": "Laptop Repairs",
  651.      "url": "https://phonerepairlowell.com/Laptop-repairs"
  652.    },
  653.    {
  654.      "@type": "SiteNavigationElement",
  655.      "@id": "https://phonerepairlowell.com#Main Menu",
  656.      "name": "Game Console Repairs",
  657.      "url": "https://phonerepairlowell.com/game-console-repairs"
  658.    },
  659.    {
  660.      "@type": "SiteNavigationElement",
  661.      "@id": "https://phonerepairlowell.com#Main Menu",
  662.      "name": "About",
  663.      "url": "https://phonerepairlowell.com/about"
  664.    },
  665.    {
  666.      "@type": "SiteNavigationElement",
  667.      "@id": "https://phonerepairlowell.com#Main Menu",
  668.      "name": "Contact Us",
  669.      "url": "https://phonerepairlowell.com/contact-us"
  670.    }
  671.  ]
  672. }
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  </script>
  680.  <script type="application/ld+json">
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687. {
  688.  "@context": "https://schema.org",
  689.  "@type": "Organization",
  690.  "name": "Techpro Lowell, MA",
  691.  "url": "https://phonerepairlowell.com/",
  692.  "logo": "https://lirp.cdn-website.com/f2b98c6b/dms3rep/multi/opt/TECHPRO-01-265w.png",
  693.  "contactPoint": {
  694.    "@type": "ContactPoint",
  695.    "telephone": "(978) 873-8426",
  696.    "contactType": "customer service",
  697.    "areaServed": "US",
  698.    "availableLanguage": "en"
  699.  },
  700.  "sameAs": [
  701.    "https://facebook.com/techprolowell",
  702.    "https://instagram.com/techpro_lowell"
  703.  ]
  704. }
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  </script>
  712.  <script type="application/ld+json">
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719. {
  720.  "@context": "https://schema.org",
  721.  "@type": "LocalBusiness",
  722.  "name": "Techpro Lowell, MA",
  723.  "image": "https://lirp.cdn-website.com/f2b98c6b/dms3rep/multi/opt/TECHPRO-01-265w.png",
  724.  "@id": "https://phonerepairlowell.com/",
  725.  "url": "https://phonerepairlowell.com/",
  726.  "telephone": "(978) 873-8426",
  727.  "priceRange": "$$",
  728.  "address": {
  729.    "@type": "PostalAddress",
  730.    "streetAddress": "42 1/2 Mammoth rd",
  731.    "addressLocality": "Lowell",
  732.    "addressRegion": "MA",
  733.    "postalCode": "01854",
  734.    "addressCountry": "US"
  735.  },
  736.  "openingHoursSpecification": [{
  737.    "@type": "OpeningHoursSpecification",
  738.    "dayOfWeek": [
  739.      "Monday",
  740.      "Friday"
  741.    ],
  742.    "opens": "10:00",
  743.    "closes": "18:00"
  744.  }],
  745.  "sameAs": [
  746.     "https://facebook.com/techprolowell",
  747.    "https://instagram.com/techpro_lowell"
  748.  ]
  749. }
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  </script>
  757.  
  758.  <meta name="google-site-verification" content="hGHgBF1nHrgDxXoc8J1ejvkgwGaX1hCvUMGVwa5AaF4"/>
  759.  <meta name="msvalidate.01" content="DEFF005E3FDC6C0D26E967F10E7F354E"/>
  760.  
  761.  <meta name="twitter:card" content="summary"/>
  762.  <meta name="twitter:title" content="Techpro Lowell, MA | Mobile Repair Shop | Tablet Repair &amp; More"/>
  763.  <meta name="twitter:description" content="Fast &amp; reliable cellphone repairs in Lowell, MA. Expert iPhone repair and fix for tablets, computers, iPads. Quick 30-minute service in Lowell, Dracut, Tynsgboro, Nashua."/>
  764.  <meta property="og:description" content="Fast &amp; reliable cellphone repairs in Lowell, MA. Expert iPhone repair and fix for tablets, computers, iPads. Quick 30-minute service in Lowell, Dracut, Tynsgboro, Nashua."/>
  765.  <meta property="og:title" content="Techpro Lowell, MA | Mobile Repair Shop | Tablet Repair &amp; More"/>
  766.  
  767.  
  768.  
  769.  
  770. <!-- SYS- VVNfRElSRUNUX1BST0RVQ1RJT04= -->
  771. </head>
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794. <body id="dmRoot" data-page-alias="home"  class="dmRoot dmDesktopBody fix-mobile-scrolling addCanvasBorder dmLargeBody responsiveTablet "
  795.      style="padding:0;margin:0;"
  796.      
  797.    >
  798.  
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814. <!-- ========= Site Content ========= -->
  815. <div id="dm" class='dmwr'>
  816.    
  817.    <div class="dm_wrapper standard-var5 widgetStyle-3 standard">
  818.         <div dmwrapped="true" id="1901957768" class="dm-home-page" themewaschanged="true"> <div dmtemplateid="StandardLayoutMultiD" class="standardHeaderLayout dm-bfs dm-layout-home hasAnimations hasStickyHeader rows-1200 inMiniHeaderMode hamburger-reverse dmPageBody d-page-1716942098 dmFreeHeader" id="dm-outer-wrapper" data-page-class="1716942098" data-soch="true" data-background-parallax-selector=".dmHomeSection1, .dmSectionParallex"> <div id="dmStyle_outerContainer" class="dmOuter"> <div id="dmStyle_innerContainer" class="dmInner"> <div class="dmLayoutWrapper standard-var dmStandardDesktop"> <div> <div id="iscrollBody"> <div id="site_content"> <div class="dmHeaderContainer fHeader d-header-wrapper"> <div id="hcontainer" class="dmHeader p_hfcontainer u_hcontainer" freeheader="true" headerlayout="725" data-scrollable-target="body" data-scrollable-target-threshold="1" data-scroll-responder-id="1" preserve-sticky-header="true" logo-size-target="85%" has-shadow="true"> <div dm:templateorder="85" class="dmHeaderResp dmHeaderStack noSwitch" id="1709005236"> <div class="u_1954823737 dmRespRow fullBleedChanged fullBleedMode" id="1954823737"> <div class="dmRespColsWrapper" id="1295201232"> <div class="u_1948701536 dmRespCol small-12 large-3 medium-3" id="1948701536"> <div class="u_1362917986 imageWidget align-center" data-element-type="image" data-widget-type="image" id="1362917986"> <a id="1358021855" href="/" file="false"><img src="https://lirp.cdn-website.com/f2b98c6b/dms3rep/multi/opt/TECHPRO-01-1920w.png" alt="Techpro Repair Logo " id="1326511894" class="" data-dm-image-path="https://irp.cdn-website.com/f2b98c6b/dms3rep/multi/TECHPRO-01.png" width="1920" height="1152" onerror="handleImageLoadError(this)"/></a>
  819. </div>
  820. </div>
  821. <div class="u_1077688024 dmRespCol small-12 large-9 medium-9" id="1077688024"> <nav class="u_1752708504 effect-top-bottom main-navigation unifiednav dmLinksMenu" role="navigation" layout-main="horizontal_nav_layout_1" layout-sub="submenu_horizontal_1" data-show-vertical-sub-items="HOVER" id="1752708504" dmle_extension="onelinksmenu" data-element-type="onelinksmenu" data-logo-src="" alt="" data-nav-structure="HORIZONTAL" wr="true" icon="true" surround="true" adwords="" navigation-id="unifiedNav"> <ul role="menubar" class="unifiednav__container  " data-auto="navigation-pages"> <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="0"> <a href="/" class="unifiednav__item  dmNavItemSelected  dmUDNavigationItem_00  " target="" data-target-page-alias="" data-auto="selected-page"> <span class="nav-item-text " data-link-text="
  822.         Home
  823.        " data-auto="page-text-style">Home<span class="icon icon-angle-down"></span>
  824. </span>
  825. </a>
  826. </li>
  827. <li role="menuitem" aria-haspopup="true" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="0"> <a href="/repair" class="unifiednav__item  dmUDNavigationItem_010101200733  unifiednav__item_has-sub-nav" target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
  828.         Repair
  829.        " data-auto="page-text-style">Repair<span class="icon icon-angle-down"></span>
  830. </span>
  831. </a>
  832. <ul role="menu" aria-expanded="false" class="unifiednav__container unifiednav__container_sub-nav" data-depth="0" data-auto="sub-pages"> <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="1"> <a href="/iphone-repairs" class="unifiednav__item  dmUDNavigationItem_01010120790  " target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
  833.           iPhone Repairs
  834.          " data-auto="page-text-style">iPhone Repairs<span class="icon icon-angle-right"></span>
  835. </span>
  836. </a>
  837. </li>
  838. <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="1"> <a href="/ipad-repairs" class="unifiednav__item  dmUDNavigationItem_010101322739  " target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
  839.           iPad Repairs
  840.          " data-auto="page-text-style">iPad Repairs<span class="icon icon-angle-right"></span>
  841. </span>
  842. </a>
  843. </li>
  844. <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="1"> <a href="/smart-phone-repairs" class="unifiednav__item  dmUDNavigationItem_010101213160  " target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
  845.           Smartphone Repairs
  846.          " data-auto="page-text-style">Smartphone Repairs<span class="icon icon-angle-right"></span>
  847. </span>
  848. </a>
  849. </li>
  850. <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="1"> <a href="/apple-watch-repair" class="unifiednav__item  dmUDNavigationItem_010101599240  " target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
  851.           Apple Watch
  852.          " data-auto="page-text-style">Apple Watch<span class="icon icon-angle-right"></span>
  853. </span>
  854. </a>
  855. </li>
  856. <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="1"> <a href="/Laptop-repairs" class="unifiednav__item  dmUDNavigationItem_010101106192  " target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
  857.           Laptop Repairs
  858.          " data-auto="page-text-style">Laptop Repairs<span class="icon icon-angle-right"></span>
  859. </span>
  860. </a>
  861. </li>
  862. <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="1"> <a href="/game-console-repairs" class="unifiednav__item  dmUDNavigationItem_010101116904  " target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
  863.           Game Console Repairs
  864.          " data-auto="page-text-style">Game Console Repairs<span class="icon icon-angle-right"></span>
  865. </span>
  866. </a>
  867. </li>
  868. </ul>
  869. </li>
  870. <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="0"> <a href="/about" class="unifiednav__item  dmUDNavigationItem_01010182016  " target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
  871.         About
  872.        " data-auto="page-text-style">About<span class="icon icon-angle-down"></span>
  873. </span>
  874. </a>
  875. </li>
  876. <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="0"> <a href="/contact-us" class="unifiednav__item  dmUDNavigationItem_010101276624  " target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
  877.         Contact Us
  878.        " data-auto="page-text-style">Contact Us<span class="icon icon-angle-down"></span>
  879. </span>
  880. </a>
  881. </li>
  882. </ul>
  883. </nav>
  884. </div>
  885. </div>
  886. </div>
  887. </div>
  888. </div>
  889. </div>
  890. <div class="stickyHeaderSpacer" id="stickyHeaderSpacer" data-new="true"></div>
  891. <div class="dmRespRow dmRespRowStable dmRespRowNoPadding dmPageTitleRow "> <div class="dmRespColsWrapper"> <div class="large-12 dmRespCol"> <div id="innerBar" class="innerBar lineInnerBar dmDisplay_None"> <div class="titleLine display_None"><hr/></div>
  892. <!-- Page title is hidden in css for new responsive sites. It is left here only so we don't break old sites. Don't copy it to new layouts --> <div id="pageTitleText"></div>
  893. <div class="titleLine display_None"><hr/></div>
  894. </div>
  895. </div>
  896. </div>
  897. </div>
  898. <div dmwrapped="true" id="dmFirstContainer" class="dmBody u_dmStyle_template_home dm-home-page" themewaschanged="true"> <div id="allWrapper" class="allWrapper"><!-- navigation placeholders --> <div id="dm_content" class="dmContent"> <div dm:templateorder="170" class="dmHomeRespTmpl mainBorder dmRespRowsWrapper dmFullRowRespTmpl" id="1716942098"> <div class="dmRespRow u_1455248571 hasBackgroundOverlay" id="1455248571"> <div class="dmRespColsWrapper" id="1154944715"> <div class="dmRespCol large-12 medium-12 small-12" id="1869456595"> <div class="u_1484891605 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1484891605" style="transition: opacity 1s ease-in-out 0s;"> <h1 class="m-size-36 text-align-center size-72"><span class="m-font-size-36 font-size-72" m-font-size-set="true" style="color: rgb(250, 213, 64); display: unset;">Cellphone Repair&nbsp; in Lowell Ma</span></h1>
  899. <h2 class="text-align-center size-72 m-size-36"><span class="font-size-72 m-font-size-36" style="font-weight: bold; color: rgb(255, 255, 255); display: unset;" m-font-size-set="true">Tech Repair Since 2012</span></h2>
  900. </div>
  901. <a data-display-type="block" class="u_1261849202 align-center dmButtonLink dmWidget dmWwr default dmOnlyButton dmDefaultGradient" file="false" href="/repair" data-element-type="dButtonLinkId" id="1261849202"> <span class="iconBg" id="1478987139"> <span class="icon hasFontIcon icon-star" id="1613382472"></span>
  902. </span>
  903. <span class="text" id="1191966454">Repair My Device</span>
  904. </a>
  905. <a class="u_1951495793 default dmDefaultGradient align-center dmCall voipReplacement dmWidget dmNoMark dmWwr" href="tel:9788738426" contenteditable="false" onclick=";return dm_gaq_push_event('ClickToCall', 'Call',null,'f2b98c6b', this);" id="1951495793" dmle_extension="clicktocall" data-element-type="clicktocall" wr="true" data-display-type="block" localization_key_description="googleTranslate.RHAPstj.18" icon="true" surround="true" description="978-873-8426" adwords="" icon-name="icon-phone" phone="9788738426" text="" image=""> <span class="iconBg" aria-hidden="true"> <span class="icon hasFontIcon icon-phone"></span>
  906. </span>
  907. <span class="text">978-873-8426</span>
  908. </a>
  909. </div>
  910. </div>
  911. </div>
  912. <div class="dmRespRow u_1858999631" id="1858999631"> <div class="dmRespColsWrapper" id="1273879299"> <div class="dmRespCol small-12 medium-12 large-12 content-removed" id="1217399121"> <div class="dmNewParagraph" data-element-type="paragraph" data-version="5" id="1120622856" style="transition: opacity 1s ease-in-out 0s;"> <h2 class="text-align-center"><span style="color: rgb(250, 213, 64);">What can we<br/></span><span style="font-weight: bold; color: rgb(250, 213, 64);">Fix</span><span class="" style="color: rgb(250, 213, 64);"> <span style="color: rgb(250, 213, 64);">for you?</span></span></h2>
  913. </div>
  914. <div class="dmNewParagraph u_1426539201" data-element-type="paragraph" data-version="5" id="1426539201" style="transition: none; text-align: left; display: block;"><p class="text-align-center"><span style="display: unset; color: rgb(238, 188, 12);">Get $10 off of any Device Repair when you book online with</span></p><p class="text-align-center"><span style="display: unset; color: rgb(238, 188, 12);">this coupon code</span><span single-space="true" class="" style="display: unset;"> <span style="display: unset;"></span>
  915. </span><span style="display: unset; font-weight: bold; color: rgb(255, 255, 255);">Quick10off</span><span style="display: initial;"><br/></span></p></div>
  916. <div class="dmDividerWrapper clearfix" data-element-type="dDividerId" data-layout="divider-style-1" data-widget-version="2" id="1193609036"><hr class="dmDivider" style="border-width:2px; border-top-style:solid; color:grey;" id="1382253892"/></div>
  917. <div class="dmRespRow u_1615474458" id="1615474458" mode="2"> <div class="dmRespColsWrapper" id="1432649311"> <div class="dmRespCol large-6 medium-6 u_1595313411 small-6" id="1595313411"> <div class="u_1467327364 dmDividerWrapper clearfix" data-element-type="dDividerId" data-layout="divider-style-1" data-widget-version="2" id="1467327364"><hr class="dmDivider" style="border-width:2px; border-top-style:solid; color:grey;" id="1386960606"/></div>
  918. </div>
  919. <div class="dmRespCol large-6 medium-6 u_1179848576 small-6" id="1179848576"> <div class="u_1255023578 dmDividerWrapper clearfix" data-element-type="dDividerId" data-layout="divider-style-1" data-widget-version="2" id="1255023578"><hr class="dmDivider" style="border-width:2px; border-top-style:solid; color:grey;" id="1277388470"/></div>
  920. </div>
  921. </div>
  922. </div>
  923. <div class="u_1786091226 dmRespRow" id="1786091226"> <div class="dmRespColsWrapper" id="1588792585"> <div class="dmRespCol small-12 u_1480031562 large-3 medium-3" id="1480031562" data-anim-desktop="none"> <div class="u_1858917965 imageWidget align-center" data-element-type="image" data-widget-type="image" id="1858917965"> <a id="1656501383" href="/iphone-repairs" file="false"><img src="https://lirp.cdn-website.com/f2b98c6b/dms3rep/multi/opt/other-smartphones-f77f9038-1920w.png" alt="iPhone repairs" id="1378872990" class="" data-dm-image-path="https://irp.cdn-website.com/f2b98c6b/dms3rep/multi/other-smartphones-f77f9038.png" width="512" height="512" onerror="handleImageLoadError(this)"/></a>
  924. </div>
  925. <div class="u_1558166950 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1558166950"> <h3 class="text-align-center"><a href="/iphone-repairs" runtime_url="/iphone-repairs" type="page" style="color: rgb(0, 0, 0); display: unset;">iPhone</a></h3>
  926. </div>
  927. </div>
  928. <div class="dmRespCol small-12 large-3 medium-3 u_1189165215" id="1189165215"> <div class="u_1440648423 imageWidget align-center" data-element-type="image" data-widget-type="image" id="1440648423"> <a id="1331405891" href="/ipad-repairs" file="false"><img src="https://lirp.cdn-website.com/f2b98c6b/dms3rep/multi/opt/tablet-1920w.png" id="1782982551" class="" data-dm-image-path="https://irp.cdn-website.com/f2b98c6b/dms3rep/multi/tablet.png" alt="iPad Repairs" onerror="handleImageLoadError(this)"/></a>
  929. </div>
  930. <div class="u_1255254969 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1255254969"> <h3 class="text-align-center"><span style="color: rgb(0, 0, 0);">IPad</span></h3>
  931. </div>
  932. </div>
  933. <div class="dmRespCol small-12 u_1118744136 large-3 medium-3" id="1118744136"> <div class="u_1573757649 imageWidget align-center" data-element-type="image" data-widget-type="image" id="1573757649"> <a id="1158216190" file="false" class="" href="/smart-phone-repairs"><img src="https://lirp.cdn-website.com/f2b98c6b/dms3rep/multi/opt/smartphone2-1920w.png" alt="Smartphone Repairs" id="1855754015" class="" data-dm-image-path="https://irp.cdn-website.com/f2b98c6b/dms3rep/multi/smartphone2.png" onerror="handleImageLoadError(this)"/></a>
  934. </div>
  935. <div class="u_1654891110 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1654891110"> <h3 class="text-align-center"><span style="color: rgb(0, 0, 0);">Smartphone</span></h3>
  936. </div>
  937. </div>
  938. <div class="dmRespCol small-12 u_1408117495 large-3 medium-3" id="1408117495"> <div class="u_1025732456 imageWidget align-center" data-element-type="image" data-widget-type="image" id="1025732456"> <a id="1819090245" href="/apple-watch-repair" file="false"><img src="https://lirp.cdn-website.com/f2b98c6b/dms3rep/multi/opt/smartwatch-1920w.png" alt="Apple Watch Repairs" id="1563065588" class="" data-dm-image-path="https://irp.cdn-website.com/f2b98c6b/dms3rep/multi/smartwatch.png" onerror="handleImageLoadError(this)"/></a>
  939. </div>
  940. <div class="u_1593040476 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1593040476"> <h3 class="text-align-center"><a href="/repair" runtime_url="/repair" type="page" style="">A</a><a href="/repair" runtime_url="/repair" type="page">pple Watch</a><span style=""><span class="ql-cursor"></span></span></h3>
  941. </div>
  942. </div>
  943. </div>
  944. </div>
  945. </div>
  946. </div>
  947. </div>
  948. <div class="dmRespRow u_1602013557 hasBackgroundOverlay fullBleedChanged fullBleedMode" id="1602013557"> <div class="dmRespColsWrapper" id="1080076494"> <div class="dmRespCol large-12 medium-12 small-12" id="1557442221"> <div class="dmRespRow u_1202171239" id="1202171239"> <div class="dmRespColsWrapper" id="1609137710"> <div class="u_1143309415 dmRespCol small-12 large-2 medium-2 hide-for-small" id="1143309415"> <div data-element-type="spacer" class="dmSpacer" id="1435412741"></div>
  949. </div>
  950. <div class="u_1374708555 dmRespCol small-12 large-8 medium-8" id="1374708555"> <div class="dmNewParagraph" data-element-type="paragraph" data-version="5" id="1118223392" style="transition: opacity 1s ease-in-out 0s;"> <h2 class="text-align-center"><span class="" style="display: unset; color: rgb(255, 255, 255);"><span style="display: unset; color: rgb(255, 255, 255);">Why Choose</span>
  951. </span><span style="display: unset; color: rgb(255, 255, 255); font-weight: bold;">Techpro</span><span style="display: unset; color: rgb(255, 255, 255);">?</span></h2>
  952. </div>
  953. <div class="u_1764878648 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1764878648" style="transition: opacity 1s ease-in-out 0s;"><p class="text-align-center"><span style="display: unset; color: rgb(255, 255, 255);">We understand the frustration of a broken device. Let us be the superheroes you need to bring your device back to life, expertly and in a timely manner.</span></p></div>
  954. </div>
  955. <div class="u_1150402611 dmRespCol small-12 large-2 medium-2 hide-for-small" id="1150402611"> <div data-element-type="spacer" class="dmSpacer" id="1411004489"></div>
  956. </div>
  957. </div>
  958. </div>
  959. </div>
  960. </div>
  961. </div>
  962. <div class="dmRespRow u_1312454157" id="1312454157"> <div class="dmRespColsWrapper" id="1143427347"> <div class="dmRespCol large-12 medium-12 small-12" id="1387253080"> <div class="dmRespRow u_1535853557" id="1535853557"> <div class="dmRespColsWrapper" id="1471783435"> <div class="u_1127639675 dmRespCol small-12 large-3 medium-3" id="1127639675"> <div class="u_1164306258 graphicWidget" data-element-type="graphic" data-widget-type="graphic" id="1164306258"> <svg version="1.1" id="1729730502" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewbox="0 0 330 330" style="enable-background:new 0 0 330 330;" xml:space="preserve" class="svg u_1729730502" data-icon-custom="true" data-icon-name="information (2).svg" data-hover-effect="none" alt="iphone repair lawrence ma"> <g> <path d="M165,0C74.019,0,0,74.02,0,165.001C0,255.982,74.019,330,165,330s165-74.018,165-164.999C330,74.02,255.981,0,165,0z
  963. M165,300c-74.44,0-135-60.56-135-134.999C30,90.562,90.56,30,165,30s135,60.562,135,135.001C300,239.44,239.439,300,165,300z"></path>
  964. <path d="M164.998,70c-11.026,0-19.996,8.976-19.996,20.009c0,11.023,8.97,19.991,19.996,19.991
  965. c11.026,0,19.996-8.968,19.996-19.991C184.994,78.976,176.024,70,164.998,70z"></path>
  966. <path d="M165,140c-8.284,0-15,6.716-15,15v90c0,8.284,6.716,15,15,15c8.284,0,15-6.716,15-15v-90C180,146.716,173.284,140,165,140z
  967. "></path>
  968. </g>
  969. <g></g>
  970. <g></g>
  971. <g></g>
  972. <g></g>
  973. <g></g>
  974. <g></g>
  975. <g></g>
  976. <g></g>
  977. <g></g>
  978. <g></g>
  979. <g></g>
  980. <g></g>
  981. <g></g>
  982. <g></g>
  983. <g></g>
  984. </svg>
  985. </div>
  986. <div class="u_1870999159 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1870999159"> <h3 class="text-align-left m-text-align-center"><span style="display: unset;">Free Diagnostic</span></h3>
  987. </div>
  988. <div class="dmNewParagraph" data-element-type="paragraph" data-version="5" id="1655694547"><p class="m-text-align-center"><span style="display: unset;">Save time and find out what's wrong with your device at no cost.</span></p></div>
  989. </div>
  990. <div class="u_1805278127 dmRespCol small-12 large-3 medium-3" id="1805278127"> <div class="u_1483359187 graphicWidget" data-element-type="graphic" data-widget-type="graphic" id="1483359187"> <svg version="1.1" id="1981529780" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewbox="0 0 486.825 486.825" style="enable-background:new 0 0 486.825 486.825;" xml:space="preserve" class="svg u_1981529780" data-hover-effect="none" data-icon-custom="true" data-icon-name="dollar-symbol (1).svg" alt="device repairs"> <g> <g> <path d="M208.113,11.25c-15-15-39.5-15-54.5,0l-68.3,68.4h191.2L208.113,11.25z"></path>
  991. <path d="M283.513,475.95c14.5,14.5,38.2,14.5,52.7,0l66.1-66.1h-184.9L283.513,475.95z"></path>
  992. <path d="M240.713,160.35c-46.6,0-84.4,37.8-84.4,84.4s37.8,84.4,84.4,84.4s84.4-37.8,84.4-84.4
  993. C325.212,198.15,287.413,160.35,240.713,160.35z M265.013,278.05c-3.7,4.5-8.5,7.5-14.1,9c-2.4,0.7-3.5,1.9-3.4,4.5
  994. c0.1,2.5,0,5,0,7.5c0,2.2-1.1,3.4-3.3,3.5c-2.7,0.1-5.4,0.1-8,0c-2.4,0-3.5-1.4-3.5-3.7c0-1.8,0-3.6-0.1-5.5c0-4-0.2-4.2-4-4.8
  995. c-4.9-0.8-9.8-1.9-14.3-4.1c-3.6-1.7-3.9-2.6-2.9-6.3c0.8-2.8,1.5-5.6,2.4-8.3c1-3.2,1.9-3.6,4.8-2.1c5,2.6,10.3,4.1,15.9,4.8
  996. c3.6,0.4,7.1,0.1,10.4-1.4c6.2-2.7,7.2-9.9,1.9-14.2c-1.8-1.5-3.8-2.6-5.9-3.5c-5.4-2.4-11.1-4.2-16.3-7.3c-8.3-5-13.6-11.8-13-22
  997. c0.7-11.5,7.2-18.6,17.7-22.5c4.3-1.6,4.4-1.5,4.4-6c0-1.5,0-3.1,0-4.6c0.1-3.4,0.7-4,4.1-4.1c1.1,0,2.1,0,3.2,0
  998. c7.3,0,7.3,0,7.3,7.2c0,5.1,0,5.2,5.1,6c3.9,0.6,7.6,1.8,11.3,3.4c2,0.9,2.7,2.3,2.1,4.4c-0.9,3.1-1.8,6.3-2.8,9.4
  999. c-0.9,2.9-1.9,3.4-4.7,2c-5.7-2.7-11.6-3.9-17.9-3.5c-1.6,0.1-3.2,0.3-4.8,1c-5.4,2.4-6.3,8.3-1.7,12c2.3,1.9,5,3.2,7.7,4.4
  1000. c4.8,2,9.6,3.9,14.1,6.4C271.312,247.55,275.212,265.65,265.013,278.05z"></path>
  1001. <circle cx="118.013" cy="249.05" r="23.4"></circle>
  1002. <circle cx="363.613" cy="249.05" r="23.4"></circle>
  1003. <path d="M427.212,107.15h-367.6c-21.2,0-38.5,17.3-38.5,38.5v198.2c0,21.2,17.3,38.5,38.5,38.5h367.6c21.2,0,38.5-17.3,38.5-38.5
  1004. v-198.2C465.712,124.45,448.413,107.15,427.212,107.15z M432.812,303.95c-2.2-0.4-4.5-0.6-6.9-0.6c-21.5,0-39,17.5-39,39
  1005. c0,2.5,0.2,4.8,0.7,7.2h-285.3c0.2-1.6,0.3-3.2,0.3-4.8c0-21.5-17.5-39-39-39c-3.3,0-6.6,0.4-9.6,1.2v-119.6
  1006. c3.1,0.8,6.3,1.2,9.6,1.2c21.5,0,39-17.5,39-39c0-3.3-0.4-6.5-1.2-9.5h286.2c-0.4,2.3-0.7,4.7-0.7,7.2c0,21.5,17.5,39,39,39
  1007. c2.3,0,4.6-0.2,6.9-0.6V303.95z"></path>
  1008. </g>
  1009. </g>
  1010. <g></g>
  1011. <g></g>
  1012. <g></g>
  1013. <g></g>
  1014. <g></g>
  1015. <g></g>
  1016. <g></g>
  1017. <g></g>
  1018. <g></g>
  1019. <g></g>
  1020. <g></g>
  1021. <g></g>
  1022. <g></g>
  1023. <g></g>
  1024. <g></g>
  1025. </svg>
  1026. </div>
  1027. <div class="u_1385751432 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1385751432"> <h3 class="m-text-align-center text-align-left"><span style="display: unset;">Price Match</span></h3>
  1028. </div>
  1029. <div class="dmNewParagraph" data-element-type="paragraph" data-version="5" id="1637636180"><p class="m-text-align-center"><span style="display: unset;">Get the lowest price for your repair!. Take a look at our price match policy.</span></p></div>
  1030. </div>
  1031. <div class="u_1380104468 dmRespCol small-12 large-3 medium-3" id="1380104468"> <div class="u_1964666258 graphicWidget" data-element-type="graphic" data-widget-type="graphic" id="1964666258"> <svg version="1.1" id="1004570088" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewbox="0 0 426.667 426.667" style="enable-background:new 0 0 426.667 426.667;" xml:space="preserve" class="svg u_1004570088" data-hover-effect="none" data-icon-custom="true" data-icon-name="clock (2).svg" alt="iphone repair in lawrence ma"> <g> <g> <path d="M213.227,0C95.36,0,0,95.467,0,213.333s95.36,213.333,213.227,213.333s213.44-95.467,213.44-213.333S331.093,0,213.227,0z
  1032. M213.333,384c-94.293,0-170.667-76.373-170.667-170.667S119.04,42.667,213.333,42.667S384,119.04,384,213.333
  1033. S307.627,384,213.333,384z"></path>
  1034. </g>
  1035. </g>
  1036. <g> <g> <polygon points="224,218.667 224,106.667 192,106.667 192,234.667 303.893,301.867 320,275.627 "></polygon>
  1037. </g>
  1038. </g>
  1039. <g></g>
  1040. <g></g>
  1041. <g></g>
  1042. <g></g>
  1043. <g></g>
  1044. <g></g>
  1045. <g></g>
  1046. <g></g>
  1047. <g></g>
  1048. <g></g>
  1049. <g></g>
  1050. <g></g>
  1051. <g></g>
  1052. <g></g>
  1053. <g></g>
  1054. </svg>
  1055. </div>
  1056. <div class="u_1836718663 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1836718663"> <h3 class="m-text-align-center text-align-left"><span style="display: unset;">Quick Turnaround</span></h3>
  1057. </div>
  1058. <div class="dmNewParagraph" data-element-type="paragraph" data-version="5" id="1333767657"><p class="m-text-align-center"><span style="display: unset;">Most of our repairs can be done in less than 30 minutes.</span></p></div>
  1059. </div>
  1060. <div class="u_1766287384 dmRespCol small-12 large-3 medium-3" id="1766287384"> <div class="u_1719252771 graphicWidget" data-element-type="graphic" data-widget-type="graphic" id="1719252771"> <svg id="1826036572" enable-background="new 0 0 512 512" height="512" viewbox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg" class="svg u_1826036572" data-hover-effect="none" data-icon-custom="true" data-icon-name="shield (2).svg" alt="Repairs"> <g> <path d="m481.854 119.657c-.28-5.394-3.44-10.221-8.271-12.636l-210.875-105.438c-4.223-2.111-9.193-2.111-13.416 0l-210.875 105.438c-4.831 2.415-7.991 7.242-8.271 12.636-.16 3.07-3.628 76.168 21.273 161.035 14.734 50.214 36.406 94.071 64.414 130.354 35.295 45.722 80.659 79.357 134.832 99.973 1.719.653 3.526.98 5.335.98s3.616-.327 5.335-.98c54.173-20.615 99.537-54.251 134.832-99.973 28.008-36.283 49.68-80.141 64.414-130.354 24.901-84.867 21.433-157.965 21.273-161.035zm-50.304 153.419c-30.538 103.343-89.584 173.231-175.55 207.816-85.966-34.585-145.013-104.473-175.55-207.816-18.868-63.854-20.604-121.982-20.516-143.272l196.066-98.034 196.065 98.032c.089 21.301-1.649 79.425-20.515 143.274z"></path>
  1061. <path d="m412.927 143.775-150.22-75.109c-4.223-2.111-9.193-2.11-13.416 0l-150.218 75.109c-5.384 2.691-8.638 8.341-8.263 14.349 1.63 26.162 6.272 66.288 19.133 108.871 25.712 85.138 72.616 145.052 139.408 178.076 2.095 1.036 4.372 1.554 6.648 1.554s4.554-.518 6.648-1.554c66.792-33.024 113.696-92.938 139.408-178.076 12.859-42.579 17.503-82.706 19.134-108.87.376-6.008-2.878-11.659-8.262-14.35zm-39.589 114.546c-22.335 73.956-61.793 126.543-117.338 156.427-55.545-29.884-95.003-82.471-117.338-156.427-10.518-34.825-15.165-67.992-17.189-92.205l134.527-67.264 134.528 67.264c-2.026 24.215-6.674 57.383-17.19 92.205z"></path>
  1062. </g>
  1063. </svg>
  1064. </div>
  1065. <div class="u_1190833166 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1190833166"> <h3 class="m-text-align-center text-align-left"><span style="display: unset;">Lifetime Warranty</span></h3>
  1066. </div>
  1067. <div class="dmNewParagraph" data-element-type="paragraph" data-version="5" id="1194070471"><p class="m-text-align-center"><span style="display: unset;">Your repair is secure! .Apply terms and conditions.</span></p></div>
  1068. </div>
  1069. </div>
  1070. </div>
  1071. </div>
  1072. </div>
  1073. </div>
  1074. <div class="dmRespRow" id="1088171430"> <div class="dmRespColsWrapper" id="1959504026"> <div class="dmRespCol large-12 medium-12 small-12" id="1252795380"> <div class="dmNewParagraph" data-element-type="paragraph" data-version="5" id="1144656563" style="transition: opacity 1s ease-in-out;"> <h2 class="text-align-center" style="line-height: 1.3em;"><span style="color: rgb(238, 188, 12);">&nbsp;5★<br/>Reviews On Google</span></h2>
  1075. <p><span style=""><br/></span></p></div>
  1076. <div class="widget-f6ba52 u_1751186511 dmCustomWidget" data-lazy-load="false" data-title="" id="1751186511" dmle_extension="custom_extension" data-element-type="custom_extension" icon="false" surround="false" data-widget-id="f6ba52a1b66d4987903b87fdb476a9ce" data-widget-version="259" data-widget-config="eyJwYWdpbmF0aW9uIjp0cnVlLCJhdXRvcGxheURlbGF5IjoiMzAwMCIsInNoYWRvdyI6dHJ1ZSwiZ3JpZE9wdGlvbnMiOm51bGwsInNsaWRlck9wdGlvbiI6bnVsbCwidGFibGV0UGFnZVNpemUiOiI2IiwiZ2VuZXJhbE9wdGlvbnMiOm51bGwsInR5cGUiOiJzbGlkZXIiLCJoZWFkZXJTZWN0aW9uIjpudWxsLCJjYXJkRGVza3RvcCI6IjMiLCJoaWRlSW1hZ2UiOmZhbHNlLCJuYXZpZ2F0aW9uIjp0cnVlLCJ0cmFuc1Jldmlld3MiOmZhbHNlLCJsb29wIjpmYWxzZSwic29ydEJ5IjoiZGVmYXVsdCIsIm1vYmlsZVNsaWRlc1BlclZpZXciOiIxIiwibG93ZXN0UmF0aW5nIjoiMyIsInN0YXJDb2xvciI6IiNmZmJiMDYiLCJkZXNrdG9wUGFnZVNpemUiOiI2IiwiaGlkZUhlYWRlciI6bnVsbCwiaGlkZUVtcHR5UmV2aWV3IjpmYWxzZSwiYmFsbG9uQmFja2dyb3VuZCI6IiNmNWY1ZjUiLCJjYXJkTW9iaWxlIjoiMSIsInBhZ2luYXRpb25BcnJvdyI6bnVsbCwiZGVza3RvcFNsaWRlc1BlclZpZXciOiIzIiwicGFnaW5hdGlvbk9wdGlvbiI6bnVsbCwic2xpZGVyT3B0aW9ucyI6bnVsbCwiYXV0b3BsYXkiOnRydWUsIm1vYmlsZVBhZ2VTaXplIjoiMyIsImNhcmRUYWJsZXQiOiIzIiwibGF5b3V0IjoiY2xhc3NpYyIsInRhYmxldFNsaWRlc1BlclZpZXciOiIyIiwic2xpZGVyU2VjdGlvbiI6bnVsbH0="> <div class="widget-Loader-Container"> <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 100 100"> <circle class="one" cx="50" cy="50" r="25"></circle>
  1077. <circle class="two" cx="50" cy="50" r="25"></circle>
  1078. </svg>
  1079. </div>
  1080. <div class="gr-Main-Container" style="display:none;"> <div class="gr-Header-Section"> <div class="gr-Title-Column"> <div class="gr-Image-Wrapper"><img src="https://googlereviews.api-files.com/admin/src/images/google.png" alt="Google Logo" onerror="handleImageLoadError(this)"/> <span>Rating</span>
  1081. </div>
  1082. <div class="gr-Title-Ratings"></div>
  1083. </div>
  1084. <div class="gr-Button-Column"></div>
  1085. </div>
  1086. <div class="swiper-wrapper"><!-- APPEND REVIEWS --></div>
  1087. </div>
  1088. </div>
  1089. </div>
  1090. </div>
  1091. </div>
  1092. <div class="dmRespRow u_1478504697" id="1478504697"> <div class="dmRespColsWrapper" id="1139415423"> <div class="dmRespCol small-12 large-6 medium-6 u_1008981389" id="1008981389"> <div data-element-type="spacer" class="u_1265859096 dmSpacer hide-for-small hide-for-medium" id="1265859096"></div>
  1093. <div class="dmNewParagraph" data-element-type="paragraph" data-version="5" id="1479386397"> <h2 class="text-align-center"><span style="color: rgb(238, 188, 12);">iPhone Repair in Lowell Ma</span></h2>
  1094. </div>
  1095. <div class="dmRespRow u_1808075999" id="1808075999" mode="2"> <div class="dmRespColsWrapper" id="1958132055"> <div class="dmRespCol large-6 medium-6 u_1300066198 small-6" id="1300066198"> <div class="u_1602866420 dmDividerWrapper clearfix" data-element-type="dDividerId" data-layout="divider-style-1" data-widget-version="2" id="1602866420"><hr class="dmDivider" style="border-width:2px; border-top-style:solid; color:grey;" id="1466353446"/></div>
  1096. </div>
  1097. <div class="dmRespCol large-6 medium-6 u_1151693751 small-6" id="1151693751"> <div class="u_1184025557 dmDividerWrapper clearfix" data-element-type="dDividerId" data-layout="divider-style-1" data-widget-version="2" id="1184025557"><hr class="dmDivider" style="border-width:2px; border-top-style:solid; color:grey;" id="1864278126"/></div>
  1098. </div>
  1099. </div>
  1100. </div>
  1101. <div class="dmNewParagraph u_1337409381" data-element-type="paragraph" data-version="5" id="1337409381" style="transition: none 0s ease 0s; text-align: left; display: block;"><p><span style="display: unset;">If you're in Lowell, MA and you need a quick and reliable cellphone repair, look no further than Techpro Cellphone Repair. We specialize in repairing all types of smartphones, including iPhones, Samsungs, LGs, and more. Our experienced technicians can diagnose and fix common problems such as cracked screens, battery issues, and water damage.</span></p><p><span style="display: unset;">In addition to cellphone repair, we also offer iPad repair services. Whether your iPad has a broken screen, a malfunctioning battery, or a charging issue, our technicians have the skills and tools to fix it quickly and affordably. We use only high-quality parts and offer a warranty on all of our repairs, so you can trust that your device is in good hands with us.</span></p><p><span style="display: unset;">If you're specifically in need of an iPhone screen repair, we've got you covered. We understand that a cracked or shattered screen can be frustrating and inconvenient, so we offer fast and affordable screen repairs for all iPhone models. We use only the highest quality replacement screens, so you can trust that your repaired iPhone will look and function like new.</span></p><p><span style="display: unset;">At Techpro Cellphone Repair, we pride ourselves on our exceptional customer service and fast turnaround times. We know that your cellphone and other devices are essential to your daily life, so we work hard to get them back to you as quickly as possible. Most repairs can be completed in under an hour, so you can get back to your day with minimal disruption.</span></p><p><span style="display: unset;">Don't let a broken phone or tablet ruin your day &ndash; bring it to Techpro Cellphone Repair in Lowell, MA and let our experienced technicians take care of it for you. We offer competitive pricing, high-quality repairs, and excellent customer service &ndash; all backed by our warranty. Visit us today and experience the Techpro difference!</span></p><p class="text-align-center"><br/></p></div>
  1102. </div>
  1103. <div class="dmRespCol large-6 medium-6 small-12" id="1427088434"> <div class="u_1721811065 dmPhotoGallery newPhotoGallery dmPhotoGalleryResp" galleryoptionsparams="{thumbnailsPerRow: 3, rowsToShow: 3, imageScaleMethod: true}" data-desktop-layout="square" data-desktop-columns="1" data-element-type="dPhotoGalleryId" data-desktop-text-layout="over" id="1721811065" data-placeholder="false" data-link-gallery="true"> <ul class="dmPhotoGalleryHolder clearfix gallery shadowEffectToChildren gallery4inArow" id="1203474135"> <li class="photoGalleryThumbs" id="1476458926"> <div class="image-container" id="1384738844"> <a data-dm-multisize-attr="href" data-image-url="https://irp.cdn-website.com/f2b98c6b/dms3rep/multi/img1.jpg" id="1549001653" class="u_1549001653"><img irh="" irw="" alt="iphone repair services" data-src="https://lirp.cdn-website.com/f2b98c6b/dms3rep/multi/opt/img1-1920w.jpg" id="1497488661" class="" onerror="handleImageLoadError(this)"/></a>
  1104. </div>
  1105. <div class="caption-container" style="display:none" id="1338549338"> <span class="caption-inner" id="1946522886"> <a class="caption-button dmWidget clearfix" id="1806003798"> <span class="iconBg" id="1310392968"> <span class="icon hasFontIcon icon-star" id="1716092711"></span>
  1106. </span>
  1107. <span class="text" id="1869602989">Button</span>
  1108. </a>
  1109. </span>
  1110. </div>
  1111. </li>
  1112. </ul>
  1113. <div class="photoGalleryViewAll link" isall="true" data-viewall="View more" data-viewless="View less" style="display:none;" id="1123749022"></div>
  1114. </div>
  1115. </div>
  1116. </div>
  1117. </div>
  1118. <div class="dmRespRow u_1770210918" id="1770210918"> <div class="dmRespColsWrapper" id="1574542182"> <div class="dmRespCol large-12 medium-12 small-12" id="1324112185"> <div class="dmNewParagraph" data-element-type="paragraph" data-version="5" id="1646573750"> <h2 class="text-align-center"><span style="display: unset; font-weight: bold;">Need a Repair Service? Contact Us Now!</span></h2>
  1119. </div>
  1120. <div class="dmNewParagraph" data-element-type="paragraph" data-version="5" id="1979391423" style="transition: opacity 1s ease-in-out 0s;"><p class="text-align-center"><span style="display: unset; color: rgb(0, 0, 0);">Our expert technicians will contact you to schedule an appointment for your repair.</span></p></div>
  1121. <a data-display-type="block" class="u_1343569551 align-center dmButtonLink dmWidget dmWwr default dmOnlyButton dmDefaultGradient" file="false" href="/contact-us" data-element-type="dButtonLinkId" id="1343569551"> <span class="iconBg" id="1767354644"> <span class="icon hasFontIcon icon-star" id="1460056742"></span>
  1122. </span>
  1123. <span class="text" id="1349890125">Contact Us</span>
  1124. </a>
  1125. </div>
  1126. </div>
  1127. </div>
  1128. <div class="dmRespRow u_1570063542" id="1570063542"> <div class="dmRespColsWrapper" id="1309266391"> <div class="dmRespCol large-12 medium-12 small-12" id="1275447366"> <div class="dmRespRow u_1941273293" id="1941273293"> <div class="dmRespColsWrapper" id="1065476893"> <div class="u_1162155310 dmRespCol small-12 large-5 medium-5" id="1162155310"> <div class="u_1028618399 default dmShape" id="1028618399" dmle_extension="shape" data-element-type="shape" text-position="center_center" wr="true" icon="true" surround="true" adwords="" shape-text="" shape-description="" shape-image="" alt-text="" tooltip="" shape-type="shape9" shape-color="rgba(237,49,49,1)" border-color-shape="" overlay-color="#ffffff" image-position="xMidYMid" shape-keep-proportion="true" shape-layout="layout1" border-width-shape="0" overlay-opacity="50" link-attrs="e30="> <a data-link-id="shape-link-container" id="1594537383"> <svg width="100%" height="100%" viewbox="0.00 0.00 100 100" id="1513811503"> <g> <path d="M7.4,30.2c0.3-3.5,1.4-6.8,3-9.9c3.5-6.4,10.3-10.4,17.2-12.8C35.2,4.9,44,3.9,50.9,8c5.4,3.1,8.7,8.7,12.5,13.5 c4.2,5.4,9.7,9.4,15.7,12.6c4.8,2.6,10,5,14.3,8.6c3.3,2.6,5.6,6.3,6.5,10.4c0.5,4.1-0.4,8.4-2.6,11.9 c-8.9,15.5-28.9,24.3-45.6,28c-12.7,2.8-27.6,2.7-39.3-3.8C6.1,85.7,0.9,79.7,0.1,72.5C-0.6,66,2.3,60.4,4.5,54.5 C7.5,46.8,6.3,38.2,7.4,30.2z" style="fill:rgba(237,49,49,1);"></path>
  1129. </g>
  1130. </svg>
  1131. </a>
  1132. </div>
  1133. <div class="u_1753744295 default dmShape" id="1753744295" dmle_extension="shape" data-element-type="shape" text-position="center_center" wr="true" icon="true" surround="true" adwords="" shape-text="" shape-description="" shape-image="https://irp.cdn-website.com/f2b98c6b/dms3rep/multi/img2.jpg" alt-text="Tablet Repair Services" tooltip="" shape-type="shape11" shape-color="black" border-color-shape="" overlay-color="#ffffff" image-position="xMidYMid" shape-keep-proportion="true" shape-layout="layout1" border-width-shape="0" overlay-opacity="50" link-attrs="e30="> <a data-link-id="shape-link-container" id="1032336443"> <svg width="100%" height="100%" viewbox="0.00 0.00 100 100" id="1722535329"> <g> <clippath id="shape-1753744295"> <path d="M40.8,3.7c13-5.7,30-5.3,40.2,4.7c4.2,4.1,6.9,9.6,8.4,15.2c3.3,12.1,4.3,24.6,3,37.1C91.3,71,88.7,84.5,81.3,92.3 c-10.6,11.2-26.6,8.5-39.3,2.5c-5.2-2.5-10.2-5.4-14.9-8.7c-9-6.2-16.5-13.7-19.1-24.6C5.6,51.7,7.9,41.7,12.6,33 C17.5,24,24,16,31.7,9.3C34.5,7,37.5,5.1,40.8,3.7z"></path>
  1134. </clippath>
  1135. <image clip-path="url(#shape-1753744295)" width="100%" height="100%" xlink:href="https://lirp.cdn-website.com/f2b98c6b/dms3rep/multi/opt/img2-1920w.jpg" alt="Tablet Repair Services" preserveaspectratio="xMidYMid slice"></image>
  1136. <!-- In order to add stroke on image, need to create new shape without fill just with stroke --></g>
  1137. </svg>
  1138. </a>
  1139. </div>
  1140. </div>
  1141. <div class="u_1555089248 dmRespCol small-12 large-7 medium-7" id="1555089248"> <div class="u_1655767013 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1655767013" style="transition: opacity 1s ease-in-out 0s;"> <h2 class="text-align-center"><span class="" style="display: unset; color: rgb(238, 188, 12);"><span style="display: unset; color: rgb(238, 188, 12);">Happy</span>
  1142. </span><span style="display: unset; font-weight: bold; color: rgb(238, 188, 12);">Customers</span></h2>
  1143. </div>
  1144. <div class="dmRespRow u_1950053895" id="1950053895" mode="2"> <div class="dmRespColsWrapper" id="1321356843"> <div class="dmRespCol large-6 medium-6 u_1886976705 small-6" id="1886976705"> <div class="u_1998900197 dmDividerWrapper clearfix" data-element-type="dDividerId" data-layout="divider-style-1" data-widget-version="2" id="1998900197"><hr class="dmDivider" style="border-width:2px; border-top-style:solid; color:grey;" id="1823901914"/></div>
  1145. </div>
  1146. <div class="dmRespCol large-6 medium-6 u_1575212739 small-6" id="1575212739"> <div class="u_1621978307 dmDividerWrapper clearfix" data-element-type="dDividerId" data-layout="divider-style-1" data-widget-version="2" id="1621978307"><hr class="dmDivider" style="border-width:2px; border-top-style:solid; color:grey;" id="1495840667"/></div>
  1147. </div>
  1148. </div>
  1149. </div>
  1150. <div class="u_1225525031 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1225525031"><p class="text-align-center"><span class="" style="color: rgb(238, 188, 12); display: unset;"><span style="color: rgb(238, 188, 12); display: unset;">Our main purpose is to give you the best service. That's why in Techpro we strive to be experts in everything about repairs and accessories, from</span>
  1151. </span><a href="/iphone-repairs" runtime_url="/iphone-repairs" type="page" style="color: rgb(238, 188, 12); display: unset;">iPhone</a><span class="" style="color: rgb(238, 188, 12); display: unset;"> <span style="color: rgb(238, 188, 12); display: unset;">screen repairs to any brand water damage repairs. And we have achieved it! Repair is what we do, but the reason to do it is our customers.</span></span></p></div>
  1152. <div class="dmRespRow u_1763517822" id="1763517822"> <div class="dmRespColsWrapper" id="1247552609"> <div class="dmRespCol small-12 u_1217405177 medium-6 large-6" id="1217405177"> <div class="dmNewParagraph" data-element-type="paragraph" data-version="5" id="1309847290" style="transition: opacity 1s ease-in-out 0s;;display: block  !important"><p class="text-align-center m-size-28 size-35" style="line-height: 1;"><span style="font-weight: bold; display: unset;" class="m-font-size-28 font-size-35">70k+</span></p></div>
  1153. <div class="u_1690781013 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1690781013"> <h3 class="text-align-center"><span style="display: unset; color: rgb(250, 213, 64);">Repairs</span></h3>
  1154. </div>
  1155. </div>
  1156. <div class="dmRespCol small-12 u_1179562206 medium-6 large-6" id="1179562206"> <div class="dmNewParagraph" data-element-type="paragraph" data-version="5" id="1457174390" style="transition: opacity 1s ease-in-out 0s;;display: block  !important"><p class="m-size-28 text-align-center size-35" style="line-height: 1;"><span style="display: unset; font-weight: bold;" class="font-size-35 m-font-size-28">100k+</span></p></div>
  1157. <div class="u_1832645776 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1832645776"> <h3 class="text-align-center"><span style="display: unset; color: rgb(250, 213, 64);">Happy Customer</span><span style="display: unset;">s</span></h3>
  1158. </div>
  1159. </div>
  1160. </div>
  1161. </div>
  1162. </div>
  1163. </div>
  1164. </div>
  1165. <div class="u_1875113411 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1875113411" style="transition: none 0s ease 0s; text-align: left; display: block;"> <h2 class="text-align-center" style="line-height: 1.15em;"><span style="font-weight: bold; text-transform: none; color: rgb(238, 188, 12);">What Our Customers Are Saying</span><span style=""><br/></span></h2>
  1166. </div>
  1167. <div class="dmRespRow u_1193762855" id="1193762855"> <div class="dmRespColsWrapper" id="1850035394"> <div class="u_1075337926 dmRespCol small-12 medium-6 large-6" id="1075337926"> <div class="u_1783376233 graphicWidget" data-element-type="graphic" data-widget-type="graphic" id="1783376233"> <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 1664 1792" id="1600506602" class="svg u_1600506602" data-icon-name="fa-quote-left" alt="Smartphone Repair Services"> <path fill="inherit" d="M768 960v384q0 80-56 136t-136 56h-384q-80 0-136-56t-56-136v-704q0-104 40.5-198.5t109.5-163.5 163.5-109.5 198.5-40.5h64q26 0 45 19t19 45v128q0 26-19 45t-45 19h-64q-106 0-181 75t-75 181v32q0 40 28 68t68 28h224q80 0 136 56t56 136zM1664 960v384q0 80-56 136t-136 56h-384q-80 0-136-56t-56-136v-704q0-104 40.5-198.5t109.5-163.5 163.5-109.5 198.5-40.5h64q26 0 45 19t19 45v128q0 26-19 45t-45 19h-64q-106 0-181 75t-75 181v32q0 40 28 68t68 28h224q80 0 136 56t56 136z"></path>
  1168. </svg>
  1169. </div>
  1170. <div class="u_1539024581 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1539024581"><p class="m-text-align-center"><span style="display: unset; color: rgb(0, 0, 0);">I came in with an iPhone that was unusable and had a cracked screen. He looked at it, said it would take 20 minutes, and fixed it in 10. Great friendly service and an extremely capable young man that you can trust your most valuable of devices with. So glad I found this store and I highly recommend it!</span></p></div>
  1171. </div>
  1172. <div class="u_1428358030 dmRespCol small-12 medium-6 large-6" id="1428358030"> <div class="u_1007182810 graphicWidget" data-element-type="graphic" data-widget-type="graphic" id="1007182810"> <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 1664 1792" id="1972979117" class="svg u_1972979117" data-icon-name="fa-quote-left" alt="Smartphone\Tablet Repair Services"> <path fill="inherit" d="M768 960v384q0 80-56 136t-136 56h-384q-80 0-136-56t-56-136v-704q0-104 40.5-198.5t109.5-163.5 163.5-109.5 198.5-40.5h64q26 0 45 19t19 45v128q0 26-19 45t-45 19h-64q-106 0-181 75t-75 181v32q0 40 28 68t68 28h224q80 0 136 56t56 136zM1664 960v384q0 80-56 136t-136 56h-384q-80 0-136-56t-56-136v-704q0-104 40.5-198.5t109.5-163.5 163.5-109.5 198.5-40.5h64q26 0 45 19t19 45v128q0 26-19 45t-45 19h-64q-106 0-181 75t-75 181v32q0 40 28 68t68 28h224q80 0 136 56t56 136z"></path>
  1173. </svg>
  1174. </div>
  1175. <div class="u_1502843355 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1502843355"><p class="m-text-align-center"><span style="color: rgb(0, 0, 0);">Took my Iphone XR to get the cracked screen fixed and they were so nice and professional. I would definitely recommend taking your gear to if needs to be fixed.</span></p></div>
  1176. </div>
  1177. </div>
  1178. </div>
  1179. </div>
  1180. </div>
  1181. </div>
  1182. <div class="dmRespRow u_1837795173" id="1837795173"> <div class="dmRespColsWrapper" id="1165370154"> <div class="u_1606490421 dmRespCol small-12 large-7 medium-7" id="1606490421"> <div class="u_1320378410 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1320378410" style="transition: none 0s ease 0s; text-align: left; display: block;"> <h2 class="text-align-left m-text-align-center"><span style="display: initial;">Cellphone repair Expert</span></h2>
  1183. </div>
  1184. <div class="u_1513180946 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1513180946"><p class="m-text-align-center"><span style="display: initial; color: rgb(0, 0, 0);">With more than 12 years of experience we offers top-notch phone repair services that are not only fast and convenient but are priced affordably as well. We believe that getting your phone or device repaired should not cost you an arm and leg, which is why we follow a cost-conscious policy and offer the best rates in the market. Our main aim is to provide maximum customer satisfaction, which is why we offer superior customer service to our clients in order to resolve their queries in a time-efficient manner.&nbsp;</span></p></div>
  1185. </div>
  1186. <div class="u_1662092884 dmRespCol small-12 large-5 medium-5" id="1662092884"> <div class="u_1859005229 default dmShape" id="1859005229" dmle_extension="shape" data-element-type="shape" text-position="center_center" wr="true" icon="true" surround="true" adwords="" shape-text="" shape-description="" shape-image="" alt-text="" tooltip="" shape-type="shape9" shape-color="rgba(15,84,168,1)" border-color-shape="" overlay-color="#ffffff" image-position="xMidYMid" shape-keep-proportion="true" shape-layout="layout1" border-width-shape="0" overlay-opacity="50" link-attrs="e30="> <a data-link-id="shape-link-container" id="1045324755"> <svg width="100%" height="100%" viewbox="0.00 0.00 100 100" id="1687458246"> <g> <path d="M7.4,30.2c0.3-3.5,1.4-6.8,3-9.9c3.5-6.4,10.3-10.4,17.2-12.8C35.2,4.9,44,3.9,50.9,8c5.4,3.1,8.7,8.7,12.5,13.5 c4.2,5.4,9.7,9.4,15.7,12.6c4.8,2.6,10,5,14.3,8.6c3.3,2.6,5.6,6.3,6.5,10.4c0.5,4.1-0.4,8.4-2.6,11.9 c-8.9,15.5-28.9,24.3-45.6,28c-12.7,2.8-27.6,2.7-39.3-3.8C6.1,85.7,0.9,79.7,0.1,72.5C-0.6,66,2.3,60.4,4.5,54.5 C7.5,46.8,6.3,38.2,7.4,30.2z" style="fill:rgba(15,84,168,1);"></path>
  1187. </g>
  1188. </svg>
  1189. </a>
  1190. </div>
  1191. <div class="u_1794188023 default dmShape" id="1794188023" dmle_extension="shape" data-element-type="shape" text-position="center_center" wr="true" icon="true" surround="true" adwords="" shape-text="" shape-description="" shape-image="https://irp.cdn-website.com/f2b98c6b/dms3rep/multi/img3.jpg" alt-text="Cellphone repairs" tooltip="" shape-type="shape11" shape-color="black" border-color-shape="" overlay-color="#ffffff" image-position="xMidYMid" shape-keep-proportion="true" shape-layout="layout1" border-width-shape="0" overlay-opacity="50" link-attrs="e30="> <a data-link-id="shape-link-container" id="1448390842"> <svg width="100%" height="100%" viewbox="0.00 0.00 100 100" id="1118312014"> <g> <clippath id="shape-1794188023"> <path d="M40.8,3.7c13-5.7,30-5.3,40.2,4.7c4.2,4.1,6.9,9.6,8.4,15.2c3.3,12.1,4.3,24.6,3,37.1C91.3,71,88.7,84.5,81.3,92.3 c-10.6,11.2-26.6,8.5-39.3,2.5c-5.2-2.5-10.2-5.4-14.9-8.7c-9-6.2-16.5-13.7-19.1-24.6C5.6,51.7,7.9,41.7,12.6,33 C17.5,24,24,16,31.7,9.3C34.5,7,37.5,5.1,40.8,3.7z"></path>
  1192. </clippath>
  1193. <image clip-path="url(#shape-1794188023)" width="100%" height="100%" xlink:href="https://lirp.cdn-website.com/f2b98c6b/dms3rep/multi/opt/img3-1920w.jpg" alt="Cellphone repairs" preserveaspectratio="xMidYMid slice"></image>
  1194. <!-- In order to add stroke on image, need to create new shape without fill just with stroke --></g>
  1195. </svg>
  1196. </a>
  1197. </div>
  1198. </div>
  1199. </div>
  1200. </div>
  1201. <div class="dmRespRow u_pa_7549682" id="pa_7549682"> <div class="dmRespColsWrapper" id="1536888971"> <div class="dmRespCol large-12 medium-12 small-12" id="1042421050"> <div class="dmNewParagraph" data-element-type="paragraph" data-version="5" id="1683994112" style="transition: opacity 1s ease-in-out 0s;"> <h2 class="text-align-center"><span style="display: unset; color: rgb(238, 188, 12);">Get in Touch Today!</span></h2>
  1202. </div>
  1203. <div class="dmRespRow u_1997157891" id="1997157891" mode="2"> <div class="dmRespColsWrapper" id="1208096520"> <div class="dmRespCol large-6 medium-6 u_1299847483 small-6" id="1299847483"> <div class="u_1837974152 dmDividerWrapper clearfix" data-element-type="dDividerId" data-layout="divider-style-1" data-widget-version="2" id="1837974152"><hr class="dmDivider" style="border-width:2px; border-top-style:solid; color:grey;" id="1573301403"/></div>
  1204. </div>
  1205. <div class="dmRespCol large-6 medium-6 u_1085488154 small-6" id="1085488154"> <div class="u_1198801028 dmDividerWrapper clearfix" data-element-type="dDividerId" data-layout="divider-style-1" data-widget-version="2" id="1198801028"><hr class="dmDivider" style="border-width:2px; border-top-style:solid; color:grey;" id="1142867477"/></div>
  1206. </div>
  1207. </div>
  1208. </div>
  1209. <div class="dmRespRow u_1579353222" id="1579353222"> <div class="dmRespColsWrapper" id="1784440458"> <div class="dmRespCol small-12 large-6 medium-6 u_1937623768" id="1937623768"> <div class="dmRespRow u_1036704719" id="1036704719"> <div class="dmRespColsWrapper" id="1832557953"> <div class="u_1444222622 dmRespCol small-12 large-2 medium-2" id="1444222622"> <div class="u_1467995746 graphicWidget" data-element-type="graphic" data-widget-type="graphic" id="1467995746" data-layout="graphic-style-2"> <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 1408 1792" id="1041066089" class="svg u_1041066089" data-hover-effect="none" data-icon-name="fa-phone" alt="Phone Icon"> <path fill="inherit" d="M1408 1240q0 27-10 70.5t-21 68.5q-21 50-122 106-94 51-186 51-27 0-52.5-3.5t-57.5-12.5-47.5-14.5-55.5-20.5-49-18q-98-35-175-83-128-79-264.5-215.5t-215.5-264.5q-48-77-83-175-3-9-18-49t-20.5-55.5-14.5-47.5-12.5-57.5-3.5-52.5q0-92 51-186 56-101 106-122 25-11 68.5-21t70.5-10q14 0 21 3 18 6 53 76 11 19 30 54t35 63.5 31 53.5q3 4 17.5 25t21.5 35.5 7 28.5q0 20-28.5 50t-62 55-62 53-28.5 46q0 9 5 22.5t8.5 20.5 14 24 11.5 19q76 137 174 235t235 174q2 1 19 11.5t24 14 20.5 8.5 22.5 5q18 0 46-28.5t53-62 55-62 50-28.5q14 0 28.5 7t35.5 21.5 25 17.5q25 15 53.5 31t63.5 35 54 30q70 35 76 53 3 7 3 21z"></path>
  1210. </svg>
  1211. </div>
  1212. </div>
  1213. <div class="u_1215755800 dmRespCol small-12 large-10 medium-10" id="1215755800"> <div class="u_1195923680 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1195923680"> <h3 class="m-text-align-center m-size-20"><span style="color: rgb(255, 255, 255); display: unset;" m-font-size-set="true" class="m-font-size-20">Call Us:</span></h3>
  1214. </div>
  1215. <div class="u_1177783217 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1177783217" style="transition: none 0s ease 0s; text-align: left; display: block;"><p class="m-text-align-center size-19 m-size-15"><a href="tel:978-258-1127" target="_blank" type="call" style="color: rgb(255, 255, 255); display: unset;" class="font-size-19 m-font-size-15" m-font-size-set="true">978-8</a><span style="display: unset; color: rgb(255, 255, 255);" class="font-size-19 m-font-size-15" m-font-size-set="true">73-8426</span></p></div>
  1216. </div>
  1217. </div>
  1218. </div>
  1219. <div class="dmRespRow u_1754306492" id="1754306492"> <div class="dmRespColsWrapper" id="1056839098"> <div class="u_1738422262 dmRespCol small-12 large-2 medium-2" id="1738422262"> <div class="u_1261911101 graphicWidget" data-element-type="graphic" data-widget-type="graphic" id="1261911101" data-layout="graphic-style-2"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="1327258529" x="0px" y="0px" viewbox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve" width="512" height="512" class="svg u_1327258529" data-hover-effect="none" data-icon-custom="true" data-icon-name="location.svg" alt="Map Icon"> <g> <path d="M468.329,358.972c-7.263-3.989-16.382-1.336-20.369,5.924c-3.989,7.261-1.337,16.381,5.924,20.369   C471.752,395.081,482,405.963,482,415.121c0,11.201-15.87,28.561-60.413,43.694C377.582,473.767,318.775,482,256,482   s-121.582-8.233-165.587-23.185C45.87,443.683,30,426.322,30,415.121c0-9.158,10.248-20.04,28.116-29.857   c7.261-3.988,9.913-13.108,5.924-20.369c-3.989-7.26-13.106-9.913-20.369-5.924C23.749,369.916,0,388.542,0,415.121   c0,20.374,14.012,49.422,80.762,72.1C127.794,503.2,190.028,512,256,512s128.206-8.8,175.238-24.779   c66.75-22.678,80.762-51.726,80.762-72.1C512,388.542,488.251,369.916,468.329,358.972z"></path>
  1220. <path d="M142.752,437.13c30.45,8.602,70.669,13.34,113.248,13.34s82.798-4.737,113.248-13.34   c37.253-10.523,56.142-25.757,56.142-45.275c0-19.519-18.889-34.751-56.142-45.274c-8.27-2.336-17.264-4.385-26.826-6.133   c-5.193,8.972-10.634,18.207-16.323,27.708c10.584,1.588,20.521,3.535,29.545,5.834c27.416,6.983,37.432,14.844,39.491,17.866   c-2.06,3.023-12.074,10.884-39.49,17.866c-25.949,6.609-59.335,10.379-94.498,10.716c-1.703,0.126-3.419,0.197-5.147,0.197   c-1.729,0-3.444-0.071-5.148-0.197c-35.163-0.337-68.549-4.106-94.498-10.716c-27.416-6.982-37.431-14.844-39.49-17.866   c2.059-3.022,12.075-10.883,39.491-17.866c9.024-2.298,18.961-4.246,29.546-5.834c-5.689-9.5-11.13-18.737-16.323-27.708   c-9.562,1.749-18.557,3.797-26.826,6.133c-37.253,10.523-56.142,25.756-56.142,45.274   C86.61,411.373,105.499,426.606,142.752,437.13z"></path>
  1221. <path d="M256,390.634c13.353,0,25.482-6.804,32.448-18.201c48.81-79.857,106.992-185.103,106.992-232.994   C395.44,62.552,332.888,0,256,0S116.56,62.552,116.56,139.439c0,47.891,58.183,153.137,106.992,232.994   C230.518,383.83,242.648,390.634,256,390.634z M199.953,129.865c0-30.903,25.143-56.045,56.047-56.045s56.047,25.142,56.047,56.045   c0,30.904-25.143,56.046-56.047,56.046S199.953,160.77,199.953,129.865z"></path>
  1222. </g>
  1223. </svg>
  1224. </div>
  1225. </div>
  1226. <div class="u_1047373599 dmRespCol small-12 large-10 medium-10" id="1047373599"> <div class="u_1572108774 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1572108774"> <h3 class="m-text-align-center m-size-20"><span style="color: rgb(255, 255, 255); display: unset;" class="m-font-size-20" m-font-size-set="true">Our Location:</span></h3>
  1227. </div>
  1228. <div class="u_1855448741 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1855448741"><p class="m-text-align-center"><span style="color: rgb(255, 255, 255);">42 1/2 Mammoth rd</span></p><p class="m-text-align-center m-size-14 size-17"><span class="font-size-17 m-font-size-14" m-font-size-set="true" style="color: rgb(255, 255, 255); display: unset;">Lowell, MA 01854</span></p></div>
  1229. </div>
  1230. </div>
  1231. </div>
  1232. <div class="dmRespRow u_1056714108" id="1056714108"> <div class="dmRespColsWrapper" id="1255900327"> <div class="u_1277198941 dmRespCol small-12 large-2 medium-2" id="1277198941"> <div class="u_1483117302 graphicWidget" data-element-type="graphic" data-widget-type="graphic" id="1483117302" data-layout="graphic-style-2"> <svg height="512pt" viewbox="0 0 512 512" width="512pt" xmlns="http://www.w3.org/2000/svg" id="1475302055" class="svg u_1475302055" data-hover-effect="none" data-icon-custom="true" data-icon-name="clock (1).svg" alt="Timings Icon"> <path d="m256 0c-141.164062 0-256 114.835938-256 256s114.835938 256 256 256 256-114.835938 256-256-114.835938-256-256-256zm121.75 388.414062c-4.160156 4.160157-9.621094 6.253907-15.082031 6.253907-5.460938 0-10.925781-2.09375-15.082031-6.253907l-106.667969-106.664062c-4.011719-3.988281-6.25-9.410156-6.25-15.082031v-138.667969c0-11.796875 9.554687-21.332031 21.332031-21.332031s21.332031 9.535156 21.332031 21.332031v129.835938l100.417969 100.414062c8.339844 8.34375 8.339844 21.824219 0 30.164062zm0 0"></path>
  1233. </svg>
  1234. </div>
  1235. </div>
  1236. <div class="u_1799179209 dmRespCol small-12 large-10 medium-10" id="1799179209"> <div class="u_1096783969 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1096783969"> <h3 class="m-size-20 m-text-align-center"><span class="m-font-size-20" m-font-size-set="true" style="display: unset; color: rgb(255, 255, 255);">Timings:</span></h3>
  1237. </div>
  1238. <div class="u_1608313683 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1608313683"><p class="m-text-align-center m-size-14 size-17"><span style="display: unset; color: rgb(255, 255, 255);" class="font-size-17 m-font-size-14" m-font-size-set="true">Mon-Fri: 10:00 am - 6:00 pm</span></p></div>
  1239. </div>
  1240. </div>
  1241. </div>
  1242. </div>
  1243. <div class="dmRespCol large-6 medium-6 small-12 u_1696597772" id="1696597772"> <a class="default dmDefaultGradient align-center u_1527753262 dmMap dmWidget dmNoMark dmWwr" href="https://maps.google.com/maps?q=42+Mammoth+Rd%2C+Lowell%2C+MA%2C+United+States&sll=42.65058,-71.33262" contenteditable="false" onclick=";return dm_gaq_push_event('ClickToMap', 'Map',null,'f2b98c6b', this,{hitCallBack:true});" id="1527753262" dmle_extension="mapextension" data-element-type="mapextension" modedesktop="" data-popup-title="" localization_key_addresstodisplay="googleTranslate.Sgk5oAV.24" data-popup-description-visible="false" modemobile="" addresstodisplay="42 Mammoth Rd, Lowell, MA, United States" localization_key_geocompleteaddress="googleTranslate.Sgk5oAV.24" geocompleteaddress="42 Mammoth Rd, Lowell, MA, United States" data-popup-display-desktop="" data-popup-display-mobile="" data-display-type="block" layout="layout1" data-popup-title-visible="false" data-popup-description="" modetablet="map" wr="true" data-popup-show="false" icon="true" surround="true" adwords="" icon-name="icon-map-marker" provider="mapbox" lon="-71.33262" lat="42.65058"> <span class="iconBg" aria-hidden="true"> <span class="icon hasFontIcon icon-map-marker"></span>
  1244. </span>
  1245. <span class="text">Find Us</span>
  1246. </a>
  1247. <div class="default align-center inlineMap" data-type="inlineMap" data-lat="42.65058" data-lng="-71.33262" data-address="42 Mammoth Rd, Lowell, MA, United States" data-height="" data-msid="" data-mapurl="" data-lang="en" data-color-scheme="" data-zoom="13" data-layout="layout3" data-popup-display="" data-popup-show="false" data-popup-title="" data-popup-title-visible="false" data-popup-description="" data-popup-description-visible="false" id="1015692606" dmle_extension="mapextension" data-element-type="mapextension" modedesktop="map" localization_key_addresstodisplay="googleTranslate.Sgk5oAV.24" modemobile="map" addresstodisplay="42 Mammoth Rd, Lowell, MA, United States" localization_key_geocompleteaddress="googleTranslate.Sgk5oAV.24" geocompleteaddress="42 Mammoth Rd, Lowell, MA, United States" data-popup-display-desktop="" data-popup-display-mobile="" data-display-type="block" layout="layout3" dmmapsource="dm" localization_key_country_full="googleTranslate.i8QXBb5.237" modetablet="map" wr="true" localization_key_country="googleTranslate.zPY1Has.236" icon="true" surround="true" adwords="" icon-name="icon-map-marker" street="" city="" country="US" country_full="United States" state="" zip="" business="IPhone Solutions" provider="mapbox" lon="-71.33262" lat="42.65058" zoom="13"> <div class="mapContainer" style="height: 100%; width: 100%; overflow: hidden; z-index: 0;"></div>
  1248. </div>
  1249. </div>
  1250. </div>
  1251. </div>
  1252. </div>
  1253. </div>
  1254. </div>
  1255. </div>
  1256. </div>
  1257. </div>
  1258. </div>
  1259. <div class="dmFooterContainer"> <div id="fcontainer" class="f_hcontainer dmFooter p_hfcontainer"> <div dm:templateorder="250" class="dmFooterResp generalFooter" id="1943048428"> <div class="dmRespRow u_1720940618" id="1720940618"> <div class="dmRespColsWrapper" id="1199240917"> <div class="dmRespCol large-12 medium-12 small-12" id="1553091614"> <div class="dmNewParagraph" data-element-type="paragraph" data-version="5" id="1602652093" style="transition: opacity 1s ease-in-out 0s;"><p class="text-align-center"><span class="" style="color: rgb(0, 0, 0); font-weight: 800; text-transform: uppercase; display: unset;"><span style="color: rgb(0, 0, 0); font-weight: 800; text-transform: uppercase; display: unset;">PROVIDING CELL PHONE,Tablet,Apple Watch &amp; COMPUTER REPAIR IN</span>
  1260. </span><a href="/iphone-repairs" runtime_url="/iphone-repairs" type="page" style="color: rgb(255, 255, 255); font-weight: 800; text-transform: uppercase; display: unset;">Lowell</a><span style="color: rgb(0, 0, 0); font-weight: 800; text-transform: uppercase; display: unset;">,</span><a href="/cell-phone-repair-in-Dracut" runtime_url="/cell-phone-repair-in-Dracut" type="page" style="color: rgb(255, 255, 255); font-weight: 800; text-transform: uppercase; display: unset;">Dracut</a><span class="" style="color: rgb(0, 0, 0); font-weight: 800; text-transform: uppercase; display: unset;"><span style="color: rgb(0, 0, 0); font-weight: 800; text-transform: uppercase; display: unset;">,</span>
  1261. </span><a href="/cell-phone-repair-in-chelmsford" runtime_url="/cell-phone-repair-in-chelmsford" type="page" style="color: rgb(255, 255, 255); font-weight: 800; text-transform: uppercase; display: unset;">Chelmsford</a><span style="color: rgb(0, 0, 0); font-weight: 800; text-transform: uppercase; display: unset;">,</span><a href="/cellphone-repair-tewksbury" runtime_url="/cellphone-repair-tewksbury" type="page" style="color: rgb(255, 255, 255); font-weight: 800; text-transform: uppercase; display: unset;">Tewksbury</a><span style="color: rgb(0, 0, 0); font-weight: 800; text-transform: uppercase; display: unset;">,</span><a href="/cellphone-repair-billerica" runtime_url="/cellphone-repair-billerica" type="page" style="color: rgb(255, 255, 255); font-weight: 800; text-transform: uppercase; display: unset;">Billerica</a><span class="" style="color: rgb(0, 0, 0); font-weight: 800; text-transform: uppercase; display: unset;"> <span style="color: rgb(0, 0, 0); font-weight: 800; text-transform: uppercase; display: unset;">&amp;</span>
  1262. </span><a href="/pelham-nh" runtime_url="/pelham-nh" type="page" style="color: rgb(255, 255, 255); font-weight: 800; text-transform: uppercase; display: unset;">Pelham Nh</a></p></div>
  1263. </div>
  1264. </div>
  1265. </div>
  1266. <div class="dmRespRow u_1281367992" id="1281367992"> <div class="dmRespColsWrapper" id="1293092380"> <div class="u_1310474431 dmRespCol small-12 large-4 medium-4" id="1310474431"> <div class="dmNewParagraph" data-element-type="paragraph" data-version="5" id="1062367817"><p class="m-size-18 size-22"><span style="display: unset; font-weight: bold; color: rgb(238, 188, 12);" class="font-size-22 m-font-size-18">About Us</span></p></div>
  1267. <div class="dmDividerWrapper clearfix u_1728099659" data-element-type="dDividerId" data-layout="divider-style-1" data-widget-version="2" id="1728099659"><hr class="dmDivider" style="border-width:2px; border-top-style:solid; color:grey;" id="1170097331"/></div>
  1268. <div class="u_1598878958 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1598878958" style="transition: opacity 1s ease-in-out 0s;"><p class="m-size-15 size-15"><span style="color: rgb(238, 188, 12); display: unset;" class="m-font-size-15 font-size-15" m-font-size-set="true">At Techpro our technicians can repair and fix your device for several issues. Simply select your model below for more information about our services.</span></p></div>
  1269. <a data-display-type="block" class="u_1192880537 align-center dmButtonLink dmWidget dmWwr default dmOnlyButton dmDefaultGradient" file="false" href="/repair" data-element-type="dButtonLinkId" id="1192880537" data-buttonstyle="FLAT_ROUND_ICON" icon-name="dm-icon-edit"> <span class="iconBg" id="1550390117"> <span class="icon hasFontIconstar hasFontIcon dm-icon-edit" id="1454456305"></span>
  1270. </span>
  1271. <span class="text" id="1347326864">Book Now</span>
  1272. </a>
  1273. </div>
  1274. <div class="u_1991554378 dmRespCol small-12 large-3 medium-3" id="1991554378"> <div class="dmNewParagraph" data-element-type="paragraph" data-version="5" id="1089825599"><p class="m-size-18 size-22"><span style="color: rgb(238, 188, 12); font-weight: bold; display: unset;" class="m-font-size-18 font-size-22">Quick Links</span></p></div>
  1275. <div class="dmDividerWrapper clearfix u_1324729190" data-element-type="dDividerId" data-layout="divider-style-1" data-widget-version="2" id="1324729190"><hr class="dmDivider" style="border-width:2px; border-top-style:solid; color:grey;" id="1440984191"/></div>
  1276. <nav class="u_1854380597 effect-text-color unifiednav_vertical main-navigation unifiednav dmLinksMenu" role="navigation" layout-main="vertical_nav_layout_1" layout-sub="" data-show-vertical-sub-items="HOVER" id="1854380597" dmle_extension="onelinksmenu" data-element-type="onelinksmenu" data-logo-src="https://lirp.cdn-website.com/f2b98c6b/dms3rep/multi/opt/T-Logo-1920w.png" alt="" data-nav-structure="VERTICAL" wr="true" icon="true" surround="true" adwords="" navigation-id="unifiedNav"> <ul role="menubar" class="unifiednav__container  " data-auto="navigation-pages"> <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="0"> <a href="/iphone-repairs" class="unifiednav__item    " target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
  1277.           iPhone Repairs
  1278.          " data-auto="page-text-style">iPhone Repairs<span class="icon icon-angle-down"></span>
  1279. </span>
  1280. </a>
  1281. </li>
  1282. <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="0"> <a href="/ipad-repairs" class="unifiednav__item    " target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
  1283.           iPad Repairs
  1284.          " data-auto="page-text-style">iPad Repairs<span class="icon icon-angle-down"></span>
  1285. </span>
  1286. </a>
  1287. </li>
  1288. <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="0"> <a href="/apple-watch-repair" class="unifiednav__item    " target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
  1289.           Apple Watch
  1290.          " data-auto="page-text-style">Apple Watch<span class="icon icon-angle-down"></span>
  1291. </span>
  1292. </a>
  1293. </li>
  1294. <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="0"> <a href="/smart-phone-repairs" class="unifiednav__item    " target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
  1295.           Smartphone Repairs
  1296.          " data-auto="page-text-style">Smartphone Repairs<span class="icon icon-angle-down"></span>
  1297. </span>
  1298. </a>
  1299. </li>
  1300. <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="0"> <a href="/Laptop-repairs" class="unifiednav__item    " target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
  1301.           Laptop Repairs
  1302.          " data-auto="page-text-style">Laptop Repairs<span class="icon icon-angle-down"></span>
  1303. </span>
  1304. </a>
  1305. </li>
  1306. <li role="menuitem" class=" unifiednav__item-wrap " data-auto="more-pages" data-depth="0"> <a href="/contact-us" class="unifiednav__item    " target="" data-target-page-alias=""> <span class="nav-item-text " data-link-text="
  1307.         Contact Us
  1308.        " data-auto="page-text-style">Contact Us<span class="icon icon-angle-down"></span>
  1309. </span>
  1310. </a>
  1311. </li>
  1312. </ul>
  1313. </nav>
  1314. </div>
  1315. <div class="u_1318550783 dmRespCol small-12 large-3 medium-3" id="1318550783"> <div class="dmNewParagraph" data-element-type="paragraph" data-version="5" id="1921388056"><p class="m-size-18 size-22"><span style="display: unset; font-weight: bold; color: rgb(238, 188, 12);" class="font-size-22 m-font-size-18">Get In Touch</span></p></div>
  1316. <div class="dmDividerWrapper clearfix u_1997098660" data-element-type="dDividerId" data-layout="divider-style-1" data-widget-version="2" id="1997098660"><hr class="dmDivider" style="border-width:2px; border-top-style:solid; color:grey;" id="1638963152"/></div>
  1317. <div class="u_1229913742 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1229913742" style="transition: opacity 1s ease-in-out 0s;"><p class="m-size-15 size-15"><a href="tel:9788738426" runtime_url="tel:9788738426" type="call" class="font-size-15 m-font-size-15" m-font-size-set="true" style="display: unset; color: rgb(250, 213, 64);">978-873-8426</a></p></div>
  1318. <div class="u_1633493320 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1633493320" style="transition: opacity 1s ease-in-out 0s;"><p><span style="color: rgb(238, 188, 12);">42 1/2 Mammoth rd</span></p><p><span style="color: rgb(238, 188, 12);">Lowell Ma 01854</span></p></div>
  1319. <div class="u_1744581416 dmNewParagraph" data-element-type="paragraph" data-version="5" id="1744581416" style="transition: opacity 1s ease-in-out 0s;"><p class="m-size-15 size-15"><span style="display: unset; color: rgb(238, 188, 12);" class="m-font-size-15 font-size-15" m-font-size-set="true">Mon-Fri:</span></p><p class="m-size-15 size-15"><span style="display: unset; color: rgb(238, 188, 12);" class="m-font-size-15 font-size-15" m-font-size-set="true">10:00 am - 6:00 pm</span></p><p><span style=""><br/></span></p><p><span style=""><br/></span></p></div>
  1320. </div>
  1321. <div class="u_1538470858 dmRespCol small-12 large-2 medium-2" id="1538470858"> <div class="u_1220917445 align-center text-align-center dmSocialHub" id="1220917445" dmle_extension="social_hub" data-element-type="social_hub" extractelementdata="true" wr="true" networks="" icon="true" surround="true" adwords=""> <div class="socialHubWrapper"> <div class="socialHubInnerDiv "> <a href="https://facebook.com/techprolowell" target="_blank" dm_dont_rewrite_url="true" aria-label="facebook" onclick="dm_gaq_push_event &amp;&amp; dm_gaq_push_event(&apos;socialLink&apos;, &apos;click&apos;, &apos;Facebook&apos;)"> <span class="dmSocialFacebook dm-social-icons-facebook oneIcon socialHubIcon style9" aria-hidden="true" data-hover-effect=""></span>
  1322. </a>
  1323. <a href="https://instagram.com/techpro_lowell" target="_blank" dm_dont_rewrite_url="true" aria-label="instagram" onclick="dm_gaq_push_event &amp;&amp; dm_gaq_push_event(&apos;socialLink&apos;, &apos;click&apos;, &apos;Instagram&apos;)"> <span class="dmSocialInstagram dm-social-icons-instagram oneIcon socialHubIcon style9" aria-hidden="true" data-hover-effect=""></span>
  1324. </a>
  1325. <a href="https://www.tiktok.com/@techpro_repair" target="_blank" dm_dont_rewrite_url="true" aria-label="Tiktok" onclick="dm_gaq_push_event &amp;&amp; dm_gaq_push_event(&apos;socialLink&apos;, &apos;click&apos;, &apos;Custom1&apos;)"> <span class="dmSocialCustom1 oneIcon socialHubIcon style9" aria-hidden="true" data-hover-effect=""> <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 100 100"> <path d="M72.49,19.79h0A20.91,20.91,0,0,1,67.31,6H52.2V66.62A12.69,12.69,0,1,1,43.3,54V38.56a27.85,27.85,0,1,0,24,27.57V35.38a35.87,35.87,0,0,0,21,6.75V27A21.25,21.25,0,0,1,72.49,19.79Z"></path>
  1326. </svg>
  1327. </span>
  1328. </a>
  1329. <a href="mailto:techprorepair1@gmail.com" dm_dont_rewrite_url="true" aria-label="email" onclick="dm_gaq_push_event &amp;&amp; dm_gaq_push_event(&apos;socialLink&apos;, &apos;click&apos;, &apos;Email&apos;)"> <span class="dmSocialEmail dm-social-icons-email oneIcon socialHubIcon style9" aria-hidden="true" data-hover-effect=""></span>
  1330. </a>
  1331. </div>
  1332. </div>
  1333. </div>
  1334. </div>
  1335. </div>
  1336. </div>
  1337. <div class="dmRespRow u_1409030465" id="1409030465"> <div class="dmRespColsWrapper" id="1586574060"> <div class="dmRespCol large-12 medium-12 small-12" id="1095568764"> <div class="u_1784206836 widget-1f5975 dmCustomWidget" data-lazy-load="" data-title="" id="1784206836" dmle_extension="custom_extension" data-element-type="custom_extension" icon="false" surround="false" data-widget-id="1f5975986930429f819d4cd2154b5c4a" data-widget-version="22" data-widget-config="eyJjb3B5cmlnaHRUZXh0IjoiPHAgY2xhc3M9XCJydGVCbG9ja1wiPkFsbCBSaWdodHMgUmVzZXJ2ZWQgfFRlY2hwcm88L3A+In0="> <div class="copyright"> <div>&copy; 2024&nbsp;</div>
  1338. <div><p class="rteBlock">All Rights Reserved |Techpro</p></div>
  1339. </div>
  1340. </div>
  1341. </div>
  1342. </div>
  1343. </div>
  1344. </div>
  1345. <div id="1236746004" dmle_extension="powered_by" data-element-type="powered_by" icon="true" surround="false"></div>
  1346. </div>
  1347. </div>
  1348. </div>
  1349. </div>
  1350. </div>
  1351. </div>
  1352. </div>
  1353. </div>
  1354. </div>
  1355. </div>
  1356.  
  1357.    </div>
  1358. </div>
  1359. <!--  Add full CSS and Javascript before the close tag of the body if needed -->
  1360. <!-- ========= JS Section ========= -->
  1361.  
  1362. <script>
  1363.    var isWLR = false;
  1364.  
  1365.    window.customWidgetsFunctions = {};
  1366.    window.customWidgetsStrings = {};
  1367.    window.collections = {};
  1368.    window.currentLanguage = "ENGLISH"
  1369.    window.isSitePreview = false;
  1370. </script>
  1371. <script>
  1372.    window.customWidgetsFunctions["f6ba52a1b66d4987903b87fdb476a9ce~259"] = function (element, data, api) {
  1373.        let actionLink = "https://googlereviews.api-files.com/admin/php/actions.php";
  1374. let create = new Create();
  1375. let siteID = data.siteId;
  1376. let device = data.device;
  1377. let headerHeight = $('.dmHeaderContainer').css("position") == "fixed" ? parseFloat($('.dmHeaderContainer').outerHeight()) : 0;
  1378. let scrollTo = $(element).offset().top - headerHeight - 30;
  1379. let noReviewText = "No Reviews Yet!";
  1380. let starIcon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" style="width: 25px; height: auto;">
  1381.                    <path d="M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z" />
  1382.                </svg>`;
  1383.  
  1384. let reviewList = data.config.reviewList;
  1385. let emptyReview = data.config.emptyReview;
  1386. let hideEmptyReview = data.config.hideEmptyReview;
  1387. let hideImage = data.config.hideImage ? 'hideImage' : '';
  1388. let hideHeader = data.config.hideHeader;
  1389. let shadow = data.config.shadow;
  1390. let starColor = data.config.starColor;
  1391.  
  1392. let layout = data.config.layout;
  1393. let type = data.config.type;
  1394.  
  1395. // Filter Options
  1396. let lowestRating = parseFloat(data.config.lowestRating);
  1397. let sortBy = data.config.sortBy ? data.config.sortBy : "default";
  1398.  
  1399. let transReviews = data.config.transReviews;
  1400.  
  1401. // Slider Options
  1402. let autoplay = data.config.autoplay;
  1403. let autoplayDelay = data.config.autoplayDelay;
  1404. let loop = data.config.loop;
  1405. let pagination = data.config.pagination;
  1406. let navigation = data.config.navigation;
  1407. let desktopSlidesPerView = data.config.desktopSlidesPerView;
  1408. let tabletSlidesPerView = data.config.tabletSlidesPerView;
  1409. let mobileSlidesPerView = data.config.mobileSlidesPerView;
  1410.  
  1411. // Pagination Options
  1412. let desktopPageSize = parseInt(data.config.desktopPageSize);
  1413. let tabletPageSize = parseInt(data.config.tabletPageSize);
  1414. let mobilePageSize = parseInt(data.config.mobilePageSize);
  1415.  
  1416. // Card Options
  1417. let cardDesktop = data.config.cardDesktop
  1418. let cardTablet = data.config.cardTablet
  1419. let cardMobile = data.config.cardMobile
  1420.  
  1421. // List Options
  1422. let defaultShown = data.config.defaultShown;
  1423. let buttonAlignment = data.config.buttonAlignment;
  1424.  
  1425. // Read More
  1426. let desktopCollapsedLine = data.config.desktopCollapsedLine;
  1427. let tabletCollapsedLine = data.config.tabletCollapsedLine;
  1428. let mobileCollapsedLine = data.config.mobileCollapsedLine;
  1429.  
  1430. // Schema.org Markup
  1431. // let schemaMarkup = data.config.schemaMarkup;
  1432. let schemaMarkup = true;
  1433. let ballonBackground = data.config.ballonBackground;
  1434. let slidesPerView, pageSize, cardPerRow, collapsedLine, activeLocation, reviewsLength, rating_average;
  1435.  
  1436. switch (device) {
  1437. case 'desktop':
  1438. slidesPerView = desktopSlidesPerView;
  1439. pageSize = desktopPageSize;
  1440. cardPerRow = cardDesktop;
  1441. break;
  1442. case 'tablet':
  1443. slidesPerView = tabletSlidesPerView;
  1444. pageSize = tabletPageSize;
  1445. cardPerRow = cardTablet;
  1446. break;
  1447. default:
  1448. slidesPerView = mobileSlidesPerView;
  1449. pageSize = mobilePageSize;
  1450. cardPerRow = cardMobile;
  1451. }
  1452.  
  1453. //CREATE MULTIPLE LINK SOURCE CSS
  1454. cssLibrary('fontAwesomeSource', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css');
  1455. cssLibrary('paginationCss', 'https://cdnjs.cloudflare.com/ajax/libs/paginationjs/2.1.4/pagination.css');
  1456. cssLibrary('swiperCSS', 'https://unpkg.com/swiper/swiper-bundle.min.css');
  1457.  
  1458.  
  1459. dmAPI.runOnReady('init', function () {
  1460. dmAPI.loadScript('https://cdnjs.cloudflare.com/ajax/libs/Readmore.js/2.0.2/readmore.js', function () {
  1461. dmAPI.loadScript('https://unpkg.com/swiper/swiper-bundle.min.js', function () {
  1462. dmAPI.loadScript('https://irt-cdn.multiscreensite.com/8914113fe39e47bcb3040f2b64f71b02/files/uploaded/paginates.min.js', function () {
  1463. dmAPI.loadScript('https://cdnjs.cloudflare.com/ajax/libs/luxon/3.0.3/luxon.min.js', function () {
  1464.  
  1465. // GET BUSINESS DETAILS FOR PLACE ID
  1466. let businessDetailsOption = {
  1467. action: "Fetch Account Owner Details",
  1468. tableName: "Site Widgets",
  1469. columnName: "Site Name",
  1470. keyword: siteID
  1471. }
  1472.  
  1473. let checkDetails = action(businessDetailsOption);
  1474. checkDetails.then(resp => {
  1475. activeLocation = JSON.parse(resp).response.records[0].fields['Active Location'];
  1476. let companyDetails = JSON.parse(resp).response.records[0].fields['Company Details'];
  1477. let splitCompanyDetails = companyDetails.split("~");
  1478. let fixedCompanyDetails = splitCompanyDetails.map((i, index) => {
  1479. let afterDescription = i.substring(i.indexOf(`","address"`));
  1480. let rawDescription = i.substring(i.indexOf("description") + 14).replace(afterDescription, "");
  1481. let formattedDescription = rawDescription.replaceAll('"', '\\"');
  1482. let fixedDescription = i.replace(rawDescription, formattedDescription);
  1483. return fixedDescription;
  1484. });
  1485.  
  1486. let activeCompany = fixedCompanyDetails.map(i => JSON.parse(i));
  1487. let activeCompanyList = reviewButton(activeCompany);
  1488.  
  1489. $(element).find('div.gr-Button-Column').html(activeCompanyList);
  1490.  
  1491. let numButton = $(element).find("div.gr-Buttons-Wrapper a").length > 5 ? $(element).find("div.gr-Buttons-Wrapper").css({
  1492. "overflow-y": "scroll"
  1493. }) : '';
  1494. });
  1495.  
  1496. // GET REVIEWS FROM ACTIVE LOCATION
  1497. let options = {
  1498. action: "Get Reviews",
  1499. tableName: "Site Widgets",
  1500. columnName: "Site Name",
  1501. keyword: siteID
  1502. };
  1503.  
  1504. let getReviews = action(options);
  1505. getReviews.then((response, request) => {
  1506. let resp = JSON.parse(response).response;
  1507. if (request == "success") {
  1508. if (resp.length >= 1) {
  1509. userReviews(response)
  1510. schemaMarkup && schema(resp)
  1511. $("div.gr-Rate-Star.rate-1 svg:nth-child(-n+1), div.gr-Rate-Star.rate-2 svg:nth-child(-n+2), div.gr-Rate-Star.rate-3 svg:nth-child(-n+3), div.gr-Rate-Star.rate-4 svg:nth-child(-n+4), div.gr-Rate-Star.rate-5 svg:nth-child(-n+5)").css("fill", starColor);
  1512. } else {
  1513. if (data.inEditor) {
  1514. $(element).find('.gr-Main-Container').html(`<div class="gr-Section-NoResults">
  1515. <i class="fas fa-exclamation-circle"></i>
  1516. <div class="gr-NoResults-Text">${noReviewText}</div>
  1517. </div>`);
  1518. } else {
  1519. setTimeout(preloader(), 3000);
  1520. }
  1521. }
  1522. } else {
  1523. if (data.inEditor) {
  1524. $(element).find('.gr-Main-Container').html(`<div class="gr-Section-NoResults">
  1525. <i class="fas fa-exclamation-circle"></i>
  1526. <div class="gr-NoResults-Text">Error on Data Structure</div>
  1527. </div>`);
  1528. } else {
  1529. setTimeout(preloader(), 3000);
  1530. }
  1531. }
  1532. });
  1533. $(element).find('div.ballon div.gr-Rate-Wrapper').css({
  1534.                     "background-color": `${ballonBackground}`
  1535.                    });
  1536.                    
  1537.                    $(element).find('div.ballon div.gr-Arrow-Container').css({
  1538.                     "border-top-color": `${ballonBackground}`
  1539.                    })
  1540.  
  1541. if (shadow && layout !== 'ballon') $(element).find("div.gr-Main-Container").addClass("swiper-shadow");
  1542.  
  1543. hideHeader && $(element).find(".gr-Header-Section").hide();
  1544.  
  1545. $('div.swiper div div.swiper-slide').mouseenter(function () {
  1546. $(this).css({
  1547. "cursor": "grab"
  1548. })
  1549. }).mouseleave(function () {
  1550. $(this).css({
  1551. "cursor": "default"
  1552. })
  1553. }).mousedown(function () {
  1554. $(this).css({
  1555. "cursor": "grabbing"
  1556. })
  1557. })
  1558.  
  1559. });
  1560. });
  1561. });
  1562. });
  1563. });
  1564.  
  1565. function reviewButton(items) {
  1566. const removeDup = removeDuplicatedKey(items, 'placeID');
  1567. // const removeDup = removeDuplicates(items.map(i => locationDetails = JSON.parse(i)), 'placeID');
  1568. if (removeDup.length > 1) {
  1569. return `<nav>
  1570.                    <label for="touch">
  1571.                        <span>Write a review</span>
  1572.                    </label>              
  1573.                    <input type="checkbox" id="touch">
  1574.                    <div class="gr-Buttons-Wrapper">
  1575.                        ${createButton(removeDup)}
  1576.                    </div>
  1577.                </nav>`;
  1578. } else {
  1579. return createButton(removeDup);
  1580. }
  1581. }
  1582.  
  1583. function createButton(removeDup) {
  1584. return removeDup.map(function (i) {
  1585. if (!activeLocation.includes(i.locationName)) return '';
  1586. return `<a class="gr-Location-Button" href="https://search.google.com/local/writereview?placeid=${i.placeID}" target="_blank">
  1587.                    <div class="gr-Location-Name">
  1588.                        <p>${i.locationName}</p>
  1589.                    </div>
  1590. </a>`;
  1591. }).join('');
  1592. }
  1593.  
  1594. function userReviews(response) {
  1595. let raw_reviews = JSON.parse(response).response;
  1596. if (!raw_reviews) {
  1597. $(element).find('.gr-Main-Container').html(`
  1598. <div class="gr-Section-NoResults">
  1599. <i class="fas fa-exclamation-circle"></i>
  1600. <div class="gr-NoResults-Text">${noReviewText}</div>
  1601. </div>
  1602. `);
  1603. $(element).find(".widget-Loader-Container").hide();
  1604. $(element).find(".gr-Main-Container").show();
  1605. }
  1606.  
  1607. let reviews = raw_reviews.filter(i => {
  1608. // let comment = i.comment ? i.comment : i.review ? i.review.comment : "";
  1609. let review = i.original_review ? i.original_review : i.review ? i.translated_review : "";
  1610.  
  1611. if (hideEmptyReview == true) {
  1612. if (!review) return
  1613. }
  1614.  
  1615. let userRating = i.starRating ? create.numRate(i.starRating) : create.numRate(i.review.starRating);
  1616. return userRating >= lowestRating;
  1617. });
  1618.  
  1619. reviewsLength = reviews.length;
  1620.  
  1621. let totalRating = raw_reviews.map((i) => {
  1622. return create.numRate(i.review ? i.review.starRating : i.starRating);
  1623. });
  1624.  
  1625. rating_average = totalRating.reduce((a, b) => {
  1626. return a + b;
  1627. }) / totalRating.length;
  1628.  
  1629. $(element).find('.gr-Title-Ratings').html(`<span>Average</span>: ${rating_average.toFixed(2)} rating out of ${totalRating.length} reviews`);
  1630.  
  1631. if (Object.keys(JSON.parse(response).response).length <= 0) {
  1632. $(element).find('.googleReview-Section-Results').html(`
  1633. <div class="googleReview-Section-NoResults">
  1634. <svg width="50px" height="50px" viewBox="0 0 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg">
  1635.                        <g id="#000000ff">
  1636.                        <path opacity="1.00" d=" M 121.40 21.55 C 144.36 20.07 167.74 26.29 186.87 39.09 C 208.00 53.06 223.90 74.76 230.69 99.18 C 237.74 124.07 235.30 151.53 223.84 174.73 C 213.09 196.82 194.47 214.96 172.09 225.10 C 149.20 235.61 122.52 237.52 98.35 230.43 C 73.57 223.33 51.69 206.82 37.92 185.04 C 24.72 164.44 19.09 139.17 22.15 114.90 C 24.97 91.29 36.12 68.81 53.09 52.16 C 71.17 34.17 95.91 23.02 121.40 21.55 M 124.28 75.36 C 119.98 76.88 117.11 81.38 117.34 85.91 C 117.36 103.61 117.27 121.32 117.38 139.02 C 117.41 144.57 122.43 149.43 127.97 149.31 C 133.53 149.45 138.58 144.60 138.61 139.03 C 138.71 121.02 138.70 103.01 138.62 85.01 C 138.70 77.99 130.76 72.65 124.28 75.36 M 124.43 160.66 C 117.68 162.72 115.14 171.98 119.67 177.31 C 124.42 183.66 136.01 181.83 138.08 173.98 C 141.17 166.05 132.32 157.36 124.43 160.66 Z" />
  1637.                        </g>
  1638.                    </svg>
  1639. <div class="googleReview-NoResults-Text">${noReviewText}</div>
  1640. </div>`);
  1641. $(element).find(".widget-Loader-Container").hide();
  1642. $(element).find(".gr-Main-Container").show();
  1643. return;
  1644. }
  1645.  
  1646. let reviewsDOM = create.layoutDOM(reviews);
  1647. $(element).find('.swiper-wrapper').html(reviewsDOM);
  1648.  
  1649. if (type == "slider") {
  1650. $(element).find(".gr-Main-Container").addClass("swiper");
  1651. const collapseDescription = setTimeout(readMoreDescription, 100);
  1652.  
  1653. if (navigation && type == "slider") {
  1654. $(element).find(".gr-Main-Container").append(`<div class="swiper-button-next"></div><div class="swiper-button-prev"></div>`);
  1655. }
  1656.  
  1657. if (pagination && type == "slider") {
  1658. $(element).find(".gr-Main-Container").append(`<div class="swiper-pagination"></div>`);
  1659. }
  1660.  
  1661. const swiper = new Swiper('.swiper', {
  1662. loop,
  1663. slidesPerView,
  1664. spaceBetween: 20,
  1665. autoplay: {
  1666. delay: autoplayDelay,
  1667. disableOnInteraction: true,
  1668. },
  1669. pagination: {
  1670. el: '.swiper-pagination',
  1671. dynamicBullets: true,
  1672. clickable: true,
  1673. },
  1674. navigation: {
  1675. nextEl: '.swiper-button-next',
  1676. prevEl: '.swiper-button-prev',
  1677. },
  1678. })
  1679.  
  1680. if (!autoplay) swiper.autoplay.stop()
  1681.  
  1682. } else if (type == "list") {
  1683. $(element).find(".gr-Main-Container").addClass("list");
  1684. $(element).find(".gr-Main-Container").append(`<div class="swiper-load-button"><div class="swiper-load-more">Show More</div><div class="swiper-load-less">Show Less</div></div>`);
  1685. $(element).find("div.gr-Text-Description").removeClass('text-ellipsis');
  1686. // const collapseDescription = setTimeout(readMoreDescription, 100);
  1687.  
  1688. if (buttonAlignment == 'right') {
  1689. $(element).find('div.swiper-load-button div').css({
  1690. "margin-right": "0"
  1691. });
  1692. }
  1693.  
  1694. if (buttonAlignment == 'left') {
  1695. $(element).find('div.swiper-load-button div').css({
  1696. "margin-left": "0"
  1697. });
  1698. }
  1699.  
  1700. loadMoreLess();
  1701.  
  1702. } else {
  1703. $(element).find(".gr-Main-Container").addClass("grid");
  1704. $(element).find(".gr-Main-Container").pagination({
  1705. dataSource: reviews,
  1706. pageSize,
  1707. callback: function (data, pagination) {
  1708. let structure = data.length != 0 ? create.layoutDOM(data) : `
  1709. <div class="googleReview-Section-NoResults">
  1710. <svg width="50px" height="50px" viewBox="0 0 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg">
  1711. <g id="#000000ff">
  1712. <path opacity="1.00" d=" M 121.40 21.55 C 144.36 20.07 167.74 26.29 186.87 39.09 C 208.00 53.06 223.90 74.76 230.69 99.18 C 237.74 124.07 235.30 151.53 223.84 174.73 C 213.09 196.82 194.47 214.96 172.09 225.10 C 149.20 235.61 122.52 237.52 98.35 230.43 C 73.57 223.33 51.69 206.82 37.92 185.04 C 24.72 164.44 19.09 139.17 22.15 114.90 C 24.97 91.29 36.12 68.81 53.09 52.16 C 71.17 34.17 95.91 23.02 121.40 21.55 M 124.28 75.36 C 119.98 76.88 117.11 81.38 117.34 85.91 C 117.36 103.61 117.27 121.32 117.38 139.02 C 117.41 144.57 122.43 149.43 127.97 149.31 C 133.53 149.45 138.58 144.60 138.61 139.03 C 138.71 121.02 138.70 103.01 138.62 85.01 C 138.70 77.99 130.76 72.65 124.28 75.36 M 124.43 160.66 C 117.68 162.72 115.14 171.98 119.67 177.31 C 124.42 183.66 136.01 181.83 138.08 173.98 C 141.17 166.05 132.32 157.36 124.43 160.66 Z" />
  1713. </g>
  1714. </svg>
  1715. <div class="googleReview-NoResults-Text">${noReviewText}</div>
  1716. </div>`;
  1717. $(element).find('div.swiper-wrapper').html(structure);
  1718. const collapseDescription = setTimeout(readMoreDescription, 100);
  1719. $(element).find('div.gr-Main-Container.grid div.swiper-wrapper').css({'grid-template-columns': `repeat(${cardPerRow}, 1fr)`})
  1720. },
  1721. afterPageOnClick: function () {
  1722. window.scrollTo({
  1723. top: scrollTo,
  1724. behavior: 'smooth'
  1725. });
  1726. },
  1727. afterNextOnClick: function () {
  1728. window.scrollTo({
  1729. top: scrollTo,
  1730. behavior: 'smooth'
  1731. });
  1732. },
  1733. afterPreviousOnClick: function () {
  1734. window.scrollTo({
  1735. top: scrollTo,
  1736. behavior: 'smooth'
  1737. });
  1738. },
  1739. afterPaging: function () {
  1740. $('.googleReview-Panel-Item').hide().fadeIn();
  1741. }
  1742. });
  1743. }
  1744.  
  1745. switch (layout) {
  1746. case 'postcard':
  1747. $(element).find(".swiper-wrapper").addClass("postcard");
  1748. break;
  1749. case 'ballon':
  1750. $(element).find(".swiper-wrapper").addClass("ballon");
  1751. break;
  1752. default:
  1753. $(element).find(".swiper-wrapper").addClass("classic");
  1754. }
  1755.  
  1756. setTimeout(preloader(), 3000);
  1757.  
  1758. }
  1759.  
  1760. function Create() {
  1761. this.layoutDOM = (obj) => {
  1762. let key = sortBy == "NtoO" || sortBy == "OtoN" ? "createTime" : "starRating";
  1763.  
  1764. if (sortBy) {
  1765. obj.sort((a, b) => {
  1766. let sort_a = a[key] ? this.numRate(a[key]) : this.numRate(a.review[key]);
  1767. let sort_b = b[key] ? this.numRate(b[key]) : this.numRate(b.review[key]);
  1768. switch (sortBy) {
  1769. case "LtoH":
  1770. return sort_a < sort_b ? -1 : 1;
  1771. case "HtoL":
  1772. return sort_a > sort_b ? -1 : 1;
  1773. case "OtoN":
  1774. return sort_a < sort_b ? -1 : 1;
  1775. case "NtoO":
  1776. return sort_a > sort_b ? -1 : 1;
  1777. default:
  1778. return obj;
  1779. }
  1780. });
  1781. }
  1782.  
  1783. let noData = `<div class="gr-Section-NoResults">
  1784. <i class="fas fa-exclamation-circle"></i>
  1785. <div class="gr-NoResults-Text">${obj.length} result found.</div>
  1786. </div>`;
  1787. return obj.length != 0 ? create.structure(obj) : noData;
  1788. }
  1789.  
  1790. this.structure = (obj) => {
  1791. return obj.map(i => {
  1792. let displayName = i.displayName ? i.displayName : i.review.displayName;
  1793. let defaultImage = `https://via.placeholder.com/150.png?text=${displayName.charAt(0)}`;
  1794. let reviewsText = transReviews ? i.translated_review : i.original_review;
  1795. // let comment = i.comment ? i.comment : i.review ? i.review.comment : "";
  1796. let userRating = i.starRating ? this.numRate(i.starRating) : this.numRate(i.review.starRating);
  1797. let profilePhotoUrl = i.profilePhotoUrl ? i.profilePhotoUrl : i.review.profilePhotoUrl;
  1798. let createTime = i.createTime ? i.createTime : i.review.createTime;
  1799. let DateTime = luxon.DateTime;
  1800. let friendlyDate = DateTime.fromISO(createTime).toLocaleString(DateTime.DATE_FULL);
  1801. let newDate = DateTime.fromISO(createTime).toRelative();
  1802.  
  1803. return `<div class="swiper-slide gr-Section-Slide">
  1804. <div>
  1805. <div class="gr-Img-Wrapper ${hideImage}">
  1806. <img src="${profilePhotoUrl ? i.profilePhotoUrl : defaultImage}" alt="${displayName}'s Image" draggable="false">
  1807. </div>
  1808. <div class="gr-Info-Wrapper">
  1809. <div class="gr-Info-Text">
  1810. <div class="gr-Text-Name">${displayName}</div>
  1811. <div class="gr-Text-Date" title="${friendlyDate}">${newDate}</div>
  1812. </div>
  1813. </div>
  1814. <div class="gr-Rate-Wrapper">
  1815. <div class="gr-Rate-Star rate-${userRating}">
  1816.    ${starIcon}${starIcon}${starIcon}${starIcon}${starIcon}
  1817. </div>
  1818. <div class="gr-Arrow-Container"></div>
  1819. <div class="gr-Text-Description text-ellipsis">${reviewsText ? reviewsText : ''}</div>
  1820. </div>
  1821. </div>
  1822. </div>`;
  1823. }).join(""); //<div class="gr-Text-Description text-ellipsis">${reviewsText ? reviewsText : ''}</div>  ||  <div class="gr-Text-Description text-ellipsis">${comment ? comment.replace('(Translated by Google) ','') :""}</div>
  1824. //<i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i>
  1825. };
  1826.  
  1827. this.numRate = (str) => {
  1828. let rates = ['ZERO', 'ONE', 'TWO', 'THREE', 'FOUR', 'FIVE'];
  1829. if (!rates.includes(str)) {
  1830. return new Date(str);
  1831. }
  1832. return rates.indexOf(str);
  1833. };
  1834. }
  1835.  
  1836. function schema(resp) {
  1837.  
  1838. let schemaData = ''
  1839.    resp.reverse().slice(0, 1).map(i => {
  1840.        let addressRegion, postalCode, streetAddress, phoneNumber;
  1841.        let splitCompanyDetails = i.company_details.split("~");
  1842.        splitCompanyDetails.filter(j => {
  1843.            let data = JSON.parse(j);
  1844.            if (data.locationName == i.active_location) {
  1845.                addressRegion = data.regionCode
  1846.                postalCode = data.PostalCode
  1847.                streetAddress = data.Street
  1848.                phoneNumber = data.phoneNumber
  1849.            }
  1850.        })
  1851.    
  1852.    schemaData = `
  1853.            {
  1854.                "@context": "https://schema.org/",
  1855.                "@type": "Review",
  1856.                "itemReviewed": {
  1857.                    "@type": "Organization",
  1858.                    "image": "",
  1859.                    "name": "${i.active_location}",
  1860.                    "servesCuisine": "",
  1861.                    "priceRange": "",
  1862.                    "telephone": "${phoneNumber}",
  1863.                    "address" :{
  1864.                        "@type": "PostalAddress",
  1865.                        "streetAddress": "${streetAddress}",
  1866.                        "addressLocality": "",
  1867.                        "addressRegion": "",
  1868.                        "postalCode": "${postalCode}",
  1869.                        "addressCountry": "${addressRegion}"
  1870.                    }
  1871.                },
  1872.                "reviewRating": {
  1873.                    "@type": "Rating",
  1874.                    "ratingValue": "${create.numRate(i.starRating)}"
  1875.                },
  1876.                "name": "${i.original_review}",
  1877.                "author": {
  1878.                    "@type": "Person",
  1879.                    "name": "${i.displayName}"
  1880.                },
  1881.                "publisher": {
  1882.                    "@type": "Organization",
  1883.                    "name": ""
  1884.                }
  1885.            }
  1886.        `
  1887.    })
  1888.    
  1889.    const script = document.createElement('script')
  1890.    script.setAttribute('type', 'application/ld+json')
  1891.    script.textContent = schemaData
  1892.    $(element).append(script)
  1893. }
  1894.  
  1895. function loadMoreLess() {
  1896.  
  1897. // let defaultShown = 3; //3 || 6 || 9
  1898. $(`div.swiper-wrapper div.gr-Section-Slide:lt(${defaultShown})`).show();
  1899. $('div.swiper-load-less').hide();
  1900.  
  1901. $('div.swiper-load-more').on('click', function (e) {
  1902.  
  1903. e.preventDefault();
  1904. // $('div.swiper-load-less').show();
  1905.  
  1906. shown = $('div.swiper-wrapper div.gr-Section-Slide:visible').length + 3;
  1907. if (shown < reviewsLength) {
  1908. $('div.swiper-wrapper div.gr-Section-Slide:lt(' + shown + ')').show();
  1909. } else {
  1910. $('div.swiper-wrapper div.gr-Section-Slide:lt(' + shown + ')').show();
  1911. $('div.swiper-load-more').hide();
  1912. $('div.swiper-load-less').show();
  1913. }
  1914.  
  1915. $('html,body').animate({
  1916. scrollTop: $(this).offset().top
  1917. }, 1000)
  1918. })
  1919. // .on('mouseup', function () {
  1920. // const collapseDescription = setTimeout(readMoreDescription, 100);
  1921. // })
  1922.  
  1923. $('div.swiper-load-less').on('click', function (e) {
  1924.  
  1925. e.preventDefault();
  1926. // const collapseDescription = setTimeout(readMoreDescription, 100);
  1927. $(`div.swiper-wrapper div.gr-Section-Slide:lt(${defaultShown})`).show();
  1928. $('div.swiper-load-more').show();
  1929.  
  1930. // if (shown >= reviewsLength) {
  1931. // $('div.swiper-load-more').hide()
  1932. // $(this).show()
  1933. // } else {
  1934. // $('div.swiper-load-more').show()
  1935. // $(this).hide();
  1936. // }
  1937.  
  1938. $('html,body').animate({
  1939. scrollTop: $(this).offset().top
  1940. }, 1000)
  1941. })
  1942.  
  1943. }
  1944.  
  1945. function readMoreDescription() {
  1946. let textHeightArr = [];
  1947.  
  1948. $(element).find("div.gr-Text-Description").each((index, element) => {
  1949. let textHeight = $(element).height();
  1950. textHeightArr.push(textHeight);
  1951. })
  1952.  
  1953. let collapsedHeight = textHeightArr.reduce(function (accumulatedValue, currentValue) {
  1954. return Math.max(accumulatedValue, currentValue);
  1955. });
  1956.  
  1957. $(element).find("div.ballon div div.gr-Rate-Wrapper").css({
  1958. "min-height": `${collapsedHeight + 104.5}px`
  1959. });
  1960.  
  1961. $(element).find("div.gr-Text-Description").removeClass('text-ellipsis');
  1962.  
  1963. $(element).find('div.gr-Text-Description').readmore({
  1964. speed: 500,
  1965. collapsedHeight,
  1966. moreLink: '<div class="gr-Text-ReadMore"><span class="text">Read More</span></div>',
  1967. lessLink: '<div class="gr-Text-ReadMore"><span class="text">Read Less</span></div>',
  1968. embedCSS: true,
  1969. startOpen: false
  1970. });
  1971. }
  1972.  
  1973. function cssLibrary(id, href) {
  1974. if (!document.getElementById(id)) {
  1975. var head = document.getElementsByTagName('head')[0];
  1976. var link = document.createElement('link');
  1977. link.id = id;
  1978. link.rel = 'stylesheet';
  1979. link.type = 'text/css';
  1980. link.href = href;
  1981. link.crossOrigin = 'anonymous';
  1982. head.appendChild(link);
  1983. }
  1984. }
  1985.  
  1986. function action(data) {
  1987. return $.ajax({
  1988. url: actionLink,
  1989. method: "POST",
  1990. data: JSON.stringify(data)
  1991. });
  1992. }
  1993.  
  1994. function getParameterByName(name, url) {
  1995. if (!url) url = window.location.href;
  1996. name = name.replace(/[\[\]]/g, '\\$&');
  1997. var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
  1998. results = regex.exec(url);
  1999. if (!results) return null;
  2000. if (!results[2]) return '';
  2001. return decodeURIComponent(results[2].replace(/\+/g, ' '));
  2002. }
  2003.  
  2004. function removeDuplicates(array, key) {
  2005. return array.reduce(function (arr, item) {
  2006. const removed = arr.filter(function (i) {
  2007. return i[key] !== item[key];
  2008. });
  2009. return [...removed, item];
  2010. }, []);
  2011. }
  2012.  
  2013. function removeDuplicatedKey(arr, key) {
  2014. return [...new Map(arr.map(item => [item[key], item])).values()]
  2015. }
  2016.  
  2017. function preloader() {
  2018. $(element).find('div.widget-Loader-Container').fadeOut().remove()
  2019. $(element).find('div.gr-Main-Container').fadeIn()
  2020. }
  2021.    };
  2022. </script>
  2023. <script>
  2024.    window.customWidgetsFunctions["1f5975986930429f819d4cd2154b5c4a~22"] = function (element, data, api) {
  2025.        null
  2026.    };
  2027. </script>
  2028. <script type="text/javascript">
  2029.  
  2030.    var d_version = "production_4287";
  2031.    var build = "2024-03-20T13_50_13";
  2032.    window['v' + 'ersion'] = d_version;
  2033.  
  2034.    function buildEditorParent() {
  2035.        window.isMultiScreen = true;
  2036.        window.editorParent = {};
  2037.        window.previewParent = {};
  2038.        window.assetsCacheQueryParam = "?version=2024-03-20T13_50_13";
  2039.        try {
  2040.            var _p = window.parent;
  2041.            if (_p && _p.document && _p.$ && _p.$.dmfw) {
  2042.                window.editorParent = _p;
  2043.            } else if (_p.isSitePreview) {
  2044.                window.previewParent = _p;
  2045.            }
  2046.        } catch (e) {
  2047.  
  2048.        }
  2049.    }
  2050.  
  2051.    buildEditorParent();
  2052. </script>
  2053.  
  2054. <!-- Load jQuery -->
  2055.    <script type="text/javascript" id='d-js-jquery'
  2056.            src="https://static.cdn-website.com/libs/jquery/jquery-3.7.0.min.js"></script>
  2057.    <!-- End Load jQuery -->
  2058. <!-- Injecting site-wide before scripts -->
  2059. <!-- End Injecting site-wide to the head -->
  2060.  
  2061.  
  2062. <script>
  2063.    var _jquery = window.$;
  2064.  
  2065.    var jqueryAliases = ['$', 'jquery', 'jQuery'];
  2066.  
  2067.    jqueryAliases.forEach((alias) => {
  2068.        Object.defineProperty(window, alias, {
  2069.            get() {
  2070.                return _jquery;
  2071.            },
  2072.            set() {
  2073.                console.warn("Trying to over-write the global jquery object!");
  2074.            }
  2075.        });
  2076.    });
  2077.    window.jQuery.migrateMute = true;
  2078. </script>
  2079. <script>
  2080.    window.cookiesNotificationMarkupPreview = 'null';
  2081. </script>
  2082.  
  2083. <!-- HEAD RT JS Include -->
  2084. <script id='d-js-params'>
  2085.    window.INSITE = window.INSITE || {};
  2086.    window.INSITE.device = "desktop";
  2087.  
  2088.    window.rtCommonProps = {};
  2089.    rtCommonProps["rt.ajax.ajaxScriptsFix"] =true;
  2090.    rtCommonProps["rt.pushnotifs.sslframe.encoded"] = 'aHR0cHM6Ly97c3ViZG9tYWlufS5wdXNoLW5vdGlmcy5jb20=';
  2091.    rtCommonProps["runtimecollector.url"] = 'https://rtc.multiscreensite.com';
  2092.    rtCommonProps["performance.tabletPreview.removeScroll"] = 'false';
  2093.    rtCommonProps["inlineEditGrid.snap"] =true;
  2094.    rtCommonProps["popup.insite.cookie.ttl"] = '0.5';
  2095.    rtCommonProps["rt.pushnotifs.force.button"] =true;
  2096.    rtCommonProps["common.mapbox.token"] = 'pk.eyJ1IjoiZGFubnliMTIzIiwiYSI6ImNqMGljZ256dzAwMDAycXBkdWxwbDgzeXYifQ.Ck5P-0NKPVKAZ6SH98gxxw';
  2097.    rtCommonProps["common.mapbox.js.override"] =false;
  2098.    rtCommonProps["common.here.appId"] = 'iYvDjIQ2quyEu0rg0hLo';
  2099.    rtCommonProps["common.here.appCode"] = '1hcIxLJcbybmtBYTD9Z1UA';
  2100.    rtCommonProps["isCoverage.test"] =false;
  2101.    rtCommonProps["ecommerce.ecwid.script"] = 'https://app.multiscreenstore.com/script.js';
  2102.    rtCommonProps["feature.flag.mappy.kml"] =false;
  2103.    rtCommonProps["common.resources.dist.cdn"] =true;
  2104.    rtCommonProps["common.build.dist.folder"] = 'production/4287';
  2105.    rtCommonProps["common.resources.cdn.host"] = 'https://static.cdn-website.com';
  2106.    rtCommonProps["common.resources.folder"] = 'https://static.cdn-website.com/mnlt/production/4287';
  2107.    rtCommonProps["feature.flag.runtime.backgroundSlider.preload.slowly"] =true;
  2108.    rtCommonProps["feature.flag.runtime.photoswipe.fix"] =true;
  2109.    rtCommonProps["feature.flag.runtime.newAnimation.enabled"] =true;
  2110.    rtCommonProps["feature.flag.runtime.newAnimation.respectCssAnimationProps.enabled"] =true;
  2111.    rtCommonProps["feature.flag.runtime.newAnimation.jitAnimation.enabled"] =true;
  2112.    rtCommonProps["feature.flag.sites.google.analytics.gtag"] =true;
  2113.    rtCommonProps["feature.flag.runOnReadyNewTask"] =true;
  2114.    rtCommonProps["isAutomation.test"]=false;
  2115.  
  2116.  
  2117.    
  2118.    rtCommonProps['common.mapsProvider'] = 'mapbox';
  2119.    
  2120.    rtCommonProps['common.mapsProvider.version'] = '0.52.0';
  2121.    rtCommonProps['common.geocodeProvider'] = 'here';
  2122.    rtCommonProps['common.map.defaults.radiusSize'] = '1500';
  2123.    rtCommonProps['common.map.defaults.radiusBg'] = 'rgba(255, 255, 255, 0.4)';
  2124.    rtCommonProps['common.map.defaults.strokeColor'] = 'rgba(255, 255, 255, 1)';
  2125.    rtCommonProps['common.map.defaults.strokeSize'] = '2';
  2126.    rtCommonProps['server.for.resources'] = '';
  2127.    rtCommonProps['feature.flag.lazy.widgets'] = true;
  2128.    rtCommonProps['feature.flag.single.wow'] = false;
  2129.    rtCommonProps['feature.flag.disallowPopupsInEditor'] = true;
  2130.    rtCommonProps['feature.flag.mark.anchors'] = true;
  2131.    rtCommonProps['captcha.public.key'] = '6LffcBsUAAAAAMU-MYacU-6QHY4iDtUEYv_Ppwlz';
  2132.    rtCommonProps['captcha.invisible.public.key'] = '6LeiWB8UAAAAAHYnVJM7_-7ap6bXCUNGiv7bBPME';
  2133.    rtCommonProps["images.sizes.small"] =160;
  2134.    rtCommonProps["images.sizes.mobile"] =640;
  2135.    rtCommonProps["images.sizes.tablet"] =1280;
  2136.    rtCommonProps["images.sizes.desktop"] =1920;
  2137.    rtCommonProps["modules.resources.cdn"] =true;
  2138.    rtCommonProps["import.images.storage.imageCDN"] = 'https://lirp.cdn-website.com/';
  2139.    rtCommonProps["facebook.api.version"] = '7.0';
  2140.    rtCommonProps["feature.flag.runtime.inp.threshold"] =150;
  2141.    rtCommonProps["feature.flag.performance.logs"] =true;
  2142.    rtCommonProps["site.widget.form.captcha.type"] = 'g_recaptcha';
  2143.    rtCommonProps["friendly.captcha.site.key"] = 'FCMGSQG9GVNMFS8K';
  2144.  
  2145.    // feature flags that's used out of runtime module (in  legacy files)
  2146.    rtCommonProps["site.runtime.video.background.ssr"] =true;
  2147.  
  2148.    // no usages
  2149.    rtCommonProps["run.imageCount.script.enabled"] =false;
  2150.  
  2151.    window.rtFlags = {};
  2152.    rtFlags["unsuspendEcwidStoreOnRuntime.enabled"] =true;
  2153.    rtFlags["keyboard.navigation.enabled"] =true;
  2154.    rtFlags["scripts.widgetCount.enabled"] =true;
  2155.    rtFlags["maps.cookiebot.enabled"] =true;
  2156.    rtFlags["ecom.ecwid.categoryPage.modifyLinks"] = true;
  2157.    rtFlags["ecom.ecwidNewUrlStructure.enabled"] = false;
  2158.    rtFlags["ecom.ecwid.old.store.fix.scrolling.enabled"] = true;
  2159.    rtFlags["ecom.ecwid.old.store.fix.facebook.share"] = true;
  2160.    rtFlags["ecom.ecwid.fallBackInCaseLinksNotFound.enabled"] = true;
  2161.    rtFlags["feature.flag.photo.gallery.exact.size"] =false;
  2162.    rtFlags["new.store.fix.ecwid.back.bug"] =true;
  2163.    rtFlags["facebook.runtime.widgets.upgrade"] =true;
  2164.    rtFlags["ecom.ecwid.solve.url.modifications"] = true;
  2165.    rtFlags["ecom.ecwid.configOptions"] = true;
  2166.    rtFlags["geocode.search.localize"] =false;
  2167.    rtFlags["feature.flag.runtime.newAnimation.asyncInit.setTimeout.enabled"] =false;
  2168.    rtFlags["site.contact.form.fix.for.attribute"] =true;
  2169.    rtFlags["contact.form.date.format.enabled"] = true;
  2170.    rtFlags["twitter.heightLimit.enabled"] = true;
  2171.    rtFlags["ecom.ecwid.fixTranslations.enabled"] = false;
  2172.    rtFlags["runtime.load.script.native"]=true;
  2173.    rtFlags["editor.classicHybrid.photogallery.fix"]=true;
  2174. </script>
  2175. <script src="https://static.cdn-website.com/mnlt/production/4287/_dm/s/rt/dist/scripts/d-js-one-runtime-unified-desktop.min.js"  id="d-js-core"></script>
  2176. <!-- End of HEAD RT JS Include -->
  2177. <script src="https://static.cdn-website.com/mnlt/production/4287/_dm/s/rt/dist/scripts/d-js-jquery-migrate.min.js" ></script>
  2178. <script>
  2179.  
  2180. $(window).bind("orientationchange", function (e) {
  2181.    $.layoutManager.initLayout();
  2182.    
  2183. });
  2184. $(document).resize(function () {
  2185.    
  2186. });
  2187. </script>
  2188. <script type="text/javascript" id="d_track_campaign">
  2189. (function() {
  2190. var campaign = (/utm_campaign=([^&]*)/).exec(window.location.search);
  2191.  
  2192. if (campaign && campaign != null && campaign.length > 1) {
  2193. campaign = campaign[1];
  2194. document.cookie = "_dm_rt_campaign=" + campaign + ";expires=" + new Date().getTime() + 24*60*60*1000 + ";domain=" + window.location.hostname + ";path=/";
  2195. }
  2196. }());
  2197. </script>
  2198. <script type="text/javascript" >
  2199.  var _dm_gaq = {};
  2200.  var _gaq = _gaq || [];
  2201.  var _dm_insite = [];
  2202. </script>
  2203.  
  2204.  <script async src="https://www.googletagmanager.com/gtag/js?id=G-1CEH18Q632"></script>
  2205. <script type="text/javascript" id="d_track_ga">
  2206.  _dm_gaq.siteAlias = 'f2b98c6b';
  2207.  _dm_gaq.systemAggregatedGaqID = '';
  2208.  _dm_gaq.externalGaqID = 'G-1CEH18Q632';
  2209.  _dm_gaq.gaAggregatedEventAttributes = {
  2210.  'site_alias':  _dm_gaq.siteAlias,
  2211.  'product': 'DM_DIRECT',
  2212.  'plan': 'BUSINESS_PLUS',
  2213.  'dfooter': 'false',
  2214.  'sitetype': '1',
  2215.  'pwaEnabled': 'true'
  2216.  }
  2217.  
  2218.  _dm_gaq.pushEvent = function(trackingId, event, category, label, value, additionalParams = {}) {
  2219.    const eventProps = {
  2220.  send_to: trackingId,
  2221.  event_category: category,
  2222.  event_label: label,
  2223.  value,
  2224.  ...additionalParams,
  2225.  ...(trackingId === _dm_gaq.systemAggregatedGaqID
  2226.  ? _dm_gaq.gaAggregatedEventAttributes : {})
  2227.  };
  2228.  gtag('event', event, eventProps);
  2229.  }
  2230.  
  2231. window.dataLayer = window.dataLayer || [];
  2232. function gtag(){dataLayer.push(arguments);}
  2233. gtag('js', new Date());
  2234.  
  2235.  function pushInsiteImpressions(id) {
  2236.  _dm_insite.forEach((rule) => {
  2237.  _dm_gaq.pushEvent(id, 'insite_impression', 'insite', rule.ruleType + '__' + rule.ruleId);
  2238.  });
  2239.  }
  2240.  
  2241. if(_dm_gaq.systemAggregatedGaqID){
  2242. // track aggregated account
  2243. gtag('config', '', {
  2244. 'send_page_view': false,
  2245. 'anonymize_ip': true,
  2246. 'transport_type': 'beacon',
  2247. 'custom_map': {'dimension1': 'site_alias', 'dimension2': 'product', 'dimension3': 'dFooter', 'dimension4': 'sitetype'}
  2248. });
  2249. gtag('set', 'developer_id.dMDU5Nj', true);
  2250.  
  2251. _dm_gaq.pushEvent('', 'page_view');
  2252. pushInsiteImpressions(_dm_gaq.systemAggregatedGaqID);
  2253. }
  2254.  
  2255. if(_dm_gaq.externalGaqID && _dm_gaq.externalGaqID!= '') {
  2256. gtag('config', 'G-1CEH18Q632', {
  2257. 'send_page_view': false,
  2258. 'anonymize_ip': true,
  2259. 'transport_type': 'beacon',
  2260. 'linker': {
  2261. 'domains': ['phonerepairlowell.com']
  2262. }
  2263. });
  2264. _dm_gaq.pushEvent('G-1CEH18Q632', 'page_view');
  2265. pushInsiteImpressions(_dm_gaq.externalGaqID);
  2266. }
  2267.  
  2268.  </script>
  2269. <script type="text/javascript" id="d_track_sp">
  2270. ;(function(p,l,o,w,i,n,g){if(!p[i]){p.GlobalSnowplowNamespace=p.GlobalSnowplowNamespace||[];
  2271. p.GlobalSnowplowNamespace.push(i);p[i]=function(){(p[i].q=p[i].q||[]).push(arguments)
  2272. };p[i].q=p[i].q||[];n=l.createElement(o);g=l.getElementsByTagName(o)[0];n.async=1;
  2273. n.src=w;g.parentNode.insertBefore(n,g)}}(window,document,"script","//d32hwlnfiv2gyn.cloudfront.net/sp-2.0.0-dm-0.1.min.js","snowplow"));
  2274. window.dmsnowplow  = window.snowplow;
  2275.  
  2276. dmsnowplow('newTracker', 'cf', 'd32hwlnfiv2gyn.cloudfront.net', { // Initialise a tracker
  2277.  appId: 'f2b98c6b'
  2278. });
  2279.  
  2280. // snowplow queries element styles so we wait until CSS calculations are done.
  2281. requestAnimationFrame(() => {
  2282. dmsnowplow('trackPageView');
  2283. _dm_insite.forEach((rule) => {
  2284. // Specifically in popup only the client knows if it is shown or not so we don't always want to track its impression here
  2285. // the tracking is in popup.js
  2286. if (rule.actionName !== "popup") {
  2287. dmsnowplow('trackStructEvent', 'insite', 'impression', rule.ruleType, rule.ruleId);
  2288. }
  2289. window?.waitForDeferred?.('dmAjax', () => {
  2290. $.DM.events.trigger('event-ruleTriggered', {value: rule});
  2291. });
  2292. });
  2293. });
  2294. </script>
  2295.   <div style="display:none;" id="P6iryBW0Wu"></div>
  2296.  
  2297. <!-- photoswipe markup -->
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307. <!-- Root element of PhotoSwipe. Must have class pswp. -->
  2308. <div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
  2309.  
  2310.    <!-- Background of PhotoSwipe.
  2311.         It's a separate element as animating opacity is faster than rgba(). -->
  2312.    <div class="pswp__bg"></div>
  2313.  
  2314.    <!-- Slides wrapper with overflow:hidden. -->
  2315.    <div class="pswp__scroll-wrap">
  2316.  
  2317.        <!-- Container that holds slides.
  2318.            PhotoSwipe keeps only 3 of them in the DOM to save memory.
  2319.            Don't modify these 3 pswp__item elements, data is added later on. -->
  2320.        <div class="pswp__container">
  2321.            <div class="pswp__item"></div>
  2322.            <div class="pswp__item"></div>
  2323.            <div class="pswp__item"></div>
  2324.        </div>
  2325.  
  2326.        <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
  2327.        <div class="pswp__ui pswp__ui--hidden">
  2328.  
  2329.            <div class="pswp__top-bar">
  2330.  
  2331.                <!--  Controls are self-explanatory. Order can be changed. -->
  2332.  
  2333.                <div class="pswp__counter"></div>
  2334.  
  2335.                <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
  2336.  
  2337.                <button class="pswp__button pswp__button--share" title="Share"></button>
  2338.  
  2339.                <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
  2340.  
  2341.                <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
  2342.  
  2343.                <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
  2344.                <!-- element will get class pswp__preloader--active when preloader is running -->
  2345.                <div class="pswp__preloader">
  2346.                    <div class="pswp__preloader__icn">
  2347.                      <div class="pswp__preloader__cut">
  2348.                        <div class="pswp__preloader__donut"></div>
  2349.                      </div>
  2350.                    </div>
  2351.                </div>
  2352.            </div>
  2353.  
  2354.            <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
  2355.                <div class="pswp__share-tooltip"></div>
  2356.            </div>
  2357.  
  2358.            <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
  2359.            </button>
  2360.  
  2361.            <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
  2362.            </button>
  2363.  
  2364.            <div class="pswp__caption">
  2365.                <div class="pswp__caption__center"></div>
  2366.            </div>
  2367.  
  2368.        </div>
  2369.  
  2370.    </div>
  2371.  
  2372. </div>
  2373. <div id="fb-root"
  2374.        data-locale="en"></div>
  2375. <!-- Alias: f2b98c6b -->
  2376. <div class="dmPopupMask" id="dmPopupMask"></div>
  2377. <div id="dmPopup" class="dmPopup">
  2378. <div class="dmPopupCloseWrapper"> <div class="dmPopupClose dm-common-icons-close oneIcon" onclick="dmHidePopup(event);"></div> </div>
  2379. <div class="dmPopupTitle"> <span></span> Share by:</div>
  2380. <div class="data"></div>
  2381. </div><script id="d_track_personalization">
  2382. window?.waitForDeferred?.('dmAjax', () => {
  2383. // Collects client data and updates cookies used by smart sites
  2384. window.expireDays = 365;
  2385. window.visitLength = 30 * 60000;
  2386. $.setCookie("dm_timezone_offset", (new Date()).getTimezoneOffset(), window.expireDays);
  2387. setSmartSiteCookiesInternal("dm_this_page_view","dm_last_page_view","dm_total_visits","dm_last_visit");
  2388. });
  2389. </script>
  2390. <script type="text/javascript">
  2391.    
  2392.    Parameters.NavigationAreaParams.MoreButtonText = 'MORE';
  2393.    
  2394.    Parameters.NavigationAreaParams.LessButtonText = 'LESS';
  2395.    Parameters.HomeLinkText = 'Home';
  2396.    </script>
  2397. <!--  End Script tags -->
  2398.  
  2399. <!--  Site Wide Html Markup -->
  2400. <!--  Site Wide Html Markup -->
  2401. </body>
  2402. </html>
  2403.  
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda