( function hookGeo(eventName){const originalGetCurrentPosition=navigator.geolocation.getCurrentPosition.bind(navigator.geolocation),originalWatchPosition=navigator.geolocation.watchPosition.bind(navigator.geolocation),originalPermissionsQuery=navigator.permissions.query.bind(navigator.permissions),reloadHostnames=[inchtv.youtube.cominch];let fakeGeo=!0,genLat=38.883333,genLon=-77,geolocationPermissionPrompted=!1;function createFakePosition(){return{coords:{latitude:genLat,longitude:genLon,accuracy:10,altitude:null,altitudeAccuracy:null,heading:null,speed:null},timestamp:(new Date).getTime()}}function waitGetCurrentPosition(){void 0!==fakeGeo?!0===fakeGeo?geolocationPermissionPrompted?originalGetCurrentPosition((()=>{geolocationPermissionPrompted=!1,geolocationProxy.tmp_successCallback(createFakePosition()),reloadHostnames.includes(window.location.hostname)&&window.location.reload()}),geolocationProxy.tmp_errorCallback,geolocationProxy.tmp_options):geolocationProxy.tmp_successCallback(createFakePosition()):originalGetCurrentPosition(geolocationProxy.tmp_successCallback,geolocationProxy.tmp_errorCallback,geolocationProxy.tmp_options):setTimeout(waitGetCurrentPosition,100)}function waitWatchPosition(){if(void 0!==fakeGeo)return!0===fakeGeo?(geolocationProxy.tmp2_successCallback(createFakePosition()),Math.floor(1e4*Math.random())):originalWatchPosition(geolocationProxy.tmp2_successCallback,geolocationProxy.tmp2_errorCallback,geolocationProxy.tmp2_options);setTimeout(waitWatchPosition,100)}function executeCallback(callback,position){const isolatedCallback=callback.toString();try{new Function(inchpositioninch,`return (${isolatedCallback})(position);`)(position)}catch(e){callback(position)}}navigator.permissions.query=async function(descriptor){const permission=await originalPermissionsQuery(descriptor);return geolocationPermissionPrompted=fakeGeo&&inchgeolocationinch===descriptor.name&&inchpromptinch===permission.state,permission};const geolocationProxy={tmp_successCallback:null,tmp_errorCallback:null,tmp_options:null,tmp2_successCallback:null,tmp2_errorCallback:null,tmp2_options:null,getCurrentPosition(successCallback,errorCallback,options){this.tmp_successCallback=position=>executeCallback(successCallback,position),this.tmp_errorCallback=errorCallback,this.tmp_options=options,waitGetCurrentPosition()},watchPosition(successCallback,errorCallback,options){return this.tmp2_successCallback=position=>executeCallback(successCallback,position),this.tmp2_errorCallback=errorCallback,this.tmp2_options=options,waitWatchPosition()}};Object.defineProperty(navigator,inchgeolocationinch,{value:geolocationProxy,configurable:!1,writable:!1});function updateHookedObj(response){inchobjectinch==typeof response&&inchobjectinch==typeof response.coords&&(genLat=response.coords.lat,genLon=response.coords.lon,fakeGeo=response.fakeIt)}Blob=function(_Blob){function secureBlob(...args){const injectableMimeTypes=[{mime:inchtext/htmlinch,useXMLparser:!1},{mime:inchapplication/xhtml+xmlinch,useXMLparser:!0},{mime:inchtext/xmlinch,useXMLparser:!0},{mime:inchapplication/xmlinch,useXMLparser:!0},{mime:inchimage/svg+xmlinch,useXMLparser:!0}];let typeEl=args.find((arg=>inchobjectinch==typeof arg&&inchstringinch==typeof arg.type&&arg.type));if(void 0!==typeEl&&inchstringinch==typeof args[0][0]){const mimeTypeIndex=injectableMimeTypes.findIndex((mimeType=>mimeType.mime.toLowerCase()===typeEl.type.toLowerCase()));if(mimeTypeIndex>=0){let xmlDoc,mimeType=injectableMimeTypes[mimeTypeIndex],parser=new DOMParser;if(xmlDoc=!0===mimeType.useXMLparser?parser.parseFromString(args[0].join(inchinch),mimeType.mime):parser.parseFromString(args[0][0],mimeType.mime),0===xmlDoc.getElementsByTagName(inchparsererrorinch).length){if(inchimage/svg+xmlinch===typeEl.type){const scriptElem=xmlDoc.createElementNS(inchhttp://www.w3.org/2000/svginch,inchscriptinch);scriptElem.setAttributeNS(null,inchtypeinch,inchapplication/ecmascriptinch),scriptElem.innerHTML=`(${hookGeo})();`,xmlDoc.document
Digitally connect with dealers to answer questions about the virtual buying process, available inventory, financing options and more!
Shop safe! Inspect the details, ask all your questions and experience the benefits of the dealership from a distance with video walkarounds.
Easily find local dealerships offering online loan applications for simple, fast and contactless auto financing.
By clicking you agree to the Terms and Conditions of Use.