1(() => { 2 var __create = Object.create; 3 var __defProp = Object.defineProperty; 4 var __getOwnPropDesc = Object.getOwnPropertyDescriptor; 5 var __getOwnPropNames = Object.getOwnPropertyNames; 6 var __getProtoOf = Object.getPrototypeOf; 7 var __hasOwnProp = Object.prototype.hasOwnProperty; 8 var __commonJS = (cb, mod) => 9 function __require() { 10 try { 11 return ( 12 mod || 13 (0, cb[__getOwnPropNames(cb)[0]])( 14 (mod = { exports: {} }).exports, 15 mod, 16 ), 17 mod.exports 18 ); 19 } catch (e) { 20 throw ((mod = 0), e); 21 } 22 }; 23 var __copyProps = (to, from, except, desc) => { 24 if ((from && typeof from === "object") || typeof from === "function") { 25 for (let key of __getOwnPropNames(from)) 26 if (!__hasOwnProp.call(to, key) && key !== except) 27 __defProp(to, key, { 28 get: () => from[key], 29 enumerable: 30 !(desc = __getOwnPropDesc(from, key)) || desc.enumerable, 31 }); 32 } 33 return to; 34 }; 35 var __toESM = (mod, isNodeMode, target) => ( 36 (target = mod != null ? __create(__getProtoOf(mod)) : {}), 37 __copyProps( 38 // If the importer is in node compatibility mode or this is not an ESM 39 // file that has been converted to a CommonJS file using a Babel- 40 // compatible transform (i.e. "__esModule" has not been set), then set 41 // "default" to the CommonJS "module.exports" for node compatibility. 42 isNodeMode || !mod || !mod.__esModule 43 ? __defProp(target, "default", { value: mod, enumerable: true }) 44 : target, 45 mod, 46 ) 47 ); 48 49
vendor: 470 bytes, lines 49-65
49// node_modules/pjax/lib/foreach-els.js 50 var require_foreach_els = __commonJS({ 51 "node_modules/pjax/lib/foreach-els.js"(exports, module) { 52 module.exports = function (els, fn, context) { 53 if ( 54 els instanceof HTMLCollection || 55 els instanceof NodeList || 56 els instanceof Array 57 ) { 58 return Array.prototype.forEach.call(els, fn, context); 59 } 60 return fn.call(context, els); 61 }; 62 }, 63 }); 64 65
vendor: 1,385 bytes, lines 65-111
65// node_modules/pjax/lib/eval-script.js 66 var require_eval_script = __commonJS({ 67 "node_modules/pjax/lib/eval-script.js"(exports, module) { 68 module.exports = function (el) { 69 var code = el.text || el.textContent || el.innerHTML || ""; 70 var src = el.src || ""; 71 var parent = 72 el.parentNode || 73 document.querySelector("head") || 74 document.documentElement; 75 var script = document.createElement("script"); 76 if (code.match("document.write")) { 77 if (console && console.log) { 78 console.log( 79 "Script contains document.write. Can\u2019t be executed correctly. Code skipped ", 80 el, 81 ); 82 } 83 return false; 84 } 85 script.type = "text/javascript"; 86 script.id = el.id; 87 if (src !== "") { 88 script.src = src; 89 script.async = false; 90 } 91 if (code !== "") { 92 try { 93 script.appendChild(document.createTextNode(code)); 94 } catch (e) { 95 script.text = code; 96 } 97 } 98 parent.appendChild(script); 99 if ( 100 (parent instanceof HTMLHeadElement || 101 parent instanceof HTMLBodyElement) && 102 parent.contains(script) 103 ) { 104 parent.removeChild(script); 105 } 106 return true; 107 }; 108 }, 109 }); 110 111
vendor: 711 bytes, lines 111-132
111// node_modules/pjax/lib/execute-scripts.js 112 var require_execute_scripts = __commonJS({ 113 "node_modules/pjax/lib/execute-scripts.js"(exports, module) { 114 var forEachEls = require_foreach_els(); 115 var evalScript = require_eval_script(); 116 module.exports = function (el) { 117 if (el.tagName.toLowerCase() === "script") { 118 evalScript(el); 119 } 120 forEachEls(el.querySelectorAll("script"), function (script) { 121 if (!script.type || script.type.toLowerCase() === "text/javascript") { 122 if (script.parentNode) { 123 script.parentNode.removeChild(script); 124 } 125 evalScript(script); 126 } 127 }); 128 }; 129 }, 130 }); 131 132
vendor: 509 bytes, lines 132-147
132// node_modules/pjax/lib/events/on.js 133 var require_on = __commonJS({ 134 "node_modules/pjax/lib/events/on.js"(exports, module) { 135 var forEachEls = require_foreach_els(); 136 module.exports = function (els, events, listener, useCapture) { 137 events = typeof events === "string" ? events.split(" ") : events; 138 events.forEach(function (e) { 139 forEachEls(els, function (el) { 140 el.addEventListener(e, listener, useCapture); 141 }); 142 }); 143 }; 144 }, 145 }); 146 147
vendor: 4,742 bytes, lines 147-275
147// node_modules/pjax/lib/switches.js 148 var require_switches = __commonJS({ 149 "node_modules/pjax/lib/switches.js"(exports, module) { 150 var on = require_on(); 151 module.exports = { 152 outerHTML: function (oldEl, newEl) { 153 oldEl.outerHTML = newEl.outerHTML; 154 this.onSwitch(); 155 }, 156 innerHTML: function (oldEl, newEl) { 157 oldEl.innerHTML = newEl.innerHTML; 158 if (newEl.className === "") { 159 oldEl.removeAttribute("class"); 160 } else { 161 oldEl.className = newEl.className; 162 } 163 this.onSwitch(); 164 }, 165 switchElementsAlt: function (oldEl, newEl) { 166 oldEl.innerHTML = newEl.innerHTML; 167 if (newEl.hasAttributes()) { 168 var attrs = newEl.attributes; 169 for (var i = 0; i < attrs.length; i++) { 170 oldEl.attributes.setNamedItem(attrs[i].cloneNode()); 171 } 172 } 173 this.onSwitch(); 174 }, 175 // Equivalent to outerHTML(), but doesn't require switchElementsAlt() for <head> and <body> 176 replaceNode: function (oldEl, newEl) { 177 oldEl.parentNode.replaceChild(newEl, oldEl); 178 this.onSwitch(); 179 }, 180 sideBySide: function (oldEl, newEl, options, switchOptions) { 181 var forEach = Array.prototype.forEach; 182 var elsToRemove = []; 183 var elsToAdd = []; 184 var fragToAppend = document.createDocumentFragment(); 185 var animationEventNames = 186 "animationend webkitAnimationEnd MSAnimationEnd oanimationend"; 187 var animatedElsNumber = 0; 188 var sexyAnimationEnd = function (e) { 189 if (e.target !== e.currentTarget) { 190 return; 191 } 192 animatedElsNumber--; 193 if (animatedElsNumber <= 0 && elsToRemove) { 194 elsToRemove.forEach(function (el) { 195 if (el.parentNode) { 196 el.parentNode.removeChild(el); 197 } 198 }); 199 elsToAdd.forEach(function (el) { 200 el.className = el.className.replace( 201 el.getAttribute("data-pjax-classes"), 202 "", 203 ); 204 el.removeAttribute("data-pjax-classes"); 205 }); 206 elsToAdd = null; 207 elsToRemove = null; 208 this.onSwitch(); 209 } 210 }.bind(this); 211 switchOptions = switchOptions || {}; 212 forEach.call(oldEl.childNodes, function (el) { 213 elsToRemove.push(el); 214 if (el.classList && !el.classList.contains("js-Pjax-remove")) { 215 if (el.hasAttribute("data-pjax-classes")) { 216 el.className = el.className.replace( 217 el.getAttribute("data-pjax-classes"), 218 "", 219 ); 220 el.removeAttribute("data-pjax-classes"); 221 } 222 el.classList.add("js-Pjax-remove"); 223 if ( 224 switchOptions.callbacks && 225 switchOptions.callbacks.removeElement 226 ) { 227 switchOptions.callbacks.removeElement(el); 228 } 229 if (switchOptions.classNames) { 230 el.className += 231 " " + 232 switchOptions.classNames.remove + 233 " " + 234 (options.backward 235 ? switchOptions.classNames.backward 236 : switchOptions.classNames.forward); 237 } 238 animatedElsNumber++; 239 on(el, animationEventNames, sexyAnimationEnd, true); 240 } 241 }); 242 forEach.call(newEl.childNodes, function (el) { 243 if (el.classList) { 244 var addClasses = ""; 245 if (switchOptions.classNames) { 246 addClasses = 247 " js-Pjax-add " + 248 switchOptions.classNames.add + 249 " " + 250 (options.backward 251 ? switchOptions.classNames.forward 252 : switchOptions.classNames.backward); 253 } 254 if ( 255 switchOptions.callbacks && 256 switchOptions.callbacks.addElement 257 ) { 258 switchOptions.callbacks.addElement(el); 259 } 260 el.className += addClasses; 261 el.setAttribute("data-pjax-classes", addClasses); 262 elsToAdd.push(el); 263 fragToAppend.appendChild(el); 264 animatedElsNumber++; 265 on(el, animationEventNames, sexyAnimationEnd, true); 266 } 267 }); 268 oldEl.className = newEl.className; 269 oldEl.appendChild(fragToAppend); 270 }, 271 }; 272 }, 273 }); 274 275
vendor: 1,993 bytes, lines 275-327
275// node_modules/pjax/lib/parse-options.js 276 var require_parse_options = __commonJS({ 277 "node_modules/pjax/lib/parse-options.js"(exports, module) { 278 var defaultSwitches = require_switches(); 279 module.exports = function (options) { 280 options = options || {}; 281 options.elements = options.elements || "a[href], form[action]"; 282 options.selectors = options.selectors || ["title", ".js-Pjax"]; 283 options.switches = options.switches || {}; 284 options.switchesOptions = options.switchesOptions || {}; 285 options.history = 286 typeof options.history === "undefined" ? true : options.history; 287 options.analytics = 288 typeof options.analytics === "function" || options.analytics === false 289 ? options.analytics 290 : defaultAnalytics; 291 options.scrollTo = 292 typeof options.scrollTo === "undefined" ? 0 : options.scrollTo; 293 options.scrollRestoration = 294 typeof options.scrollRestoration !== "undefined" 295 ? options.scrollRestoration 296 : true; 297 options.cacheBust = 298 typeof options.cacheBust === "undefined" ? true : options.cacheBust; 299 options.debug = options.debug || false; 300 options.timeout = options.timeout || 0; 301 options.currentUrlFullReload = 302 typeof options.currentUrlFullReload === "undefined" 303 ? false 304 : options.currentUrlFullReload; 305 if (!options.switches.head) { 306 options.switches.head = defaultSwitches.switchElementsAlt; 307 } 308 if (!options.switches.body) { 309 options.switches.body = defaultSwitches.switchElementsAlt; 310 } 311 return options; 312 }; 313 function defaultAnalytics() { 314 if (window._gaq) { 315 _gaq.push(["_trackPageview"]); 316 } 317 if (window.ga) { 318 ga("send", "pageview", { 319 page: location.pathname, 320 title: document.title, 321 }); 322 } 323 } 324 }, 325 }); 326 327
vendor: 417 bytes, lines 327-342
327// node_modules/pjax/lib/uniqueid.js 328 var require_uniqueid = __commonJS({ 329 "node_modules/pjax/lib/uniqueid.js"(exports, module) { 330 module.exports = /* @__PURE__ */ (function () { 331 var counter = 0; 332 return function () { 333 var id = 334 "pjax" + /* @__PURE__ */ new Date().getTime() + "_" + counter; 335 counter++; 336 return id; 337 }; 338 })(); 339 }, 340 }); 341 342
vendor: 1,053 bytes, lines 342-374
342// node_modules/pjax/lib/events/trigger.js 343 var require_trigger = __commonJS({ 344 "node_modules/pjax/lib/events/trigger.js"(exports, module) { 345 var forEachEls = require_foreach_els(); 346 module.exports = function (els, events, opts) { 347 events = typeof events === "string" ? events.split(" ") : events; 348 events.forEach(function (e) { 349 var event; 350 event = document.createEvent("HTMLEvents"); 351 event.initEvent(e, true, true); 352 event.eventName = e; 353 if (opts) { 354 Object.keys(opts).forEach(function (key) { 355 event[key] = opts[key]; 356 }); 357 } 358 forEachEls(els, function (el) { 359 var domFix = false; 360 if (!el.parentNode && el !== document && el !== window) { 361 domFix = true; 362 document.body.appendChild(el); 363 } 364 el.dispatchEvent(event); 365 if (domFix) { 366 el.parentNode.removeChild(el); 367 } 368 }); 369 }); 370 }; 371 }, 372 }); 373 374
vendor: 478 bytes, lines 374-392
374// node_modules/pjax/lib/util/clone.js 375 var require_clone = __commonJS({ 376 "node_modules/pjax/lib/util/clone.js"(exports, module) { 377 module.exports = function (obj) { 378 if (null === obj || "object" !== typeof obj) { 379 return obj; 380 } 381 var copy = obj.constructor(); 382 for (var attr in obj) { 383 if (obj.hasOwnProperty(attr)) { 384 copy[attr] = obj[attr]; 385 } 386 } 387 return copy; 388 }; 389 }, 390 }); 391 392
vendor: 538 bytes, lines 392-409
392// node_modules/pjax/lib/util/contains.js 393 var require_contains = __commonJS({ 394 "node_modules/pjax/lib/util/contains.js"(exports, module) { 395 module.exports = function contains(doc, selectors, el) { 396 for (var i = 0; i < selectors.length; i++) { 397 var selectedEls = doc.querySelectorAll(selectors[i]); 398 for (var j = 0; j < selectedEls.length; j++) { 399 if (selectedEls[j].contains(el)) { 400 return true; 401 } 402 } 403 } 404 return false; 405 }; 406 }, 407 }); 408 409
vendor: 643 bytes, lines 409-432
409// node_modules/pjax/lib/util/extend.js 410 var require_extend = __commonJS({ 411 "node_modules/pjax/lib/util/extend.js"(exports, module) { 412 module.exports = function (target) { 413 if (target == null) { 414 return null; 415 } 416 var to = Object(target); 417 for (var i = 1; i < arguments.length; i++) { 418 var source = arguments[i]; 419 if (source != null) { 420 for (var key in source) { 421 if (Object.prototype.hasOwnProperty.call(source, key)) { 422 to[key] = source[key]; 423 } 424 } 425 } 426 } 427 return to; 428 }; 429 }, 430 }); 431 432
vendor: 187 bytes, lines 432-439
432// node_modules/pjax/lib/util/noop.js 433 var require_noop = __commonJS({ 434 "node_modules/pjax/lib/util/noop.js"(exports, module) { 435 module.exports = function () {}; 436 }, 437 }); 438 439
vendor: 434 bytes, lines 439-454
439// node_modules/pjax/lib/proto/log.js 440 var require_log = __commonJS({ 441 "node_modules/pjax/lib/proto/log.js"(exports, module) { 442 module.exports = function () { 443 if (this.options.debug && console) { 444 if (typeof console.log === "function") { 445 console.log.apply(console, arguments); 446 } else if (console.log) { 447 console.log(arguments); 448 } 449 } 450 }; 451 }, 452 }); 453 454
vendor: 682 bytes, lines 454-477
454// node_modules/pjax/lib/proto/parse-element.js 455 var require_parse_element = __commonJS({ 456 "node_modules/pjax/lib/proto/parse-element.js"(exports, module) { 457 var attrState = "data-pjax-state"; 458 module.exports = function (el) { 459 switch (el.tagName.toLowerCase()) { 460 case "a": 461 if (!el.hasAttribute(attrState)) { 462 this.attachLink(el); 463 } 464 break; 465 case "form": 466 if (!el.hasAttribute(attrState)) { 467 this.attachForm(el); 468 } 469 break; 470 default: 471 throw "Pjax can only be applied on <a> or <form> submit"; 472 } 473 }; 474 }, 475 }); 476 477
vendor: 2,246 bytes, lines 477-555
477// node_modules/pjax/lib/proto/attach-link.js 478 var require_attach_link = __commonJS({ 479 "node_modules/pjax/lib/proto/attach-link.js"(exports, module) { 480 var on = require_on(); 481 var clone = require_clone(); 482 var attrState = "data-pjax-state"; 483 var linkAction = function (el, event) { 484 if (isDefaultPrevented(event)) { 485 return; 486 } 487 var options = clone(this.options); 488 var attrValue = checkIfShouldAbort(el, event); 489 if (attrValue) { 490 el.setAttribute(attrState, attrValue); 491 return; 492 } 493 event.preventDefault(); 494 if ( 495 this.options.currentUrlFullReload && 496 el.href === window.location.href.split("#")[0] 497 ) { 498 el.setAttribute(attrState, "reload"); 499 this.reload(); 500 return; 501 } 502 el.setAttribute(attrState, "load"); 503 options.triggerElement = el; 504 this.loadUrl(el.href, options); 505 }; 506 function checkIfShouldAbort(el, event) { 507 if ( 508 event.which > 1 || 509 event.metaKey || 510 event.ctrlKey || 511 event.shiftKey || 512 event.altKey 513 ) { 514 return "modifier"; 515 } 516 if ( 517 el.protocol !== window.location.protocol || 518 el.host !== window.location.host 519 ) { 520 return "external"; 521 } 522 if ( 523 el.hash && 524 el.href.replace(el.hash, "") === 525 window.location.href.replace(location.hash, "") 526 ) { 527 return "anchor"; 528 } 529 if (el.href === window.location.href.split("#")[0] + "#") { 530 return "anchor-empty"; 531 } 532 } 533 var isDefaultPrevented = function (event) { 534 return event.defaultPrevented || event.returnValue === false; 535 }; 536 module.exports = function (el) { 537 var that = this; 538 el.setAttribute(attrState, ""); 539 on(el, "click", function (event) { 540 linkAction.call(that, el, event); 541 }); 542 on( 543 el, 544 "keyup", 545 function (event) { 546 if (event.keyCode === 13) { 547 linkAction.call(that, el, event); 548 } 549 }.bind(this), 550 ); 551 }; 552 }, 553 }); 554 555
vendor: 3,873 bytes, lines 555-666
555// node_modules/pjax/lib/proto/attach-form.js 556 var require_attach_form = __commonJS({ 557 "node_modules/pjax/lib/proto/attach-form.js"(exports, module) { 558 var on = require_on(); 559 var clone = require_clone(); 560 var attrState = "data-pjax-state"; 561 var formAction = function (el, event) { 562 if (isDefaultPrevented(event)) { 563 return; 564 } 565 var options = clone(this.options); 566 options.requestOptions = { 567 requestUrl: el.getAttribute("action") || window.location.href, 568 requestMethod: el.getAttribute("method") || "GET", 569 }; 570 var virtLinkElement = document.createElement("a"); 571 virtLinkElement.setAttribute("href", options.requestOptions.requestUrl); 572 var attrValue = checkIfShouldAbort(virtLinkElement, options); 573 if (attrValue) { 574 el.setAttribute(attrState, attrValue); 575 return; 576 } 577 event.preventDefault(); 578 if (el.enctype === "multipart/form-data") { 579 options.requestOptions.formData = new FormData(el); 580 } else { 581 options.requestOptions.requestParams = parseFormElements(el); 582 } 583 el.setAttribute(attrState, "submit"); 584 options.triggerElement = el; 585 this.loadUrl(virtLinkElement.href, options); 586 }; 587 function parseFormElements(el) { 588 var requestParams = []; 589 var formElements = el.elements; 590 for (var i = 0; i < formElements.length; i++) { 591 var element = formElements[i]; 592 var tagName = element.tagName.toLowerCase(); 593 if ( 594 !!element.name && 595 element.attributes !== void 0 && 596 tagName !== "button" 597 ) { 598 var type = element.attributes.type; 599 if ( 600 !type || 601 (type.value !== "checkbox" && type.value !== "radio") || 602 element.checked 603 ) { 604 var values = []; 605 if (tagName === "select") { 606 var opt; 607 for (var j = 0; j < element.options.length; j++) { 608 opt = element.options[j]; 609 if (opt.selected && !opt.disabled) { 610 values.push( 611 opt.hasAttribute("value") ? opt.value : opt.text, 612 ); 613 } 614 } 615 } else { 616 values.push(element.value); 617 } 618 for (var k = 0; k < values.length; k++) { 619 requestParams.push({ 620 name: encodeURIComponent(element.name), 621 value: encodeURIComponent(values[k]), 622 }); 623 } 624 } 625 } 626 } 627 return requestParams; 628 } 629 function checkIfShouldAbort(virtLinkElement, options) { 630 if ( 631 virtLinkElement.protocol !== window.location.protocol || 632 virtLinkElement.host !== window.location.host 633 ) { 634 return "external"; 635 } 636 if ( 637 virtLinkElement.hash && 638 virtLinkElement.href.replace(virtLinkElement.hash, "") === 639 window.location.href.replace(location.hash, "") 640 ) { 641 return "anchor"; 642 } 643 if (virtLinkElement.href === window.location.href.split("#")[0] + "#") { 644 return "anchor-empty"; 645 } 646 if ( 647 options.currentUrlFullReload && 648 virtLinkElement.href === window.location.href.split("#")[0] 649 ) { 650 return "reload"; 651 } 652 } 653 var isDefaultPrevented = function (event) { 654 return event.defaultPrevented || event.returnValue === false; 655 }; 656 module.exports = function (el) { 657 var that = this; 658 el.setAttribute(attrState, ""); 659 on(el, "submit", function (event) { 660 formAction.call(that, el, event); 661 }); 662 }; 663 }, 664 }); 665 666
vendor: 482 bytes, lines 666-679
666// node_modules/pjax/lib/foreach-selectors.js 667 var require_foreach_selectors = __commonJS({ 668 "node_modules/pjax/lib/foreach-selectors.js"(exports, module) { 669 var forEachEls = require_foreach_els(); 670 module.exports = function (selectors, cb, context, DOMcontext) { 671 DOMcontext = DOMcontext || document; 672 selectors.forEach(function (selector) { 673 forEachEls(DOMcontext.querySelectorAll(selector), cb, context); 674 }); 675 }; 676 }, 677 }); 678 679
vendor: 1,870 bytes, lines 679-738
679// node_modules/pjax/lib/switches-selectors.js 680 var require_switches_selectors = __commonJS({ 681 "node_modules/pjax/lib/switches-selectors.js"(exports, module) { 682 var forEachEls = require_foreach_els(); 683 var defaultSwitches = require_switches(); 684 module.exports = function ( 685 switches, 686 switchesOptions, 687 selectors, 688 fromEl, 689 toEl, 690 options, 691 ) { 692 var switchesQueue = []; 693 selectors.forEach(function (selector) { 694 var newEls = fromEl.querySelectorAll(selector); 695 var oldEls = toEl.querySelectorAll(selector); 696 if (this.log) { 697 this.log("Pjax switch", selector, newEls, oldEls); 698 } 699 if (newEls.length !== oldEls.length) { 700 throw ( 701 "DOM doesn\u2019t look the same on new loaded page: \u2019" + 702 selector + 703 "\u2019 - new " + 704 newEls.length + 705 ", old " + 706 oldEls.length 707 ); 708 } 709 forEachEls( 710 newEls, 711 function (newEl, i) { 712 var oldEl = oldEls[i]; 713 if (this.log) { 714 this.log("newEl", newEl, "oldEl", oldEl); 715 } 716 var callback = switches[selector] 717 ? switches[selector].bind( 718 this, 719 oldEl, 720 newEl, 721 options, 722 switchesOptions[selector], 723 ) 724 : defaultSwitches.outerHTML.bind(this, oldEl, newEl, options); 725 switchesQueue.push(callback); 726 }, 727 this, 728 ); 729 }, this); 730 this.state.numPendingSwitches = switchesQueue.length; 731 switchesQueue.forEach(function (queuedSwitch) { 732 queuedSwitch(); 733 }); 734 }; 735 }, 736 }); 737 738
vendor: 382 bytes, lines 738-751
738// node_modules/pjax/lib/abort-request.js 739 var require_abort_request = __commonJS({ 740 "node_modules/pjax/lib/abort-request.js"(exports, module) { 741 var noop = require_noop(); 742 module.exports = function (request) { 743 if (request && request.readyState < 4) { 744 request.onreadystatechange = noop; 745 request.abort(); 746 } 747 }; 748 }, 749 }); 750 751
vendor: 556 bytes, lines 751-766
751// node_modules/pjax/lib/util/update-query-string.js 752 var require_update_query_string = __commonJS({ 753 "node_modules/pjax/lib/util/update-query-string.js"(exports, module) { 754 module.exports = function (uri, key, value) { 755 var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i"); 756 var separator = uri.indexOf("?") !== -1 ? "&" : "?"; 757 if (uri.match(re)) { 758 return uri.replace(re, "$1" + key + "=" + value + "$2"); 759 } else { 760 return uri + separator + key + "=" + value; 761 } 762 }; 763 }, 764 }); 765 766
vendor: 2,646 bytes, lines 766-839
766// node_modules/pjax/lib/send-request.js 767 var require_send_request = __commonJS({ 768 "node_modules/pjax/lib/send-request.js"(exports, module) { 769 var updateQueryString = require_update_query_string(); 770 module.exports = function (location2, options, callback) { 771 options = options || {}; 772 var queryString; 773 var requestOptions = options.requestOptions || {}; 774 var requestMethod = ( 775 requestOptions.requestMethod || "GET" 776 ).toUpperCase(); 777 var requestParams = requestOptions.requestParams || null; 778 var formData = requestOptions.formData || null; 779 var requestPayload = null; 780 var request = new XMLHttpRequest(); 781 var timeout = options.timeout || 0; 782 request.onreadystatechange = function () { 783 if (request.readyState === 4) { 784 if (request.status === 200) { 785 callback(request.responseText, request, location2, options); 786 } else if (request.status !== 0) { 787 callback(null, request, location2, options); 788 } 789 } 790 }; 791 request.onerror = function (e) { 792 console.log(e); 793 callback(null, request, location2, options); 794 }; 795 request.ontimeout = function () { 796 callback(null, request, location2, options); 797 }; 798 if (requestParams && requestParams.length) { 799 queryString = requestParams 800 .map(function (param) { 801 return param.name + "=" + param.value; 802 }) 803 .join("&"); 804 switch (requestMethod) { 805 case "GET": 806 location2 = location2.split("?")[0]; 807 location2 += "?" + queryString; 808 break; 809 case "POST": 810 requestPayload = queryString; 811 break; 812 } 813 } else if (formData) { 814 requestPayload = formData; 815 } 816 if (options.cacheBust) { 817 location2 = updateQueryString(location2, "t", Date.now()); 818 } 819 request.open(requestMethod, location2, true); 820 request.timeout = timeout; 821 request.setRequestHeader("X-Requested-With", "XMLHttpRequest"); 822 request.setRequestHeader("X-PJAX", "true"); 823 request.setRequestHeader( 824 "X-PJAX-Selectors", 825 JSON.stringify(options.selectors), 826 ); 827 if (requestPayload && requestMethod === "POST" && !formData) { 828 request.setRequestHeader( 829 "Content-Type", 830 "application/x-www-form-urlencoded", 831 ); 832 } 833 request.send(requestPayload); 834 return request; 835 }; 836 }, 837 }); 838 839
vendor: 2,254 bytes, lines 839-903
839// node_modules/pjax/lib/proto/handle-response.js 840 var require_handle_response = __commonJS({ 841 "node_modules/pjax/lib/proto/handle-response.js"(exports, module) { 842 var clone = require_clone(); 843 var newUid = require_uniqueid(); 844 var trigger = require_trigger(); 845 module.exports = function (responseText, request, href, options) { 846 options = clone(options || this.options); 847 options.request = request; 848 if (responseText === false) { 849 trigger(document, "pjax:complete pjax:error", options); 850 return; 851 } 852 var currentState = window.history.state || {}; 853 window.history.replaceState( 854 { 855 url: currentState.url || window.location.href, 856 title: currentState.title || document.title, 857 uid: currentState.uid || newUid(), 858 scrollPos: [ 859 document.documentElement.scrollLeft || document.body.scrollLeft, 860 document.documentElement.scrollTop || document.body.scrollTop, 861 ], 862 }, 863 document.title, 864 window.location.href, 865 ); 866 var oldHref = href; 867 if (request.responseURL) { 868 if (href !== request.responseURL) { 869 href = request.responseURL; 870 } 871 } else if (request.getResponseHeader("X-PJAX-URL")) { 872 href = request.getResponseHeader("X-PJAX-URL"); 873 } else if (request.getResponseHeader("X-XHR-Redirected-To")) { 874 href = request.getResponseHeader("X-XHR-Redirected-To"); 875 } 876 var a = document.createElement("a"); 877 a.href = oldHref; 878 var oldHash = a.hash; 879 a.href = href; 880 if (oldHash && !a.hash) { 881 a.hash = oldHash; 882 href = a.href; 883 } 884 this.state.href = href; 885 this.state.options = options; 886 try { 887 this.loadContent(responseText, options); 888 } catch (e) { 889 trigger(document, "pjax:error", options); 890 if (!this.options.debug) { 891 if (console && console.error) { 892 console.error("Pjax switch fail: ", e); 893 } 894 return this.latestChance(href); 895 } else { 896 throw e; 897 } 898 } 899 }; 900 }, 901 }); 902 903
vendor: 512 bytes, lines 903-919
903// node_modules/pjax/lib/is-supported.js 904 var require_is_supported = __commonJS({ 905 "node_modules/pjax/lib/is-supported.js"(exports, module) { 906 module.exports = function () { 907 return ( 908 window.history && 909 window.history.pushState && 910 window.history.replaceState && // pushState isn’t reliable on iOS until 5. 911 !navigator.userAgent.match( 912 /((iPod|iPhone|iPad).+\bOS\s+[1-4]\D|WebApps\/.+CFNetwork)/, 913 ) 914 ); 915 }; 916 }, 917 }); 918 919
vendor: 8,968 bytes, lines 919-1187
919// node_modules/pjax/index.js 920 var require_pjax = __commonJS({ 921 "node_modules/pjax/index.js"(exports, module) { 922 var executeScripts = require_execute_scripts(); 923 var forEachEls = require_foreach_els(); 924 var parseOptions = require_parse_options(); 925 var switches = require_switches(); 926 var newUid = require_uniqueid(); 927 var on = require_on(); 928 var trigger = require_trigger(); 929 var clone = require_clone(); 930 var contains = require_contains(); 931 var extend = require_extend(); 932 var noop = require_noop(); 933 var Pjax2 = function (options) { 934 this.state = { 935 numPendingSwitches: 0, 936 href: null, 937 options: null, 938 }; 939 this.options = parseOptions(options); 940 this.log("Pjax options", this.options); 941 if (this.options.scrollRestoration && "scrollRestoration" in history) { 942 history.scrollRestoration = "manual"; 943 } 944 this.maxUid = this.lastUid = newUid(); 945 this.parseDOM(document); 946 on( 947 window, 948 "popstate", 949 function (st) { 950 if (st.state) { 951 var opt = clone(this.options); 952 opt.url = st.state.url; 953 opt.title = st.state.title; 954 opt.history = false; 955 opt.scrollPos = st.state.scrollPos; 956 if (st.state.uid < this.lastUid) { 957 opt.backward = true; 958 } else { 959 opt.forward = true; 960 } 961 this.lastUid = st.state.uid; 962 this.loadUrl(st.state.url, opt); 963 } 964 }.bind(this), 965 ); 966 }; 967 Pjax2.switches = switches; 968 Pjax2.prototype = { 969 log: require_log(), 970 getElements: function (el) { 971 return el.querySelectorAll(this.options.elements); 972 }, 973 parseDOM: function (el) { 974 var parseElement = require_parse_element(); 975 forEachEls(this.getElements(el), parseElement, this); 976 }, 977 refresh: function (el) { 978 this.parseDOM(el || document); 979 }, 980 reload: function () { 981 window.location.reload(); 982 }, 983 attachLink: require_attach_link(), 984 attachForm: require_attach_form(), 985 forEachSelectors: function (cb, context, DOMcontext) { 986 return require_foreach_selectors().bind(this)( 987 this.options.selectors, 988 cb, 989 context, 990 DOMcontext, 991 ); 992 }, 993 switchSelectors: function (selectors, fromEl, toEl, options) { 994 return require_switches_selectors().bind(this)( 995 this.options.switches, 996 this.options.switchesOptions, 997 selectors, 998 fromEl, 999 toEl, 1000 options, 1001 ); 1002 }, 1003 latestChance: function (href) { 1004 window.location = href; 1005 }, 1006 onSwitch: function () { 1007 trigger(window, "resize scroll"); 1008 this.state.numPendingSwitches--; 1009 if (this.state.numPendingSwitches === 0) { 1010 this.afterAllSwitches(); 1011 } 1012 }, 1013 loadContent: function (html, options) { 1014 if (typeof html !== "string") { 1015 trigger(document, "pjax:complete pjax:error", options); 1016 return; 1017 } 1018 var tmpEl = document.implementation.createHTMLDocument("pjax"); 1019 var htmlRegex = /<html[^>]+>/gi; 1020 var htmlAttribsRegex = /\s?[a-z:]+(?:=['"][^'">]+['"])*/gi; 1021 var matches = html.match(htmlRegex); 1022 if (matches && matches.length) { 1023 matches = matches[0].match(htmlAttribsRegex); 1024 if (matches.length) { 1025 matches.shift(); 1026 matches.forEach(function (htmlAttrib) { 1027 var attr = htmlAttrib.trim().split("="); 1028 if (attr.length === 1) { 1029 tmpEl.documentElement.setAttribute(attr[0], true); 1030 } else { 1031 tmpEl.documentElement.setAttribute( 1032 attr[0], 1033 attr[1].slice(1, -1), 1034 ); 1035 } 1036 }); 1037 } 1038 } 1039 tmpEl.documentElement.innerHTML = html; 1040 this.log( 1041 "load content", 1042 tmpEl.documentElement.attributes, 1043 tmpEl.documentElement.innerHTML.length, 1044 ); 1045 if ( 1046 document.activeElement && 1047 contains(document, this.options.selectors, document.activeElement) 1048 ) { 1049 try { 1050 document.activeElement.blur(); 1051 } catch (e) {} 1052 } 1053 this.switchSelectors( 1054 this.options.selectors, 1055 tmpEl, 1056 document, 1057 options, 1058 ); 1059 }, 1060 abortRequest: require_abort_request(), 1061 doRequest: require_send_request(), 1062 handleResponse: require_handle_response(), 1063 loadUrl: function (href, options) { 1064 options = 1065 typeof options === "object" 1066 ? extend({}, this.options, options) 1067 : clone(this.options); 1068 this.log("load href", href, options); 1069 this.abortRequest(this.request); 1070 trigger(document, "pjax:send", options); 1071 this.request = this.doRequest( 1072 href, 1073 options, 1074 this.handleResponse.bind(this), 1075 ); 1076 }, 1077 afterAllSwitches: function () { 1078 var autofocusEl = Array.prototype.slice 1079 .call(document.querySelectorAll("[autofocus]")) 1080 .pop(); 1081 if (autofocusEl && document.activeElement !== autofocusEl) { 1082 autofocusEl.focus(); 1083 } 1084 this.options.selectors.forEach(function (selector) { 1085 forEachEls(document.querySelectorAll(selector), function (el) { 1086 executeScripts(el); 1087 }); 1088 }); 1089 var state = this.state; 1090 if (state.options.history) { 1091 if (!window.history.state) { 1092 this.lastUid = this.maxUid = newUid(); 1093 window.history.replaceState( 1094 { 1095 url: window.location.href, 1096 title: document.title, 1097 uid: this.maxUid, 1098 scrollPos: [0, 0], 1099 }, 1100 document.title, 1101 ); 1102 } 1103 this.lastUid = this.maxUid = newUid(); 1104 window.history.pushState( 1105 { 1106 url: state.href, 1107 title: state.options.title, 1108 uid: this.maxUid, 1109 scrollPos: [0, 0], 1110 }, 1111 state.options.title, 1112 state.href, 1113 ); 1114 } 1115 this.forEachSelectors(function (el) { 1116 this.parseDOM(el); 1117 }, this); 1118 trigger(document, "pjax:complete pjax:success", state.options); 1119 if (typeof state.options.analytics === "function") { 1120 state.options.analytics(); 1121 } 1122 if (state.options.history) { 1123 var a = document.createElement("a"); 1124 a.href = this.state.href; 1125 if (a.hash) { 1126 var name = a.hash.slice(1); 1127 name = decodeURIComponent(name); 1128 var curtop = 0; 1129 var target = 1130 document.getElementById(name) || 1131 document.getElementsByName(name)[0]; 1132 if (target) { 1133 if (target.offsetParent) { 1134 do { 1135 curtop += target.offsetTop; 1136 target = target.offsetParent; 1137 } while (target); 1138 } 1139 } 1140 window.scrollTo(0, curtop); 1141 } else if (state.options.scrollTo !== false) { 1142 if (state.options.scrollTo.length > 1) { 1143 window.scrollTo( 1144 state.options.scrollTo[0], 1145 state.options.scrollTo[1], 1146 ); 1147 } else { 1148 window.scrollTo(0, state.options.scrollTo); 1149 } 1150 } 1151 } else if ( 1152 state.options.scrollRestoration && 1153 state.options.scrollPos 1154 ) { 1155 window.scrollTo( 1156 state.options.scrollPos[0], 1157 state.options.scrollPos[1], 1158 ); 1159 } 1160 this.state = { 1161 numPendingSwitches: 0, 1162 href: null, 1163 options: null, 1164 }; 1165 }, 1166 }; 1167 Pjax2.isSupported = require_is_supported(); 1168 if (Pjax2.isSupported()) { 1169 module.exports = Pjax2; 1170 } else { 1171 stupidPjax = noop; 1172 for (key in Pjax2.prototype) { 1173 if ( 1174 Pjax2.prototype.hasOwnProperty(key) && 1175 typeof Pjax2.prototype[key] === "function" 1176 ) { 1177 stupidPjax[key] = noop; 1178 } 1179 } 1180 module.exports = stupidPjax; 1181 } 1182 var stupidPjax; 1183 var key; 1184 }, 1185 }); 1186 1187
1187// assets/js/main.js 1188 var import_pjax = __toESM(require_pjax(), 1); 1189 1190
1190// assets/js/viz/core.js 1191 var N = 512; 1192 var PRE = `precision highp float; 1193uniform float T;uniform vec2 R;uniform sampler2D D; 1194mat2 rt(float a){float c=cos(a),s=sin(a);return mat2(c,-s,s,c);} 1195float hs(vec2 p){return fract(sin(dot(p,vec2(127.1,311.7)))*43758.5);} 1196float sd2(vec2 q){ 1197vec2 uv=clamp(q*vec2(.3846,-.3846)+.5,0.,1.); 1198float d=(texture2D(D,uv).r-.5)*.406; 1199vec2 b=abs(q)-1.3; 1200return d+length(max(b,0.));} 1201float lg(vec3 p){ 1202vec2 w=vec2(sd2(p.xy),abs(p.z)-.18); 1203return(min(max(w.x,w.y),0.)+length(max(w,0.)))*.7;}`; 1204 var MARCH = ` 1205vec3 nm(vec3 p){ 1206vec2 e=vec2(.006,0.); 1207return normalize(vec3(mp(p+e.xyy)-mp(p-e.xyy),mp(p+e.yxy)-mp(p-e.yxy),mp(p+e.yyx)-mp(p-e.yyx)));} 1208float mh(vec3 ro,vec3 rd,float mx){ 1209float t=.01; 1210for(int i=0;i<90;i++){ 1211float d=mp(ro+rd*t); 1212if(d<.0015*t+.001)return t; 1213t+=d; 1214if(t>mx)return-1.;} 1215return-1.;}`; 1216 var SH = ` 1217float sh(vec3 p,vec3 l){ 1218float r=1.,t=.06; 1219for(int i=0;i<20;i++){ 1220float d=mp(p+l*t); 1221r=min(r,12.*d/t); 1222t+=clamp(d,.04,.4); 1223if(r<.02||t>5.)break;} 1224return clamp(r,0.,1.);}`; 1225 var buildSDF = () => { 1226 const c = document.createElement("canvas"); 1227 c.width = c.height = N; 1228 const x = c.getContext("2d"); 1229 const s = (N * 0.66) / 982; 1230 x.setTransform(s, 0, 0, s, N / 2 - s * 505.4, N / 2 - s * 540.5); 1231 x.fill( 1232 new Path2D( 1233 "M432.82 936.54c8.66-6.23 26.27-20.04 37.37-32.5 32.73-37.1 32.5-76.64-200.85-394.57-77.72-106.03-106.97-168.72-106.97-231 17.2-155.47 144.9-146 218.96-146 65-.8 149.36 0 215.3 0l-20.04 14.2c-38.32 26.4-65 54.18-50.9 97.78C536 275.2 611 388.67 707.12 518.67c107.4 144.9 139.5 205.55 143.56 272.7 2.15 120.8-114.16 156.14-181.2 156.28H417.66z", 1234 ), 1235 ); 1236 for (const [cx, cy] of [ 1237 [185.56, 777.98], 1238 [825.23, 302.02], 1239 ]) { 1240 x.beginPath(); 1241 x.arc(cx, cy, 171.02, 0, 7); 1242 x.fill(); 1243 } 1244 const a = x.getImageData(0, 0, N, N).data; 1245 const dt = (d) => { 1246 for (const s2 of [1, -1]) { 1247 const lo = s2 > 0 ? 0 : N - 1, 1248 hi = s2 > 0 ? N : -1; 1249 for (let y = lo; y !== hi; y += s2) { 1250 for (let x2 = lo; x2 !== hi; x2 += s2) { 1251 const i = y * N + x2; 1252 if (x2 !== lo) d[i] = Math.min(d[i], d[i - s2] + 1); 1253 if (y !== lo) { 1254 d[i] = Math.min(d[i], d[i - s2 * N] + 1); 1255 if (x2 !== lo) d[i] = Math.min(d[i], d[i - s2 * N - s2] + 1.4142); 1256 if (x2 !== hi - s2) 1257 d[i] = Math.min(d[i], d[i - s2 * N + s2] + 1.4142); 1258 } 1259 } 1260 } 1261 } 1262 }; 1263 const din = new Float32Array(N * N), 1264 dout = new Float32Array(N * N); 1265 for (let i = 0; i < N * N; i++) { 1266 const inside = a[i * 4 + 3] > 127; 1267 din[i] = inside ? 1e9 : 0; 1268 dout[i] = inside ? 0 : 1e9; 1269 } 1270 dt(din); 1271 dt(dout); 1272 const sdf = new Uint8Array(N * N); 1273 for (let i = 0; i < N * N; i++) { 1274 sdf[i] = 1275 255 * (0.5 + Math.max(-1, Math.min(1, (dout[i] - din[i]) / 40)) / 2); 1276 } 1277 return sdf; 1278 }; 1279 var runGL = (canvas, make, onFirstFrame) => { 1280 const gl = canvas.getContext("webgl", { antialias: false, alpha: false }); 1281 if (!gl) return null; 1282 const compile = (type, src) => { 1283 const sh = gl.createShader(type); 1284 gl.shaderSource(sh, src); 1285 gl.compileShader(sh); 1286 if (!gl.getShaderParameter(sh, gl.COMPILE_STATUS)) 1287 console.error(gl.getShaderInfoLog(sh)); 1288 return sh; 1289 }; 1290 const vs = compile( 1291 gl.VERTEX_SHADER, 1292 "attribute vec2 p;void main(){gl_Position=vec4(p,0.,1.);}", 1293 ); 1294 gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer()); 1295 gl.bufferData( 1296 gl.ARRAY_BUFFER, 1297 new Float32Array([-1, -1, 3, -1, -1, 3]), 1298 gl.STATIC_DRAW, 1299 ); 1300 const mkProg = (fs) => { 1301 const pr = gl.createProgram(); 1302 gl.attachShader(pr, vs); 1303 gl.attachShader(pr, compile(gl.FRAGMENT_SHADER, fs)); 1304 gl.linkProgram(pr); 1305 const at = gl.getAttribLocation(pr, "p"); 1306 gl.enableVertexAttribArray(at); 1307 gl.vertexAttribPointer(at, 2, gl.FLOAT, false, 0, 0); 1308 pr.u = {}; 1309 for ( 1310 let i = gl.getProgramParameter(pr, gl.ACTIVE_UNIFORMS) - 1; 1311 i >= 0; 1312 i-- 1313 ) { 1314 const nm = gl.getActiveUniform(pr, i).name; 1315 pr.u[nm] = gl.getUniformLocation(pr, nm); 1316 } 1317 return pr; 1318 }; 1319 const mkTex = (unit, filt, wrap) => { 1320 const tex = gl.createTexture(); 1321 gl.activeTexture(gl.TEXTURE0 + unit); 1322 gl.bindTexture(gl.TEXTURE_2D, tex); 1323 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filt); 1324 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filt); 1325 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, wrap); 1326 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, wrap); 1327 return tex; 1328 }; 1329 gl.pixelStorei(gl.UNPACK_ALIGNMENT, 1); 1330 mkTex(0, gl.LINEAR, gl.CLAMP_TO_EDGE); 1331 gl.texImage2D( 1332 gl.TEXTURE_2D, 1333 0, 1334 gl.LUMINANCE, 1335 N, 1336 N, 1337 0, 1338 gl.LUMINANCE, 1339 gl.UNSIGNED_BYTE, 1340 buildSDF(), 1341 ); 1342 const viz = make({ canvas, gl, mkProg, mkTex, PRE, MARCH, SH }); 1343 let W = 0, 1344 H = 0, 1345 frameId = null, 1346 shown = false, 1347 still = false;
1348 const t0 = performance.now(); 1349 const resize = () => { 1350 const w = (canvas.clientWidth / 2) | 0, 1351 h = (canvas.clientHeight / 2) | 0; 1352 if (w < 1 || (w === W && h === H)) return; 1353 W = w; 1354 H = h; 1355 canvas.width = W; 1356 canvas.height = H; 1357 gl.viewport(0, 0, W, H); 1358 viz.resize(W, H); 1359 }; 1360 const frame = (now) => { 1361 frameId = null; 1362 if (W < 1) return; 1363 viz.draw(still ? viz.staticT : (now - t0) / 1e3, still); 1364 if (!shown) { 1365 shown = true; 1366 if (onFirstFrame) onFirstFrame(); 1367 } 1368 if (!still) frameId = requestAnimationFrame(frame); 1369 }; 1370 const stop = () => { 1371 if (frameId !== null) { 1372 cancelAnimationFrame(frameId); 1373 frameId = null; 1374 } 1375 }; 1376 const start = (asStill) => { 1377 still = !!asStill; 1378 if (frameId === null) frameId = requestAnimationFrame(frame); 1379 }; 1380 return { resize, start, stop }; 1381 }; 1382 var run2D = (canvas, make, onFirstFrame) => { 1383 const viz = make({ canvas }); 1384 if (!viz) return null; 1385 let W = 0, 1386 H = 0, 1387 frameId = null, 1388 shown = false, 1389 still = false, 1390 t0 = 0; 1391 const resize = () => { 1392 const scale = Math.min(devicePixelRatio || 1, 1.25); 1393 const w = Math.max(1, (canvas.clientWidth * scale) | 0); 1394 const h = Math.max(1, (canvas.clientHeight * scale) | 0); 1395 if (w === W && h === H) return; 1396 W = canvas.width = w; 1397 H = canvas.height = h; 1398 if (viz.resize) viz.resize(W, H); 1399 }; 1400 const frame = (now) => { 1401 frameId = null; 1402 resize(); 1403 viz.draw(still ? viz.staticT || 0 : (now - t0) / 1e3, still); 1404 if (!shown) { 1405 shown = true; 1406 if (onFirstFrame) onFirstFrame(); 1407 } 1408 if (!still) frameId = requestAnimationFrame(frame); 1409 }; 1410 const stop = () => { 1411 if (frameId !== null) cancelAnimationFrame(frameId); 1412 frameId = null; 1413 }; 1414 const start = (asStill) => { 1415 still = !!asStill; 1416 if (!t0) t0 = performance.now(); 1417 if (frameId === null) frameId = requestAnimationFrame(frame); 1418 }; 1419 return { resize, start, stop }; 1420 }; 1421 var boot = (canvas, moduleP, onFirstFrame, shouldBoot) => 1422 moduleP.then((m) => { 1423 if (shouldBoot && !shouldBoot()) return null; 1424 return (m.canvas2d ? run2D : runGL)(canvas, m.make, onFirstFrame); 1425 }); 1426 1427
1427// assets/js/main.js 1428 function init() { 1429 var pjaxSelectors = ["style#inline-css", "body"]; 1430 var pjax = new import_pjax.default({ 1431 selectors: pjaxSelectors, 1432 cacheBust: false, 1433 }); 1434 var nativeDoRequest = pjax.doRequest.bind(pjax); 1435 var prefetchedPages = /* @__PURE__ */ new Map(); 1436 document.addEventListener("pjax:error", function (event) { 1437 var href = event && event.triggerElement && event.triggerElement.href; 1438 if (href) { 1439 window.location = href; 1440 } 1441 }); 1442 function normalizePrefetchUrl(uri) { 1443 var url = new URL(uri, window.location.href); 1444 url.hash = ""; 1445 return url.href; 1446 } 1447 function pjaxHeaders() { 1448 return { 1449 "X-Requested-With": "XMLHttpRequest", 1450 "X-PJAX": "true", 1451 "X-PJAX-Selectors": JSON.stringify(pjaxSelectors), 1452 }; 1453 } 1454 function prefetchPage(uri) { 1455 var url = normalizePrefetchUrl(uri); 1456 if (prefetchedPages.has(url)) { 1457 return prefetchedPages.get(url); 1458 } 1459 var promise = fetch(url, { 1460 credentials: "same-origin",
1461 headers: pjaxHeaders(), 1462 priority: "low", 1463 }) 1464 .then(function (response) { 1465 if (!response.ok) { 1466 throw new Error("Prefetch failed for " + url); 1467 } 1468 return response.text().then(function (html) { 1469 return { 1470 html, 1471 responseURL: response.url, 1472 headers: response.headers, 1473 }; 1474 }); 1475 }) 1476 .catch(function (error) { 1477 prefetchedPages.delete(url); 1478 throw error; 1479 }); 1480 prefetchedPages.set(url, promise); 1481 return promise; 1482 } 1483 function shouldPrefetchLink(link) { 1484 if ( 1485 !link.href || 1486 link.protocol !== window.location.protocol || 1487 link.host !== window.location.host 1488 ) { 1489 return false; 1490 } 1491 if (link.download || (link.target && link.target !== "_self")) { 1492 return false; 1493 } 1494 var url = new URL(link.href); 1495 return ( 1496 url.pathname !== window.location.pathname || 1497 url.search !== window.location.search 1498 ); 1499 } 1500 function requestIdle(callback) { 1501 if (window.requestIdleCallback) { 1502 return window.requestIdleCallback(callback, { timeout: 2e3 }); 1503 } 1504 return window.setTimeout(callback, 1); 1505 } 1506 function cancelIdle(id) { 1507 if (window.cancelIdleCallback) { 1508 window.cancelIdleCallback(id); 1509 } else { 1510 window.clearTimeout(id); 1511 } 1512 } 1513 function afterNextPaint(callback) { 1514 var cancelled = false; 1515 var firstFrame = null; 1516 var secondFrame = null; 1517 var timeout = null; 1518 if (window.requestAnimationFrame) { 1519 firstFrame = requestAnimationFrame(function () { 1520 firstFrame = null; 1521 secondFrame = requestAnimationFrame(function () { 1522 secondFrame = null; 1523 if (!cancelled) { 1524 callback(); 1525 } 1526 }); 1527 }); 1528 } else { 1529 timeout = setTimeout(function () { 1530 timeout = null; 1531 if (!cancelled) { 1532 callback(); 1533 } 1534 }, 0); 1535 } 1536 return function () { 1537 cancelled = true; 1538 if (firstFrame !== null) { 1539 cancelAnimationFrame(firstFrame); 1540 } 1541 if (secondFrame !== null) { 1542 cancelAnimationFrame(secondFrame); 1543 } 1544 if (timeout !== null) { 1545 clearTimeout(timeout); 1546 } 1547 }; 1548 } 1549 var resetQuicklink = null; 1550 function initQuicklink() { 1551 if (resetQuicklink) { 1552 resetQuicklink(); 1553 } 1554 if ( 1555 !window.fetch || 1556 !window.IntersectionObserver || 1557 !("isIntersecting" in IntersectionObserverEntry.prototype) 1558 ) { 1559 resetQuicklink = function () {}; 1560 return; 1561 } 1562 var observer = new IntersectionObserver(function (entries) { 1563 entries.forEach(function (entry) { 1564 if (!entry.isIntersecting) { 1565 return; 1566 } 1567 observer.unobserve(entry.target); 1568 prefetchPage(entry.target.href).catch(function () {}); 1569 }); 1570 }); 1571 var idleId = requestIdle(function () { 1572 Array.prototype.forEach.call( 1573 document.querySelectorAll("a[href]"), 1574 function (link) { 1575 if (shouldPrefetchLink(link)) { 1576 observer.observe(link); 1577 } 1578 }, 1579 ); 1580 }); 1581 resetQuicklink = function () { 1582 cancelIdle(idleId); 1583 observer.disconnect(); 1584 }; 1585 } 1586 pjax.doRequest = function (location2, options, callback) { 1587 var prefetchedPage = prefetchedPages.get(normalizePrefetchUrl(location2)); 1588 if (!prefetchedPage) { 1589 return nativeDoRequest(location2, options, callback); 1590 } 1591 var aborted = false; 1592 var request = { 1593 readyState: 1, 1594 responseURL: null, 1595 status: 0, 1596 getResponseHeader: function () { 1597 return null; 1598 }, 1599 abort: function () { 1600 aborted = true; 1601 request.readyState = 4; 1602 if (request.innerRequest) { 1603 request.innerRequest.abort(); 1604 } 1605 }, 1606 }; 1607 function fallbackToNetwork() { 1608 if (!aborted) { 1609 request.innerRequest = nativeDoRequest(location2, options, callback); 1610 } 1611 } 1612 prefetchedPage 1613 .then(function (page) { 1614 if (aborted) { 1615 return; 1616 } 1617 request.readyState = 4; 1618 request.responseURL = page.responseURL; 1619 request.status = 200; 1620 request.getResponseHeader = function (name) { 1621 return page.headers.get(name); 1622 }; 1623 callback(page.html, request, location2, options); 1624 }) 1625 .catch(fallbackToNetwork); 1626 return request; 1627 }; 1628 initQuicklink(); 1629 document.addEventListener("pjax:complete", initQuicklink); 1630 function signup() { 1631 var cookieRegex = 1632 /(?:(?:^|.*;
1632\s*)nateberkopecShowSignup\s*=\s*([^;]*).*$)|^.*$/; 1633 setTimeout(function () { 1634 if (document.cookie.match(cookieRegex, "$1")[1] !== "true") { 1635 showSignup(); 1636 } 1637 }, 6e4); 1638 function showSignup() { 1639 var el = document.getElementById("innocuous"); 1640 if (el) { 1641 el.style.display = "block"; 1642 } 1643 } 1644 } 1645 signup(); 1646 document.addEventListener("pjax:complete", function () { 1647 signup(); 1648 }); 1649 function viz() { 1650 var mobileLayout = matchMedia( 1651 "(max-width: 768px), (max-width: 940px) and (orientation: landscape)", 1652 ); 1653 var reduced = matchMedia("(prefers-reduced-motion: reduce)"); 1654 var canvas = null; 1655 var inst = null; 1656 var bootCancel = null; 1657 var bootToken = 0; 1658 var inView = true; 1659 var observer = new IntersectionObserver(function (entries) { 1660 entries.forEach(function (entry) { 1661 if (entry.target === canvas) { 1662 inView = entry.isIntersecting; 1663 update(); 1664 } 1665 }); 1666 }); 1667 function placeHomeCta() { 1668 var content = document.querySelector(".home-content"); 1669 var cta = document.querySelector(".home-page .contact-cta"); 1670 if (!content || !cta) return; 1671 if (mobileLayout.matches && cta.nextElementSibling !== content) { 1672 content.before(cta); 1673 } else if ( 1674 !mobileLayout.matches && 1675 content.nextElementSibling !== cta 1676 ) { 1677 content.after(cta); 1678 } 1679 } 1680 function listenMedia(q, f) { 1681 if (q.addEventListener) { 1682 q.addEventListener("change", f); 1683 } else { 1684 q.addListener(f); 1685 } 1686 } 1687 function stopBoot() { 1688 bootToken += 1; 1689 if (bootCancel) { 1690 bootCancel(); 1691 bootCancel = null; 1692 } 1693 } 1694 function unmount() { 1695 stopBoot(); 1696 observer.disconnect(); 1697 inView = true; 1698 if (inst) { 1699 inst.stop(); 1700 inst = null; 1701 } 1702 if (canvas) { 1703 delete canvas.dataset.viz; 1704 canvas = null; 1705 } 1706 } 1707 function isCurrent(nextCanvas, token) { 1708 return ( 1709 token === bootToken && 1710 canvas === nextCanvas && 1711 document.contains(nextCanvas) 1712 ); 1713 } 1714 function update() { 1715 if (!inst) { 1716 return; 1717 } 1718 if (!canvas || !document.contains(canvas)) { 1719 unmount(); 1720 return; 1721 } 1722 inst.resize(); 1723 if (inView && document.visibilityState !== "hidden") { 1724 inst.start(reduced.matches); 1725 } else { 1726 inst.stop(); 1727 } 1728 } 1729 function mount() { 1730 var nextCanvas = document.getElementById("sslogocanvas"); 1731 if (!nextCanvas || !window.vizLoad) { 1732 unmount(); 1733 return; 1734 } 1735 if (inst && canvas === nextCanvas) { 1736 update(); 1737 return; 1738 } 1739 if (canvas && canvas !== nextCanvas) { 1740 unmount(); 1741 } 1742 if (nextCanvas.dataset.viz || bootCancel) { 1743 return; 1744 } 1745 canvas = nextCanvas; 1746 observer.observe(canvas); 1747 canvas.dataset.viz = "1"; 1748 var token = bootToken; 1749 var moduleP = window.vizP || window.vizLoad(); 1750 window.vizP = null; 1751 bootCancel = afterNextPaint(function () { 1752 bootCancel = null; 1753 if (!isCurrent(nextCanvas, token)) { 1754 return; 1755 } 1756 boot( 1757 nextCanvas, 1758 moduleP, 1759 function () { 1760 nextCanvas.style.opacity = 1; 1761 }, 1762 function () { 1763 return isCurrent(nextCanvas, token); 1764 }, 1765 ) 1766 .then(function (engine) { 1767 if (!isCurrent(nextCanvas, token)) { 1768 if (engine) { 1769 engine.stop(); 1770 } 1771 return; 1772 } 1773 if (!engine) { 1774 return; 1775 } 1776 inst = engine; 1777 update(); 1778 }) 1779 .catch(function () {}); 1780 }); 1781 } 1782 function sync() { 1783 placeHomeCta(); 1784 if (inst) { 1785 update(); 1786 } else { 1787 mount(); 1788 } 1789 } 1790 listenMedia(reduced, sync); 1791 document.addEventListener("visibilitychange", sync); 1792 window.addEventListener("resize", sync); 1793 window.addEventListener("pagehide", unmount); 1794 document.addEventListener("pjax:send", unmount); 1795 document.addEventListener("pjax:complete", sync); 1796 sync(); 1797 } 1798 viz(); 1799 document.documentElement.addEventListener("click", function (event) { 1800 if (event.target.id === "innocuous-close") { 1801 document.getElementById("innocuous").style.display = "none"; 1802 document.cookie = 1803 "nateberkopecShowSignup=true; expires=Fri, 31 Dec 9999 23:59:59 GMT;SameSite=Strict"; 1804 } 1805 }); 1806 } 1807 if (document.readyState === "loading") { 1808 document.addEventListener("DOMContentLoaded", init); 1809 } else { 1810 init(); 1811 } 1812})();
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.