1if (!window.History.Adapter) { 2 (typeof JSON != 'object' && (JSON = {}), 3 (function () { 4 'use strict'; 5 function f(e) { 6 return e < 10 ? '0' + e : e; 7 } 8 function quote(e) { 9 return ( 10 (escapable.lastIndex = 0), 11 escapable.test(e) 12 ? '"' + 13 e.replace(escapable, function (e) { 14 var t = meta[e]; 15 return typeof t == 'string' ? t : '\\u' + ('0000' + e.charCodeAt(0).toString(16)).slice(-4); 16 }) + 17 '"' 18 : '"' + e + '"' 19 ); 20 } 21 function str(e, t) { 22 var n, 23 r, 24 i, 25 s, 26 o = gap, 27 u, 28 a = t[e]; 29 (a && typeof a == 'object' && typeof a.toJSON == 'function' && (a = a.toJSON(e)), typeof rep == 'function' && (a = rep.call(t, e, a))); 30 switch (typeof a) { 31 case 'string': 32 return quote(a); 33 case 'number': 34 return isFinite(a) ? String(a) : 'null'; 35 case 'boolean': 36 case 'null': 37 return String(a); 38 case 'object': 39 if (!a) return 'null'; 40 ((gap += indent), (u = [])); 41 if (Object.prototype.toString.apply(a) === '[object Array]') { 42 s = a.length; 43 for (n = 0; n < s; n += 1) u[n] = str(n, a) || 'null'; 44 return ((i = u.length === 0 ? '[]' : gap ? '[\n' + gap + u.join(',\n' + gap) + '\n' + o + ']' : '[' + u.join(',') + ']'), (gap = o), i); 45 } 46 if (rep && typeof rep == 'object') { 47 s = rep.length; 48 for (n = 0; n < s; n += 1) typeof rep[n] == 'string' && ((r = rep[n]), (i = str(r, a)), i && u.push(quote(r) + (gap ? ': ' : ':') + i)); 49 } else for (r in a) Object.prototype.hasOwnProperty.call(a, r) && ((i = str(r, a)), i && u.push(quote(r) + (gap ? ': ' : ':') + i)); 50 return ((i = u.length === 0 ? '{}' : gap ? '{\n' + gap + u.join(',\n' + gap) + '\n' + o + '}' : '{' + u.join(',') + '}'), (gap = o), i); 51 } 52 } 53 typeof Date.prototype.toJSON != 'function' && 54 ((Date.prototype.toJSON = function (e) { 55 return isFinite(this.valueOf()) ? this.getUTCFullYear() + '-' + f(this.getUTCMonth() + 1) + '-' + f(this.getUTCDate()) + 'T' + f(this.getUTCHours()) + ':' + f(this.getUTCMinutes()) + ':' + f(this.getUTCSeconds()) + 'Z' : null; 56 }), 57 (String.prototype.toJSON = 58 Number.prototype.toJSON = 59 Boolean.prototype.toJSON = 60 function (e) { 61 return this.valueOf(); 62 })); 63 var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, 64 escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, 65 gap, 66 indent, 67 meta = { '\b': '\\b', ' ': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"': '\\"', '\\': '\\\\' }, 68 rep; 69 (typeof JSON.stringify != 'function' && 70 (JSON.stringify = function (e, t, n) { 71 var r; 72 ((gap = ''), (indent = '')); 73 if (typeof n == 'number') for (r = 0; r < n; r += 1) indent += ' '; 74 else typeof n == 'string' && (indent = n); 75 rep = t; 76 if (!t || typeof t == 'function' || (typeof t == 'object' && typeof t.length == 'number')) return str('', { '': e }); 77 throw new Error('JSON.stringify'); 78 }), 79 typeof JSON.parse != 'function' && 80 (JSON.parse = function (text, reviver) { 81 function walk(e, t) { 82 var n, 83 r, 84 i = e[t]; 85 if (i && typeof i == 'object') for (n in i) Object.prototype.hasOwnProperty.call(i, n) && ((r = walk(i, n)), r !== undefined ? (i[n] = r) : delete i[n]); 86 return reviver.call(e, t, i); 87 } 88 var j; 89 ((text = String(text)), 90 (cx.lastIndex = 0), 91 cx.test(text) && 92 (text = text.replace(cx, function (e) {
93 return '\\u' + ('0000' + e.charCodeAt(0).toString(16)).slice(-4); 94 }))); 95 if ( 96 /^[\],:{}\s]*$/.test( 97 text 98 .replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') 99 .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') 100 .replace(/(?:^|:|,)(?:\s*\[)+/g, '') 101 ) 102 ) 103 return ((j = eval('(' + text + ')')), typeof reviver == 'function' ? walk({ '': j }, '') : j); 104 throw new SyntaxError('JSON.parse'); 105 })); 106 })(), 107 (function (e, t) { 108 'use strict'; 109 var n = (e.History = e.History || {}), 110 r = e.jQuery; 111 if (typeof n.Adapter != 'undefined') throw new Error('History.js Adapter has already been loaded...'); 112 ((n.Adapter = { 113 bind: function (e, t, n) { 114 r(e).bind(t, n); 115 }, 116 trigger: function (e, t, n) { 117 r(e).trigger(t, n); 118 }, 119 extractEventData: function (e, n, r) { 120 var i = (n && n.originalEvent && n.originalEvent[e]) || (r && r[e]) || t; 121 return i; 122 }, 123 onDomLoad: function (e) { 124 r(e); 125 }, 126 }), 127 typeof n.init != 'undefined' && n.init()); 128 })(window), 129 (function (e, t) { 130 'use strict'; 131 var n = e.document, 132 r = e.setTimeout || r, 133 i = e.clearTimeout || i, 134 s = e.setInterval || s, 135 o = (e.History = e.History || {}); 136 if (typeof o.initHtml4 != 'undefined') throw new Error('History.js HTML4 Support has already been loaded...'); 137 ((o.initHtml4 = function () { 138 if (typeof o.initHtml4.initialized != 'undefined') return !1; 139 ((o.initHtml4.initialized = !0), 140 (o.enabled = !0), 141 (o.savedHashes = []), 142 (o.isLastHash = function (e) { 143 var t = o.getHashByIndex(), 144 n; 145 return ((n = e === t), n); 146 }), 147 (o.isHashEqual = function (e, t) { 148 return ((e = encodeURIComponent(e).replace(/%25/g, '%')), (t = encodeURIComponent(t).replace(/%25/g, '%')), e === t); 149 }), 150 (o.saveHash = function (e) { 151 return o.isLastHash(e) ? !1 : (o.savedHashes.push(e), !0); 152 }), 153 (o.getHashByIndex = function (e) { 154 var t = null; 155 return (typeof e == 'undefined' ? (t = o.savedHashes[o.savedHashes.length - 1]) : e < 0 ? (t = o.savedHashes[o.savedHashes.length + e]) : (t = o.savedHashes[e]), t); 156 }), 157 (o.discardedHashes = {}), 158 (o.discardedStates = {}), 159 (o.discardState = function (e, t, n) { 160 var r = o.getHashByState(e), 161 i; 162 return ((i = { discardedState: e, backState: n, forwardState: t }), (o.discardedStates[r] = i), !0); 163 }), 164 (o.discardHash = function (e, t, n) { 165 var r = { discardedHash: e, backState: n, forwardState: t }; 166 return ((o.discardedHashes[e] = r), !0); 167 }), 168 (o.discardedState = function (e) { 169 var t = o.getHashByState(e), 170 n; 171 return ((n = o.discardedStates[t] || !1), n); 172 }), 173 (o.discardedHash = function (e) { 174 var t = o.discardedHashes[e] || !1; 175 return t; 176 }), 177 (o.recycleState = function (e) { 178 var t = o.getHashByState(e); 179 return (o.discardedState(e) && delete o.discardedStates[t], !0); 180 }), 181 o.emulated.hashChange && 182 ((o.hashChangeInit = function () { 183 o.checkerFunction = null; 184 var t = '', 185 r, 186 i, 187 u, 188 a, 189 f = Boolean(o.getHash()); 190 return ( 191 o.isInternetExplorer() 192 ? ((r = 'historyjs-iframe'), 193 (i = n.createElement('iframe')), 194 i.setAttribute('id', r), 195 i.setAttribute('src', '#'), 196 (i.style.display = 'none'), 197 n.body.appendChild(i), 198 i.contentWindow.document.open(), 199 i.contentWindow.document.close(), 200 (u = ''), 201 (a = !1), 202 (o.checkerFunction = function () { 203 if (a) return !1; 204 a = !0; 205 var n = o.getHash(), 206 r = o.getHash(i.contentWindow.document); 207 return ( 208 n !== t 209 ? ((t = n), r !== n && ((u = r = n), i.contentWindow.document.open(), i.contentWindow.document.close(), (i.contentWindow.document.location.hash = o.escapeHash(n))), o.Adapter.trigger(e, 'hashchange')) 210 : r !== u && ((u = r), f && r === '' ? o.back() : o.setHash(r, !1)), 211 (a = !1), 212 !0 213 ); 214 })) 215 : (o.checkerFunction = function () { 216 var n = o.getHash() || ''; 217 return (n !== t && ((t = n), o.Adapter.trigger(e, 'hashchange')), !0); 218 }), 219 o.intervalList.push(s(o.checkerFunction, o.options.hashChangeInterval)), 220 !0 221 ); 222 }), 223 o.Adapter.onDomLoad(o.hashChangeInit)), 224 o.emulated.pushState && 225 ((o.onHashChange = function (t) { 226 var n = (t && t.newURL) || o.getLocationHref(), 227 r = o.getHashByUrl(n), 228 i = null, 229 s = null, 230 u = null, 231 a; 232 return o.isLastHash(r) 233 ? (o.busy(!1), !1) 234 : (o.doubleCheckComplete(), 235 o.saveHash(r), 236 r && o.isTraditionalAnchor(r) 237 ? (o.Adapter.trigger(e, 'anchorchange'), o.busy(!1), !1) 238 : ((i = o.extractState(o.getFullUrl(r || o.getLocationHref()), !0)), 239 o.isLastSavedState(i) ? (o.busy(!1), !1) : ((s = o.getHashByState(i)), (a = o.discardedState(i)), a ? (o.getHashByIndex(-2) === o.getHashByState(a.forwardState) ? o.back(!1) : o.forward(!1), !1) : (o.pushState(i.data, i.title, encodeURI(i.url), !1), !0)))); 240 }), 241 o.Adapter.bind(e, 'hashchange', o.onHashChange), 242 (o.pushState = function (t, n, r, i) { 243 r = encodeURI(r).replace(/%25/g, '%'); 244 if (o.getHashByUrl(r)) throw new Error('History.js does not support states with fragment-identifiers (hashes/anchors).'); 245 if (i !== !1 && o.busy()) return (o.pushQueue({ scope: o, callback: o.pushState, args: arguments, queue: i }), !1); 246 o.busy(!0); 247 var s = o.createStateObject(t, n, r), 248 u = o.getHashByState(s), 249 a = o.getState(!1), 250 f = o.getHashByState(a), 251 l = o.getHash(), 252 c = o.expectedStateId == s.id; 253 return ( 254 o.storeState(s), 255 (o.expectedStateId = s.id), 256 o.recycleState(s), 257 o.setTitle(s), 258 u === f ? (o.busy(!1), !1) : (o.saveState(s), c || o.Adapter.trigger(e, 'statechange'), !o.isHashEqual(u, l) && !o.isHashEqual(u, o.getShortUrl(o.getLocationHref())) && o.setHash(u, !1), o.busy(!1), !0) 259 ); 260 }), 261 (o.replaceState = function (t, n, r, i) { 262 r = encodeURI(r).replace(/%25/g, '%'); 263 if (o.getHashByUrl(r)) throw new Error('History.js does not support states with fragment-identifiers (hashes/anchors).'); 264 if (i !== !1 && o.busy()) return (o.pushQueue({ scope: o, callback: o.replaceState, args: arguments, queue: i }), !1); 265 o.busy(!0); 266 var s = o.createStateObject(t, n, r), 267 u = o.getHashByState(s), 268 a = o.getState(!1), 269 f = o.getHashByState(a), 270 l = o.getStateByIndex(-2); 271 return (o.discardState(a, s, l), u === f ? (o.storeState(s), (
271o.expectedStateId = s.id), o.recycleState(s), o.setTitle(s), o.saveState(s), o.Adapter.trigger(e, 'statechange'), o.busy(!1)) : o.pushState(s.data, s.title, s.url, !1), !0); 272 })), 273 o.emulated.pushState && 274 o.getHash() && 275 !o.emulated.hashChange && 276 o.Adapter.onDomLoad(function () { 277 o.Adapter.trigger(e, 'hashchange'); 278 })); 279 }), 280 typeof o.init != 'undefined' && o.init()); 281 })(window), 282 (function (e, t) { 283 'use strict'; 284 var n = e.console || t, 285 r = e.document, 286 i = e.navigator, 287 s = !1, 288 o = e.setTimeout, 289 u = e.clearTimeout, 290 a = e.setInterval, 291 f = e.clearInterval, 292 l = e.JSON, 293 c = e.alert, 294 h = (e.History = e.History || {}), 295 p = e.history; 296 try { 297 ((s = e.sessionStorage), s.setItem('TEST', '1'), s.removeItem('TEST')); 298 } catch (d) { 299 s = !1; 300 } 301 ((l.stringify = l.str
301ingify || l.encode), (l.parse = l.parse || l.decode)); 302 if (typeof h.init != 'undefined') throw new Error('History.js Core has already been loaded...'); 303 ((h.init = function (e) { 304 return typeof h.Adapter == 'undefined' ? !1 : (typeof h.initCore != 'undefined' && h.initCore(), typeof h.initHtml4 != 'undefined' && h.initHtml4(), !0); 305 }), 306 (h.initCore = function (d) { 307 if (typeof h.initCore.initialized != 'undefined') return !1; 308 ((h.initCore.initialized = !0), 309 (h.options = h.options || {}), 310 (h.options.hashChangeInterval = h.options.hashChangeInterval || 100), 311 (h.options.safariPollInterval = h.options.safariPollInterval || 500), 312 (h.options.doubleCheckInterval = h.options.doubleCheckInterval || 500), 313 (h.options.disableSuid = h.options.disableSuid || !1), 314 (h.options.storeInterval = h.options.storeInterval || 1e3), 315 (h.options.busyDelay = h.options.busyDelay || 250), 316 (h.options.debug = h.options.debug || !1), 317 (h.options.initialTitle = h.options.initialTitle || r.title), 318 (h.options.html4Mode = h.options.html4Mode || !1), 319 (h.options.delayInit = h.options.delayInit || !1), 320 (h.intervalList = []), 321 (h.clearAllIntervals = function () { 322 var e, 323 t = h.intervalList; 324 if (typeof t != 'undefined' && t !== null) { 325 for (e = 0; e < t.length; e++) f(t[e]); 326 h.intervalList = null; 327 } 328 }), 329 (h.debug = function () { 330 (h.options.debug || !1) && h.log.apply(h, arguments); 331 }), 332 (h.log = function () { 333 var e = typeof n != 'undefined' && typeof n.log != 'undefined' && typeof n.log.apply != 'undefined', 334 t = r.getElementById('log'), 335 i, 336 s, 337 o, 338 u, 339 a; 340 e ? ((u = Array.prototype.slice.call(arguments)), (i = u.shift()), typeof n.debug != 'undefined' ? n.debug.apply(n, [i, u]) : n.log.apply(n, [i, u])) : (i = '\n' + arguments[0] + '\n'); 341 for (s = 1, o = arguments.length; s < o; ++s) { 342 a = arguments[s]; 343 if (typeof a == 'object' && typeof l != 'undefined') 344 try { 345 a = l.stringify(a); 346 } catch (f) {} 347 i += '\n' + a + '\n'; 348 } 349 return (t ? ((t.value += i + '\n-----\n'), (t.scrollTop = t.scrollHeight - t.clientHeight)) : e || c(i), !0); 350 }), 351 (h.getInternetExplorerMajorVersion = function () { 352 var e = (h.getInternetExplorerMajorVersion.cached = 353 typeof h.getInternetExplorerMajorVersion.cached != 'undefined' 354 ? h.getInternetExplorerMajorVersion.cached 355 : (function () { 356 var e = 3, 357 t = r.createElement('div'), 358 n = t.getElementsByTagName('i'); 359 while ((t.innerHTML = '<!--[if gt IE ' + ++e + ']><i></i><![endif]-->') && n[0]); 360 return e > 4 ? e : !1; 361 })()); 362 return e; 363 }), 364 (h.isInternetExplorer = function () { 365 var e = (h.isInternetExplorer.cached = typeof h.isInternetExplorer.cached != 'undefined' ? h.isInternetExplorer.cached : Boolean(h.getInternetExplorerMajorVersion())); 366 return e; 367 }), 368 h.options.html4Mode 369 ? (h.emulated = { pushState: !0, hashChange: !0 }) 370 : (h.emulated = { 371 pushState: !Boolean(e.history && e.history.pushState && e.history.replaceState && !/ Mobile\/([1-7][a-z]|(8([abcde]|f(1[0-8]))))/i.test(i.userAgent) && !/AppleWebKit\/5([0-2]|3[0-2])/i.test(i.userAgent)), 372 hashChange: Boolean(!('onhashchange' in e || 'onhashchange' in r) || (h.isInternetExplorer() && h.getInternetExplorerMajorVersion() < 8)), 373 }), 374 (h.enabled = !h.emulated.pushState), 375 (h.bugs = { 376 setHash: Boolean(!h.emulated.pushState && i.vendor === 'Apple Computer, Inc.' && /AppleWeb
376Kit\/5([0-2]|3[0-3])/.test(i.userAgent)), 377 safariPoll: Boolean(!h.emulated.pushState && i.vendor === 'Apple Computer, Inc.' && /AppleWebKit\/5([0-2]|3[0-3])/.test(i.userAgent)), 378 ieDoubleCheck: Boolean(h.isInternetExplorer() && h.getInternetExplorerMajorVersion() < 8), 379 hashEscape: Boolean(h.isInternetExplorer() && h.getInternetExplorerMajorVersion() < 7), 380 }), 381 (h.isEmptyObject = function (e) { 382 for (var t in e) if (e.hasOwnProperty(t)) return !1; 383 return !0; 384 }), 385 (h.cloneObject = function (e) { 386 var t, n; 387 return (e ? ((t = l.stringify(e)), (n = l.parse(t))) : (n = {}), n); 388 }), 389 (h.getRootUrl = function () { 390 var e = r.location.protocol + '//' + (r.location.hostname || r.location.host); 391 if (r.location.port || !1) e += ':' + r.location.port; 392 return ((e += '/'), e); 393 }), 394 (h.getBaseHref = function () { 395 var e = r.getElementsByTagName('base'), 396 t = null, 397 n = ''; 398 return (e.length === 1 && ((t = e[0]), (n = t.href.replace(/[^\/]+$/, ''))), (n = n.replace(/\/+$/, '')), n && (n += '/'), n); 399 }), 400 (h.getBaseUrl = function () { 401 var e = h.getBaseHref() || h.getBasePageUrl() || h.getRootUrl(); 402 return e; 403 }), 404 (h.getPageUrl = function () { 405 var e = h.getState(!1, !1), 406 t = (e || {}).url || h.getLocationHref(), 407 n; 408 return ( 409 (n = t.replace(/\/+$/, '').replace(/[^\/]+$/, function (e, t, n) { 410 return /\./.test(e) ? e : e + '/'; 411 })), 412 n 413 ); 414 }), 415 (h.getBasePageUrl = function () { 416 var e = 417 h 418 .getLocationHref() 419 .replace(/[#\?].*/, '') 420 .replace(/[^\/]+$/, function (e, t, n) { 421 return /[^\/]$/.test(e) ? '' : e; 422 }) 423 .replace(/\/+$/, '') + '/'; 424 return e; 425 }), 426 (h.getFullUrl = function (e, t) { 427 var n = e, 428 r = e.substring(0, 1); 429 return ( 430 (t = typeof t == 'undefined' ? !0 : t), 431 /[a-z]+\:\/\//.test(e) || 432 (r === '/' 433 ? (n = h.getRootUrl() + e.replace(/^\/+/, '')) 434 : r === '#' 435 ? (n = h.getPageUrl().replace(/#.*/, '') + e) 436 : r === '?' 437 ? (n = h.getPageUrl().replace(/[\?#].*/, '') + e) 438 : t 439 ? (n = h.getBaseUrl() + e.replace(/^(\.\/)+/, '')) 440 : (n = h.getBasePageUrl() + e.replace(/^(\.\/)+/, ''))), 441 n.replace(/\#$/, '') 442 ); 443 }), 444 (h.getShortUrl = function (e) { 445 var t = e, 446 n = h.getBaseUrl(), 447 r = h.getRootUrl(); 448 return (h.emulated.pushState && (t = t.replace(n, '')), (t = t.replace(r, '/')), h.isTraditionalAnchor(t) && (t = './' + t), (t = t.replace(/^(\.\/)+/g, './').replace(/\#$/, '')), t); 449 }), 450 (h.getLocationHref = function (e) { 451 return ( 452 (e = e || r), 453 e.URL === e.location.href 454 ? e.location.href 455 : e.location.href === decodeURIComponent(e.URL) 456 ? e.URL 457 : e.location.hash && decodeURIComponent(e.location.href.replace(/^[^#]+/, '')) === e.location.hash 458 ? e.location.href 459 : e.URL.indexOf('#') == -1 && e.location.href.indexOf('#') != -1 460 ? e.location.href 461 : e.URL || e.location.href 462 ); 463 }), 464 (h.store = {}), 465 (h.idToState = h.idToState || {}), 466 (h.stateToId = h.stateToId || {}), 467 (h.urlToId = h.urlToId || {}), 468 (h.storedStates = h.storedStates || []), 469 (h.savedStates = h.savedStates || []), 470 (h.normalizeStore = function () { 471 ((h.store.idToState = h.store.idToState || {}), (h.store.urlToId = h.store.urlToId || {}), (h.store.stateToId = h.store.stateToId || {})); 472 }), 473 (h.getState = function (e, t) { 474 (typeof e == 'undefined' && (e = !0), typeof t == 'undefined' && (t = !0)); 475 var n = h.getLastSavedState(); 476 return (!n && t && (n = h.createStateObject()), e && ((n = h.cloneObject(n)), (n.url = n.cleanUrl || n.url)), n); 477 }), 478 (h.getIdByState = function (e) { 479 var t = h.extractId(e.url), 480 n; 481 if (!t) { 482 n = h.getStateString(e); 483 if (typeof h.stateToId[n] != 'undefined') t = h.stateToId[n]; 484 else if (typeof h.store.stateToId[n] != 'undefined') t = h.store.stateToId[n]; 485 else { 486 for (;;) { 487 t = new Date().getTime() + String(Math.random()).replace(/\D/g, ''); 488 if (typeof h.idToState[t] == 'undefined' && typeof h.store.idToState[t] == 'undefined') break; 489 } 490 ((h.stateToId[n] = t), (h.idToState[t] = e)); 491 } 492 } 493 return t; 494 }), 495 (h.normalizeState = function (e) { 496 var t, n; 497 if (!e || typeof e != 'object') e = {}; 498 if (typeof e.normalized != 'undefined') return e; 499 if (!e.data || typeof e.data != 'object') e.data = {}; 500 return ( 501 (t = {}), 502 (t.normalized = !0), 503 (t.title = e.title || ''), 504 (t.url = h.getFullUrl(e.url ? e.url : h.getLocationHref())), 505 (t.hash = h.getShortUrl(t.url)), 506 (t.data = h.cloneObject(e.data)), 507 (t.id = h.getIdByState(t)), 508 (t.cleanUrl = t.url.replace(/\??\&_suid.*/, '')), 509 (t.url = t.cleanUrl), 510 (n = !h.isEmptyObject(t.data)), 511 (t.title || n) && h.options.disableSuid !== !0 && ((t.hash = h.getShortUrl(t.url).replace(/\??\&_suid.*/, '')), /\?/.test(t.hash) || (t.hash += '?'), (t.hash += '&_suid='
511+ t.id)), 512 (t.hashedUrl = h.getFullUrl(t.hash)), 513 (h.emulated.pushState || h.bugs.safariPoll) && h.hasUrlDuplicate(t) && (t.url = t.hashedUrl), 514 t 515 ); 516 }), 517 (h.createStateObject = function (e, t, n) { 518 var r = { data: e, title: t, url: n }; 519 return ((r = h.normalizeState(r)), r); 520 }), 521 (h.getStateById = function (e) { 522 e = String(e); 523 var n = h.idToState[e] || h.store.idToState[e] || t; 524 return n; 525 }), 526 (h.getStateString = function (e) { 527 var t, n, r; 528 return ((t = h.normalizeState(e)), (n = { data: t.data, title: e.title, url: e.url }), (r = l.stringify(n)), r); 529 }), 530 (h.getStateId = function (e) { 531 var t, n; 532 return ((t = h.normalizeState(e)), (n = t.id), n); 533 }), 534 (h.getHashByState = function (e) { 535 var t, n; 536 return ((t = h.normalizeState(e)), (n = t.hash), n); 537 }), 538 (h.extractId = function (e) { 539 var t, n, r, i; 540 return (e.indexOf('#') != -1 ? (i = e.split('#')[0]) : (i = e), (n = /(.*)\&_suid=([0-9]+)$/.exec(i)), (r = n ? n[1] || e : e), (t = n ? String(n[2] || '') : ''), t || !1); 541 }), 542 (h.isTraditionalAnchor = function (e) { 543 var t = !/[\/\?\.]/.test(e); 544 return t; 545 }), 546 (h.extractState = function (e, t) { 547 var n = null, 548 r, 549 i; 550 return ((t = t || !1), (r = h.extractId(e)), r && (n = h.getStateById(r)), n || ((i = h.getFullUrl(e)), (r = h.getIdByUrl(i) || !1), r && (n = h.getStateById(r)), !n && t && !h.isTraditionalAnchor(e) && (n = h.createStateObject(null, null, i))), n); 551 }), 552 (h.getIdByUrl = function (e) { 553 var n = h.urlToId[e] || h.store.urlToId[e] || t; 554 return n; 555 }), 556 (h.getLastSavedState = function () { 557 return h.savedStates[h.savedStates.length - 1] || t; 558 }), 559 (h.getLastStoredState = function () { 560 return h.storedStates[h.storedStates.length - 1] || t; 561 }), 562 (h.hasUrlDuplicate = function (e) { 563 var t = !1, 564 n; 565 return ((n = h.extractState(e.url)), (t = n && n.id !== e.id), t); 566 }), 567 (h.storeState = function (e) { 568 return ((h.urlToId[e.url] = e.id), h.storedStates.push(h.cloneObject(e)), e); 569 }), 570 (h.isLastSavedState = function (e) { 571 var t = !1, 572 n, 573 r, 574 i; 575 return (h.savedStates.length && ((n = e.id), (r = h.getLastSavedState()), (i = r.id), (t = n === i)), t); 576 }), 577 (h.saveState = function (e) { 578 return h.isLastSavedState(e) ? !1 : (h.savedStates.push(h.cloneObject(e)), !0); 579 }), 580 (h.getStateByIndex = function (e) { 581 var t = null; 582 return (typeof e == 'undefined' ? (t = h.savedStates[h.savedStates.length - 1]) : e < 0 ? (t = h.savedStates[h.savedStates.length + e]) : (t = h.savedStates[e]), t); 583 }), 584 (h.getCurrentIndex = function () { 585 var e = null; 586 return (h.savedStates.length < 1 ? (e = 0) : (e = h.savedStates.length - 1), e); 587 }), 588 (h.getHash = function (e) { 589 var t = h.getLocationHref(e), 590 n; 591 return ((n = h.getHashByUrl(t)), n); 592 }), 593 (h.unescapeHash = function (e) { 594 var t = h.normalizeHash(e); 595 return ((t = decodeURIComponent(t)), t); 596 }), 597 (h.normalizeHash = function (e) { 598 var t = e.replace(/[^#]*#/, '').replace(/#.*/, ''); 599 return t; 600 }), 601 (h.setHash = function (e, t) { 602 var n, i; 603 return t !== !1 && h.busy() 604 ? (h.pushQueue({ scope: h, callback: h.setHash, args: arguments, queue: t }), !1) 605 : (h.busy(!0), (n = h.extractState(e, !0)), n && !h.emulated.pushState ? h.pushState(n.data, n.title, n.url, !1) : h.getHash() !== e && (h.bugs.setHash ? ((i
605= h.getPageUrl()), h.pushState(null, null, i + '#' + e, !1)) : (r.location.hash = e)), h); 606 }), 607 (h.escapeHash = function (t) { 608 var n = h.normalizeHash(t); 609 return ((n = e.encodeURIComponent(n)), h.bugs.hashEscape || (n = n.replace(/\%21/g, '!').replace(/\%26/g, '&').replace(/\%3D/g, '=').replace(/\%3F/g, '?')), n); 610 }), 611 (h.getHashByUrl = function (e) { 612 var t = String(e).replace(/([^#]*)#?([^#]*)#?(.*)/, '$2'); 613 return ((t = h.unescapeHash(t)), t); 614 }), 615 (h.setTitle = function (e) { 616 var t = e.title, 617 n; 618 t || ((n = h.getStateByIndex(0)), n && n.url === e.url && (t = n.title || h.options.initialTitle)); 619 try { 620 r.getElementsByTagName('title')[0].innerHTML = t.replace('<', '<').replace('>', '>').replace(' & ', ' & '); 621 } catch (i) {} 622 return ((r.title = t), h); 623 }), 624 (h.queues = []), 625 (h.busy = function (e) { 626 typeof e != 'undefined' ? (h.busy.flag = e) : typeof h.busy.flag == 'undefined' && (h.busy.flag = !1); 627 if (!h.busy.flag) { 628 u(h.busy.timeout); 629 var t = function () { 630 var e, n, r; 631 if (h.busy.flag) return; 632 for (e = h.queues.length - 1; e >= 0; --e) { 633 n = h.queues[e]; 634 if (n.length === 0) continue; 635 ((r = n.shift()), h.fireQueueItem(r), (h.busy.timeout = o(t, h.options.busyDelay))); 636 } 637 }; 638 h.busy.timeout = o(t, h.options.busyDelay); 639 } 640 return h.busy.flag; 641 }), 642 (h.busy.flag = !1), 643 (h.fireQueueItem = function (e) { 644 return e.callback.apply(e.scope || h, e.args || []); 645 }), 646 (h.pushQueue = function (e) { 647 return ((h.queues[e.queue || 0] = h.queues[e.queue || 0] || []), h.queues[e.queue || 0].push(e), h); 648 }), 649 (h.queue = function (e, t) { 650 return (typeof e == 'function' && (e = { callback: e }), typeof t != 'undefined' && (e.queue = t), h.busy() ? h.pushQueue(e) : h.fireQueueItem(e), h); 651 }), 652 (h.clearQueue = function () { 653 return ((h.busy.flag = !1), (h.queues = []), h); 654 }), 655 (h.stateChanged = !1), 656 (h.doubleChecker = !1), 657 (h.doubleCheckComplete = function () { 658 return ((h.stateChanged = !0), h.doubleCheckClear(), h); 659 }), 660 (h.doubleCheckClear = function () { 661 return (h.doubleChecker && (u(h.doubleChecker), (h.doubleChecker = !1)), h); 662 }), 663 (h.doubleCheck = function (e) { 664 return ( 665 (h.stateChanged = !1), 666 h.doubleCheckClear(), 667 h.bugs.ieDoubleCheck && 668 (h.doubleChecker = o(function () { 669 return (h.doubleCheckClear(), h.stateChanged || e(), !0); 670 }, h.options.doubleCheckInterval)), 671 h 672 ); 673 }), 674 (h.safariStatePoll = function () { 675 var t = h.extractState(h.getLocationHref()), 676 n; 677 if (!h.isLastSavedState(t)) return ((n = t), n || (n = h.createStateObject()), h.Adapter.trigger(e, 'popstate'), h); 678 return; 679 }), 680 (h.back = function (e) { 681 return e !== !1 && h.busy() 682 ? (h.pushQueue({ scope: h, callback: h.back, args: arguments, queue: e }), !1) 683 : (h.busy(!0), 684 h.doubleCheck(function () { 685 h.back(!1); 686 }), 687 p.go(-1), 688 !0); 689 }), 690 (h.forward = function (e) { 691 return e !== !1 && h.busy() 692 ? (h.pushQueue({ scope: h, callback: h.forward, args: arguments, queue: e }), !1) 693 : (h.busy(!0), 694 h.doubleCheck(function () { 695 h.forward(!1); 696 }), 697 p.go(1), 698 !0); 699 }), 700 (h.go = function (e, t) { 701 var n; 702 if (e > 0) for (n = 1; n <= e; ++n) h.forward(t); 703 else { 704 if (!(e < 0)) throw new Error('History.go: History.go requires a positive or negative integer passed.'); 705 for (n = -1; n >= e; --n) h.back(t); 706 } 707 return h; 708 })); 709 if (h.emulated.pushState) { 710 var v = function () {}; 711 ((h.pushState = h.pushState || v), (h.replaceState = h.replaceState || v)); 712 } else 713 ((h.onPopState = function (t, n) { 714 var r = !1, 715 i = !1, 716 s, 717 o; 718 return ( 719 h.doubleCheckComplete(), 720 (s = h.getHash()), 721 s 722 ? ((o = h.extractState(s || h.getLocationHref(), !0)), o ? h.replaceState(o.data, o.title, o.url, !1) : (h.Adapter.trigger(e, 'anchorchange'), h.busy(!1)), (h.expectedStateId = !1), !1) 723 : ((r = h.Adapter.extractEventData('state', t, n) || !1), 724 r ? (i = h.getStateById(r)) : h.expectedStateId ? (i = h.getStateById(h.expectedStateId)) : (i = h.extractState(h.getLocationHref())), 725 i || (i = h.createStateObject(null, null, h.getLocationHref())), 726 (h.expectedStateId = !1), 727 h.isLastSavedState(i) ? (h.busy(!1), !1) : (h.storeState(i), h.saveState(i), h.setTitle(i), h.Adapter.trigger(e, 'statechange'), h.busy(!1), !0)) 728 ); 729 }), 730 h.Adapter.bind(e, 'popstate', h.onPopState), 731 (h.pushState = function (t, n, r, i) { 732 if (h.getHashByUrl(r) && h.emulated.pushState) throw new Error('History.js does not support states with fragement-identifiers (hashes/anchors).'); 733 if (i !== !1 && h.busy()) return (h.pushQueue({ scope: h, callback: h.pushState, args: arguments, queue: i }), !1); 734 h.busy(!0); 735 var s = h.createStateObject(t, n, r); 736 return (h.isLastSavedState(s) ? h.busy(!1) : (h.storeState(s), (h.expectedStateId = s.id), p.pushState(s.id, s.title, s.url), h.Adapter.trigger(e, 'popstate')), !0); 737 }), 738 (h.replaceState = function (t, n, r, i) { 739 if (h.getHashByUrl(r) && h.emulated.pushState) throw new Error('History.js does not support states with fragement-identifiers (hashes/anchors).'); 740 if (i !== !1 && h.busy()) return (h.pushQueue({ scope: h, callback: h.replaceState, args: arguments, queue: i }), !1); 741 h.busy(!0); 742 var s = h.createStateObject(t, n, r); 743 return (h.isLastSavedState(s) ? h.busy(!1) : (h.storeState(s), (h.expectedStateId = s.id), p.replaceState(s.id, s.title, s.url), h.Adapter.trigger(e, 'popstate')), !0); 744 })); 745 if (s) { 746 try { 747 h.store = l.parse(s.getItem('History.store')) || {}; 748 } catch (m) { 749 h.store = {}; 750 }
751 h.normalizeStore(); 752 } else ((h.store = {}), h.normalizeStore()); 753 (h.Adapter.bind(e, 'unload', h.clearAllIntervals), 754 h.saveState(h.storeState(h.extractState(h.getLocationHref(), !0))), 755 s && 756 ((h.onUnload = function () { 757 var e, t, n; 758 try { 759 e = l.parse(s.getItem('History.store')) || {}; 760 } catch (r) { 761 e = {}; 762 } 763 ((e.idToState = e.idToState || {}), (e.urlToId = e.urlToId || {}), (e.stateToId = e.stateToId || {})); 764 for (t in h.idToState) { 765 if (!h.idToState.hasOwnProperty(t)) continue; 766 e.idToState[t] = h.idToState[t]; 767 } 768 for (t in h.urlToId) { 769 if (!h.urlToId.hasOwnProperty(t)) continue; 770 e.urlToId[t] = h.urlToId[t]; 771 } 772 for (t in h.stateToId) { 773 if (!h.stateToId.hasOwnProperty(t)) continue; 774 e.stateToId[t] = h.stateToId[t]; 775 } 776 ((h.store = e), h.normalizeStore(), (n = l.stringify(e))); 777 try { 778 s.setItem('History.store', n); 779 } catch (i) { 780 if (i.code !== DOMException.QUOTA_EXCEEDED_ERR) throw i; 781 s.length && (s.removeItem('History.store'), s.setItem('History.store', n)); 782 } 783 }), 784 h.intervalList.push(a(h.onUnload, h.options.storeInterval)), 785 h.Adapter.bind(e, 'beforeunload', h.onUnload), 786 h.Adapter.bind(e, 'unload', h.onUnload))); 787 if (!h.emulated.pushState) { 788 h.bugs.safariPoll && h.intervalList.push(a(h.safariStatePoll, h.options.safariPollInterval)); 789 if (i.vendor === 'Apple Computer, Inc.' || (i.appCodeName || '') === 'Mozilla') 790 (h.Adapter.bind(e, 'hashchange', function () { 791 h.Adapter.trigger(e, 'popstate'); 792 }), 793 h.getHash() && 794 h.Adapter.onDomLoad(function () { 795 h.Adapter.trigger(e, 'hashchange'); 796 })); 797 } 798 }), 799 (!h.options || !h.options.delayInit) && h.init()); 800 })(window)); 801}
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.