PageSourceSearch

https://ntconnections.net/js/utm5.js

js ntconnections.net collected 2026-10-04 13:24:37 UTC 28,985 bytes, 733 lines download raw bytes

1/* IE8 compability part - begin */
2
3(function(fn) {
4    if (!fn.map) fn.map = function(f) { var r = []; for (var i = 0; i < this.length; i++) r.push(f(this[i])); return r }
5    if (!fn.filter) fn.filter = function(f) { var r = []; for (var i = 0; i < this.length; i++)
6            if (f(this[i])) r.push(this[i]);
7        return r }
8})(Array.prototype);
9
10if (!Object.prototype.hasOwnProperty) {
11    Object.prototype.hasOwnProperty = function(prop) {
12        var proto = this.__proto__ || this.constructor.prototype;
13        return (prop in this) && (!(prop in proto) || proto[prop] !== this[prop]);
14    };
15}
16
17if (typeof String.prototype.trim !== 'function') {
18    String.prototype.trim = function() {
19        return this.replace(/^\s+|\s+$/g, '');
20    }
21}
22
23Object.keys = Object.keys || function(o) {
24    var result = [];
25    for (var name in o) {
26        if (o.hasOwnProperty(name))
27            result.push(name);
28    }
29    return result;
30};
31
32/* IE8 compability part - end */
33
34var NTM;
35
36jQuery(document).ready(function($) {
37    NTM = {
38        version: 5004,
39        track: '',
40        serviceURL: '/includes/ntm.php',
41        pixelURL: '/images/pixel.track2',
42        cookies: {},
43        urlParams: {},
44        keys: {
45            'key1': {},
46            'key2': {},
47            'key4': {},
48            'key5': {},
49            'key6': {},
50            'key7': {},
51            'key8': {}
52        },
53        last_pointers: {
54            'key1': 0,
55            'key2': 0,
56            'key4': 0,
57            'key5': 0,
58            'key6': 0,
59            'key7': 0,
60            'key8': 0
61        },
62        hasUrlParameter: false,
63        initialVisit: false,
64        cookieDomain: '',
65        start: function() {
66            NTM.Utils.Url.getUrlParams();
67            NTM.cookieDomain = NTM.Utils.Cookie.getDomainForCookie(NTM.Utils.Url.parseUrl(document.URL, 'host'));
68            NTM.getTrackVal();
69            NTM.Utils.Cookie.getCookies();
70
71            var tmpUrl = NTM.Utils.Url.urlComp(document.URL);
72            var pageID = NTM.getPageID(tmpUrl[0]);
73
74            NTM.setKey(7, 0, encodeURIComponent(document.URL));
75            NTM.setKey(7, 1, pageID);
76
77            NTM.setKey(5, 0, NTM.track == undefined ? '' : NTM.track);
78
79            if (NTM.getKey(5, 1) == '') // key5sk1 is not exist in URL, check for key5sk1 cookie to keep chain if we have an empty referrer
80            {
81                if (NTM.Utils.Cookie.get('key5sk1') == null) {
82                    NTM.initialVisit = true;
83                    NTM.setKey6Parameters();
84
85                    $.ajax({
86                        url: NTM.serviceURL,
87                        type: 'POST',
88                        dataType: 'text',
89                        data: 'usf=getSHA',
90                        async: false,
91                        cache: false,
92                        success: function(data) {
93                            NTM.setKey(5, 1, data);
94                            NTM.urlParams['key5sk1'] = data;
95                        }
96                    });
97
98                    NTM.checkSocialMedia();
99                    NTM.checkKeywords();
100                    NTM.checkChannel();
101
102                    NTM.Utils.Cookie.set('key5sk1', JSON.stringify(NTM.urlParams));
103                } else {
104                    var key5sk1Cookie = NTM.Utils.Cookie.get('key5sk1');
105
106                    if (key5sk1Cookie != null) {
107                        var prevPrms = JSON.parse(key5sk1Cookie);
108
109                        if (prevPrms != null && prevPrms.hasOwnProperty('key5sk1')) {
110                            NTM.setKey(5, 1, prevPrms['key5sk1'])
111                        } else {
112                            NTM.setKey(5, 1, NTM.Utils.Cookie.get('n_sha'));
113                        }
114                    } else {
115                        NTM.setKey(5, 1, NTM.Utils.Cookie.get('n_sha'));
116                    }
117
118                    NTM.urlParams['key5sk1'] = NTM.getKey(5, 1);
119
120                    for (var i in prevPrms) {
121                        if (prevPrms.hasOwnProperty(i) && i != 'key5sk1' && i != 'license') {
122                            if (!NTM.urlParams.hasOwnProperty(i)) {
123                                NTM.urlParams[i] = prevPrms[i];
124
125                                if (i == 'track' && NTM.track == '' && prevPrms[i] != '') {
126                                    NTM.track = prevPrms[i];
127                                    NTM.setKey(5, 0, NTM.track);
128                                }
129                            }
130                        }
131                    }
132
133                    NTM.Utils.Cookie.set('key5sk1', JSON.stringify(NTM.urlParams));
134                }
135            } else {
136                NTM.urlParams['key5sk1'] = NTM.getKey(5, 1);
137                NTM.Utils.Cookie.set('key5sk1', JSON.stringify(NTM.urlParams));
138            }
139
140            $('a').each(function() {
141                var tmp = $(this).attr('href');
142                var tmp2 = $(this).attr('class');
143
144                if (tmp != undefined && tmp2 != 'addthis' && !$(this).hasClass('notrack')) {
145                    if (!tmp.match(/youtube\.com\//i) && !tmp.match(/facebook\.com\//i) && !tmp.match(/linkedin\.com\//i) && !tmp.match(/plus\.google\.com\//i) && !tmp.match(/instagram\.com\//i) && !tmp.match(/\.swf$/i) && !tmp.match(/\.flv/gi) &&
146                        !tmp.match(/liveperson\.net/i) && !tmp.match(/addthis\.com/ig) && !tmp.match(/matousec\.com/i) &&
147                        !tmp.match(/cpacanada\.ca\//i) && !tmp.match(/mailto:/i) &&
148                        !tmp.match(/cert.webtrust\.org\//i) && !tmp.match(/mailto:/i) && !tmp.match(/http:\/\/www.comodo.cn/i) &&
149                        !tmp.match(/http:\/\/www.comodojapan.com/i) && !tmp.match(/http:\/\/www.comodoisrael.com/i) && !tmp.match(/http:\/\/www.comodogroup.it/i) &&
150                        !tmp.match(/products\/frontpage/i) && !tmp.match(/javascript:/i) && !tmp.match(/\#/i) &&
151                        !tmp.match(/twitter/i) && !tmp.match(/download.cnet.com/i) && !tmp.match(/support\.comodo\.com/i) && !tmp.match(/secure\.comodo\.com\/products\/publiclyDisclosedSubCACerts/i) && !tmp.match(/http:\/\/thevillagessuntimes.com/i)) {
152                        var domain = NTM.Utils.Url.getDomainFromUrl(tmp);
153
154                        if (domain == null) {
155                            // internal link, do nothing
156                        } else // "external" or "internal full" web path
157                        {
158                            if (/secure\.comodo\.(?:com|net)\/home\/purchase\.php/im.test(domain) || NTM.cookieDomain != NTM.Utils.Cookie.getDomainForCookie(domain)) {
159                                var par = NTM.Utils.Url.parametersToString(tmp);
160
161                                if (par.length > 0) {
162                                    if (!tmp.match(/\.php\?/ig) && !tmp.match(/\.html\?/ig) && !tmp.match(/\.htm\?/ig) && !tmp.match(/\?/ig)) {
163                                        tmp += '?' + par;
164                                    } else {
165                                        tmp = tmp.substr(0, tmp.indexOf('?') + 1) + par;
166                                    }
167                                }
168
169                                $(this).attr('href', tmp);
170                            }
171                        }
172                    }
173                }
174            });
175        },
176        getTrackVal: function() {
177            if (NTM.urlParams.hasOwnProperty('track') && NTM.urlParams.track == parseInt(NTM.urlParams.track)) {
178                NTM.track = NTM.urlParams.track;
179            } else {
180                var t = $("#track");
181                NTM.track = t.html();
182                t.remove();
183            }
184
185            if (NTM.track == undefined) {
186                NTM.track = '';
187            }
188
189            if (NTM.track == '') {
190                if (typeof(NTM.keys.key5.sk0) != 'undefined' && NTM.keys.key5.sk0 != '') {
191                    NTM.track = NTM.keys.key5.sk0;
192                }
193            }
194        },
195        Utils: {
196            Url: {
197                parseUrl: function(str, component) {
198                    var key = ['source', 'scheme', 'authority', 'userInfo', 'user', 'pass', 'host', 'port',
199                            'relative', 'path', 'directory', 'file', 'query', 'fragment'
200                        ],
201                        ini = (this.php_js && this.php_js.ini) || {},
202                        mode = (ini['phpjs.parse_url.mode'] &&
203                            ini['phpjs.parse_url.mode'].local_value) || 'php',
204                        parser = {
205                            php: /^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
206                            strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
207                            loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/\/?)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ // Added one optional slash to post-scheme to catch file:/// (should restrict this)
208                        };
209                    var m = parser[mode].exec(str),
210                        uri = {},
211                        i = 14;
212                    while (i--) {
213                        if (m[i]) {
214                            uri[key[i]] = m[i];
215                        }
216                    }
217                    if (component) {
218                        return uri[component.replace('PHP_URL_', '').toLowerCase()];
219                    }
220                    if (mode !== 'php') {
221                        var name = (ini['phpjs.parse_url.queryKey'] &&
222                            ini['phpjs.parse_url.queryKey'].local_value) || 'queryKey';
223                        parser = /(?:^|&)([^&=]*)=?([^&]*)/g;
224                        uri[name] = {};
225                        uri[key[12]].replace(parser, function($0, $1, $2) {
226                            if ($1) {
227                                uri[name][$1] = $2;
228                            }
229                        });
230                    }
231                    delete uri.source;
232                    return uri;
233                },
234                getReferrer: function() {
235                    var referrer;
236
237                    if (document.referrer != '') {
238                        var host = NTM.Utils.Url.parseUrl(document.referrer, 'host');
239
240                        if (host.match(/google/i)) {
241                            referrer = 'Google';
242                        } else if (host.match(/yahoo/i)) {
243                            referrer = 'Yahoo';
244                        } else if (host.match(/bing/i)) {
245                            referrer = 'Bing';
246                        } else if (document.URL.indexOf('?', 0) != -1) {
247                            referrer = document.URL.substr(0, document.URL.indexOf('?', 0));
248                        } else {
249                            referrer = document.URL;
250                        }
251                    } else {
252                        if (document.URL.indexOf('?', 0) != -1) {
253                            referrer = document.URL.substr(0, document.URL.indexOf('?', 0));
254                        } else {
255                            referrer = document.URL;
256                        }
257                    }
258
259                    return encodeURIComponent(referrer);
260                },
261                urlComp: function(url) {
262                    var tmp = [];
263
264                    if (url.indexOf('?', 0) != -1) {
265                        tmp[0] = url.substring(0, url.indexOf('?', 0));
266                        tmp[1] = url.substring(url.indexOf('?', 0) + 1, url.length);
267                    } else {
268                        tmp[0] = url;
269                    }
270
271                    return tmp;
272                },
273                parametersToString: function(tmp) {
274                    var key;
275                    var pars = {};
276
277                    for (key in NTM.urlParams) {
278                        if (NTM.urlParams[key] != '') {
279                            pars[key] = NTM.urlParams[key];
280                        }
281                    }
282
283                    var obj = NTM.Utils.Url.combine(tmp);
284
285                    for (key in obj) {
286                        pars[key] = obj[key];
287                    }
288
289                    for (key in NTM.keys) {
290                        if (key == 'key5') {
291                            for (var subkey in NTM.keys[key]) {
292                                if (subkey == 'sk0' || subkey == 'sk1') {
293                                    if (NTM.keys[key][subkey] != '') {
294                                        pars[key + subkey] = NTM.keys[key][subkey];
295                                    }
296                                }
297                            }
298                        }
299                    }
300
301                    var str = [];
302
303                    for (var i in pars) {
304                        str.push(i + '=' + pars[i]);
305                    }
306
307                    return str.join('&');
308                },
309                combine: function(url) {
310                    var pos = url.indexOf('?');
311
312                    var pairs = {};
313
314                    if (pos != -1) {
315                        var parts = url.substring(pos + 1).split('&');
316
317                        if (parts.length > 0) {
318                            parts.map(function(i) {
319                                var s = i.split('=');
320
321                                if (s.length == 2) {
322                                    var s0 = NTM.Utils.Url.escape(s[0]);
323
324                                    if (s0.length > 0) {
325                                        pairs[s[0]] = NTM.Utils.Url.escape(s[1]);
326                                    }
327                                }
328                            });
329                        }
330                    }
331
332                    return pairs;
333                },
334                getUrlParams: function() {
335                    NTM.urlParams = {};
336
337                    var pos = document.URL.indexOf('?');
338
339                    if (pos != -1) {
340                        var parts = document.URL.substring(pos + 1).split('&');
341
342                        if (parts.length > 0) {
343                            NTM.hasUrlParameter = true;
344
345                            parts.map(function(i) {
346                                var s = i.split('=');
347
348                                if (s.length == 2) {
349                                    var s0 = s[0].trim();
350                                    var m = s0.match(/^key(\d+)sk(\d+)$/i);
351
352                                    if (m == null) {
353                                        NTM.urlParams[s0] = NTM.Utils.Url.escape(s[1]);
354                                    } else {
355                                        if ((m[1] == 5 && m[2] < 2) || m[1] == 2 || m[1] == 1) {
356                                            NTM.setKey(m[1], m[2], NTM.Utils.Url.escape(s[1]));
357                                        }
358                                    }
359                                }
360                            });
361                        }
362                    }
363                },
364                escape: function(unsafe) {
365
366                    var dp = unsafe.indexOf('#');
367
368                    if (dp > -1) {
369                        unsafe = unsafe.substring(0, dp);
370                    }
371
372                    return unsafe
373                        .replace(/&/g, "&amp;")
374                        .replace(/</g, "&lt;")
375                        .replace(/>/g, "&gt;")
376                        .replace(/"/g, "&quot;")
377                        .replace(/'/g, "&#039;")
378                        .trim();
379                },
380                getDomainFromUrl: function(str) {
381                    var rg = /^http(?:|s):\/\/([^\/]+)/i;
382                    var match = rg.exec(str);
383                    if (match != null) {
384                        return match[1];
385                    }
386
387                    return null;
388                }
389            },
390            Cookie: {
391                get: function(name) {
392                    var nameEQ = name + "=";
393                    var ca = document.cookie.split(';');
394
395                    for (var i = 0; i < ca.length; i++) {
396                        var c = ca[i];
397
398                        while (c.charAt(0) == ' ') {
399                            c = c.substring(1, c.length);
400                        }
401                        if (c.indexOf(nameEQ) == 0) {
402                            return c.substring(nameEQ.length, c.length);
403                        }
404                    }
405
406                    return null;
407                },
408                getDomainForCookie: function(str) {
409                    var m = str.match(/\./g);
410
411                    if (m) {
412                        switch (m.length) {
413                            case 1:
414                                return '.' + str;
415                            case 2:
416                                var p = str.indexOf('.');
417                                return str.substring(p);
418                            default:
419                                var L1 = str.lastIndexOf('.');
420                                var L2 = str.lastIndexOf('.', L1 - 1);
421                                return str.substring(L2);
422                        }
423                    }
424
425                    return str;
426                },
427                getCookies: function() {
428                    NTM.cookies = {};
429
430                    var parts = document.cookie.split(';');
431
432                    if (parts.length > 0) {
433                        parts.map(function(i) {
434                            var pos = i.indexOf('=');
435
436                            if (pos != -1) {
437                                NTM.cookies[i.substr(0, pos).trim()] = decodeURIComponent(i.substr(pos + 1));
438                            }
439                        });
440                    }
441                },
442                set: function(name, value, days) {
443                    var expires;
444
445                    if (days) {
446                        var date = new Date();
447                        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
448                        expires = "; expires=" + date.toUTCString();
449                    } else {
450                        expires = "";
451                    }
452
453                    document.cookie = name + "=" + value + expires + ";path=/;domain=" + NTM.cookieDomain + ";";
454                },
455                del: function(name) {
456                    document.cookie = name + '=; expires=Thu, 2 Aug 2001 20:47:11 UTC; path=/';
457                }
458            },
459            DateTime: {
460                getTimestamp: function() {
461                    var tmpDate = new Date();
462
463                    return Date.UTC(tmpDate.getUTCFullYear(), tmpDate.getUTCMonth(), tmpDate.getUTCDate(), tmpDate.getUTCHours(), tmpDate.getUTCMinutes(), tmpDate.getUTCSeconds());
464                }
465            }
466        },
467        getKey: function(keyIndex, subKeyIndex) {
468            var keyString = 'key' + keyIndex;
469            var subKeyString = 'sk' + subKeyIndex;
470
471            if (NTM.keys.hasOwnProperty(keyString)) {
472                if (NTM.keys[keyString].hasOwnProperty(subKeyString)) {
473                    return NTM.keys[keyString][subKeyString];
474                }
475            }
476
477            return '';
478        },
479        setKey: function(keyIndex, subKeyIndex, value) {
480            var keyString = 'key' + keyIndex;
481            var subKeyString = 'sk' + subKeyIndex;
482            var fullKeyString = keyString + subKeyString;
483
484            if (NTM.keys.hasOwnProperty(keyString)) {
485                NTM.keys[keyString]['sk' + subKeyIndex] = value;
486
487                if (subKeyIndex > NTM.last_pointers[keyString]) {
488                    NTM.last_pointers[keyString] = parseInt(subKeyIndex);
489                }
490            }
491        },
492        getPageID: function(url) {
493            var req = $.ajax({
494                url: NTM.serviceURL,
495                type: 'POST',
496                dataType: 'text',
497                data: 'usf=getUrlId&url=' + encodeURIComponent(url.toLowerCase()),
498                async: false,
499                cache: false,
500                success: function(data) {
501                    if ((data.length < 1 || data.length > 10) || isNaN(data)) {
502                        data = '0000';
503                    }
504
505                    return data;
506                }
507            });
508
509            if (req.statusText == 'OK') {
510                return req.responseText;
511            }
512
513            return '';
514        },
515        setKey6Parameters: function() {
516            $.ajax({
517                url: NTM.serviceURL,
518                type: 'POST',
519                dataType: 'text',
520                data: 'dataReferrer=' + encodeURIComponent(document.referrer) + '&usf=retrieveInfo',
521                async: false,
522                cache: false,
523                success: function(data) {
524                    var parts = data.split('&');
525                    var m;
526
527                    if (parts.length > 0) {
528                        parts.map(function(i) {
529                            var s = i.split('=');
530
531                            if (s.length == 2) {
532                                m = s[0].match(/key(\d)sk(\d+)/i);
533
534                                if (m != null && m.length == 3) {
535                                    NTM.setKey(m[1], m[2], decodeURIComponent(s[1]));
536                                } else {
537                                    if (s[0] == 'n_sha') {
538                                        NTM.cookies[s[0]] = s[1];
539                                    }
540                                }
541                            }
542                        });
543                    }
544                }
545            });
546
547            NTM.setKey(6, 7, NTM.Utils.Url.getReferrer());
548
549            if (FlashDetect.installed) {
550                NTM.setKey(6, 8, FlashDetect.major.toString() + FlashDetect.minor.toString() + FlashDetect.revision.toString());
551            }
552
553            NTM.setKey(6, 9, screen.width.toString() + screen.height.toString());
554            NTM.setKey(6, 10, navigator.javaEnabled());
555            NTM.setKey(6, 11, NTM.cookies.n_sha);
556            NTM.setKey(6, 12, NTM.version);
557        },
558        setKeyIfNotExists: function(keyIndex, subKeyIndex, value) {
559            var keyString = 'key' + keyIndex;
560            var subKeyString = 'sk' + subKeyIndex;
561
562            if (NTM.keys.hasOwnProperty(keyString)) {
563                if (!NTM.keys[keyString].hasOwnProperty(subKeyString)) {
564                    NTM.setKey(keyIndex, subKeyIndex, value);
565                }
566            }
567        },
568        checkSocialMedia: function() {
569            var ref = document.referrer;
570            var match = '';
571
572            if (ref.match(/http.:\/\/.*\.facebook\.com.*/i)) {
573                match = 'fb';
574            } else if (ref.match(/http.:\/\/t\.co\/.*/i)) {
575                match = 'tw';
576            } else if (ref.match(/http.:\/\/lnkd\.in\/.*/i) || ref.match(/http.:\/\/.*\.linkedin\.com.*/i)) {
577                match = 'li';
578            }
579
580            if (match != '') {
581                NTM.setKeyIfNotExists(1, 1, 'sm');
582                NTM.setKeyIfNotExists(1, 2, match);
583            }
584        },
585        checkChannel: function() {
586            if (NTM.hasUrlParameter || NTM.getKey(6, 7) == 'Google' || NTM.getKey(6, 7) == 'Yahoo' || NTM.getKey(6, 7) == 'Bing') {
587                if (NTM.getKey(1, 1) == 'sem' || NTM.getKey(1, 1) == 'em' || NTM.getKey(1, 1) == 'upl') {
588                    NTM.campaignMon.funcSEMEMUPL([NTM.getKey(1, 1), NTM.urlParams["afl"]]);
589                    return;
590                }
591
592                if ((NTM.getKey(1, 1) != 'sem' || NTM.getKey(1, 1) != '' || NTM.getKey(1, 1) != 'dt') && (NTM.getKey(6, 7) == 'Google' || NTM.getKey(6, 7) == 'Yahoo' || NTM.getKey(6, 7) == 'Bing')) {
593                    NTM.campaignMon.funcORS(NTM.getKey(6, 7));
594                    return;
595                }
596
597                if (NTM.urlParams['rs'] != undefined) {
598                    NTM.campaignMon.funcApp(['rs', NTM.urlParams['pid'], NTM.urlParams['rs']]);
599                    return;
600                }
601
602                if (NTM.urlParams['d'] != undefined) {
603                    NTM.campaignMon.funcApp(['d', NTM.urlParams['stage'], NTM.urlParams['d']]);
604                    return;
605                }
606
607                if (typeof(NTM.urlParams['subaffiliateid']) !== 'undefined' && NTM.urlParams['subaffiliateid'] != '') {
608                    NTM.campaignMon.funcSTeam(NTM.urlParams['subaffiliateid']);
609                    return;
610                }
611
612                if (NTM.getKey(1, 1) == '') {
613                    NTM.campaignMon.funcDT();
614                }
615            } else {
616                NTM.campaignMon.funcDT();
617            }
618        },
619        checkKeywords: function() {
620            var m = document.referrer.match(/http(s|):\/\/www\.google\.com.*q=([^&]*).*/i);
621
622            if (m != null && m.length == 3) {
623                if (NTM.getKey(1, 3) == '') {
624                    NTM.setKey(1, 3, decodeURIComponent(m[2]));
625                }
626
627                NTM.setKey(6, 1, NTM.getKey(1, 3));
628                return;
629            }
630
631            m = document.referrer.match(/http:\/\/.*yahoo\.com\/search;.*\?p=([^&]*).*/i);
632
633            if (m != null && m.length == 2) {
634                if (NTM.getKey(1, 3) == '') {
635                    NTM.setKey(1, 3, decodeURIComponent(m[1]));
636                }
637
638                NTM.setKey(6, 1, NTM.getKey(1, 3));
639                return;
640            }
641
642            m = document.referrer.match(/http:\/\/www\.bing\.com.*q=([^&]*).*/i);
643
644            if (m != null && m.length == 2) {
645                if (NTM.getKey(1, 3) == '') {
646                    NTM.setKey(1, 3, decodeURIComponent(m[1]));
647                }
648
649                NTM.setKey(6, 1, NTM.getKey(1, 3));
650            }
651        },
652        getPixelUrl: function() {
653            var sk;
654            var key;
655            var str = [];
656
657            for (var param in NTM.urlParams) {
658                if (param != 'key5sk1') {
659                    str.push(param + '=' + NTM.urlParams[param]);
660                }
661            }
662
663            if (NTM.initialVisit) {
664                for (key in NTM.keys) {
665                    if (key == 'key1' || key == 'key2' || key == 'key6' || key == 'key4') {
666                        for (sk in NTM.keys[key]) {
667                            if (NTM.keys[key][sk] != '') {
668                                str.push(key + sk + '=' + NTM.keys[key][sk]);
669                            }
670                        }
671                    }
672                }
673            }
674
675            for (key in NTM.keys) {
676                if (key == 'key5' || key == 'key7') {
677                    for (sk in NTM.keys[key]) {
678                        if (NTM.keys[key][sk] != '') {
679                            str.push(key + sk + '=' + NTM.keys[key][sk]);
680                        }
681                    }
682                }
683            }
684
685            str.push('rnd=' + Math.floor((Math.random() * 1000000) + 1));
686
687            return str.join('&');
688        },
689        campaignMon: {
690            funcSEMEMUPL: function(args) {
691                NTM.setKeyIfNotExists(1, 1, args[0]);
692                NTM.setKeyIfNotExists(1, 2, NTM.getKey(6, 7));
693
694                if (args[1]) {
695                    NTM.setKeyIfNotExists(1, 5, args[1]);
696                }
697            },
698            funcORS: function(se) {
699                NTM.setKeyIfNotExists(1, 1, 'ors');
700                NTM.setKeyIfNotExists(1, 2, NTM.getKey(6, 7));
701                if (NTM.getKey(6, 1) != '') {
702                    NTM.setKeyIfNotExists(1, 3, NTM.getKey(6, 1));
703                }
704            },
705            funcApp: function(args) {
706                NTM.setKeyIfNotExists(1, 1, 'app');
707
708                if (args[0] == 'rs') {
709                    NTM.setKeyIfNotExists(1, 2, 'CIS');
710                    NTM.setKeyIfNotExists(1, 3, args[1]);
711                    NTM.setKeyIfNotExists(1, 4, args[2]);
712                } else if (args[0] == 'd') {
713                    NTM.setKeyIfNotExists(1, 2, 'GBTBA');
714                    NTM.setKeyIfNotExists(1, 3, args[1]);
715                    NTM.setKeyIfNotExists(1, 4, args[2]);
716                }
717            },
718            funcSTeam: function(args) {
719                NTM.setKeyIfNotExists(1, 1, 'st');
720                NTM.setKeyIfNotExists(1, 5, args);
721            },
722            funcDT: function() {
723                NTM.setKeyIfNotExists(1, 1, 'dt');
724                NTM.setKeyIfNotExists(1, 2, NTM.getKey(6, 7));
725                NTM.setKeyIfNotExists(1, 3, NTM.getKey(6, 1));
726            }
727        }
728    }
729
730    NTM.start();
731
732    $(document.body).append('<img src="' + NTM.pixelURL + '?' + NTM.getPixelUrl() + '" style="display:none" />');
733});

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.