labs.llc/pdf/ — the two open-source libraries this page uses, as shipped (build 562), and pdf.js's two scan decoders (build 565). The two libraries were fetched on 2026-10-07 from two independent mirrors of the npm registry (cdn.jsdelivr.net and unpkg.com); the two copies of each file were byte-identical and matched the size and SHA-256 the package index lists. They are served from this folder UNMODIFIED. Some files carry another NAME than in their package, for this server's sake, and the same bytes: the server sends a JavaScript type for .js only, so pdf.js's two .mjs modules are named .js (a module is a module by how it is loaded, not by its extension); and it does not serve .md or extensionless files, so the licence files are named .txt. pdf-lib 1.17.1 — MIT licence, (c) 2019 Andrew Dillon — https://pdf-lib.js.org/ — npm: pdf-lib@1.17.1 pdf-lib.min.js 525,099 bytes dist/pdf-lib.min.js sha256 0f9a5cad07941f0826586c94e089d89b918c46e5c17cf2d5a3c6f666e3bc694f pdf-lib-LICENSE.txt 1,070 bytes LICENSE.md sha256 f2c9fc00fdb66eb99ac156ba52d734af66d8d309f65753ae809ad34ee2883bcb What it does here: reads every PDF added and writes the new one. pdf.js 6.4.299, legacy build — Apache License 2.0, Mozilla Foundation — https://mozilla.github.io/pdf.js/ — npm: pdfjs-dist@6.4.299 pdfjs.min.js 523,774 bytes legacy/build/pdf.min.mjs sha256 bccc24ea711db8e44503629519904a5292d73b9daaa214bbe7cdcc282b0f4259 pdfjs.worker.min.js 1,321,307 bytes legacy/build/pdf.worker.min.mjs sha256 145d2dd3ab0c86151011dba95acfa2d5336e2accd59388ea43dbee0efddaaec6 pdfjs-LICENSE.txt 10,174 bytes LICENSE sha256 0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 What it does here: draws the small page pictures, in a worker. It never touches the result. Its font files, character maps and colour-profile converter are NOT shipped, and no WebAssembly file is: the desk starts it with useWasm:false. pdf.js's two scan decoders, plain-JavaScript builds — added at build 565, from the same package and version (npm: pdfjs-dist@6.4.299, folder wasm/), fetched on 2026-10-08 from the same two mirrors, byte-identical, sizes and SHA-256 as the package index lists; served UNMODIFIED under the names pdf.js itself asks for. Neither loads with the page: the pdf.js worker imports one from this folder the first time a file stores a picture in its coding. The WebAssembly builds of the same two decoders (jbig2.wasm, openjpeg.wasm) are NOT shipped: with useWasm:false pdf.js never asks for them. jbig2_nowasm_fallback.js 152,009 bytes wasm/jbig2_nowasm_fallback.js — CCITT fax (Group 3/4) and JBIG2 sha256 68686ced624a48c42f84cdaa482ec44b72b0de4dc84a0df903af1fb7b45b5d9a jbig2-LICENSE.txt 12,862 bytes wasm/LICENSE_JBIG2 (the PDFium project's: BSD 3-Clause, Apache-2.0) sha256 9e66b7f1b934a28b37f3bc4dac97915de1674271e79a0a88182a18ed9731b4d1 jbig2-pdfjs-LICENSE.txt 555 bytes wasm/LICENSE_PDFJS_JBIG2 (Mozilla's build: Apache-2.0) sha256 aad3cce09842e00e9e11ad5e8fef8cc02fbc3a3768fe2f007443b9cee37aaee5 openjpeg_nowasm_fallback.js 445,781 bytes wasm/openjpeg_nowasm_fallback.js — JPEG 2000 sha256 9047b34b6bc142d85e4b0aa1b08b0b9baad4c6f8b7ac87641b9e8f90eb6fd23e openjpeg-LICENSE.txt 2,112 bytes wasm/LICENSE_OPENJPEG (OpenJPEG: BSD 2-Clause) sha256 a6af136f3e15038a666b61f376612a07d9a4e48cb7c01adbf3e33b3f14ab49b6 openjpeg-pdfjs-LICENSE.txt 1,285 bytes wasm/LICENSE_PDFJS_OPENJPEG (Mozilla's build: BSD 2-Clause) sha256 717fc62da03292dbb4dd0c8280bd4ce7bb8550dcf31d772bc93455fb50313425 Their addresses carry no ?v= marker (pdf.js joins the folder and the file name itself), so a browser keeps a copy for the week the site gives any unmarked script. When pdf.js is next upgraded these two files change WITH it. Check: shasum -a 256 pdf-lib.min.js pdfjs.min.js pdfjs.worker.min.js pdf-lib-LICENSE.txt pdfjs-LICENSE.txt \ jbig2_nowasm_fallback.js openjpeg_nowasm_fallback.js jbig2-LICENSE.txt jbig2-pdfjs-LICENSE.txt \ openjpeg-LICENSE.txt openjpeg-pdfjs-LICENSE.txt