1var OAUTH_LOADING_GIF = "data:image/gif;base64,R0lGODlhQAAMAKIAANPU1ouOlP///x4mMOvs7MzO0MrMz8/Q0yH/C05FVFNDQVBFMi4wAwEAAAAh+QQECgAAACwAAAAAQAAMAAADeSga0xMqykkJuIDQvS3WEeGMA8htwKGuwHmm" + 2 "q9oqJOlScCzfU663jJoDwhMQdDrT7YhciYSjosCHnPGoP2i0iI1Zb12W1iEN77hN8XhQTp+v7gMgCCXymGmlC9/UjKUKYV9wTTNPNXqEXoARWIN0D4wSHheJUpQZEQkAIfkEBAoAAAAsAAAAACYADAAAA00oat" + 3 "FhKspJw7gjSOJ6IFQYEVg5gILniaJpCozqQKxkuZis1hJu6h1exFcCOoQKYs6oQSovMR1NePNpjMghUcGRobIk3BfWmWYj1UwkAQAh+QQECgAAACwAAAAAQAAMAAADgyhKcAdEyUmrCTiYynkY4BBQQGGeQKcS" + 4 "WRtEakWE9ACXZ57GlOvylFpNQMgZCzBgwdcqABUfYSiAO5p2QObvKa1Zc4enQNsSd2nfU/hJzpjPoKoVy2tj3vBiOsm7kDdscCNyOmJQZIYCcBKEBXRPLEx8QDNSfAwOEIkTfhiAm2M0IwoJACH5BAQKAAAALB" + 5 "oAAAAMAAwAAAMjKErQQCqCQyuQNZ9LtGZe1oTWRG4m+ZwHlGqX8lJxxDiQkgAAIfkEBAoAAAAsNAAAAAwADAAAAxsoatFhShFHA1G1ipIp72Aojg0TQqIEXpFZRgkAIfkEBDIAAAAsNAAAAAwADAAAAyMoStBA" + 6 "KoJDK5A1n0u0Zl7WhNZEbib5nAeUapfyUnHEOJCSAAAh+QQECgAAACw0AAAADAAMAAADGiga0xNKEUcHUbUKlh3vYCiOjwiJEnhF3xMlACH5BAQKAAAALBoAAAAmAAwAAANPKBrTEyrKSU24wUji+iBUGBFYGY" + 7 "CC54miaQqM6kCsVLhlIa91hJu7Ts/3wwQdw0XxcmwkYUtmkDa0FDXHp/Kn4MhQTxIODOtQtQrrRaNIAAAh+QQECgAAACwAAAAAQAAMAAADgCga0xMqyklNuMHQvQn4ACERTjmIXIetAZpSwCHPQGSaL8Wy+RTP" + 8 "wBrj5oD0BIXdqnAUEIDQA4lYaip5x19UBqBWj9dVU7vtehvW8GW8pZ3RYLWxR44ChtR5zhLWHJ9tUgJnTQthhQJ1NApTNy5/V49ZdhN4D4gSfBd+mE4gIREJACH5BAQKAAAALAAAAAAmAAwAAANVKGrRYSrKSQ" + 9 "m4gEjietBUGAFHaQKR54kiab4oozoQu734wc2dLbm5EoDX8ymAwSGxYTwGT0tmE5kDyHg1I+FZ0iyboydKsFOBwALqYRy5PtATC+acAAAh+QQEMgAAACwAAAAADAAMAAADIyhKcAdESVCqBdPqgsnezKdRonWU" + 10 "JllCaBGpG6bAlSwxDiQlADs="; 11var OAUTH_COMPARABLY_LOGO = "data:image/gif;base64,R0lGODlhuAAhAKIAAJydoGBjaM3Oz////xcfKTY7Qt7f4O/w8CH5BAAAAAAALAAAAAC4ACEAAAP/OLrc/jDKSau9WJG9xeVdJo5kaZ4ZSHiWyqIHAARcEAAvqu/8B+YTF0pA" + 12 "U6kOvaRyORC2fieA0RhgWq8lZ0U7kk5VAKx4TOEGoSQv6CZoC2ZAspxsltQtAlUhPO/7G3cQgRRFGwUGGDEBBRtsghweb4x7SApvhgCVDCBhiow3mgwxMzU4D5wDMYwso4WODkKSBDeIsFCFsw0GLnmoFwCMUw" + 13 "GhGpBqHIcDx4a1C5wGwSAFQMtgxM/RHtWc1z+4HHybUL0czcrS5yDEEtvS3Y1fN/GANdFGOe3g9BukkOlfBMIVQwZQYBMoB+wJPBYGl0F2Kmx8qyIOoEV/zi4i07Rr/5aMfhgHzhLS8YaMbzmmFFhkJJSTYxQV" + 14 "2POg0EJCXwPIhcjIqY09fj5xHnyWatlCYgwrSrPBIlODpDz1KTCqdIWCjhwqYc01lJ8FmE/XVA2nM+ACnTG7cl2AK+0DtFXNUoAbVe4CsHVfOJzqC4yFvQzKVtV04MiCwiCqAhGsa8a3DWMjGHA8RXGDspq06O" + 15 "RzrBZgCjNthVSxD3JVy6UJNCNyEfXlx6Tzit6p9sXNrAOixTxW4ElI2SIJpB4OHHXZL67PahRevDiXYwK2hqNaBk3VZrHrEg8eRwWismwYc78cEYf42rMJZLY+QPoxwnrMQfhsKbva7cGT54wNNX/zf/923fff" + 16 "eWa4ooZby0wzAV53CWWfgNrVZRBeoSmAGAf6VZiKfRE1QJ8ZOmXTwG1rmNcGHBb6VR97D7aYWF12LcOCigAyN15kfL0YXECITMaFGSSq4wA0y02nhw0dnqZkhDvOwpJYCnxzkhH6SQkShjAC5FYd1Tx0FWw0Dg" + 17 "BmDe+YxqR/Taq02nI2ohcYm0qNWUCZVulyTwSqWIRgQeu4iOWZYAgj3zYy6OgmA4QeoxQOwvTJHltQSnDAG23R4oAipayD5qYQ1jYZDa84IEtA2oCA3aOWAAMUgKeG8KlHcdzoIap/8DBIrX4wiGsSt+5Khoy+" + 18 "KtFrsExgGimxOwyLbBIlF260rK20PmsFLslIq4Oy1upwoKbZioBttybkYQq45JY74gUJAAA7"; 19var OAUTH_LINKEDIN_LOGO ="data:image/gif;base64,R0lGODlhhwAkAKIAAAMDA////wBlmFJSUs/T1iF6ppqamoSz0CH5BAAAAAAALAAAAACHACQAAAP/GLrc/jDKSWs8JevNu9+HJY5kaQaEoK5s675ucc50XR1wrr+y7f813G6o6wG" + 20 "PyBtxyUs6nw4hcyooGK5XwoQwAAwMMwL2CnWIxw2pqkBoq6mrAmA+B0vo9VMXX24Y8ABaC2pGCgVwLXJ4dhAEgAN6eJB9C394ggpqIQxvcIp0jA+OkpF0k5QBlnSYAZppiCyfeRJ7c6wjtV6oCqq2nC2sh7Br" + 21 "gKEQBgMDt7iku72Bv7EHBBjDccWouacWbW0V3byArJ3WMdgS3d4K6ZhnBrfaDMjJ9Atcj8b22m3i0XEb/wBWOUBQmLlFE7CNWrUQFIN44fqlAtRMHsU5uaANitVA/9g4AbcIGLyG8A7ChgCemVoAEaXGjBS3w" + 22 "bzoa2OcjipYqWsgMtG5CAppXrQDMaOgZ1jOuRSqMRNHBh65+SwJ9CRNmJPiIV0gEUWzjMpQwPx4E2pOUQ9GykqZ0KpSigr2/exlLBe/inG7tnq6IConvzaJUYUQFO8zLdpyhVI8Btmiw370EsIJkkGKsoGr/C" + 23 "TsdpXlfjM9s2Ra7JkDyJkLBQC8lwVZwQ5NOkSpEzRpBqSLQbR4yV8Vyq/Ppt78oLDodbaZnsq9aHclyXwNCXfq2vfafA2M10TeG2xGoo8bjxGjd2Lv1MB9Vx4+uHjn7V6796OIuP1p4katp8+8njpsU8v0BDi" + 24 "Jdk3F5xlEz0CCEna4zUWffmb119oKwa3FlAIE1ibfSnkh5B0WyQAw2iMhPohehMFJSAhzc2D4XoG0BbCbS3eRJshSQlW4n3/TTagZiy7OpleMzoFloFCM4JiSXRD21eMbFbIoYgAZftZbL9u4BAZ5V+kEExhM" + 25 "nuikisBYx86Z6ayTpprg8LTmmW6yY1ljO/GEDBls1uljFQLx2ecaHES3y6AlkFOOoIQmqsShOaim6KMXMNoopJSiIykMjlaqaSsfdOppBwEkAAA7"; 26var OAUTH_FACEBOOK_LOGO ="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAKL2lDQ1BJQ0MgcHJvZmlsZQAASMedlndUVNcWh8+9d3qhzTDSGXqTLjCA9C4gHQRRGGYGGMoAwwxNbIioQEQREQFFkKCAAaOhSKyIYiEoqGAPSBBQYjCKqKhkRtZKfHl57+Xl98e939pn73P32XuftS4AJE8fLi8FlgIgmSfgB3o401eFR9Cx/QAGeIABpgAwWempvkHuwUAkLzcXerrICfyL3gwBSPy+ZejpT6eD/0/SrFS+AADIX8TmbE46S8T5Ik7KFKSK7TMipsYkihlGiZkvSlDEcmKOW+Sln30W2VHM7GQeW8TinFPZyWwx94h4e4aQI2LER8Q
26FGVxOpohvi1gzSZjMFfFbcWwyh5kOAIoktgs4rHgRm4iYxA8OdBHxcgBwpLgvOOYLFnCyBOJDuaSkZvO5cfECui5Lj25qbc2ge3" + 27 "IykzgCgaE/k5XI5LPpLinJqUxeNgCLZ/4sGXFt6aIiW5paW1oamhmZflGo/7r4NyXu7SK9CvjcM4jW94ftr/xS6gBgzIpqs+sPW8x+ADq2AiB3/w+b5iEAJEV9a7/xxXlo4nmJFwhSbYyNMzMzjbgclpG4oL/rfzr8DX3xPSPxdr+Xh+7KiWUKkwR0cd1YKUkpQj49PZXJ4tAN/zzE/zjwr/NYGsiJ5fA5PFFEqGjKuLw4Ubt5bK6Am8Kjc3n/qYn/MOxPWpxrkSj1nwA1yghI3aAC5Oc+gKIQARJ5UNz13/vmgw8F4psXpjqxOPefBf37rnCJ+JHOjfsc5xIYTGcJ+RmLa+JrCdCAACQBFcgDFaABdIEhMANWwBY4AjewAviBYBAO1gIWiAfJgA8yQS7YDApAEdgF9oJKUAPqQSNoASdABzgNLoDL4Dq4Ce6AB2AEjIPnYAa8AfMQBGEhMkSB5CFVSAsygMwgBmQPuUE+UCAUDkVDcR" + 28 "APEkK50BaoCCqFKqFaqBH6FjoFXYCuQgPQPWgUmoJ+hd7DCEyCqbAyrA0bwwzYCfaGg+E1cBycBufA+fBOuAKug4/B7fAF+Dp8Bx6Bn8OzCECICA1RQwwRBuKC+CERSCzCRzYghUg5Uoe0IF1IL3ILGUGmkXcoDIqCoqMMUbYoT1QIioVKQ21AFaMqUUdR7age1C3UKGoG9QlNRiuhDdA2aC/0KnQcOhNdgC5HN6Db0JfQd9Dj6DcYDIaG0cFYYTwx4ZgEzDpMMeYAphVzHjOAGcPMYrFYeawB1g7rh2ViBdgC7H7sMew57CB2HPsWR8Sp4sxw7rgIHA+XhyvHNeHO4gZxE7h5vBReC2+D98Oz8dn4Enw9vgt/Az+OnydIE3QIdoRgQgJhM6GC0EK4RHhIeEUkEtWJ1sQAIpe4iVhBPE68QhwlviPJkPRJLqRIkpC0k3SEdJ50j/SKTCZrkx3JEWQBeSe5kXyR/Jj8VoIiYSThJcGW2C" + 29 "hRJdEuMSjxQhIvqSXpJLlWMkeyXPKk5A3JaSm8lLaUixRTaoNUldQpqWGpWWmKtKm0n3SydLF0k/RV6UkZrIy2jJsMWyZf5rDMRZkxCkLRoLhQWJQtlHrKJco4FUPVoXpRE6hF1G+o/dQZWRnZZbKhslmyVbJnZEdoCE2b5kVLopXQTtCGaO+XKC9xWsJZsmNJy5LBJXNyinKOchy5QrlWuTty7+Xp8m7yifK75TvkHymgFPQVAhQyFQ4qXFKYVqQq2iqyFAsVTyjeV4KV9JUCldYpHVbqU5pVVlH2UE5V3q98UXlahabiqJKgUqZyVmVKlaJqr8pVLVM9p/qMLkt3oifRK+g99Bk1JTVPNaFarVq/2ry6jnqIep56q/ojDYIGQyNWo0yjW2NGU1XTVzNXs1nzvhZei6EVr7VPq1drTltHO0x7m3aH9qSOnI6XTo5Os85DXbKug26abp3ubT2MHkMvUe+A3k19WN9CP16/Sv+GAWxgac" + 30 "A1OGAwsBS91Hopb2nd0mFDkqGTYYZhs+GoEc3IxyjPqMPohbGmcYTxbuNe408mFiZJJvUmD0xlTFeY5pl2mf5qpm/GMqsyu21ONnc332jeaf5ymcEyzrKDy+5aUCx8LbZZdFt8tLSy5Fu2WE5ZaVpFW1VbDTOoDH9GMeOKNdra2Xqj9WnrdzaWNgKbEza/2BraJto22U4u11nOWV6/fMxO3Y5pV2s3Yk+3j7Y/ZD/ioObAdKhzeOKo4ch2bHCccNJzSnA65vTC2cSZ79zmPOdi47Le5bwr4urhWuja7ybjFuJW6fbYXd09zr3ZfcbDwmOdx3lPtKe3527PYS9lL5ZXo9fMCqsV61f0eJO8g7wrvZ/46Pvwfbp8Yd8Vvnt8H67UWslb2eEH/Lz89vg98tfxT/P/PgAT4B9QFfA00DQwN7A3iBIUFdQU9CbYObgk+EGIbogwpDtUMjQytDF0Lsw1rDRsZJXxqvWrrocrhHPDOyOwEaERDR" + 31 "Gzq91W7109HmkRWRA5tEZnTdaaq2sV1iatPRMlGcWMOhmNjg6Lbor+wPRj1jFnY7xiqmNmWC6sfaznbEd2GXuKY8cp5UzE2sWWxk7G2cXtiZuKd4gvj5/munAruS8TPBNqEuYS/RKPJC4khSW1JuOSo5NP8WR4ibyeFJWUrJSBVIPUgtSRNJu0vWkzfG9+QzqUvia9U0AV/Uz1CXWFW4WjGfYZVRlvM0MzT2ZJZ/Gy+rL1s3dkT+S453y9DrWOta47Vy13c+7oeqf1tRugDTEbujdqbMzfOL7JY9PRzYTNiZt/yDPJK817vSVsS1e+cv6m/LGtHlubCyQK+AXD22y31WxHbedu799hvmP/jk+F7MJrRSZF5UUfilnF174y/ariq4WdsTv7SyxLDu7C7OLtGtrtsPtoqXRpTunYHt897WX0ssKy13uj9l4tX1Zes4+wT7hvpMKnonO/5v5d+z9UxlfeqXKuaq1Wqt5RPXeAfWDwoOPBlh" + 32 "rlmqKa94e4h+7WetS212nXlR/GHM44/LQ+tL73a8bXjQ0KDUUNH4/wjowcDTza02jV2Nik1FTSDDcLm6eORR67+Y3rN50thi21rbTWouPguPD4s2+jvx064X2i+yTjZMt3Wt9Vt1HaCtuh9uz2mY74jpHO8M6BUytOdXfZdrV9b/T9kdNqp6vOyJ4pOUs4m3924VzOudnzqeenL8RdGOuO6n5wcdXF2z0BPf2XvC9duex++WKvU++5K3ZXTl+1uXrqGuNax3XL6+19Fn1tP1j80NZv2d9+w+pG503rm10DywfODjoMXrjleuvyba/b1++svDMwFDJ0dzhyeOQu++7kvaR7L+9n3J9/sOkh+mHhI6lH5Y+VHtf9qPdj64jlyJlR19G+J0FPHoyxxp7/lP7Th/H8p+Sn5ROqE42TZpOnp9ynbj5b/Wz8eerz+emCn6V/rn6h++K7Xxx/6ZtZNTP+kv9y4dfiV/Kvjrxe9rp71n/28ZvkN/" + 33 "NzhW/l3x59x3jX+z7s/cR85gfsh4qPeh+7Pnl/eriQvLDwG/eE8/vMO7xsAAAAb1BMVEU7V53////n6vIyUZofRJSHlL0lSJbe4ew1U5trfbE4VZzO0+Pz9fknSpdBXKAwT5rY3Om7w9mfqspdcaqBkLyqtNEbQpRxg7SQncK4wNiWosaMmcHv8fdjdq1MZKTJz+IAMo2yu9VUa6ilr854iLd4bKh8AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AMfAgY04SALZgAAAL9JREFUWMPt2cEKwjAQhOEdUqINTRbBg6DQ939LES9tUdq6Q/Ew/wN80EPm0DWguZHyBhiKESuwZtSaORckc0odmN8x7RTk6g2LYt4AMMEOoIIfvQB4Bhf84v0OXtkgyGBmgw82uGAuOdd3HLALT0KaeTm+MXXq9YTRmj27ygadDSaBAo8EsV5lg4kMDuxPHtlgzwYzG3Q2aAKj4Kj5EihQoECBAgX+D+hc0Hf8ut8Eth3HhS1ggW0/f6yDr/PHE8k/CLR1iHW4AAAAAElFTkSuQmCC"; 34 35 36 37 38function oauthResults(results){ 39 if(results.error == "AlreadyConnected"){ 40 $.alert([{ key: "xer", value: "The account your are trying to use is already connected to a different user", level: "error" }]); 41 }
41else if(results.error == "NotConnected" || results.error == "UserCancelled"){ 42 }else if(results.error){ 43 $.alert([{ key: "xer", value: $locale["_form_unexpected_error"], level: "error" }]); 44 } 45 $(window).trigger("oauthcallback", results); 46} 47 48$.initiateOAuth = function(props, cb){ 49 var mode = 'initiate'; 50 if(props.createuser) mode += ';initiate-create'; 51 if(props.forcelogin) mode += ';initiate-forcelogin'; 52 var openOauth = true; 53 var options = { 54 fallback: props.fallback, 55 name: props.name 56 } 57 switch (props.name) { 58 case "google": 59 function doAuthGoogle() { 60 if ($.isEmbedded && (/Teams/i.test(navigator.userAgent) || $.isHandheld)) { 61 $.alert({ 62 message : "Please finish setting up your account via the MS Teams Web Portal using your web browser and going to https://teams.microsoft.com/", 63 buttons : [ 64 {text: "OK", styleClass:"button button-medium reverse hollow no-hover", id:"CANCEL"} 65 ], 66 }); 67 } else { 68 gapi.auth2.authorize({client_id : $objects["GoogleClientID"] || props.client_id || "837323687601-093r166amt5frv141597ff96mqpnk231.apps.googleusercontent.com",scope:"email profile openid",response_type: 'id_token permission',ux_mode: 'redirect'}, function(response) { 69 if (response && response.error) { 70 switch(response.error) { 71 case "popup_closed_by_user": 72 break; 73 case "popup_blocked_by_browser": 74 $.alert([{ key: "xer", value: "Google Login Popup was blocked by your browser. Please try again.", level: "error" }]) 75 break; 76 case "access_denied": 77 $.alert([{ key: "xer", value: "Please Grant Comparably permission to continue", level: "error" }]) 78 break; 79 case "idpiframe_initialization_failed": 80 $.alert([{ key: "xer", value: "Please allow third-party cookies to continue", level: "error" }]) 81 break; 82 case "immediate_failed": 83 default: 84 $.alert([{ key: "xer", value: $locale["_form_unexpected_error"], level: "error" }]); 85 break; 86 } 87 return cb(); 88 } else if (!response || !response.access_token || !response.id_token) { 89 $.alert([{ key: "xer", value: $locale["_form_unexpected_error"], level: "error" }]); 90 return cb(); 91 } 92 $.submit(props.authorizeURL || $routes.thirdparty.google_oauth.getURL(),{token:response},function(e,results){$(window).trigger("oauthcallback", results);}); 93 }); 94 } 95 } 96 if (gapi.auth2) { 97 doAuthGoogle(); 98 } else { 99 gapi.load('auth2', doAuthGoogle); 100 } 101 openOauth = false; 102 break; 103 case "linkedin": 104 options.collectURL = $routes.thirdparty.linkedin_oauth.getURL(mode); 105 options.logo = OAUTH_LINKEDIN_LOGO; 106 break; 107 case "facebook": 108 options.collectURL = $routes.thirdparty.facebook_oauth.getURL(mode); 109 options.logo = OAUTH_FACEBOOK_LOGO; 110 break; 111 } 112 if (props.funnelId && options.collectURL) { 113 options.collectURL += (!~options.collectURL.indexOf('?') ? '?' : '&') + 'funnelId=' + props.funnelId; 114 } 115 if(openOauth){$.__openOAuthPopup(options, cb);} 116 117 $(window).unbind("oauthcallback").bind("oauthcallback", function(e, results){ 118 $(window).unbind("oauthcallback"); 119 cb(results, props.name); 120 }); 121}; 122 123var oauthWindowCheck = 0; 124var oauthWindow = null; 125 126 127$.__openOAuthPopup = function(options, cb){ 128 /* check for previous oath calls */ 129 if(oauthWindow){ 130 try{ 131 oauthWindow.close(); 132 oauthWindow = null; 133 $(window).trigger("oauthcallback", {cancelled:true}); 134 }catch(e){ 135 } 136 } 137 138 oauthWindow = window.open('about:blank','_blank','location=yes,height=300,width=680'); 139 try { 140 if (typeof oauthWindow == 'undefined' || (oauthWindow && oauthWindow.closed)) 141 oauthWindow = undefined; 142 } catch (e) { 143 oauthWindow = undefined; 144 } 145 146 if(!oauthWindow) { 147 if (options.fallback) { 148 options.fallback.name = options.name; 149 window.location.href = options.collectURL + (!~options.collectURL.indexOf('?') ? '?' : '&') + 'fallback=' + JSON.stringify(options.fallback); 150 } else { 151 $.alert({ title: '', message: 'In-App Browser does not support authentication via <i>' + options.name + '</i>. Please authenticate via email or authenticate via ' + options.name + ' using the <b>Default Browser</b>.'}); 152 } 153 return; 154 } 155 156 clearInterval(oauthWindowCheck); 157 oauthWindowCheck = setInterval(function(){ 158 if(!oauthWindow || oauthWindow.closed){ 159 oauthWindow = null; 160 clearInterval(oauthWindowCheck); 161 $(window).trigger("oauthcallback", {cancelled:true}); 162 } 163 },100); 164 165 try{ 166 var doc = oauthWindow.document; 167 var w = "<html><head><title>Connecting...</title><style>" + 168 "*{font-family: 'lucida grande' ,tahoma,verdana,arial,sans-serif;color: #DDD;font-size: 14px;}" + 169 "a{text-decoration:none;}" + 170 "a:hover{text-decoration:underline;}" + 171 "p{border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;background:#FFF;text-align:center;padding:60px 0;clear:both;margin:20px 0;}" + 172 "body{padding:5px;background:#171f29;text-align:right}" + 173 "h1{float:left;color:#f6f6f6;font-size:17px;margin:0;padding:0;text-shadow:0 2px 3px #000;}" +
174 "span{display:inline-block;margin:0 20px;height:80px}" + 175 "span.thirdparty{width:200px;background:url('" + options.logo + "') no-repeat 0 50%;}" + 176 "span.loadingicon{width:64px;background:url('" + OAUTH_LOADING_GIF + "') no-repeat 50% 50%;}" + 177 "span.site{width:200px;background:url('" + OAUTH_COMPARABLY_LOGO + "') no-repeat 100% 50%;}" + 178 "</style></head><body>" + 179 "<h1>Initiating Connection...</h1>" + 180 "<a href=\"javascript:self.close()\">Close</a>" + 181 "<p><span class=\"site\"></span><span class=\"loadingicon\"></span><span class=\"thirdparty \"></span></p>" + 182 "<a href=\"" + options.collectURL + "\">Click here if nothing happens</a>" + 183 "<scr" + "ipt>setTimeout(function(){location.href='" + options.collectURL + "';},500);</" + "scri" + "pt></body></html>"; 184 doc.write(w); 185 doc.close(); 186 return; 187 } catch (e) { 188 } 189};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.