From a9de527a5c6a889ff02675734d794f00d9939264 Mon Sep 17 00:00:00 2001 From: Nathan Fisher Date: Fri, 19 Feb 2021 22:43:36 -0500 Subject: [PATCH] Initial commit --- .gitmodules | 6 + Makefile | 2 + config.toml | 21 + content/about.md | 37 + content/news/_index.md | 7 + ...rch64riscv64-from-qemu-user-mode-chroot.md | 43 + ...userland-against-remaining-self-hosting.md | 13 + content/news/cross-build-progress.md | 50 + content/news/editors-glibc-232.md | 25 + ...clangllvm-based-build-with-nightly-rust.md | 33 + .../goodbye-gnu-coreutils-importing-sed.md | 49 + ...ce-pkgsrc-on-arm-woes-and-make-includes.md | 46 + content/news/improved-porting-with-libbsd.md | 12 + content/news/more-pkgsrc.md | 25 + .../on-libc-rust-experiments-and-risc-v.md | 43 + ...-pkgsrc-building-rust-and-arm-headaches.md | 43 + ...sd-userland-infrastructure-improvements.md | 35 + .../news/reconfiguring-the-build-process.md | 39 + ...ake-buildworld-cleanup-default-software.md | 33 + content/news/some-more-home-cooking.md | 50 + content/news/website-redesign.md | 100 + public/404.html | 418 +++ public/about/index.html | 451 +++ public/assets/screenshot_42.png | Bin 0 -> 134280 bytes public/categories/index.html | 422 +++ public/categories/site-news/index.html | 530 ++++ public/elasticlunr.min.js | 10 + public/handbook/.nojekyll | 1 + public/handbook/404.html | 234 ++ .../handbook/FontAwesome/css/font-awesome.css | 4 + .../FontAwesome/fonts/FontAwesome.ttf | Bin 0 -> 165548 bytes .../FontAwesome/fonts/fontawesome-webfont.eot | Bin 0 -> 165742 bytes .../FontAwesome/fonts/fontawesome-webfont.svg | 2671 +++++++++++++++++ .../FontAwesome/fonts/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 98024 bytes .../fonts/fontawesome-webfont.woff2 | Bin 0 -> 77160 bytes public/handbook/ayu-highlight.css | 79 + public/handbook/book.js | 660 ++++ public/handbook/clipboard.min.js | 7 + public/handbook/configuration/index.html | 247 ++ public/handbook/configuration/networking.html | 247 ++ public/handbook/configuration/users.html | 247 ++ public/handbook/css/chrome.css | 495 +++ public/handbook/css/general.css | 174 ++ public/handbook/css/print.css | 54 + public/handbook/css/variables.css | 253 ++ public/handbook/elasticlunr.min.js | 10 + public/handbook/favicon.png | Bin 0 -> 5679 bytes public/handbook/favicon.svg | 22 + public/handbook/fonts/OPEN-SANS-LICENSE.txt | 202 ++ .../fonts/SOURCE-CODE-PRO-LICENSE.txt | 93 + public/handbook/fonts/fonts.css | 100 + .../open-sans-v17-all-charsets-300.woff2 | Bin 0 -> 44352 bytes ...open-sans-v17-all-charsets-300italic.woff2 | Bin 0 -> 40656 bytes .../open-sans-v17-all-charsets-600.woff2 | Bin 0 -> 44936 bytes ...open-sans-v17-all-charsets-600italic.woff2 | Bin 0 -> 42120 bytes .../open-sans-v17-all-charsets-700.woff2 | Bin 0 -> 44988 bytes ...open-sans-v17-all-charsets-700italic.woff2 | Bin 0 -> 40800 bytes .../open-sans-v17-all-charsets-800.woff2 | Bin 0 -> 44536 bytes ...open-sans-v17-all-charsets-800italic.woff2 | Bin 0 -> 40812 bytes .../open-sans-v17-all-charsets-italic.woff2 | Bin 0 -> 41076 bytes .../open-sans-v17-all-charsets-regular.woff2 | Bin 0 -> 43236 bytes ...source-code-pro-v11-all-charsets-500.woff2 | Bin 0 -> 59140 bytes public/handbook/highlight.css | 79 + public/handbook/highlight.js | 6 + public/handbook/index.html | 245 ++ .../installation/binary/arm/index.html | 247 ++ .../handbook/installation/binary/arm/rpi.html | 247 ++ .../installation/binary/downloading.html | 247 ++ .../handbook/installation/binary/index.html | 247 ++ .../installation/binary/riscv/beagle-v.html | 247 ++ .../installation/binary/riscv/index.html | 247 ++ .../installation/binary/riscv/qemu.html | 247 ++ .../installation/binary/x86/index.html | 259 ++ public/handbook/installation/index.html | 247 ++ .../source/building-hitchhiker.html | 247 ++ .../installation/source/downloading.html | 247 ++ .../handbook/installation/source/index.html | 247 ++ .../installation/source/preparing.html | 247 ++ public/handbook/introduction/audience.html | 267 ++ public/handbook/introduction/features.html | 280 ++ public/handbook/introduction/index.html | 281 ++ public/handbook/mark.min.js | 7 + public/handbook/pkgsrc/index.html | 247 ++ public/handbook/print.html | 370 +++ public/handbook/s6/index.html | 247 ++ public/handbook/searcher.js | 483 +++ public/handbook/searchindex.js | 1 + public/handbook/searchindex.json | 1 + public/handbook/tomorrow-night.css | 104 + public/handbook/updating/binary.html | 247 ++ public/handbook/updating/index.html | 247 ++ public/handbook/updating/source.html | 239 ++ public/hhl.css | 27 + public/index.html | 438 +++ .../index.html | 462 +++ .../index.html | 432 +++ public/news/cross-build-progress/index.html | 469 +++ public/news/editors-glibc-232/index.html | 446 +++ .../index.html | 463 +++ .../index.html | 470 +++ .../index.html | 465 +++ .../improved-porting-with-libbsd/index.html | 436 +++ public/news/index.html | 603 ++++ public/news/more-pkgsrc/index.html | 442 +++ .../index.html | 461 +++ public/news/page/1/index.html | 6 + public/news/page/2/index.html | 608 ++++ public/news/page/3/index.html | 606 ++++ public/news/page/4/index.html | 550 ++++ .../index.html | 463 +++ .../index.html | 446 +++ .../index.html | 453 +++ .../index.html | 442 +++ public/news/some-more-home-cooking/index.html | 467 +++ public/news/website-redesign/index.html | 516 ++++ public/robots.txt | 3 + public/search_index.en.js | 1 + public/sitemap.xml | 188 ++ public/tags/4-4bsdlite/atom.xml | 27 + public/tags/4-4bsdlite/index.html | 530 ++++ public/tags/arm/atom.xml | 131 + public/tags/arm/index.html | 558 ++++ public/tags/c-programming/atom.xml | 140 + public/tags/c-programming/index.html | 571 ++++ public/tags/clang/atom.xml | 46 + public/tags/clang/index.html | 535 ++++ public/tags/cross-compile/atom.xml | 44 + public/tags/cross-compile/index.html | 532 ++++ public/tags/css/atom.xml | 99 + public/tags/css/index.html | 531 ++++ public/tags/deprecation/atom.xml | 27 + public/tags/deprecation/index.html | 530 ++++ public/tags/editors/atom.xml | 27 + public/tags/editors/index.html | 530 ++++ public/tags/glibc/atom.xml | 62 + public/tags/glibc/index.html | 539 ++++ public/tags/gnu-make/atom.xml | 74 + public/tags/gnu-make/index.html | 541 ++++ public/tags/html/atom.xml | 99 + public/tags/html/index.html | 531 ++++ public/tags/index.html | 480 +++ public/tags/libraries/atom.xml | 78 + public/tags/libraries/index.html | 555 ++++ public/tags/llvm/atom.xml | 46 + public/tags/llvm/index.html | 535 ++++ public/tags/mdbook/atom.xml | 99 + public/tags/mdbook/index.html | 531 ++++ public/tags/milestones/atom.xml | 126 + public/tags/milestones/index.html | 555 ++++ public/tags/nongnu/atom.xml | 268 ++ public/tags/nongnu/index.html | 631 ++++ public/tags/packages/atom.xml | 68 + public/tags/packages/index.html | 549 ++++ public/tags/pkgsrc/atom.xml | 113 + public/tags/pkgsrc/index.html | 558 ++++ public/tags/porting/atom.xml | 257 ++ public/tags/porting/index.html | 613 ++++ public/tags/programming/atom.xml | 56 + public/tags/programming/index.html | 531 ++++ public/tags/qemu/atom.xml | 49 + public/tags/qemu/index.html | 533 ++++ public/tags/riscv/atom.xml | 131 + public/tags/riscv/index.html | 554 ++++ public/tags/roadmap/atom.xml | 55 + public/tags/roadmap/index.html | 552 ++++ public/tags/rust/atom.xml | 120 + public/tags/rust/index.html | 558 ++++ public/tags/site-news/atom.xml | 99 + public/tags/site-news/index.html | 531 ++++ public/tags/sysroot/atom.xml | 44 + public/tags/sysroot/index.html | 532 ++++ public/tags/systemd/atom.xml | 48 + public/tags/systemd/index.html | 533 ++++ public/tags/utilities/atom.xml | 139 + public/tags/utilities/index.html | 557 ++++ public/tags/web-programming/atom.xml | 99 + public/tags/web-programming/index.html | 531 ++++ public/tags/zola/atom.xml | 99 + public/tags/zola/index.html | 531 ++++ static/assets/screenshot_42.png | Bin 0 -> 134280 bytes static/hhl.css | 27 + templates/404.html | 8 + templates/base.html | 413 +++ templates/categories/list.html | 12 + templates/categories/single.html | 30 + templates/index.html | 32 + templates/news-page.html | 14 + templates/news.html | 60 + templates/page.html | 6 + templates/tags/list.html | 12 + templates/tags/single.html | 31 + 192 files changed, 45573 insertions(+) create mode 100644 .gitmodules create mode 100644 Makefile create mode 100644 config.toml create mode 100644 content/about.md create mode 100644 content/news/_index.md create mode 100644 content/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot.md create mode 100644 content/news/continued-porting-of-bsd-userland-against-remaining-self-hosting.md create mode 100644 content/news/cross-build-progress.md create mode 100644 content/news/editors-glibc-232.md create mode 100644 content/news/experimental-clangllvm-based-build-with-nightly-rust.md create mode 100644 content/news/goodbye-gnu-coreutils-importing-sed.md create mode 100644 content/news/imported-source-pkgsrc-on-arm-woes-and-make-includes.md create mode 100644 content/news/improved-porting-with-libbsd.md create mode 100644 content/news/more-pkgsrc.md create mode 100644 content/news/on-libc-rust-experiments-and-risc-v.md create mode 100644 content/news/patching-pkgsrc-building-rust-and-arm-headaches.md create mode 100644 content/news/porting-netbsd-userland-infrastructure-improvements.md create mode 100644 content/news/reconfiguring-the-build-process.md create mode 100644 content/news/restarting-make-buildworld-cleanup-default-software.md create mode 100644 content/news/some-more-home-cooking.md create mode 100644 content/news/website-redesign.md create mode 100644 public/404.html create mode 100644 public/about/index.html create mode 100644 public/assets/screenshot_42.png create mode 100644 public/categories/index.html create mode 100644 public/categories/site-news/index.html create mode 100644 public/elasticlunr.min.js create mode 100644 public/handbook/.nojekyll create mode 100644 public/handbook/404.html create mode 100644 public/handbook/FontAwesome/css/font-awesome.css create mode 100644 public/handbook/FontAwesome/fonts/FontAwesome.ttf create mode 100644 public/handbook/FontAwesome/fonts/fontawesome-webfont.eot create mode 100644 public/handbook/FontAwesome/fonts/fontawesome-webfont.svg create mode 100644 public/handbook/FontAwesome/fonts/fontawesome-webfont.ttf create mode 100644 public/handbook/FontAwesome/fonts/fontawesome-webfont.woff create mode 100644 public/handbook/FontAwesome/fonts/fontawesome-webfont.woff2 create mode 100644 public/handbook/ayu-highlight.css create mode 100644 public/handbook/book.js create mode 100644 public/handbook/clipboard.min.js create mode 100644 public/handbook/configuration/index.html create mode 100644 public/handbook/configuration/networking.html create mode 100644 public/handbook/configuration/users.html create mode 100644 public/handbook/css/chrome.css create mode 100644 public/handbook/css/general.css create mode 100644 public/handbook/css/print.css create mode 100644 public/handbook/css/variables.css create mode 100644 public/handbook/elasticlunr.min.js create mode 100644 public/handbook/favicon.png create mode 100644 public/handbook/favicon.svg create mode 100644 public/handbook/fonts/OPEN-SANS-LICENSE.txt create mode 100644 public/handbook/fonts/SOURCE-CODE-PRO-LICENSE.txt create mode 100644 public/handbook/fonts/fonts.css create mode 100644 public/handbook/fonts/open-sans-v17-all-charsets-300.woff2 create mode 100644 public/handbook/fonts/open-sans-v17-all-charsets-300italic.woff2 create mode 100644 public/handbook/fonts/open-sans-v17-all-charsets-600.woff2 create mode 100644 public/handbook/fonts/open-sans-v17-all-charsets-600italic.woff2 create mode 100644 public/handbook/fonts/open-sans-v17-all-charsets-700.woff2 create mode 100644 public/handbook/fonts/open-sans-v17-all-charsets-700italic.woff2 create mode 100644 public/handbook/fonts/open-sans-v17-all-charsets-800.woff2 create mode 100644 public/handbook/fonts/open-sans-v17-all-charsets-800italic.woff2 create mode 100644 public/handbook/fonts/open-sans-v17-all-charsets-italic.woff2 create mode 100644 public/handbook/fonts/open-sans-v17-all-charsets-regular.woff2 create mode 100644 public/handbook/fonts/source-code-pro-v11-all-charsets-500.woff2 create mode 100644 public/handbook/highlight.css create mode 100644 public/handbook/highlight.js create mode 100644 public/handbook/index.html create mode 100644 public/handbook/installation/binary/arm/index.html create mode 100644 public/handbook/installation/binary/arm/rpi.html create mode 100644 public/handbook/installation/binary/downloading.html create mode 100644 public/handbook/installation/binary/index.html create mode 100644 public/handbook/installation/binary/riscv/beagle-v.html create mode 100644 public/handbook/installation/binary/riscv/index.html create mode 100644 public/handbook/installation/binary/riscv/qemu.html create mode 100644 public/handbook/installation/binary/x86/index.html create mode 100644 public/handbook/installation/index.html create mode 100644 public/handbook/installation/source/building-hitchhiker.html create mode 100644 public/handbook/installation/source/downloading.html create mode 100644 public/handbook/installation/source/index.html create mode 100644 public/handbook/installation/source/preparing.html create mode 100644 public/handbook/introduction/audience.html create mode 100644 public/handbook/introduction/features.html create mode 100644 public/handbook/introduction/index.html create mode 100644 public/handbook/mark.min.js create mode 100644 public/handbook/pkgsrc/index.html create mode 100644 public/handbook/print.html create mode 100644 public/handbook/s6/index.html create mode 100644 public/handbook/searcher.js create mode 100644 public/handbook/searchindex.js create mode 100644 public/handbook/searchindex.json create mode 100644 public/handbook/tomorrow-night.css create mode 100644 public/handbook/updating/binary.html create mode 100644 public/handbook/updating/index.html create mode 100644 public/handbook/updating/source.html create mode 100644 public/hhl.css create mode 100644 public/index.html create mode 100644 public/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/index.html create mode 100644 public/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/index.html create mode 100644 public/news/cross-build-progress/index.html create mode 100644 public/news/editors-glibc-232/index.html create mode 100644 public/news/experimental-clangllvm-based-build-with-nightly-rust/index.html create mode 100644 public/news/goodbye-gnu-coreutils-importing-sed/index.html create mode 100644 public/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/index.html create mode 100644 public/news/improved-porting-with-libbsd/index.html create mode 100644 public/news/index.html create mode 100644 public/news/more-pkgsrc/index.html create mode 100644 public/news/on-libc-rust-experiments-and-risc-v/index.html create mode 100644 public/news/page/1/index.html create mode 100644 public/news/page/2/index.html create mode 100644 public/news/page/3/index.html create mode 100644 public/news/page/4/index.html create mode 100644 public/news/patching-pkgsrc-building-rust-and-arm-headaches/index.html create mode 100644 public/news/porting-netbsd-userland-infrastructure-improvements/index.html create mode 100644 public/news/reconfiguring-the-build-process/index.html create mode 100644 public/news/restarting-make-buildworld-cleanup-default-software/index.html create mode 100644 public/news/some-more-home-cooking/index.html create mode 100644 public/news/website-redesign/index.html create mode 100644 public/robots.txt create mode 100644 public/search_index.en.js create mode 100644 public/sitemap.xml create mode 100644 public/tags/4-4bsdlite/atom.xml create mode 100644 public/tags/4-4bsdlite/index.html create mode 100644 public/tags/arm/atom.xml create mode 100644 public/tags/arm/index.html create mode 100644 public/tags/c-programming/atom.xml create mode 100644 public/tags/c-programming/index.html create mode 100644 public/tags/clang/atom.xml create mode 100644 public/tags/clang/index.html create mode 100644 public/tags/cross-compile/atom.xml create mode 100644 public/tags/cross-compile/index.html create mode 100644 public/tags/css/atom.xml create mode 100644 public/tags/css/index.html create mode 100644 public/tags/deprecation/atom.xml create mode 100644 public/tags/deprecation/index.html create mode 100644 public/tags/editors/atom.xml create mode 100644 public/tags/editors/index.html create mode 100644 public/tags/glibc/atom.xml create mode 100644 public/tags/glibc/index.html create mode 100644 public/tags/gnu-make/atom.xml create mode 100644 public/tags/gnu-make/index.html create mode 100644 public/tags/html/atom.xml create mode 100644 public/tags/html/index.html create mode 100644 public/tags/index.html create mode 100644 public/tags/libraries/atom.xml create mode 100644 public/tags/libraries/index.html create mode 100644 public/tags/llvm/atom.xml create mode 100644 public/tags/llvm/index.html create mode 100644 public/tags/mdbook/atom.xml create mode 100644 public/tags/mdbook/index.html create mode 100644 public/tags/milestones/atom.xml create mode 100644 public/tags/milestones/index.html create mode 100644 public/tags/nongnu/atom.xml create mode 100644 public/tags/nongnu/index.html create mode 100644 public/tags/packages/atom.xml create mode 100644 public/tags/packages/index.html create mode 100644 public/tags/pkgsrc/atom.xml create mode 100644 public/tags/pkgsrc/index.html create mode 100644 public/tags/porting/atom.xml create mode 100644 public/tags/porting/index.html create mode 100644 public/tags/programming/atom.xml create mode 100644 public/tags/programming/index.html create mode 100644 public/tags/qemu/atom.xml create mode 100644 public/tags/qemu/index.html create mode 100644 public/tags/riscv/atom.xml create mode 100644 public/tags/riscv/index.html create mode 100644 public/tags/roadmap/atom.xml create mode 100644 public/tags/roadmap/index.html create mode 100644 public/tags/rust/atom.xml create mode 100644 public/tags/rust/index.html create mode 100644 public/tags/site-news/atom.xml create mode 100644 public/tags/site-news/index.html create mode 100644 public/tags/sysroot/atom.xml create mode 100644 public/tags/sysroot/index.html create mode 100644 public/tags/systemd/atom.xml create mode 100644 public/tags/systemd/index.html create mode 100644 public/tags/utilities/atom.xml create mode 100644 public/tags/utilities/index.html create mode 100644 public/tags/web-programming/atom.xml create mode 100644 public/tags/web-programming/index.html create mode 100644 public/tags/zola/atom.xml create mode 100644 public/tags/zola/index.html create mode 100644 static/assets/screenshot_42.png create mode 100644 static/hhl.css create mode 100644 templates/404.html create mode 100644 templates/base.html create mode 100644 templates/categories/list.html create mode 100644 templates/categories/single.html create mode 100644 templates/index.html create mode 100644 templates/news-page.html create mode 100644 templates/news.html create mode 100644 templates/page.html create mode 100644 templates/tags/list.html create mode 100644 templates/tags/single.html diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..a119576 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "hugo-eureka"] + path = hugo-eureka + url = https://github.com/wangchucheng/hugo-eureka.git +[submodule "themes/eureka"] + path = themes/eureka + url = https://github.com/wangchucheng/hugo-eureka.git diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ab0d559 --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +all: + zola build --output-dir ../site diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..5f73047 --- /dev/null +++ b/config.toml @@ -0,0 +1,21 @@ +# The URL the site will be built for +base_url = "/" + +# Whether to automatically compile all Sass files in the sass directory +compile_sass = true + +# Whether to build a search index to be used later on by a JavaScript library +build_search_index = true + +taxonomies = [ + { name = "tags", feed = true }, + { name = "categories", feed = false }, +] + +[markdown] +# Whether to do syntax highlighting +# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola +highlight_code = true + +[extra] +# Put all your custom variables here diff --git a/content/about.md b/content/about.md new file mode 100644 index 0000000..fc3da42 --- /dev/null +++ b/content/about.md @@ -0,0 +1,37 @@ ++++ +title = "About Hitch Hiker Linux" +date = 2021-02-15 ++++ + +```bash +#!/don't/panic +man 42 +``` +HitchHiker Linux is a very Unix-like distribution of Linux with a focus on +simplicity, elegance and providing a solid base that the end user can turn into +whatever they see fit. +## Core Principles: +* The default installation should include the bare minimum required software to provide a solid base. +* Complexity should be discouraged in favor of code elegance, security and maintainability. +* End users should not be discouraged from tinkering with their system. +* The distribution should make as few assumptions as possible regarding end use. +* While newer releases of software often eliminate bugs and vulnerabilities, newer software packages are not by default more secure than stable, mature packages (newer is not always better). +* Any changes to the core system functionality, especially those which change expected functionality, must be well justified and well vetted before deployment. +* The base installation should include everything required to rebuild itself from source. +* The distribution should make as few changes to the upstream software as possible, delivering it as intended by the original author. +* Patching of sources should only be done to fix bugs or vulnerabilities. + +HHL was born of a desire to harness the greater hardware support of Linux while +paying respect to the Unix systems from which Linux was born. The author was a +long time user of FreeBSD who migrated to Arch for several years, but has become +increasingly frustrated with Systemd, Gnome, RedHat and Ubuntu dominance. It is +believed that there is a need for a distribution that does not pander to ease of +use for casual users at the expense of putting up roadblocks for experienced Unix +veterans. +## Architectures +HHL is running on the following processor architectures: +* x86 +* x86_64 +* armv7l +* aarch64 +* riscv64 diff --git a/content/news/_index.md b/content/news/_index.md new file mode 100644 index 0000000..49e1959 --- /dev/null +++ b/content/news/_index.md @@ -0,0 +1,7 @@ ++++ +title = "Recent posts" +sort_by = "date" +template = "news.html" +paginate_by = 5 +page_template = "news-page.html" ++++ diff --git a/content/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot.md b/content/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot.md new file mode 100644 index 0000000..74ed35d --- /dev/null +++ b/content/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot.md @@ -0,0 +1,43 @@ ++++ +title = "Compiling for aarch64/riscv64 from qemu user mode chroot" +date = 2021-01-28 +[taxonomies] +tags = ["Arm","Porting","RiscV","Qemu"] ++++ +This is a novel approach that I've been experimenting with lately, to do some +legwork towards supporting architectures for which I either don't have physical +hardware or else the hardware is limited in capability so much as to make native +compilation impractical. + + +Qemu, in addition to running full virtual machines, also has what is known as +"user mode emulation". In a nutshell, when using qemu in this way one is able to +run binaries for another architecture without creating virtual hardware or a +virtual kernel. In this case, qemu just acts as a translation layer, translating +instructions designed for one ISA to instructions that can be executed on the +host processor. By not running a virtual kernel on virtual hardware, there is +actually a huge savings of system resources. + +Setting this up, while not trivial, is surprisingly straightforward. First, a +suitable root filesystem must be created. Qemu must be compiled statically, and +the static binary copied into the chroot filesystem. Then, by using binfmt-misc, +one can register this qemu executable as the program interpreter for binaries of +the guest architecture. In this way it is actually possible to set up a functional +chroot on a well spec'ed X86_64 machine running Risc-V binaries. There is a bit +more to getting this to work, but suffice to say that it does in fact work, +within the normal limitations of a chroot. + +While running foreign binaries does incur some performance penalty, this method +is actually proving to be a significant improvement over, say, compiling for +aarch64 on a Raspberry Pi 4, as I have four times the memory and a significantly +faster processor with twice the number of cores available. And it has the benefit +of not requiring a cross compiler. Instead, one is running a native compiler via +an emulation layer. But this eliminates many of the pain points of cross compiling. +It's a neat trick. + +So what does this mean for HitchHiker? It means that work is now well underway +towards running HitchHiker on a BeagleV when they become widely available later +this year. I have been eagerly waiting to dip toes into Risc-V as soon as an +affordable option was available, and it looks like said option is now on the +horizon. + diff --git a/content/news/continued-porting-of-bsd-userland-against-remaining-self-hosting.md b/content/news/continued-porting-of-bsd-userland-against-remaining-self-hosting.md new file mode 100644 index 0000000..6ca6f92 --- /dev/null +++ b/content/news/continued-porting-of-bsd-userland-against-remaining-self-hosting.md @@ -0,0 +1,13 @@ ++++ +title = "Continued porting of BSD userland against remaining self-hosting" +date = 2020-09-03 +[taxonomies] +tags = ["Porting","Roadmap","NonGNU"] ++++ +At this juncture we're well over the halfway point in regards to providing a predominately BSD userland in HitchHiker, with over 90 console utilities ported against a total of 59 remaining programs brought in from GNU coreutils. That total includes, of course, some programs that are not included in GNU coreutils. Some of the utilities replace standalone GNU packages, such as grep and diff, while some are utilities that may not be present on most Linux distributions, such as pax or leave. In general, the BSD utilities have compatible functionality, as both GNU and BSD have mostly embraced the POSIX standard, but with a few caveats where there are extensions made to the standard. The biggest differences reflect a difference in philosophy, as the BSD utils are quite small and include only what they must, while the GNU versions are all (yes all) larger and accept more options. GNU particularly accept long options and in general have better internationalization. The GNU utilities also accept the --help option, giving a brief summary of their function. BSD utilities specifically omit this functionality, as each command comes with a man page, which would duplicate functionality. + +One of the dangers in just blindly replacing the usual GNU userland on Linux is that when the accepted options differ slightly, some scripts may not run as expected. This also can affect building packages from source if care is not taken to stick with only POSIX specified options when writing Makefiles. To some extent I have been working to minimize the effects here by taking the time to verify each utility works as expected and in some cases implementing options that most users expect, such as the -v switch (verbose) for the ln and rmdir utilities. In other cases, such as the much abused -a or --preserve-attributes options of GNU cp, implementing equivalent functionality in the BSD port is definitely non-trivial, and many people are just trying to copy directories recursively while preserving symlinks when they use 'cp -a', and not actually wanting to preserve ownership or modification times. Those cases can be served by using BSD cp as 'cp -R'. If preserving attributes is the desired behavior, then this is one of the tradeoffs being made and extra steps will have to be taken with chown and touch. + +In order to ensure that HitchHiker always remains self-hosting I have been running bootstrapping the system from itself multiple times during the porting effort. A few issues have been found and fixed along the way, but it has been an overall smooth transition. In one case, I had actually misused 'cp -a' myself in the busybox build (busybox is only built as part of the temporary toolchain). + +One particularly special case is glibc, which has a hard dependency on GNU awk during build time. As I have a preference for the historical (yet still maintained) Nawk, this requires building a statically compiled Gawk early in the bootstrap process as part of the temporary tools in /toolchain, which is discarded along with the rest of the temporary tools after the bootstrap phase and does not become part of the base system. Another example of the "Sheer F%$king Hubris" of much GNU software, which often will only build with other GNU tools, even though other tools exist with equivalent (and sometimes superior) functionality. diff --git a/content/news/cross-build-progress.md b/content/news/cross-build-progress.md new file mode 100644 index 0000000..69e6429 --- /dev/null +++ b/content/news/cross-build-progress.md @@ -0,0 +1,50 @@ ++++ +title = "Cross Build Progress" +date = 2021-02-08 +[taxonomies] +tags = ["Programming","Milestones","Porting","RiscV"] ++++ +The sysroot/cross-compile build tree is nearly able to build all of HitchHiker +now, with only a few packages left to tweak. + +* pkg-config: This is messy in general. There is a circular dependency with Glib, +satisfied by the pkg-config maintainers incorporating a recent version of Glib +directly into the distribution. However, Glib requires extra work to cross +compile. I've looked into it but not yet implemented the fixes. +* XML::Parser: Perl was actually able to cross compile successfully to both +aarch64 and riscv64 using perl-cross. XML::Parser is a perl module, uses perl +during it's build and perl modules in general have their own home baked build +system which does not play well with cross compiling. I'm investigating whether +it really needs to be in the base system or can be moved to ports. +* Ninja and Meson: may not actually be needed in the base system? +* zstd: Uses a Makefile or Meson for it's build system. I've already dealt with +a few projects that built with a plain Makefile and was just putting this off to +be honest, as a few of the others required significant reworking to get a +functional build. +* iproute2: Another one using it's own home grown configure script which will +likely require much manual intervention. +* mandoc: This builds after a fair amount of manual intervention. However, it +segfaults on riscv64. Unknown whether this is due to qemu or if it will segfault +on real hardware, but not a great sign. I'm looking at porting an earlier man +utility from 4.4BSD-lite. Man should be a simple program. +* file: Our file utility, descended from the relatively recent OpenBSD sandboxed +file, built fine on intel and Arm architectures, but the original author pulled +in some SECCOMP defs that are architecture dependent and failed to account for +any architectures besides Intel and Arm. I've hacked the source so that it +compiles on Riscv64. However, there appears to be more work to be done to get it +fully working on that arch. +There were, of course, numerous hiccups along the way. I'll elaborate on a few. + +Bzip2 has it's own Makefile based build. It also has a separate Makefile to build the shared version of the library, and even when you do build the shared version it uses the static version for bzip2recover. In true hitchhiker fashion after mucking about with what was already there for a while I wound up just discarding it and imported the source directly into the build tree, substitution our own infrastructure. This required creating hhl.sharedlib.mk, which was overdue anyway. At the moment we're building both shared and static versions of libbz2, and linking the bzip2 and bzip2recover binaries against the shared library. + +Recent versions of util-linux include a new utility, hardlink, which links against pcre2 if available. However, the build system detects pcre2 on the host system, not in the sysroot, and there is no provision to manually disable linking against pcre2. Interestingly, there are two competing implementations of the hardlink program, and the one currently in util-linux is potentially going to be replaced as it is not the more fully featured one. There is some interesting discussion of the issue on the mailing list. In the meantime, since it is a potentially useful utility, I just imported the source of the preferred version and am building it using our build infrustructure. + +And now, gettext. This one really pissed me off. Recent versions of gettext include libtextstyle, a library for formatting text for display. The included gettext utilities link against libtextstyle. However, the headers don't yet exist at the time the utilities are built, so the only reason the build is not failing for everyone is that they are building against the headers already present on the host system. The libtextstyle subdirectory is not even in the library search path on the command line. + +Now, this is just bad practice. It means that if those headers are updated for a new release, then distro packagers will be building against the old headers, potentially causing undefined behavior and random bugs. I only caught it because the build utterly fails in a sysroot environment. + +Furthermore, one of the missing headers, included by textstyle.h, is stdbool.h, because for some reason they're worried about building on systems that don't have a working boolean implementation. This is just crazy at this point. It's no wonder GNU projects get bloated. + +In the end, I pulled the headers out of the host system, put them in the appropriate directory inside the source directory, compiled, then did a chroot into the sysroot and did a native compile just to be sure that the headers matched. Those headers are now imported into the build tree and are placed into the source directory after running configure, and the Makefile is patched to search the build directory before the system header directory. It's not a full fix that I would push upstream but it works. A full fix would build the headers first, before building the utilities, then link against them. I didn't feel like going that in depth fixing their build. + +In a general sense, even though I feel that autotools based builds are often extremely bloated and inefficient, based on the mistakes that I keep fixing in other project's home brewed Makefiles to enable cross compilation (as well as simple things like installing into a DESTDIR) I can really see some of the strengths of autotools. Most of the time, all that is needed to cross compile is setting --host and either passing --sysroot in the CFLAGS or, if supported the the specific package, passing --with-sysroot to configure. That isn't to say that autotools is perfect. Frequently the package maintainers compile tests against the host system or check for library support by looking in /usr/include. After a while you begin to realize that you're literally fixing the same mistake repeatedly, and start to feel despair for the human race. And then it works, and everything is all right again. diff --git a/content/news/editors-glibc-232.md b/content/news/editors-glibc-232.md new file mode 100644 index 0000000..982be99 --- /dev/null +++ b/content/news/editors-glibc-232.md @@ -0,0 +1,25 @@ ++++ +title = "Editors, glibc-2.32" +date = 2020-08-28 +[taxonomies] +tags = ["Porting","Deprecation","Glibc","Libraries","NonGNU","4.4BSDlite","Editors"] ++++ +Most people who use any form of Unix have a favorite editor. Most of them also think that everyone else is wrong (but in truth, you're all wrong...). And most Linux distros over the years have gradually catered more and more to the lowest denominator. + +In the beginning, of course, there was only ed (The **STANDARD** editor!) and then at some point in time came Bill Joy's vi. Most people have, of course, never used the original vi. If you are on Linux, chances are good that you have encountered vim. If you are running BSD in any form then you have vi, except that you don't actually have vi, you have nvi. When 4.4BSDlite was released as the first large scale open source project, the major caveat was that much of the source was patent encumbered by AT&T, including the venerable vi editor. All of this source was therefore replaced, painstakingly, a piece at a time. The selling point of nvi at the time was that it was a "bug for bug compatible" rewrite of vi, which started with the original elvis (a vi clone) source. + +For most of it's existence so far (including it's original, never released to the public form from roughly ten years ago) HitchHiker had vim. I've used vim a lot and over the years have only grown more fond of it. Sticking with it over the rather steep learning curve has been quite helpful in situations where the only editor available is some form of vi or vi clone. However, vim is not without it's issues. All forms of vi or clones of vi have a rather steep learning curve for new users. The vim source code is a rats nest of conditionals and attempts to maintain compatibility with ancient systems that only a masochist or Luddite would use. And for a console based editor it is rather slow (though nowhere near the beast that Emacs has become, a story for another time). + +For ease of use and welcoming less experienced users we follow the same path as FreeBSD by offering the ee editor. It's extremely small (the entire source is a single c file) and has great ease of use due to the integrated menu bar. It isn't an especially powerful editor, but it gets the job done. + +As for vim, I decided a while back that it was going to be replaced with something more lightweight and with a more "correct" code base. I tried a few times to port nvi to HitchHiker, both from the "official" nvi source distribution and also from BSD sources. The main stumbling block has been that the code assumes headers and C library routines which no longer exist in Linux. + +For the solution, let's back up again by a few years. AT&T Unix is the direct ancestor to Solaris. A number of years ago Sun bequeathed the source code for the Solaris operating system to the public in the form of a CDDL licensed source distribution, giving birth to the OpenSolaris operating system in it's many forms, allowing FreeBSD to import the zfs filesystem, and effectively unencumbering historical Unix source code to the benefit of all. + +Therefore, after a few days tinkering, we now have version 3.7 of Bill Joy's original ex/vi editor, which is the version that was current as of the 4.4BSDlite release, ported to and running on HitchHiker Linux. This has been a very gratifying experience overall. Some (probably many if I'm being honest) will miss certain features that they have grown used to in vim, such as syntax highlighting and visual mode. There is no plugin system (which I've never bothered to use in vim anyway...) and you're basically expected to know what you're doing. But the program is SMALL (roughly half the size of nvi, with no dependency on BDB, and orders of magnitude smaller than vim) and noticeably faster than vim when loading large files or pasting large chunks of text. You probably thought vim was fast. But you only -thought- it was fast. + +You are, of course, free to install and use vim if you feel that original vi is too "limiting" for your use. Feel free to use ed for that matter, and to yell out that you're using "THE STANDARD EDITOR" while doing so. We imported ed from FreeBSD a week ago. + +In other news, GNU libc (glibc) released version 2.32 this week. I'm running it already on my Arch systems but for the time being holding off on updating HitchHiker. There were a few notable deprecations in this release for functions, macros, and even a few array definitions that are considered too ancient to support. However, they actually do affect HitchHiker in a few places as we have some rather "historical" code imported into the userland tools. I spent an hour this morning fixing compilation errors when compiling mksh and ex/vi against the new library, in preparation for eventually merging it in. I'll have to check all of the other imported sources against it another day. + +Interestingly, I also had to start using clang to compile these tools in Arch, as the gcc 10 series encountered an "internal compiler error", which was actually a segmentation fault, when compiling the ex/vi sources. In HitchHiker we use gcc-9.30 and these problems don't exist. Good reason to not upgrade for the time being. diff --git a/content/news/experimental-clangllvm-based-build-with-nightly-rust.md b/content/news/experimental-clangllvm-based-build-with-nightly-rust.md new file mode 100644 index 0000000..6f7d6d1 --- /dev/null +++ b/content/news/experimental-clangllvm-based-build-with-nightly-rust.md @@ -0,0 +1,33 @@ ++++ +title = "Experimental clang/llvm based build with nightly rust" +date = 2020-11-24 +[taxonomies] +tags = ["C Programming","Rust","llvm","Clang","NonGNU","Packages"] ++++ +Ok, so this little side track has been on a slow burn for a while now, but I've currently got a rootfs that I can chroot into with the following features: +* Built almost entirely with llvm/clang (see caveats below) +* Rust nightly compiler installed early in the build, accessible for all users + +* Directory hierarchy flattened, directories in /usr are symlinks to directories in / +* libc++ standard C++ library from the llvm project instead of libstdc++ from gcc +* Both GNU binutils and the lld linker installed (default is still binutils ld for now) +* x86_64 only at this time, but should be portable to Arm +Some caveats: +* llvm/clang wants to build against libstdc++, so not self hosting unless we go back to libstdc++ +* There were issues building the compiler-rt module, so llvm and clang link against libgcc +* The GNU m4 package will not build with clang, so it had to be built with the gcc compiler from the temporary toolchain. I'm sure this is fixable, but I haven't researched it much yet. +* The biggie: glibc refuses to try to build with any compiler except gcc. The. Sheer. Fucking. Hubris. ...again... +Nevertheless, this is all quite promising and brings up a number of possibilities going forward. As llvm by default supports multiple backends for code generation, a huge benefit is that HitchHiker would come out of the box with cross compilation ability. Also, including rust by default gives us the ability to use Rust code in the base system, with numerous potential benefits that I will explain below. + +The directory hierarchy is simple to understand, but is reversed in implementation from what the "big" distros have done. Basically most "modern" distros have ditched the /usr split by making /bin and /lib into symlinks to /usr/bin and /usr/lib. In this build we instead just give all programs a blank install prefix. Our root directory now takes not only all of our binaries and libraries but also has program data under /share, and we only have /usr because it is expected. everything in /usr is, in fact, just symlinks. + +Rust is installed in a novel way using rustup. As root, we set the RUSTUP_HOME and CARGO_HOME environment variables to /rust, and make /rust/bin a symlink to /bin. That way, we can track a nightly toolchain system-wide and it will install binaries into /bin, for all users to access. We could, of course, build rustc from source, and I have in fact done so previously. However, apart from the ridiculous compilation time that it takes, this is not a great option until the language is truly stable, as a lot of the interesting bits if the Rust ecosystem need something newer than the stable branch. By using rustup and the binary toolchains, we always have access to the most up to date toolchain, and the ability to easily switch from one to another. + +So what are the benefits of having rust available early on? For starters Rust can access C functions and export functions to C, making it relatively easy to replace parts of the software stack previously written in C with Rust code that enjoys the memory and concurrency safety checks which are not present in C. As an example, relibc is a complete C standard library written in Rust. This alternative C library is a potential future path of investigation. But on a smaller scale, there are a number of interesting cli utilities and programs written in Rust. +* sd is a stream editor similar to sed, but much faster and with a much easier syntax and reduced scope. +* fd is a file finding utility which is orders of magnitude faster than find, and has interesting features like skipping .git folders by default. +* exa is a file lister with some unique features over ls +* The amp editor, while somewhat vi-like, has interesting extra features fuzzy file finder and a token based jump which make moving around even faster than vim. +I have also begun, partially as a learning exercise, writing my own Rust implementations of various small Unix utilities. In the future some may find their way into HitchHiker if we retain Rust in the base system. + +While this is still in an early evaluation phase, I think it likely that at the very least we will make the switch from gcc to clang/llvm at some future point, with the possibility of bringing some of the other features along as well. What may not make the cut is libstdc++, as replacing the C++ standard library is almost as problematic as replacing the C standard library, leading to the need to port a large amount of third party software in the future. However, I will likely be going further with Rust, and with the flattened filesystem, as I want HItchHiker to be a cutting edge distro while still adhering to traditional Unix practices. Basically, we're going to push the envelope when it makes sense to do so, but not follow fads and trends in the Linux community that might very well be dead ends (like I believe Systemd in particular to be). diff --git a/content/news/goodbye-gnu-coreutils-importing-sed.md b/content/news/goodbye-gnu-coreutils-importing-sed.md new file mode 100644 index 0000000..b111202 --- /dev/null +++ b/content/news/goodbye-gnu-coreutils-importing-sed.md @@ -0,0 +1,49 @@ ++++ +title = "Goodbye GNU coreutils, importing sed" +date = 2020-09-22 +[taxonomies] +tags = ["Milestones","Porting","NonGNU","Utilities"] ++++ +The porting effort has reached the point where it is now safe to remove GNU +coreutils. At this point, there are now only 16 utilities provided by the +coreutils package that are not implemented in another way in HitchHiker, and none of the missing +utilities are dealbreakers. As follows, here is what is missing and why it isn't +a problem, or what the roadmap is for replacement. +* b2sum - computes BLAKE2 checksums - there are quite a number of checksum utilities already, and this one is currently not a dealbreaker. If a reason for replacement is discovered it will be implemented from scratch in c. +* base32 - encodes file or stdin using base32 - we already have base64 imported from OpenBSD. +* basenc - encodes file or stdin using various algorithms - see base32. +* chcon - changes SELinux security context - SELinux is a largely Fedora/RedHat backed API which we don't implement currently in HitchHiker. Standard Unix file permissions are not fine-grained enough for just about any use case. +* dir - displays directory contents - despite what GNU say about dir, it is basically ls but with a different default behavior. The same behavior can be emulated by using the appropriate flags with ls. +* dircolors - sets the colors for eg ```ls --color``` - We have BSD ls in HitchHiker, which does not implement the --color option. I have considered re-implementing ls and including the --color option, in which case dircolors would be useful. However, this is non-trivial and no timeframe is given. +* hostid - displays the unique numeric id for the current host - not currently a dealbreaker, but potentially useful. Fairly trivial to implement in C. +* nproc - gets the number of processors currently available - also potentially useful and fairly trivial to implement in C. +* numfmt - format numbers in human-readable form - potentially useful, not a dealbreaker. Non-POSIX utility which accepts mostly GNU style long options. If implemented would be done in a different way, ignoring the behavior of the GNU utility, which is frankly too GNU-centric (long options should have short option equivalents). +* pinky - a mini finger implementation - all information available via pinky can be optained with other included utilities. If there is a need for accessing information on remote hosts an actual finger implementation is required anyway. +* ptx - honestly the manpage for this utility reads like gibberish. Anyway I've never used it and don't think it's needed, not available on BSD systems anyway and not POSIX. +* runcon - run a command with a different SELinux security context - see chcon. +* shuf - shuffles file contents randomly - not particularly useful. +* stdbuf - run command with modified IO buffering - exists in FreeBSD but not NetBSD or OpenBSD. Non-POSIX. Potentially useful, not considered a priority. Porting from FreeBSD is non-trivial if memory serves from my 1st attempt. +* timeout - run a command with a time limit - Not available on BSD systems, Non-POSIX. Potentially useful but not a priority. +* vdir - another permutation of ls (see dir) - again just use ls, why have another binary? + +None of the missing utilities are POSIX specified and are not likely to be called from any kind of portable shell script. With the exception of stdbuf, I could not find alternative implementations for any of the missing utilities. This was a long process fraught with a fair bit of trial and error, and continual testing to ensure that the system could still bootstrap iself as utilities were replaced a few at a time. My first tries removing the coreutils package entirely resulted in various failures, as either a utility had incompatible behavior with one or more packages build systems, or a missing utility was actually required. + +A good example of a surprise was with the 'od' utility, which creates an 'octal dump' of file contents. I did not assume this to be a utility that would see much use. However, the build system for busybox assumes it's existence and fails without it. On looking for a replacement I turned to the [Heirloom Toolchest](http://heirloom.sourceforge.net/tools.html), a collection of utilities derived from ancient Unix sources released by Caldera and Sun. This utility has the dubious distinction of influencing one of the more glaring inconsistencies in bourne shell syntax. For most control flow structures in sh, the closing keyword is the opening keyword reversed, IE if-else-fi or case-esac. However, od was already in existence before the original bourne shell was written, precluding the use of do-od for looping and giving history instead do-done. + +While in there poking around in the heirloom sources I also ported over pg (an early pager), sum (yet another checksum utility) and factor (prints all prime factors of the given number). The sources have been variously tweaked to be more inline with my own coding style, making future maintenance easier. All but pg were commands which are present in coreutils, giving us greater coverage. + +During the porting effort, there were various utilities which were either not present in BSD, sbase or heirloom or else so trivial as to pose no barrier to implementing them from scratch. Here is that list. +* /bin/true - just return true and exit - implemented as a single line shell script. +* /bin/false - the reverse of true. +* /sbin/nologin - used for disabled logins, displays a message that the account is disabled and exits with a failure code - implemented in C. +* /usr/bin/link - creates hard links - implemented in C. +* /usr/bin/unlink - calls the unlink function to remove files - implemented in C. +* /usr/bin/shred + +The shred utility was a special case, as it existed only in GNU coreutils until my own implementation. I've always thought that this was a tremendously useful utility and wanted it in HitchHiker. What it does is overwrites the given file with random data to make recovery exceedingly difficult, optionally doing a final pass with zeros and unlinking the file. It can be used on an entire block device to wipe a hard drive clean. I've been working on dogfooding myself in C lately and this was a good opportunity to code something a little but less trivial. Anyway, this version of the shred command is implemented cleanly from scratch but follows fairly closely the behavior of the GNU version. It differs in not accepting long options, much like the rest of our collection of utilities, and does not implement a few switches that are considered unnecessary in use. At some point I intend to go in and implement file-renaming before deletion, akin to the GNU versions "wipesync" method, but the program is otherwise feature complete. In order to give myself another challenge, I also implemented a progressbar that is displayed with the -v option. +## On to sed +I have tried in vain to get away from using GNU sed in HitchHiker. After porting BSD sed, sbase sed and GNU minised, all of them proved unsuitable and caused build failures at some point or another. Or rather, non-portable sed usage by the authors of the various build systems caused failure when our sed did not support the input that it was given. The final deal-breaker was the Linux kernel itself, which requires sed to understand some GNU specific regular expressions during the build. + +What I have done is import the GNU sed source code directly into the HitchHiker source tree and made it work with our build system. This is only the second GNU licensed program I have done so with (the first being less) and only the third time that I have successfully stripped a program of it's autotooled build system. It was, to say the least, not trivial. However, the results are rather impressive, as on my 8-core laptop sed now builds in 3.22 seconds, compared with 31.75 seconds for the autotooled build. I'll take a 10x speed increase any day, and it's a great example of how much there is to gain by just using make compared with an autotools build. Indeed, for a smaller program like sed, most of the time is taken by the configure script, and by installing files after compilation. With our "compile in place" method we're skipping entirely the installation phase. + +As GNU sed is fully localized into multiple languages, I took the time to extend the build infrastructure with hhl.locale.mk, which takes any .po files in a program's locale subdirectory (if they exist) and "compiles" them into .mo files in /usr/share/locale using the msgfmt utility. With that in place the infrastructure for building directly from source, rather than just wrapping another build system in make, is pretty much complete, even if there are still things to optimise. diff --git a/content/news/imported-source-pkgsrc-on-arm-woes-and-make-includes.md b/content/news/imported-source-pkgsrc-on-arm-woes-and-make-includes.md new file mode 100644 index 0000000..3e061e7 --- /dev/null +++ b/content/news/imported-source-pkgsrc-on-arm-woes-and-make-includes.md @@ -0,0 +1,46 @@ ++++ +title = "Imported source, pkgsrc on Arm woes, and make includes" +date = 2020-08-01 +[taxonomies] +tags = ["Arm","GNU Make","Pkgsrc","Porting"] ++++ +I think we'll start this post discussing some of the differences and misconceptions of same between BSD make and GNU make. In the case of BSD make we're primarily referring to NetBSD make, which is a greatly improved version of the historical Unix make utility, and has also been imported into FreeBSD. Among the BSD camp, GNU make is seen as a second citizen. Their version of make is leveraged for building the entire system, without using autotools except in the case of imported external source which has been autotooled by it's authors. It is also the utility that wraps all of the functionality of FreeBSD ports and NetBSD pkgsrc - downloading, patching, compiling and packaging third party software. The complete infrastructure is quite impressive. + +Much of this functionality lies in leveraging included Makefiles, much in the way that C headers can be included to pull in function definitions, and also similar to the concept of shared libraries. These included .mk files, usually located in /usr/share/mk on a BSD system, allow for extremely concise Makefiles throughout the source tree to just specify a few variables and then pull in all of the targets from an inclued file. The most prominent are probably bsd.prog.mk and bsd.lib.mk, which tell make how to build C programs and C libraries respectively. + +It is a common misconception that this functionality only exists in BSD make. GNU make does have this capability as well and I leverage it quite heavily in HitchHiker. Admittedly, it is more developed in BSD make, but the limitations of GNU make in comparison are fairly trivial and easy to work around. One of the sillier things is the default search path that GNU make uses the look for included Makefiles. By default this path starts in the current directory and proceeds through /usr/local/include, /usr/include and finally /usr/gnu/include. Leveraging this would sprinkle .mk files through what are by convention the location of C header files, or alternatively using /usr/gnu/include. I have yet to see a system that has a /usr/gnu directory (maybe it was planned for Hurd?) and I'm not keen on it. As of the last commit, HitchHiker now patches make to no longer search /usr/gnu/include and to now search instead /usr/local/include/mk and /usr/include/mk, the latter being our new default directory. This allows us to include a .mk file by name, without specifying a full or relative path, and at the same time keeps all of our .mk files separated from the system C headers. + +So what exactly does BSD make have over GNU make? +* Slightly more powerful conditionals. In addition to ifdef, ifndef, ifeq and ifneq BSD make also has a simple if, and allows chaining conditionals with the && and || operators much like shell syntax. By comparison GNU make must nest conditionals for similar functionality. +* Included Makefiles can be relative to the install or source prefix. This is quite powerful for building large projects in custom site locations. +* Possibly others I have not discovered yet, however in practice GNU make can do -everything- that BSD make does if you take the time to learn how to use it. + +As part of creating a more integrated build framework, my most recent commit contains a basic analog for bsd.prog.mk, hhl.cprog.mk (cprog due to my not assuming that all programs are written in C!) which now allows extremely concise Makefiles for source code that has been imported into the base system. In the case of rpcgen the following Makefile is all that is needed: +```Makefile +# Makefile - hhl - /usr/src/world/rpcgen +# Copyright 2020 Nathan Fisher +# +progname = rpcgen +cflags += -g +include hhl.cprog.mk +``` +As can be seen, there are really only three lines. Lines 1-3 are comments, line 4 specifies the program name, line 5 adds -g to the compiler flags, and line 6 includes hhl.cprog.mk. If you look inside the rpcgen subdirectory of the build tree you will see the following structure: +``` +. + ├── Makefile + ├── man + │ └── rpcgen.1 + ├── README + └── src + ├── config.h + ├── proto.h + ├── rpc_clntout.c + ├──***snip +``` +Our included Makefile will generate object files for any .c files in the src/ subdirectory, link those objects into an executable and install man/rpcgen.1 in ${install_prefix}/share/man/man1. It has logic to differentiate man1 from man8 and also installs html and text docs in the doc/ subdirectory. If we needed to specify additional cppflags, cflags, ldflags or libs to link with we would just append them to those vars (by convention I use lower case so as to not interfere with any CFLAGS etc. specified on the command line or in an external build system). If we want to create links to our executable they just need to be specified in the binlinks variable. Defining the variable finish and writing a finish target allows us to do anything else additional that might need done, like installing configuration files or runtime data. In short, while being a fairly tidy 102 lines (some of which is whitespace and comments) hhl.cprog.mk successfully works as an analog for bsd.prog.mk. + +The short list of programs leveraging this framework now include the ee text editor, rpcgen, mksh and lksh shells and the pax archive/copy/link utility. At some later date the source tree will be reorganized to move these directories into bin or usr.bin much like is done in the BSD source trees, as well as importing other sources directly into the tree and "HitchHikerizing" their build systems. + +The title promised some pkgsrc updates relating to arm challenges. In a nutshell pkgsrc seems to be broken in several places for arm on Linux. Perhaps most annoyingly is the buildlink system, which is supposed to make it simpler for packages to find the libs that they are to link against by moving everything into work/.buildlink/lib (relative to the subdirectory that bmake was run from). So far I've discovered that libuuid, libexpat, libstdc++, libacl and libattr libtool archives are skipped every time on arm for reasons that I have not yet discovered. I can work around it by manually linking the .la files in from /usr/lib, but this requires an annoying level of manual intervention. Nevertheless I have managed to build the full LXDE, XFCE and Mate desktops, several shells, emacs, nano and pico editors, Inkscape and am on to building Gimp presently on my RPI. On x86_64 I have all of that plus a fairly complete server stack, Abiword, Gnumeric and the Firefox browser built. + +In short, when q3 releases (and it really is coming soon) there will be a fairly comprehensive selection of software available on both architectures via pkgsrc. However, in the long run we're going to revisit the idea of creating our own ports tree which leverages GNU make and the infrastructure of .mk files that now reside in /usr/include/mk, adding funcionality for creating binary package tarballs and downloading and installing them. This will most likely involve a simple homebrewed package format that takes some inspiration from BSD tarballs, Slackware tarballs and Arch Linux tarballs. A sneak peak in the current build tree at how we register the installation of the base system will give you an idea. We're going to keep things purposely simple and avoid writing a full fledged package manager. More details to come. diff --git a/content/news/improved-porting-with-libbsd.md b/content/news/improved-porting-with-libbsd.md new file mode 100644 index 0000000..47732da --- /dev/null +++ b/content/news/improved-porting-with-libbsd.md @@ -0,0 +1,12 @@ ++++ +title = "Improved porting with libbsd" +date = 2020-08-24 +[taxonomies] +tags = ["Porting","Roadmap","Libraries","NonGNU","C programming"] ++++ +The libbsd project was begun originally by the developers of the Debian K-FreeBSD project as a means of addressing differences in the available functions, headers and c macros between BSD libc and GNU libc. I have imported the source directly into HitchHiker and "hitchhikerized" the build process. Only the static library archives are built at this time. With a few tweaks and an additional "compat.h" header to address a few omissions, this has led to an improvement in my process of porting BSD utilities, and the vast majority of the imported utilities now link with libbsd functions. There is little measurable overhead in the resulting binaries. + +For those utilities that are more difficult to port I have begun porting the work already done to create lobase, a portable package of OpenBSD userland, to the hitchhiker build system. I am also pulling in sources from FreeBSD now. The first program ported from FreeBSD to HHL is the ed editor, which in this case was easier to get going than the version from the NetBSD sources. + +I have always enjoyed the venerable Unix fortune program, and always include a call to it in my shell profile. While I did consider the idea of including it by default in the HitchHiker base system, I decided to go another route and just implement something simpler from scratch. Hence, the small C program 42, which by just prints a random quote from the HitchHiker's guide universe. It accepts no options and can only be extended by editing the source. Just a bit of fun. +![screenshot_42.png](../../assets/screenshot_42.png) diff --git a/content/news/more-pkgsrc.md b/content/news/more-pkgsrc.md new file mode 100644 index 0000000..febe64a --- /dev/null +++ b/content/news/more-pkgsrc.md @@ -0,0 +1,25 @@ ++++ +title = "More Pkgsrc" +date = 2020-07-14 +[taxonomies] +tags = ["NonGNU","Packages","Pkgsrc"] ++++ +While attempting to build the Thunar file manager (via pkgsrc) I encountered a +couple of other errors when it pulled in Samba4 as a dependency. Samba4 has +switched from using GNU autotools to it's own internal version of waf, a Python +based tool for configuring software. Waf takes most options that one +might pass to a GNU configure script. The difference is that an autotools +configure script will generally either ignore an option that it doesn't recognize +or else complain about it but still continue running. In the case of waf, an +unknown option causes an error, which aborts the build. In the case of samba4 +this was ```--gmp-include```. + +About an hour later after failing to find where that option was being included from, in desperation I just did a grep through every Makefile in pkgsrc for "gmp-include" and found a few candidates. After temporarily commenting out the ```CONFIGURE_ARGS+=``` lines in devel/gmp/builtin.mk the samba4 build was up and running again. Note that I'm still unsure where it's getting pulled in, as I traced the Makefile includes through a few levels before giving up. + +So, samba4 was building, then it wasn't again. This time the build failed due to the lack of the rpcgen utility, which is included in NetBSD (and indeed FreeBSD and OpenBSD and pretty much every BSD variant) but not in Linux. Linux has libtirpc and rpcgen is widely considered obsolete, and in fact was abandoned by it's chief developers, Sun, some time ago. However since we're building using pkgsrc it's assumed to be on our system. What's more frustrating is that there is no package for it in pkgsrc. This has already been noted on the mailing list as it causes more than one package build failure on Linux. + +As it looks like going with pkgsrc is going to expect us to have rpcgen in several places, I set about trying to find a portable version of the source code. This turned out to be quite more of a chore than expected, but I did find an older version that had been pulled into a more or less portable state. I've imported that source into the HitchHiker build tree and rewrote the Makefile to suit our purposes. After adding it to our system and restarting the samba4 build (with "--gmp-include" still temporarily excised) samba4 builds successfully, and Thunar was able to build successfully as well. + +This whole exercise is a good illustration of the challenges in making any software project truly portable, and why a more efficient build can be achieved by ignoring other systems and targeting the build only to the system actually in use. It's why I've imported the sources for ee, mksh and now rpcgen directly into the source tree and we're building them without any configure checks, as it's already known exactly what's on our running system. + +Another thing this illustrates is some of the problems that arise due to projects switching their build system to one of the dozens of projects that have sprung up to "replace" GNU autotools. The fact is that very few, if any, of the replacements have achieved anything close to the flexibility and maturity of autotools and most probably never will. I'm not a fan of autotools by any means. It's a quagmire that most people don't understand; a lot of devs simply cut and paste from other projects and hope for the best. The Makefiles it generates are of a complexity and length that are ridiculous. However, the fragmentation that is currently occuring as some projects use cmake, waf, ninja, meson, jigdo, scons or whatever the next kid on the block is named is a true nightmare for anyone trying to build and maintain a full distro. That's not even accounting for the various homebrewed shell scripts that I encounter which have varying levels of POSIX compliance and make their own assumptions about the utilities present on your system. diff --git a/content/news/on-libc-rust-experiments-and-risc-v.md b/content/news/on-libc-rust-experiments-and-risc-v.md new file mode 100644 index 0000000..e788129 --- /dev/null +++ b/content/news/on-libc-rust-experiments-and-risc-v.md @@ -0,0 +1,43 @@ ++++ +title = "On Libc, rust experiments, and Risc-V" +date = 2020-11-15 +[taxonomies] +tags = ["C programming","Rust","NonGNU","RiscV","Glibc","Utilities"] ++++ +## LibC +Recently I have continued the exercise of re-implementing certain base system utilities in C, uncovering more and more differences between BSD and GNU libc implementations. At this point it's really easy to say that I have a strong preference for the BSD extensions to the libc standard as opposed to the GNU extensions. The Berkeley programmers, when they added features, added truly useful features. + +Take random number generation as an example. It is fairly common when programming on Linux to open and read from /dev/urandom. BSD, in the meantime, offers a group of functions in libc (arc4random) that combine pseudo-random number generation with cryptography to produce pseudo-random data that is truly difficult to guess, with a low CPU overhead. + +Another small place where I found the BSD libc to offer superior functionality was when I was writing my own version of the *mktemp* utility. The BSD versions of the mkstemp and mkdtemp functions allow one to give a template with a variable-length suffix, to give a choice between quick (with a smaller suffix) or as secure as you want to be. By increasing the suffix length, one can exponentially increase the number of possible filenames, making temp files a more difficult vector of attack. + +The GNU (and musl actually) versions of these functions only allow a six character random suffix, period. In fact, my earlier port of mktemp from BSD did not function as expected in this regard, and the GNU coreutils programmers had to roll their own functions to get equivalent functionality to the BSD counterparts. I have elected to not abstract this deficiency away in my code, and the HHL version of the mktemp utility uses the available versions of mkstemp and mkdtemp, with a six character suffix. I would rather maintain the simplicity of the program than to take a risk of introducing bugs by writing my own functions here. + +In any event, the work that I have been doing here makes a strong case for a future port of musl, with the additions of some BSD functions ported to work with musl, as our base C library. As attractive as BSD libc is, a direct port is unrealistic as so much of it is tied to kernel interfaces that differ on Linux. I just find it a shame that Linux users are mostly saddled with such a piece of crap (bloated while still being less functional) in such an important position in the software stack. + +## Rust +There are a lot of programming languages, and they tend to come and go regularly. As programming languages go, it's a safe bet that C, C++, Java and Python will be sticking around. Of the less pervasive languages Go and Rust seem to be well ahead of the pack as pertaining to mass adoption. Go is interesting, largely because of what it leaves out. Go is simple. Go avoids the feature creep that seems to be inevitable in all modern software. However, Go achieves memory safety by using garbage collection. I want to like Go, but that one anti-feature prevents me from even trying it. + +Rust, on the other hand, has feature upon feature to the point where I really am hoping that they ever finish the language someday. That said, I'm intrigued by Rust for a number of reasons. I have been toying with learning the language for a while, doing some simple learning exercises and reading the Rust Book. I recently decided to just dive in and start writing my own programs using Rust, as that seems to be the only way to truly learn a language. My first full Rust program is a clone of a C program that I wrote for generating sine lookup tables, useful in DSP applications. The C version is perfectly fine, but I basically wanted to try porting a known working program and see how well the control flow translated. + +The process was not completely smooth, and it took quite a few iterations to get to the point where the program compiled and actually functioned. However, the documentation is excellent and provided solutions to most of my issues. The other thing that really impressed me was the compiler messages. Often, the compiler will tell you literally the exact change needed to make your program compile. Coming from C, this is a breath of fresh air. And when we're talking about Rust, chances are that if it compiles it's also going to function exactly as expected. + +Rust is also elegant in a way that C never will be. Consider the following C code: +```C +for ( i = 0; i < 10, i++) { + // some code +} +``` +And the equivalent Rust: +```Rust +for i in 1..10 { + // some code +} +``` +One thing that requires a different mindset when one moves from an old-school language like C, to a modern language like Rust, is that in C et al, the standard library tries to be all inclusive. Programmers (at least the good ones) try to avoid adding dependencies to anything other than the standard library. Rust, however, has Cargo. Cargo is, in effect, a built in package manager. This is not unheard of; Python has pip and has for years. In Rust, however, the standard library is quite small and everyone pretty much freely uses cargo to access functionality that is not included in libstd. In my case I used cargo to pull in the excellent clap crate, which parses command line arguments and also provides built in documentation. Compared to getopt in C, clap both does more and does it with little effort. + +At this point int time, however, Rust is not going to be landing in the HitchHiker base system, as the only viable Rust compiler uses llvm as a backend. At some point in the future this may well change anyway, as I have been growing increasingly frustrated with both Glibc and gcc (a brief skim of some earlier blog posts will quickly turn up examples). The obvious replacements are musl and the clang compiler, which, being based on llvm, would make the further inclusion of rustc trivial. +## Risc-V +I do a fair amount of electronics experimenting and often employ various microcontrollers in my projects. Some are Atmega based, while I have more recently fallen in love with the ATSAMD51 Arm Cortex M4 processor based boards from Adafruit. Just this week I have acquired something new to me: a Risc-V based MCU from Seeed Studio, the Sipeed Longan Nano. It's a brilliant chip, although quite lacking in documentation and example code. I'll be playing with it a lot. + +The Nano, however, is a microcontroller, not a full SOC that is capable of running Linux. Right now there are few options for developers wanting to experiment with Risc-V with a full operating system, and the best ones are all prohibitively expensive for their capability. Due out next year, however, is the PicoRio board from Rios labs that is described as close in form factor and capabilities to most Arm boards based around the RPI format. Provided this board is not vaporware and actually does materialize at a reasonable cost, I intend for HItchHiker Linux to be running on it as soon as feasible. I intend to make HitchHiker one of the very first options independent of distros such as Debian and Fedora, and to make Risc-V a first class citizen. It is my hope that in doing so HitchHiker might help to push along the adoption of truly open hardware on which to run open software. diff --git a/content/news/patching-pkgsrc-building-rust-and-arm-headaches.md b/content/news/patching-pkgsrc-building-rust-and-arm-headaches.md new file mode 100644 index 0000000..37a5b6f --- /dev/null +++ b/content/news/patching-pkgsrc-building-rust-and-arm-headaches.md @@ -0,0 +1,43 @@ ++++ +title = "Patching pkgsrc, building rust and Arm headaches" +date = 2020-07-20 +[taxonomies] +tags = ["Arm","Rust","Systemd","Libraries","Pkgsrc"] ++++ +Having been working with pkgsrc for a couple weeks now there's a bit of a flow +developing, and quite a bit of progress, with a big caveat. The issues I'm +running into are that there are quite a few more build failures for Arm than +there are for x86_64. + +Interestingly, both libdrm and MesaLib fail with similar messages about assembly +code that isn't supported on the current architecture (armv7l). In situations +like this it's hard to blame pkgsrc, as the fault is upstream from there. I'm +getting quite used to adding packages to my local tree and tweaking BSD style +Makefiles. I'm making every attempt to send fixes upstream; however, waiting for +a response each and every time is just not really going to be an option here, so +in the meantime I've decided to import the entirety of pkgsrc into git and use +that tree as the "official" branch for HitchHiker. This will enable our project +to build up a substantial package collection even if upsteam pkgsrc begins to +lag behind. + +One of the problematic packages that is now often being pulled in as a dependency is rustc, the rust compiler. It's problematic on two fronts. First, unless your system has substantial amounts of memory a parallel build will fail as the memory fills up (mine has 8 gig and still fails). Second, and quite frustrating, is that rustc is only compatible with certain versions of either openssl or libressl, and our version of libressl was too new. After seeing if we could use either libressl or openssl from pkgsrc and encountering repeated failures, I just rolled back libressl to the newest version that rust supports. + +Let me pause here for a brief commentary on rust as a programming language. There is a lot to like about rust, and it seems that the language may be with us for quite some time, as it seems to see more usage every day and has achieved a critical mass of developers. I've played around with it myself a little bit and the documentation is very good, it's probably one of the easier to learn languages, and the ecosystem as a whole is very nice when you look at all of the features that cargo brings to the table. However, I am not a fan of the fact that the rust standard library, libstd, is compiled in statically by default. This results in a simple "Hello, world!" executable compiling into a 7.1m binary on my machine before stripping, which comes down to 220k after stripping. When compiling the same program dynamically it comes all the way down to 16k after stripping, so we have approximately a 204k overhead *per binary* for the static libstd. + +I am also not happy about rolling back libressl, as I would much rather have the newest possible version of what is a security critical piece of software. However, it is I believe still a better and more secure option than openssl, which most distros are still using. It's a shame that a major piece of software like rust, that is a dependency of quite a number of other packages now, has not updated to use the newer abi presented by newer versions of libressl. + +After a couple weeks of building packages on both x86_64 and armv7l, using an identical set of packages in the base system, it is very apparent just how much more development x86_64 gets than arm. Two packages in particular illustrate this quite well - libdrm and MesaLib - both of which are major dependencies of modular Xorg. In both cases assembly code is generated by gcc that contains instructions not supported by the processor, and the only fix is to disable features in the Arm build. In the case of MesaLib this involves patching the source code. Thanks to the Arch Linux Arm team for showing the way, as my patches are adapted from their PKGBUILD. + +There have been just a few more tweaks to the base system as I attempt to fully +finalize the build in preparation for release. The rpcgen utility that I had +incorporated proved to not fully support all features needed for building certain +packages in pkgsrc. After some search I found a newer version that had been +autotooled in the rpcsvc-proto package, which was originally a compatibility +package during the time that SunRPC was being removed from Glibc. I've imported +the source for just the rpcgen utility from that package into hitchhiker's build +tree, removed all of the autotools material, moved all C-preprocessor flags into +a config.h file, disabled NLS and made a very lean, mean Makefile for it. While +I was at it I used similar techniques to update the builds for mksh and pax. +Both of those packages now include their CPPFLAGS as defines in config.h, and I +have even begun eliminating ifdefs out of the C files to make for a cleaner and +faster build. diff --git a/content/news/porting-netbsd-userland-infrastructure-improvements.md b/content/news/porting-netbsd-userland-infrastructure-improvements.md new file mode 100644 index 0000000..4c51596 --- /dev/null +++ b/content/news/porting-netbsd-userland-infrastructure-improvements.md @@ -0,0 +1,35 @@ ++++ +title = "Porting NetBSD userland, infrastructure improvements" +date = 2020-08-17 +[taxonomies] +tags = ["NonGNU","Porting"] ++++ +As noted previously, I have some issues with the complexity of GNU autotools and the bloat that it introduces into building what should be very simple programs. I pointed out coreutils as one of the worst offenders at that time, and have been exploring ways to either port coreutils to a simpler build system or outright replace the package. + +In context, there is nothing particularly wrong with the utilities themselves and functionally they work as expected. One benefit that coreutils provide over almost every other implementation is improved localization. However, there is complexity that is at times not really justified. Let's take the utility program "true" as an example, whose sole purpose is to do nothing and exit with success. A simple C program can be constructed to perform this function perfectly well with the following code: +```C +#include +int main() { return 0; } +``` +This simple code compiles to a 16k executable (stripped) and does everything that we need it to do. But we can do even better actually, with a single line shell script: +```Bash +#!/bin/sh +exit 0 +``` +This little gem reads as a whopping 4k on disk on my machine and also fulfills exactly what we expect the program to do. So why exactly is the file true.c in coreutils 80 lines that compiles to a 40k executable after stripping? + +I had at one point tried replacing coreutils and util-linux completely with the sbase and ubase packages from [suckless.org](https://suckless.org/). The main issue with doing this is that not all of the utilities are feature complete yet. They are fine for day to day use navigating around in a shell environment, but begin to fail when running scripts that are meant to be portable or building software, when an unsupported flag causes the utility call to fail with an error. I do have a branch containing the entirety of sbase and ubase with the source reconfigured to match our build tree layout of one program per directory, and building using hhl.cprog.mk. + +I have always had a lot of admiration for BSD systems and ran FreeBSD as my main OS on several machines for a number of years. Too much is actually made of the differences between a BSD userland nad a GNU userland, as the vast majority of the time they are functionally equivalent. As mentioned previously, the GNU utilities have better localization. They also accept GNU long options. I have never found the lack of long options to be an issue; on the contrary short options are faster to type and are generally the go to choice for those familiar with the shell interface. Therefore I decided to start working on porting BSD userland to Linux with Glibc, using our HitchHiker build system. As there are a great many small utilities this is a process that isn't going to happen overnight, but has already yielded a surprising amount of success with modest effort. + +There are a few projects already in place that do something similar, such as [lobase](https://github.com/Duncaen/lobase), that approach the issues of missing functions and macros by creating a compatibility library and then linking the utilities to it. While this is a perfectly valid approach, it has the drawback of increasing code size somewhat. I have also found so far that simply removing macros that don't exist on a Glibc system is enough to get the code to compile with a simple ```gcc -Wall file.c```. At other times one can simply translate from one function to another, for instance from strlcpy to strncpy, the latter which is available with Glibc and does very near the same thing. + +Without getting too further involved in the details, so far I have working copies of the utilities apply, banner, basename, cat, dirname, grep and tr taken from NetBSD. Grep was previously a separate package that has been removed. We previously already had the awesome pax utility imported from MirOS, and have now removed GNU tar in favor of a simlink to pax, which functions very well as a tar replacement. Additionally, the utilities true, false, and which have been replaced with one line shell scripts (which is a zsh builtin, which we can call from another shell with a one line zsh script). + +The result so far is a mixed userland that is predominately composed of GNU utilities with a sprinkling of BSD licensed utilities thrown in. The endgame is to replace the bulk of the GNU utilities with ports of the BSD versions, including many utilities such as apply, banner and pax that do not traditionally even exist on a Linux system. I may supplement this over time with utilities taken from sbase, ubase, or lobase as difficulties are encountered in porting the NetBSD utils, but would like to do as much straight porting against the actual system libraries as possible, as opposed to linking against compatibility libraries. + +On to the build tree infrastructure improvements mentioned in the post title. A few posts back I mentioned standardizing the way that we handle packages that need extra steps beyond "make install". Similarly, I'm working on simplifying the use of build systems other than autotools. One feature of autotools that we leverage by default is that we can build outside of the source tree in a separate object directory. This is the default, but not all packages support this. There are even a few packages out there that mostly mimic autotools from an end user perspective, having a home-brewed configure script, but generally do not support building in an object directly. So now by simply setting the variable ${no_objdir} we can handle those cases in a unified way, and our build system knows that ${objdir}/.dirstamp is not a dependency of the configuration stage for instance. + +Additionally, some packages eschew any kind of configuration step entirely and build just by running make. We now handle this in a more unified manner as well, rather than on a per-package basis, by setting ```${use_configure}``` to false. + +These changes are minor, but are going to go a long way towards implementing a ports tree with a more concise and understandable codebase. diff --git a/content/news/reconfiguring-the-build-process.md b/content/news/reconfiguring-the-build-process.md new file mode 100644 index 0000000..2d00398 --- /dev/null +++ b/content/news/reconfiguring-the-build-process.md @@ -0,0 +1,39 @@ ++++ +title = "Reconfiguring the build process" +date = 2021-02-01 +[taxonomies] +tags = ["cross-compile","sysroot"] ++++ +Up until now HitchHiker has used a build process that closely followed that used +by the Linux From Scratch book. There was a temporary toolchain, hacked to use a +different library directory and prefix + +so as not to conflict with the host system or with the libraries and tools being installed as the finished system. This temporary toolchain was in itself a complete development environment that included everything required to bootstrap a full system. To build to final system, is was necessary to chroot into a new directory containing the temporary tools and root filesystem. + +This method had some advantages, but also involved compiling most packages at least twice. It also required quite a lot of extra work to do any kind of cross compiling. In fact, I had set up an RPI4 specifically as a compilation machine for Armv7l, as it was basically impractical to use my x86_64 laptop to develop for Arm. + +In an effort to increase the flexibility of the HitchHiker build tree, support more architectures, and to streamline the build I am experimenting with using a sysroot compiler for the majority of the build. In testing, with minimal effort I was able to set up cross toolchains for armv7l, aarch64, riscv64, and i486 as well as a native x86_64 toolchain using the same build tree and only adjusting the ${arch} variable in config.mk. In testing I was able to compile almost the complete userland for x86_64, aarch64 and riscv64 without resorting to a chroot, and all on my main machine. My current plan is to compile most of the base system using a sysroot toolchain, either native or cross, including the build of the native toolchain, and then to chroot into the near complete root filesystem to finish up any packages that cannot be easily cross compiled. At this juncture I believe the only package in the base system that will be truly problematic for cross-compilation is Perl, which uses an ill conceived homegrown configure script instead of autotools. However this is not quite verified for all packages just yet. + +In the case of a package refusing to cross-compile, I can then use the method outlined in the previous post and compile with the native toolchain using qemu user-mode emulation. + +In addition to the vast reduction of packages being compiled twice or more, this also has the advantage of running on a fast machine. Additionally, with most of the work not requiring the chroot trick, there is no emulation layer to slow the process down. A future goal will be to fix the issues with Perl and push patches upstream if possible, as Perl is a hard build dependency of the kernel and therefore must be considered an essential part of the base system. + +To give some idea of the resource savings this brings about, here's a quick table outlining the number of passes required for certain packages under the old layout vs the new. Note that it is still necessary to make multiple passes at Binutils and Gcc, as we have to build our sysroot/cross toolchain, but there is a rather significant reduction in the amount of other software being built twice. + +Package | Passes (old) | Passes (new) +--- | --- | --- +Binutils | 3 | 2 +Gcc | 3 + separate libstdc++ pass | 3 +Linux Headers | 2 | 1 +Glibc | 2 | 1 +M4 | 2 | 1 +Ncurses | 2 | 1 +Bison | 2 | 1 +Diffutils | 2 | 1 +Gettext | 2 | 1 +Make | 2 | 1 +Perl | 2 | 1 +Python | 2 | 1 +Texinfo | 2 | 1 +Patch | 2 | 1 +Busybox | 1 | Not Built diff --git a/content/news/restarting-make-buildworld-cleanup-default-software.md b/content/news/restarting-make-buildworld-cleanup-default-software.md new file mode 100644 index 0000000..90401c4 --- /dev/null +++ b/content/news/restarting-make-buildworld-cleanup-default-software.md @@ -0,0 +1,33 @@ ++++ +title = "Restarting make, buildworld cleanup, default software" +date = 2020-08-03 +[taxonomies] +tags = ["GNU Make","Milestones","Roadmap"] ++++ +One of the deficiencies in the HitchHiker build tree up to this point has been dealing with packages that require some manual intervention after the "make install" step. Originally there was no unified infrastructure to deal with this scenario. Very quickly during testing I realized that this was an omission that was going to cause problems, as the scenario was much more common than I at first realized and implementing solutions on a per-package basis is both quite error prone and likely to introduce bugs into the build process. Up until the workarounds have involved redefining the .DEFAULT_GOAL variable and creating custom targets to finish the installation, while making the basic installation a dependency of said targets. + +A common problem that arose out of this hodgepodge approach is that if the new targets were ".PHONY" targets (a target that is not an actual file) or the targets were symlinks then if the build was stopped it would error out on resuming, due to the timestamps of dependencies being the same or newer than their targets, or else a target could not actually be run because it involved moving some file that we already moved the first time it ran. This made testing new features a laborious process, as often any errors required removing the entire rootfs and restarting buildworld from the beginning. + +When I implemented hhl.cprog.mk, I took steps to remedy this situation. If one defines the variable "finish" then the system will know that there are steps to be taken after "make install". Then any additional steps can be added to the new target {objdir}/.finished, which is the second dependency of the "finish" target after "install". This worked well in practice, so I have implemented the same functionality in targets.mk which is used by all "external" source packages (those packages for which the source is not included in the HitchHiker build tree but downloaded as tarballs during the build). + +As a result of this, after considerable tweaking, the build can now be restarted from any point after stopping and will run to completion. I consider this to be an important milestone, as it makes future development much less arduous. + +An important goal of HitchHiker is that the base system includes everything needed to bootstrap a full system. As such, it is unfortunately required to include certain packages that will not necessarily be required under all circumstances. A good example of this is the networking stack, as it is next to impossible to bootstrap a full system without a network connection, but we don't know if that connection is going to be wired, wireless, secured wireless, static or dynamic, etc. The first test builds of the complete system ignored this completely and only included what is needed to manually set up a static, wired connection. + +This situation is also now remedied, as the officially distributed builds will include the dhcpcd, wireless-tools and wpa_supplicant packages. However, it is entirely possible to exclude any or all of these packages by setting appropriate variables in the file config.mk in the top level of the source tree. + +There are now a number of things that can be tweaked when building the system from source. One can specify a list of locales to compile for glibc rather than the default of compiling all supported locales. By setting the variable rpi to true, you get the Raspberry Pi foundation kernel instead of linux mainline. And a custom kernel configuration file can be substituted for the default HitchHiker one. None of these tweaks should change the essence of the system being HitchHiker, but just allow the user some extra choice and the ability to slim the system down a fair bit, as well as speeding up the build somewhat. + +Lastly, I want to talk about the roadmap for HitchHiker a little bit. Regarding the build tree itself, at the moment we currently have the .mk file targets.mk which includes most of the logic to build all of the packages that are downloaded and compiled as part of the base system. This file's internal logic defaults to using GNU autotools, but is flexible enough to build packages in other ways by resetting appropriate variables. This approach does work, but requires some deep knowledge of how it all is put together. As eventually I would love to see my work finding a larger audience I would like to make the infrastructure a little bit easier to understand, so for example when we graduate from pkgsrc to our own ports tree there could be some community involvement in fleshing out a complete ports tree. + +To that end, a future goal is going to be removing the autotools logic into an "autotools.mk" file and creating, for instance, "cmake.mk" or "waf.mk", which will know how to build packages using those build systems. At that point one could set the build system to use "waf" via a variable assignment and then include hhl.ports.mk, which would then pull in "waf.mk". Doing this cleanly is an important step in the way to creating a ports tree that will be easily debugged and easy to maintain and update. + +This theoretical "hhl.ports.mk" will also need logic for tracking everything to be installed by each and every package, uninstalling packages and upgrading to newer versions. In short it will need much of the logic of a package manager. I have actually implemented most of this previously in the original HitchHiker system of ten years ago. At that point installed files were tracked by creating a timestamp file before "make install" and then using the find utility to catch any files with a newer timestamp. This had the attractive benefit of being completely agnostic to build system, but is not without it's drawbacks. Chief among the drawbacks is that it is a rather time consuming approach, but there is also the danger that we will miss a file if it is created with the wrong time stamps, or may capture an incorrect file that has been created by another running process. For those reasons I'm planning to implement it by installing into a DESTDIR. The problems here are that one needs to be familiar with multiple build systems to know how to achieve this, and also that the concept of a DESTDIR is not universally implemented in all pieces of software out there. For the former, the solution is good old fashioned grunt work to learn the ins and outs of each build system as it is encountered. For the latter, the approach is going to be patching the build system and submitting patches upstream, with the hope that the authors will be receptive. + +I'm going to interject at this point to point out that pkgsrc uses an entirely different approach by requiring every package directory to include a PLIST file, thus placing the burden squarely on the shoulders of the maintainer to populate this file with every file the package will install on your system. FreeBSD also uses this approach. Functionality could be included into "hhl.ports.mk" to use a PLIST file if it exists, skipping any automatic file discovery. + +Then there is another elephant in the room - dependency tracking. The previous incarnation of HitchHiker kept a flat file database of every file that every package in the ports tree might install, ran "file" on every file in the new package to determine it's file type, then ran ldd on every elf file and compared the results to the database. It was quite effective at catching any binary dependencies. It was also slower than shit on large packages and extremely overkill much of the time. Knowing a bit better now I have no intention of going down that rabbit hole again. Instead, dependencies are just going to be manually specified by the developer in each port's Makefile. While this is somewhat error prone, it can be refined over time to be near perfect and has the advantage of speed. In addition, not all dependencies are library dependencies. Some dependencies are of the nature of expecting another program to be available to exec() at runtime, and some dependencies are simply build time requirements. + +Now here's the point where I'm going to get controversial. BSD ports implement all of this using just make and for years had nothing like the traditional Linux package manager, instead relying on simple command line utilities to manipulate packages. I -don't- want a package manager in HitchHiker. I don't want to reinvent the wheel and write a new one, and none of the existing ones are going to be suitable. I think they're generally just complicated, poorly understood by the average user, and since there are already so many implementations it's virtually impossible at this time for one of them to become "standard", thus basically making the idea of the Linux desktop an unachievable dream. No company is going to bother supporting dpkg, rpm, Slackware tarballs, Arch tarballs, Flatpack and Ubuntu snaps. It's not happening. At most they're going to release an rpm, a deb or a snap and just ignore everybody else. The ideas of the commercial world embracing desktop Linux, the year of desktop Linux, etc are all basically pipe dreams. + +Here's what I picture instead. If we can manipulate source archives into binary packages and then install those packages all using make, we can frankly do the same with binary packages. BSD port trees and pkgsrc had already proven that would work years ago. In fact, in FreeBSD you can install binary packages that are dependencies of the port that you are building rather than building them from source, or build ports that don't have a binary package available when installing binary packages. This system functioned just fine for a long time. Their mistake a few years ago was jumping on the Linux bandwagon and writing yet another package manager, pkg. Since that time I've noticed quite a lot more issues keeping FreeBSD packages up to date, to the point where I even abandoned an installation at one point. So we're skipping it entirely, and instead I'm going to provide a "binary-install" target in "hhl.ports.mk" that will fetch and install binary packages. Easy peasy, no package manager required, unless you consider the ports tree itself to be a package manager. diff --git a/content/news/some-more-home-cooking.md b/content/news/some-more-home-cooking.md new file mode 100644 index 0000000..c749d27 --- /dev/null +++ b/content/news/some-more-home-cooking.md @@ -0,0 +1,50 @@ ++++ +title = "Some More Home Cooking" +date = 2020-10-06 +[taxonomies] +tags = ["C programming","Utilities","NonGNU"] ++++ +After removing GNU coreutils and taking closer stock of what we have as a +"base system", I am mostly happy with the selection but now wish to spend some +time making behaviors, documentation and source code itself more uniform. I have +also done some work towards correcting a couple of omissions that are present +due to the previous surgury. The commit that I pushed this morning has a few +notable changes. + +* hostid - This is a non-POSIX utility of GNU origin that is present on systems with GNU coreutils but not on BSD based systems. I have written a replacement from scratch in C, which was a fairly trivial task as mentioned previously. The new utility, much like the rest of our userland, behaves like the GNU counterpart with the exception of not accepting long options and not having a help option (help is available via the man-pages, so '--help' is always redundant IMO). +* nproc - Another scratch implementation of a utility with a GNU orgin. +* rev - A scratch rewrite for HitchHiker, should be functionally identical to the BSD and/or Suckless versions. Notably, my version, the BSD version (which we had previously) and the suckless version are all quite a bit faster than the rev utility provided by the util-linux package due to architectural differences which I'll explain below. +* mkdir - Another scratch rewrite. These are being done patially as an exercise in C programming and partially to lessen our dependence on the portability libraries used to port BSD utilities to Linux. However, this utility is currently a special case in that regard (see below). +* base64 - This one had been ported from NetBSD but is actually broken on every platform in regards to being able to process it's data from a file rather than stdin. It's now fixed at least in HitchHiker. +I have also begun a process of formatting the source code imported from other sources using ```clang-format``` to enforce more uniform standards, and to go through the man-pages a few at a time to do some similar housekeeping. It's a small niggle, but both BSD and Suckless use tabs for indentation where I prefer two spaces for compactness. There are also some inconsistencies in brace styles and function declarations. I prefer the function declaration to be on one line followed by the opening brace on the same line, and for things like loops to include the opening brace on the same line as the loop initialization. Basically, the defaults provided by clang-format make for nice, readable and consistent code. + +Now, as mentioned above, let's get into some detail with the implementations of +**rev** and **mkdir**. Let's begin with rev, which is a simple utility which just reverses the characters in each line. Now, a simple implementation of rev, and basically where I started, would just read each line using getline (or fgetln on a BSD system) and reverse the bytes, excluding the newline, which is replaced back at the end of the output. This works fine for ascii characters, which all by definition fir into a single byte of data. However, utf8 is a fact of life, and we quickly run into a situation where we have reversed the byte order of a multibyte character, printing gibberish to the terminal. The Util-Linux utility solves this by reading each line into an array as a sequence of widechars, essentially reading character by character, and then doing the reversal. + +The BSD, Suckless, and now HitchHiker utilities all use a similar, and more efficient approach. The line is read as described above, then, starting with the charcter preceding the newline, each byte is tested to see whether it is the beginning of a character or the middle of a multibyte character. If we run into a multibyte character, we find the beginning of it and then read forward again to the end of the character, before skipping backwards again past the multibyte character. While sounding convoluted, this is quite a bit faster when processing large amounts of data, as we're only looking at the first few bits of each byte rather than reading each line in character by character. + +Now on to mkdir. Most of this was straightforward to implement, including the -p option, as we just have to construct a path directory by directory by processing the path as a string, using, in our case, the strtok function. However, mkdir is also expected to be able to set the Unix permissions of directories that it creates, and accept the mode arguments in either octal or symbolic format. It is trivial to implement the octal permissions, but implementing symbolic permissions entails coding a parser which must accept a fairly wide range of possible permutations. After looking at how the functionality has been implemented in BSD, GNU, and Suckless utilities, it quickly became apparent that the BSD implementation makes the most sense from the efficient use of code standpoint, as the BSD C-library already contains the getmode and setmode functions. As this has already been ported to Linux via libbsd, and as such is already present in HitchHiker as it has been used to port much code from both NetBSD and FreeBSD, I decided to just go ahead and use it. On a side note, it would be fantastic to see some of these functions present in the GNU C-library. The getmode function is quite useful, and fgetln is quite a bit more, let's say graceful, to use than getline. + +It should be noted that static linking libbsd into a Beerware licensed utility is somewhat problematic. I have been considering extending the build system somewhat, to also build shared libraries alongside the static archives. I am somewhat hesitant, as I feel that low level base utilities such as this should only depend on the system C library at runtime. Alternatively, if at some point in the future HItchHiker does make the switch to Musl libc (which is still on the table) then it might be possible to patch musl to incorporate the functions right into the system C library for HitchHiker, allowing for their removal from libbsd and lessening our reliance on it for porting utilities. I rather like this train of thought... + +The end goal is, of course, the kind of tightly integrated userland that BSD +systems are noted for. When looking at the various base utility implementations, +it is striking that commonly there is a library of common functions built and +linked into the utilities. This tactic is employed by sbase, ubase, GNU coreutils, +Util-Linux, and lobase (the port of OpenBSD userland to Linux, from which I have +borrowed heavily). I'm employing it myself by using libbsd to port NetBSD and +FreeBSD utilities. In the long run, I want to eliminate this trend and fully +integrate everything to where we're only depending on the C library both at build +and run times. My own implementations, with the exception of mkdir, currently do +this. As an example, on BSD systems a program is aware of the name under which it +was invoked via the getprogname and setprogname functions. As GNU libc does not +have these functions, we have a global constant char __progname, which is set to +the program name by calling ```basename(argv[0])``` in the main function. While +this results in some additional boilerplate code, it's actually scarcely more +than what BSD already has due to the need to call getprogname and/or setprogname. + +Similarly, Suckless abstracts away certain things like printing to stderr (their +eprintf function) and getting program arguments, which are easily done just using +```fprintf(stderr, "msg")``` and getopt, respectively. + +A possible eventuality might involve refactoring much of this code somewhat to remove the dependencies on their respective utility libraries and replacing it with more "generic" programming. While this might increase source code size somewhat, it would not likely impact compiled size or efficiency, as we're just removing the abstractions and putting them back into the programs. This has the benefit of making the code easier to understand without having to look at the library and what it does. diff --git a/content/news/website-redesign.md b/content/news/website-redesign.md new file mode 100644 index 0000000..d9c8aee --- /dev/null +++ b/content/news/website-redesign.md @@ -0,0 +1,100 @@ ++++ +title = "Website Redesign" +date = 2021-02-18 +[taxonomies] +tags = ["Site News","Web Programming","css","html","Zola","mdbook"] +categories = ["Site News"] ++++ +I know a little bit about a lot of things, and one of the things that I know +only in passing is web development. I am by no means qualified at +or excited about web design. However, in the spirit of DIY I have always muddled +through all of my own projects. This has in the past meant using a CMS of some +sort, and a rather long time ago I settled on Mezzanine, a Django-based CMS +written in Python. + +This worked out all right in most ways. However, a few weeks back I had a server +outage that I traced back to the update from Python 3.8 to Python 3.9. The +virtualenv that I had set up simply stopped working, causing the web server to be +unable to start as the default handler was DOA. Now, a Python virtualenv is a +supposedly complete standalone environment containing the Python interpretor and +libraries frozen to be version compatible with your application. It is supposed +to be self contained and not dependent upon the system-wide Python installation. +The fact that bumping a minor version number caused it to fail is distressing +and has soured my already low opinion of Python somewhat. + +Additionally, I have long desired to incorporate a full handbook into the website +and do so in a way that looks seemless with the rest of the site. HitchHiker is +not going to be a turnkey system for most people and will need good documentation. +I have tried a few things that were available online, including Mezzanine Wiki, +but nothing is really suitable and many packages are broken and/or unmaintained +(including Mezzanine Wiki at the time I tried it). + +Being impressed with the quality of the documentation for Rust I looked into what +they use. The Rust Book is built using [mdbook](https://github.com/rust-lang/mdBook), +which is a wonderful static markdown to html generator that does exaclt what it +claims to do and does it exceptionally well. After messing with it for all of two +minutes I was sold - it's just plain phenominal in use. + +Having settled on mdbook for the forthcoming "**Hitch Hiker's Guide to Hitch Hiker +Linux**" I decided that if we're going static pages there, it would be a good +time to go static pages everywhere. I set about looking for a static site generator +that would give me enough flexibility for my needs and still be simple to use. + +While there is no shortage of SSG's available right now, there were several popular +ones that I never really considered based on implementation. Jekyll, for one, is +written in Ruby and I'm not looking to pollute my machine with more interpreted +language cruft. + +I gave [Hugo](https://gohugo.io/) a long, hard look and went so far as to install +it and do some testing. Hugo is written in Go, seems to work well, and is definitely +fast. However, none of the available themes were going to be suitable without a +good deal of hacking. + +At first glance, [Zola](https://www.getzola.org/) appeared to have the same +strengths and the same issues as Hugo for my use case. I really couldn't see +applying any of the themes that I found directly without a lot of customization, +and there were a couple that I tried that were flat out broken. On top of whatever +customization I was going to have to do to whatever theme I picked, I was also +going to have to adapt to an mdbook theme as well....or was there another way? + +It turns out that the default set of themes that ship with mdbook are pretty much +already great, and would look great adapted to an entire site. Now, mdbook itself +is pretty much not suitable for generating the entire site, as I need a front +page, I want to keep my blog, and I'd like to be able to incorporate other pages +as well that aren't going into the table of contents for the book. But what I +thought I could do is to create my own Zola template using the css from the mdbook +themes. + +So in the end that's what I did. Zola, written in Rust, is actually quite a bit +simpler than Hugo and after a few initial trip ups getting started I'm finding +the template system to be something I can navigate all right. I'm left with a two +step rendering process to build the full site, as I'm rendering most of the site +using Zola and the book using mdbook. But hey, I've already proven that I can do +a good bit of automation using ```make```, right? + +While there's a bit more work left to finish migrating the old site, I have to +say that I'm completely satisfied with my choices as of now. Both Zola and mdbook +do things for me that were not going to be easily achievable in Mezzanine and come +with a lot of benefits right out of the box. As a for instance, built in syntax +highlighting for code snippets! Here's ```echo``` in Rust: +```Rust +#![warn(clippy::all, clippy::pedantic)] +use std::env; + +fn main() { + let args: Vec = env::args().collect(); + let len = args.len(); + let n = len > 1 && args[1] == "-n"; + let i = if n { 2 } else { 1 }; + for (index, arg) in args.iter().enumerate().skip(i) { + if index < len - 1 { + print!("{} ", arg); + } else { + print!("{}", arg); + } + } + if !n { + println!(); + } +} +``` diff --git a/public/404.html b/public/404.html new file mode 100644 index 0000000..bf9f6df --- /dev/null +++ b/public/404.html @@ -0,0 +1,418 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+ +

Page not found!

+The requested URL was not found on this server. If you entered the URL manually +please check your spelling and try again. +

Error 404

+ +
+
+
+
+ + + + + diff --git a/public/about/index.html b/public/about/index.html new file mode 100644 index 0000000..52aae2b --- /dev/null +++ b/public/about/index.html @@ -0,0 +1,451 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+ +

2021-02-15

+
+#!/don't/panic
+man 42
+
+

HitchHiker Linux is a very Unix-like distribution of Linux with a focus on +simplicity, elegance and providing a solid base that the end user can turn into +whatever they see fit.

+

Core Principles:

+
    +
  • The default installation should include the bare minimum required software to provide a solid base.
  • +
  • Complexity should be discouraged in favor of code elegance, security and maintainability.
  • +
  • End users should not be discouraged from tinkering with their system.
  • +
  • The distribution should make as few assumptions as possible regarding end use.
  • +
  • While newer releases of software often eliminate bugs and vulnerabilities, newer software packages are not by default more secure than stable, mature packages (newer is not always better).
  • +
  • Any changes to the core system functionality, especially those which change expected functionality, must be well justified and well vetted before deployment.
  • +
  • The base installation should include everything required to rebuild itself from source.
  • +
  • The distribution should make as few changes to the upstream software as possible, delivering it as intended by the original author.
  • +
  • Patching of sources should only be done to fix bugs or vulnerabilities.
  • +
+

HHL was born of a desire to harness the greater hardware support of Linux while +paying respect to the Unix systems from which Linux was born. The author was a +long time user of FreeBSD who migrated to Arch for several years, but has become +increasingly frustrated with Systemd, Gnome, RedHat and Ubuntu dominance. It is +believed that there is a need for a distribution that does not pander to ease of +use for casual users at the expense of putting up roadblocks for experienced Unix +veterans.

+

Architectures

+

HHL is running on the following processor architectures:

+
    +
  • x86
  • +
  • x86_64
  • +
  • armv7l
  • +
  • aarch64
  • +
  • riscv64
  • +
+ + +
+
+
+
+ + + + + diff --git a/public/assets/screenshot_42.png b/public/assets/screenshot_42.png new file mode 100644 index 0000000000000000000000000000000000000000..9ce45f5ff90d6112c6c479b6957e11bccb40897b GIT binary patch literal 134280 zcmXt91yEFv*L_Pa=^{u9A|MUYAky94T}ui`H!LNoNOzZXgVKmfE!`j>Al)tfz2AT4 zn_*^$-JQ4Z-FNS~=bU?Al$wex9yU2P004OMa#9)qfUW}or~niNd`HZvA{l%^b(4_S zfg%B}J1S$xV?9r$?p5rvnhQg=TalK!lA>7)8hZ z^d%IEfy#;%AKtB%fJje^!h#U=JSBx1NFftg74=YFQPXk(-!uTUu=nW%kRBC!&B*7t zbDtD#<1^O~;f!IDpOU^mwZ*Dsv)T;nMInHs1(UK;K+=qAS)n#)bS?oMsA!0+cmkl? z>U$mPpH`??K8%Al@x8ID5r!3nhO`!VnL(TQF-@T!o?oj5C8(_u>wm`ezM7s1Eh1FM zasnNvI3^#aFi?k-lMI-6H8_CJNB1-VfH)4}&#m5k_+6|+s zj9fLDm?&$*`lG|vn3(1VMxy0)X`;RBIdj}mA!xrUW8Wt{HB&T;fz;FJa1A7IzGaZ0 z+arJeL5z-7LVT$C$G3(HM428>!>*PkV{bHr5krsoVl-Sv(p(^*JpbjYOaUXM{Wz;= zM*4=pfL6gK^4qVkz3K6C-6;}!`D$at6R%pDmtU>z+m=XHOW8%e?{7|s5*(5tR*G$| zMJ2T&N}yarbQitiTKgC!N5{IP#Y~3DLJAFw#6qw_psQNUKmWF}5*(O82>>?!WTL-% zWMr`tt<`kcMF|MTdbjUV_@RW@QWBoTAxZCMd2{UF$-!kD7waRXBqb#Uo=dVY$qRl$ z+mvJcKph5e<5JnDnQMm1NN}RedaSR?vDd!WxERnvLB~-PP>CjEjei*y%df@(tzMVm zF6=QQ)Gq0fP$L@aZnJKDbX3S_-W{k&&fqxVG1EQpI70=7)T@Mi?3DCfZh}(m}-Xpy9ODEEMGAfB*~2kjIj@5PO&! zeYl(;ldJ+35E()i21^OYwZbyTx`>mO!o@`lSS8TSH{(I2=#1?!QO0dk;8DN4JD9N{ zq+;nRL)d!F?-=CsH%0VFr zWR?>B+Q~1g_Hh>t)>niC+}LnA0s@FQ6pdP}8O;E)=wigM0nid~zvm!rWL;IT!@{t( zrcQ_iBBhYAkVTnbC@J(qm>8OMiPc1Wf?O+OcRd;^N+KM~A|WBIr}>?^ehN zSqWF?;Y$i7F-NT4R<52ONmUT)3>&x$}P-;0>d4+X; zeFc=}$f!tG^RnCY`Fd6p70_hL}w%|zH#b#JY z6o4QoQi^vyjYJX+Kr#2lXyRl02&E8ErG+>gsp6y*IA@~cqBV2=j4I7b7&>N%CnG5| zLK3Cw!_5b8nkXPxjQV-h)aB0d1f?|l8_sBi!K0Fj(dmXbi!@AB%6 z6E;DV-t?ZpCs@j!0$L+#j};f(5EcX1;}c{`R}w_-x8eefXx!YK+^8@BCm4wf7_bpc z*(%8Ebko!9JVlWzB#Vq>l<1*GZL3zKgUopt0l|!gZTG zp6B>s5@h*mC5j=?=S;6Sp%CEYCc|p2@?#!`mfmVCvfYd^774_X)0M|)4p;-!@F~qCxry*E+*pL)4 zdYJ(Y=3aAs1nVpPl#C#3b{2;xNF}Mk%f)6mCYYCEg4OGSn@-|VpAr-3P@92GIlAXi zIP|TA#?Ln15R*G=e4 z!3K&Pq5y2qB_dQCnFg{0IXe0=c)3Gmjo0%Xf#-w$SZLg78d2UI?ixrsG#Y9EEd*>r zFisd$A7$<2gB9~LsI?W`#xNz@RpN^cV+DtlvY}L1BjM}^#ek@i3g%r-{<0Mz2lP!A z0Kkcds3F`F@H|TOei1->u%&5w)Nl_NL&xZe07P=1g_#wGSnwYQz#flpOra@~6yc#s zbow+B_XjHgL!<>0AQ+eRJ|;;(=!~rg`kRw!qtfj^8(X}TiX@AAE=3mo^+z);H^dE) z_ed89puv2oTpZL8R58Nwe3HKqT5N0d)z4|dq1EI0E=4qbnfHrBf|_NrhOS>wX-1qoQ%o-pW&n$1RD;EPgh04G*?A0W2%Y{o!5r`k}^amvn z7H*OKiMbidNakwbCF?U@CQiogqT_V2)vp@VwKGs_l*S1mJR0T-G^CVoH3V@8_Mf@t z;z4Wr;=~W<;^z5uOfdA2si!(s8VX;^VL&%4BrK_@j0R=ssev`1!37u);}GF?|A=IL z#esm8hcjoH(daa527AbdEl9+Ri7Vk!!w801c{W2M37VF~q@)~v%*`Kn%?90H^zm;3 zDDq4LF+DH{p4P-K;e#R`lGL2X1vI8u^cz0DK}+0E;%0f4D(L6Jp%_^?IaDgZ3yI@Z zbmKG_F?Lcynw&H;GDJ>X7RCsui{CZA5m-SjQLZk>RSvr6)1pQx(Czn0)v)7mqIPud zU>r^xb`MI@|3yFcgRp2Nqd3SKmh!BYO}Et`=a1Jt0)gxn+a;UH0q%lZGJHR+|Le$E z8K&TNM#PW4$`8^)>ZUO3KrK9%-0KD(NFTQoffB#6Kp4t!H;4V7?PsngZ?@htNm=P! ziW=wn5H%V*hVY9+^XD*sG|KaH$`L*p$?(A(HN7QIx%~d?HqC{fW6l=l*IU6EO_z%{ z`SHw8*;%8A<*Ba%`Ojl=pJi(1Cts9qOxJ~B5{$PsWMtOQqC+u6O)ffpb}I1IaX8p) z&eX*@jrV=<7eW*FGY3oFJ2#;|>?(vBhJH#W<>edKMmXD3{6pLCfxl#3tWV~fWX__9?+kIC!#1B=P z(0=8BE+y6|HqTzuD{~*V`3fe67!TwNdPv-R(ai1W`6xdb(DK-T+0OLy@t?@bM(c>j ztf~3p+L@|uh4b@SygARo`1r$?fqGGt?uZv%6@kqCcH?cM(%*cpAHOs`8ks*FUd+b1 zCO)QT`pd97c0TO>I%7A?mxq_=xu8Rlq}b?hJ$AE_lfxsmwY4`kHmG!*xWYuVt+`B6 zCSkJrqiT$41Ov!{fhhP-E*i2(Jslm--KnxO-{?FjJ0HCKb+_c4AU67_1}QAD+2Pl) z-^r^Y^Dn!9eQ01QY9~QAOaSnj+?mFcd#Bc}b_GqfG_&BE86#LO8pRB8zV_jU1rJ3l zh|_VO_d$|6oez?;I^!A5i&rW$vh|ZE4y#+q0HwK#CMX<1hA=K`TgOYU&p=cP;9xZC z$;0LG)>ylW}P-quI(qD1g3noVC!=Bcu(eZQOuwf2_;il9k zMbK!d0YxnHq5RcJ7^b|(~o=%K_?{Av_r7Ri)1uY2rx z@MG_jXQCEU+Cj*-y;Y8jU;8rQVsPWK!AM5hA9pd#bD^*Q8mWGXh$PCpT$3!O`pl<- zfLaaCj@}f?YPiYFn~3)#+2yem>aNOvxC3`DKF z?JoLfnRh$h3CZsM(cyu+&l`snDQp*<|1n8~i~H(e(W~!Mb~LM`*v>U=!e^b^5`&_6*p0z=;7d{Xhe#S3 zF(fh;<-Me&a6=#5kL`*G9YEk(6GUs>vuON!%^4?lVj!(VY{;yJ3CM?aCqVTSowupp1w!1AAG+3QYZovoZD$4GfG74G+c2fT8p{_+9sIzVG7VBG33G zE!3KsoqhS6o30QQCM60-u$n$JJ)H~~8&iv5oM@cy@=Q)5N=v)gQi|%KBtV4q=w5W#cH4$P7-8)MhhU7t_?Zktea5s8PFwk)85-)4Rv;Ni-Lg&a9|7hB5_+3w z&ssGr_)SpLu+TF`#l$oc3@F4u#?GS=^dmk{1NnUtZ5m@^vILc4KO}%mA>u^73Mz4V zD07kYa-VVp3>5-4c2kls4Jgdx9EK@=v!t z@M$peiS_lrNb`j^29p`>lmy_SqACtRnaif($bof=~kG54cE?N68}G1Gh;kT@tDoPNL(iwTY2 z<6Z??Vsv9Iw3VMxvTy(l}TFBa{illPEtoYPfo6@7`gKBB=ndUrUEoid4~3~ z=-E0-I2{yb(|CcgUt?3FNcO_G;0s&Ams75S6~84uBGg~)0}dlkNlja>eufls%l{r zCQVeYn{CF!dx@U~cOke)+I~tGy(%tw%5C4z}2~U|eDr!2K z?-Es&7JqzEFVw9vxLEc(x{=Y59hbo@%HX#;&*Gg<$Qe;^55+L9cbKhSSTM*{mIAh? zD|A765*YZ9&TXTTBb3kWHmCUvoh_D&Hja$@aK_O2BEp83m$zlvHD^{?1CZUjX78JAQiQBsct~WDf{afH?5ibI48KuqW z6DDv;O7WToe-L#4koZzC#mZpO94SOp)r{+%u}|TRF*XMSSbsoJF%OoT8k(C^l%Iw= z3Eox`qEh2i3RapvJ`_{%`<^tMm~U4t&=#q?tE;PRQvHly_R$G1?g6-YaiV?sK7 zFDlE+MFRIp3rD21|7CsLZ^B4p@)#BNsxj%<^m^eBJWl*<<-{-{m6eeCB!j^S$=F*r07ymQ!gWYXa~eY7035@v{mDm?|lYacy`5$QPr zm)|ZA7G(>^&jNR6YaX|9gGz*=>uD9vuVTp?d@ssZIv#V#eO@6C7Q1YST7J9YU>mjD z#@As^;2w(Fsoq{5by8eKbr?Z^*mbE z)HHN(dZZw}%q2zvGzM9!$=#2_y}-xPT4(Rj=b zBqn!#T_0IkSU9T`0Om}h$t4#m=9?WCFDHr>XKPGXT0O?+>ef|qMee->|2EMctaAwW z5~RKL*#GLZ)C&G))*CnabfpJg{qI|^OSd0Qy_P&y0&fo%njDa5N})QUt`a|(G)q|1 zL`{b|CCT=hZM#xSR7S6USQj{CIgNdYz;!p5jKI6y%=Ey+yIB9FdiOW6IGKT^gWktb ztS91Mt(^uFH(@@E*?0xI2=KpnY5~;ZPU-&gpZYQ$L)=kDab#G^g)nYAc0DF88WwbW(S<1h9Z&3*?3=;kvF*L(A>`JCFG*${dR!}lGS zjPzROy~$qbi6)0xIXc(l zKRu(OkMGVl*)&U((nW&;eaCQT>@}c8ocXPzFEnaX6&#th6bI>Rw|Evu?Y>xy#YkX@ zAw@gyPIK@6G7M+%;-H}b#~Z1p)>~FxU(FyaL@dc8`Ao_$eI~8YtiS$EQ2dlD;IlpU zQhVuQ_Q|9Bwd(}=_I%4ZoyPT>A_Me15~GVOUelX3TWy5CI9Cb%aP=3sC5jp3JI;QG zY=F*?4RW%bxmHW@{qo#SX)&FYBE_qNzhuMF%B{r710_0J=bIJhW;eJVnnHh`{De&L zNz+o&S>)@?PKfl!WCciX^O+ei!4ORY8a-vHIP~%aQ=Q#YjcUoOHpUaRWd3jVL{h7? zgxDxL64IMFtWAq;J^~0NSNdrt_FmCst4A?&w1O-SB9eJ}#jsFkbH-yD<6SWjL=o&` zG8ZOd)@+eKE33l7>L3T0ee~Eebv9M;W6-*>>_)dwI}6O6tF6S@TiM_sqqY zQCOTj@B4CpDY`?y7hx(552g6}QNY;uubheP!((V2-i5ddRlIfK)M7~~Dfll${I5?p z!tz2MaoE59`FFD3)Z}4u!2kRG`ZqV5*-Cu}owq%bQXeeTjLocJD6+AnOvP;;i+mV| zGgXTt*>97T6E(^cWy1tskEaH|qj3S??0#3_q9;w=j`7D6hVlyWG^R(<_W1Y^f z_V(ZV2@q>4&NX7Dr7FWN)DKQe>~{~h2U3F%D1edQfyeapG|q~5Z!`Ec)Ot79p&^#R zA(r;^eqh{o^CyYJtK7@(F7C|V(T|3(KISu1-fTL6h=jy2WjbH7^fa0at^IuBB^enR z*rfF5AMODm$K88hW=7BN>ycxpi|Iii;&BIDEv2v-Hv4z2-=aQ)pKW!0^*JkfW*U?& zM^`?Y6~#ZpvPk+76b6a~b$Zf1^HWTTJpxdG96aZpK}W+DltB=k59jJ6oez&$xdFr& z6JyYs1S5OrTzw_jijz`PQM>>2q*_^78F|hZ@2Uc|@7jur1m3bZ1o=oy`+VyP8n?Bs zBa2yT^J1~_xmxlHc(^7}Obsa5l=Jk|(bxCU_wmW_SARlG(pNBkdK$gtcX>BlvgAEE zE!tscRYB~?W`1!n`FQV@`jd&a+e3UPLHjLrQtu}VvOf_G&xVFf_?IyS-EDJIbF*Eu zG)qS*h5ZFcd02tWpaA+64`Z_tq|?KC+vej&hklm8jC&RUb9Hm2>`Ujry5<((YWn|O z0C2+fD>m~OSrgEAb8{1l`J_03>4+%5va&KEVeR$9d8xFOZI=4PfcySjon_xAVc&Bwk6-h>o6BP(k^o(u z*=l17a*C-b?N=V#V|6}fn~TkkF@5Vf(%MZw>+74HS3J+R2>@ug1PGsReNKy9vpW2) zM7$1-R8&;xp0cyBh`N;+%o9kxn=E0Yv4+FrRVpzs)C_$B?86D^mAvmSX17MNaejqx zQ%qJK$~EA0=KUsdrD%ua;*yIH00P5nBqSux3t9?N`ug)xQW^=VZeOnDS9E0VBU_+m zc`u>)e08WC?z_LgX>N^}K3tDJAm3OPPUlnJWVW{p@hTx%!{m=-I}R|W%P5#f=UK7u zt9XeIuELiMa3iVlYH2-^fY5~&bl+_Ga#v7qy@-;+rxNP!2H~LXVrEgN@?Uvfow~S% z?vdGd0{*yv|JFr!!%(aN2r_}p-BlR+gSg62Sj6qJ9{HJI7RI^0<%3Ci(JlR6T{T2@;KivkUCmh%GJ@OkHx1U!i zKi+jdh72Kf&=5Joe*O>FHm|$xG&o4XyL1pqK#PryJ%NFiltFeL3?MCk#rm8LO9ND$ z{8;f@i78aSFgWtv2}AcBF**G3V3YAr0N`vaUy_8~=&SRJh{aPz)O4-wYrC%=aq| z58Y4XKm`aA>5e&hf6X*Rt+!(fcZ%PlOuK5wj)jGZWjj{Kh#u*y`Y7pCkYI+$ehpa} zViaKT&rfq+ly0?}RFPUmuQJ)M+RxNyMI~&km6gk1_OA$6mDZm*u!;t4$1SpP-Ztvti-6AKzT^=jeFvPf zdyy`LG4sc=0-2a>t?w?M{Gwt-VbqmYmMwj%#!KG4@gHw8j*hoFK+}nmG~OC->|HJY zVBY%smukh*aw$^2s4==p$8aTT8iW>?QJuv`T;O>j*hkG~tFy~f3uWWp_?~ayU7sO+ zF@Afmf6NVfc*Cu)lQ$|I5N*)3(B^gYa1RHva&uQ|Odl5(GL(ypp^RwFw(|vEN6Q-< z@bzCGE6U0SMqhuas8B4{u>blD9flq5cXhZ_4v0wxqe)^ZHaZH{dc|C0mdwcz>zws;o2z1fc!N(*L}U-93uV$3Q>r zX*=n~U_htm6~*eF?X&Rk-iRlU=aZ^eM=M>^swkw?ha5x-cA3^-{k}+tUlX%^2N<8z z)A}LyHl*%Dvu3Hv%iT~rzw_<+YU5jw{POVem1j$Q^Z5qeubQ$lwxzG}5Z|j^N^JC8 zZ;O=K1&10k3?TchDIya68r?U8Ws$MT9BvvmfMhdh6i`z?Jdj2~=_n<=>ifO8098f|nD#}g1)ERIK zdUV4WFXN=p2rnysOG)p(l>5gA$CcF2H3jKmC{HF8t-@VF>WHEG=*4#(v&U+ehq zz&PM>42+Gn)$~56ll^y`GEMD4fvt^=i-W}$Fdfe}hu{5{YV$l0^xXgId0^1zA{28D z>fy{$EmPf~)4u~?po9eiFbGBiR_DRH1fDm8^|1Wa)m|6u3};l70j(LdV|8mp{#PKX zm1S>Ib4@{)v8DsH!A1;%UU2aQnh=bt5V;M;R=@U-H1KsZ!yKeXsm6ldp!EpAKFZ_< zjo9#<>uG^TE?7Mxs}wN~HEmP`ZAR}QG@Bb+aBC}}$M%(leZQL>)9kTO(zJ_zN{^u; zD^_~UfCVcPm7a-7d~R;n!EKck-993FDYV>+U+2(q{484Y?L%cwc}y<1g_SjPjlgF& zzSrb2d@RT}ZkI;&b#?L)nQLM!2|=qrXCKs>zm-&rBrAlE7?RikVU?9>u!3Fp>GKHd zsp)C$+_F!7>n5M6u){yx+4g_zjR`=|NWcYxYdaJ zot~uS`sT3Vh-rWg&_F<~tX4ZehYNtUrQ>A+PFF)Q@C@oKe%?6G@Uy(T9Fu%fCX52Y z(RJ>_U8xy|z;2G8tE($$??_X%ZTE`xn7u##qj-C@XF3ITxtS{6DwB&7*%uYOHLJZ5 zB*et!21QBE?I*v$v@&R6Z{5mK2g?)$p*hX~l&sP&NO1y&IW3G(*mf!F2UY!{feBUx|$%OTUi>#qC7(Hx)6bP(U{ zs(Ks$o-@{Yp=Au(P6xu&(ri&+dU`r0CMGT}1F5C~14!^&Cf{78yBwU^#6Ho;Ux7EWTCFm53(AabSb9~G1%l(E&mw(6R zW)cAk+}1WWpktDKe{%sgpn%;nhSBUQ4L?|Q`{{0+$PE+#J@%#6FTRFe7KT~z|ZEfn<)4hvv%Sw zF5Z*Gq?z%I&+mF8)$3q6JQgIL4$JM=P2kmlumN_@qt}a1a6vJ01k!UmJ3AGXktMH{ zY_KJRxpRHCwc@k&zxY*E1)L5rR8&+LHotQ@Xqp9)mQBCDsI`?G_uth%b_tW>Gc&}x zfZx@D_S}chbNTX#^lT>W0#tD}TUOkfIy#pJEi2XbKD%Y5BRRr_{97F00^z)mkI&Cn zKTQKJo}oS==ds-wOuoOpFzoR4U}fPm{~iWTH|{t26=y)Ntj#NT#?c_|Ip^u|YVXYGJIVxN0TT{RKzMIIrAyJknU zR&u3Ep`=v)=z^6Pj6OlMs|*^**8?NOz%2H8aV){1O11pP(MrYe&)J6*eT6dBAx))^ zJEtWRA3?+VKLGedxk4*pViE|_oZIuAv*p{P?D9%9gy#WBomT=uwYAjhktyt_0(QD& z7?sc8)xkkc91?ad9~s4EUmRG_!&xq7sJQmO2<( znb?S8ur6~=yFN*e6XiSOTx_Q7^8xi(9M!$~kI2kaHpB8E$Q($_Kp2&cqgnzPpM2us zThDzxdHIvS1BovJ&g;r1ON7sm4cIb#JUl{o$F$(lCqjGjOnve~csks1Q{c~@Jv&%x zs|k7x)HQOER#zV%OlA>gf?HYrvZ(t+DR|cxB*g8q_M^Of63OBDTVU3sqP!felmm~) z)d-td3jR*8G3@HkdRUKSeY2a~9Lav|y%xm~9UYzat-ZZnG1cjzlq%pnUXQh+xtX0f z2JANr#TBu3G%|_0&bS5w&p{jB{FU zXCjJ5X7IMv*8b^zBAR5N>$0C#2l66P(ZJv1g|e7<v;k zw&LH=32N*H>*33t(O6E)U%b!$tbc-rK!=(PHsUpoi{ z;=7TzUDp>iK~)B~gDkIK2>UjI^emQXuiR#@9M2YK1|+cn0I!6xnZw= zl@>}G^V8m8?-!VR1=2BCgug(t?Ej}*Jdr^)@b4;_W{Jw}#-u7HO7prvO~=E{6WO3` zQ22osfu%mDHR#p-w-uYo?_6SaJBLiSl!;?!X68z8$xY*RI4fcMgG2whiNZ|dND1;% zk9u=+)AMNj{-7nut&h@+?bgZ%bicsJPp@lMjoL`7vy6!rT5SVA zTyFPq1O12p5b4!c3)nkAENnX+WI5`*t^WP{H>jvV1HNTIYfw|tT6chuU~hNNvX0fd zzrP=J#?nr7WwK5DE|Lqu;p|+U<}5pS+I5RZU)Q%pyOtWBf>Vw8I!S#jpW#{u5Q_u; z9-DiN71DSGM1|Vf>luIh_6>yLpxXnl!>{X?#fqu$pBBTJyqR1V!LOXz>}RW&@+BjF zeIom>PW+BKj^<9*!BH{2YL5G|Ui;0$o@~&+d`l4g1wDM%qSB?S445{+G;{~cmtpzs z&RiWKDhAPt=yj(oRXV57;FRej*ZrUPLRoO$u+2aAP;$9H-nM&Q#%8GaUj=G=WTbPd zPj8jncHZ`~r$pgk;#b@~sP2xmN@bt`O(S6i)tznJ+ zQC}=aMUwmoR#l{i{OlxdG%7(#@OOLsgpeLZ%*15*k0QIz-|@cow_u#P&&FjzM$%w? zuuyH>iu+su2ACLe)VP(Z)amV)S44cI;J=(Plqt_t%@HDlVhmf2e>9hbAV@0wBIVu; zq2my1>FRF%{o4o*{lOm1zvAx(HaxJ9{(A%T_)?ORKyxtYewXkxG@Z{XwTqSzYZ}0|9E3gQc!MpAT zKA&)V_+QgJyE_|wLdI33n96QfR7Q~T#0fD1E~z4s!^6U!l`g-(x`48v^=jEKCgwF2 zzvpl6Q6X-p-(N9b_`?vi@$YXhDZ$}EtM|#8dZ7%P$(@c66@S`u(mxmKjLu9bFG1k^2i(hBY}Ipw19*TtIy?oF)RQ@qpXQ4$wyf`D)A3WrLy2^3B8T z(Wh3M^S`$YsK+0Bo$vO~ROL0`@Qpu;7(utg{N-XahqE=#@&nx<6oP#hDFhw`+yNOe zt<3}Fqv-AYXy9eT;&Q;1F*m#QL9gLkv(HGvqmI|aF>HDqkKH|?nAVpuE%pa+U)J^ACCK0R7pi$4tA&C%zpzbaC%MJSviBp z?!MI{Uk$2mK8i)MJ+i#R?A37WTWmCdt9WKuIS{ z|Mtd*LFKuw_hGQz6aTZ}mZ8)jE^Fjh{DVbZ?QH9d1#WAL!2PKVYv)0(`02UN5N6lolB4MD zb;7F{=hmIgZ)Yak3&nc@SISPdw*RJUax%E!3m@=S0&jL0Kx_YCs;qZ&SX)d@Zw%>@ z<+e2fIZhj22Rp6L<6pnqi`P`#zWZ*YBAJ^GGR}fcvWmVM@ zXq^raGMpcpPDC25s{DJLOqMIbKC=Mc@2O%OECjjVrv&uYY_F92m^j|o5zONDLn9uJ ze|{h=9g&gf8SpYbyDqO1W!`xJS!JW6HiyL=!kgH&~A+K}gf9H~Id_!+YPu zHPto`=GN8dha)!A+-D!(Ex7zSn>Gv*Y_#g@qOslesmBWL9o~V&6>e><5@dVRvhu}Fpjoo-6DU=SsbAz>*H(bzm2a&NL-1G9>ArMkR9=lV{UHAX_MSZbk|6%6tF0No$B1t^lw={ai+@9YyBgCv+ej@end%bMVWdq`L4DR zgxcdK&4s}_vy)Tj!~5}}2IY000H$i~FWW13lRVwlQ*~{vk@}QDVj8cxGdG+MaQ)3Y zzYkmeTJBQ9-x(Bh_MKv)cz7XHjS-B#!>yQUV2SEDvAdx?MaOX&zO~El?5MZs?yPJ& zNmjy>{d?7g(d0ur(_E^Uh13?-*xN;1r5|f2^joDy-jV!eimEqTvP zq#X5t^|X#qlz^hh+&M7-B8J=*;0yXr4*028Q=QQFwTDJ5PB5)4C$wSYm?%!57DCCb zt&=D7n}h38wN@vw2ra#tcJr>hxo=(nbYL`yM2bK8n0jmG_FKHzL_d(M>GLicAm`iw)BAq6qDJ78+eWf(GPwTPyLz(zOY~wY5qZ~; zd;bnp>7^>#oglQOz#Zr7zvbn@2zpoh^CdBDhI6JnjoZNcX)Nr%?HqJF@;%)7-BRnt zFh5Dh>EIBE2?Q>KQ+D8#+>4c%wqVvY=m2CSS-cJ@@OcoCjK#$vK-l+u&~DRXz3fJP z4E!U84p?njIsevcb-ZnU^arV_Nq{3rqk#9|IJw%S!}<{%A=SEWl!JU|G*`5yHcw39 zP0&LKNCQT4MIR>=F^`toFwYH5#5d;SRnsIQ^;kbd7RoG5f^L1E3pn*1S_wD~=GR?6 z@s7Z!1ZR|4a&%O_+xa__FJfg1LB6`t`(!jt*sr0aJ=g<90Onp&SR*kmHLZB0QzB4KMT-bN}cy+$Px(Vd=+qGa6@dLK9TeK~$NBk=b z+Wk-OH9?9$zUch;b9>wp1#%mVNkz(G)(z^!UL*y-6X>z^m20zrMyje5IOI-PF_sK5xaOd04~vn&HF5gmPhDtU4UDLcvD^?w^R>^}h~$aK`(H$DAi~lxA;P zJ(t$1#yF*BDr${PySoedZ=GcQ7v6tceOSj)3{)&EEV)A04`kfdzg@N{!C+c0UY_qf zNx>z34_f&I>UMTJU_%BO{4^;1z{>yu<~-Xgu+YHo@jj7-c@Xj*JQ`U4pBS!V*mw7G zjk*ze^}LyR5nz9I8|QQ0cM=`qzg<+6Dv!fPO6KBXx9DJ_kBY>gwxH&qL79u(2DxOI7^- zi2Z~Bb6@M+f5q-l3O33H$BBwe*0b``!Z@D}*v{9(g{XooX7;0_PjBg!eQj^f-yXHH zET^f>AoOWM1o=#}HFoN9Q8DpU=n{@PZb7&C{;0#t!rXin9QOo*dK~13#;yZ-p_t4` zA7~>}*piQ5h`!IWm?#>UEEV;hHTD9>;Qs~~a^EdB50B;dR=4h!uRL5XEjqRFii$ph zwYQ{aurM|T*j+KF8v$CfyED_%&xnY)#DsD{o=sbLJhdYxjgGC}T6dmL#x3Z+uLgR| z-@_ljIquDbJG1`>ef-YM=zqYqlO>-mV}-QG>s;r%linviZm)KY@=ADG$Y;b+G3lR1 zd9Crf2aS%WbXdEcE#+MDt6NvJ#}#CxvZB|Q8%Y{ zlldx!FWIT}ir;y~eH}00bt~iBw|>**ydZbR?5^oDQP=m`{Rze!2fJ}bIomUDjT$x8 ziFH~IDe!9aKH%bF79<33{QteTw3M{8)OgF4jP=tfsAOVK*>Nq)rr5CA&hU55XgG=I zWtGm^)mzUh)0XiglcJ=bx^YhP_q$6hD?ICvKmhXR8xAz07hDOocOIWA)BN;8w9|Un z;AjM-U8a10PdyxFk>0kgS6|izx*mI9Tpcdz25cf{!E3pjNdRp*6JfuHThz&%4DQ=% zKbc~zCz>&A#pmr`F)pv3%Xkey;9t;Y51^@EB?P3>m(oK=xEp9 zgq~NgUV&=^KS@m6T`cV^EiDJ-<>kS#dWL9Fa8iB#>ap9X@NGYBoC0W5PF`R8NLNKW zwV#wsYL|BDcRie!Y1Zj!Q7YEBDq-Tc{{?GJ>PN(jz$CgR`)T`!JD-H@u~o@Yky|8) z;Dgq;?FIHmx*aYCRf>T8NPoZg<-AQCl`u*q`1~O)ZGsa0VvDn=-({r~4Hf`0UWeH# z3c>RXPshb2mp)1mQ0J0$O? z@bYl!?bZN88yNXv{uTFPheaJ~nC*D^^cO#wy~5Y9`UW?uz<+fhD#r|G@^5W!l<71% zE(VTd{Wm#=fWIH8p4-{scQOCf#ZriBbYS3(=RPLQU^G0UH(rbRzfsD3gH5Rh6KW$X zhFQrQx12`DF&9i4`Ow=m*-xa`ZBLeMtP|>`V^V6m9!mCFyB`09*68}rm%}SaOpOrz z;BHwu|511Zm2VoIwpLP&ahuaztpli|yg-FJl6AfPOxFlBSoo!Az+VIL@%D|Ib+HB$ z+J6f#?HeGj!D*!W2L|-(tz3kbzgqm9Ma9Ht2B*dI<eqy*uqPa*DeKjx;&?njM2o>=Md(58@KVWL(Sr3|~K`hQh$ z#EuLL>AF47)STu8V5%jbv~%XaJ#Hgn*lp)oz2@Kn%Xjy)_rC6ohto{Su9oTXyWAe* zvBxA8;JA8Z#u(GjWUNF#P{-V4#v}C#596IRv9jvMopUF0#LDp)d}`zz+;7em@;S|P z?(_liQJ&&+R-xz}EJ~_#>6i@wom}_p(xFs#W8c+qlFQxcz3yOCz~BVPciU27P{~4q z`E&Sf3tZC+i3~!1X*Cc!5$-47OcU%ys`6Te%oe?#Sr92pUD{R<_4+t|p`#9MKJcX@H%ZL=r=>$RHN zE2F8a0x`vAUw z@`9zMt1^Bg#!6LlOLKf(PygOx;%H zuyaL7`&!2HGW3x2X+KC*KkX?pq`mq(N!G0=X>Q-PcgF?32j@$k%-LGrRiJ%RQEB&c zk}Yv@kKc<=EtiLhR6Yy^5CEI5BjM=hZXRP=NkpR`8(Nd3q2A3Hs|7|vPHS0DJ?qem znQ~N?xyr>{SxA}{35VT14dvXP9;J3c+fI@SsxHG$iO*BO4IiG!3OtL=WP38Pk8<%! z8CEOs=xr9~sQbt)EtXBhFl|9s2fAo`3kWwde;;4nR71Py1jX*6%0HUW3Nh2 zMZu{Wqt5Fy{eyB{Ucs+S*s+W+?VICTpEf4_-k3ZW6qLuh_gDO!44) zp?)pQylx^^*Vg!Wc}HS!uLS_wkRoz;49Mw&^F6MQwK^3`Yhxu7wa#OJWx8%mzGk+o zTgiqG^qg>OKHH7YSBG5k@nc;wBnJta-{#+dF5~x+?p*}%X<7rgSZtof#1a=274R+h z90yC?zI{!C2=#|nHVKC=q6J@^@^to%>Fsy2rjI@ew-se)!+v3keex~oux+w-ceC!) z?)?=i-t8k~QP*q=^CJTI|fGPk)vSXbJ#Bw%tpPkP_ULBLbi(h@o$J+h1iCtap zfaL)^GzRso^KukS1~z_GQQTxwY7l()sZX6Q&T}YivSV%&)RvVw!Vb1ECPBcy zy>|+wn)_BOgrCxemYJFS5mrX`7+pBFR-TwZpeRcX}s@^rD z1yUfF-j~Ws7eX}npuaB~&rm-s?3o7c6B(aJ_;t6X=2~E1+kgW#J-Jb+1rARg@ z0(NvPbgV{nEZRo9Uv>iZ<331l-^p@8j98Vs)VoLOf^L?}sUqv&?mI6%(fRl=OUp4~ zzTc}suyvfz5}0w^-8w~D)YOJzbH%zvN>4-&T2D9KHipa>do?YbgVgd|YLl;hQY}&o zARFQ5V>z-|IMvJ1Z_vt?(#P@2kIij!{#)%8{rhA+^jYo zSjzVcMpnlwmOHw-#LgTJfl9da^<6uKfbD_|ON36}c9aGYs=lgmRFqwxqme+;`T03d zaQVhkZniV!QtB1s za}GlKobkv-6P?LSsfrF$Id7AA{M&{3aPZbRwxiyTtjL zo9*+`xY0@bbH3KWs;oq4n7CiR^(?*6gqxm)kL>-25^Yuv@y#Ra&fXC?F>e969HnjQ zZ-zAvJ7z=bADHCaTFW04$`AZ_g4@tuADS%U+XOcZv=`B#q1NBiUk|T{LJ=(~*_L?k zIkdXI5ElXLID{Cd`YD(wD}mR1H3(-J|IXR)*jP2xE7Q}{JK8lC6}8G~O(-a@*^$yR zf>99>JNx^cWH~uG^;32MgDo>7b`^#|)d0ebR>8}?KRg&17(fSf5TYdWk~DN^yDpQO zKc9ojs9qZ#jo44WPtHu1U7C}_}MM-c@9zmOXmXGKF>RD`|#CLFwJ1caJv__w`Jey~)GPXf?? z@xTovr9XfEv`|dq@HOpW+a(3orpx+J|Lj5W7qo+APvEoIOB`oD z?Q37uZ((_x#1v%WqYYBwOlb*Q2NU)rq@)nqL`B*4i?n1OKgJ^$B_fD@|Gv#p=-z&? zfnn~Tm5VTS&ajwy?~jcsFLy65!zSck{W?HW3|Zc$tU zBTx2@Q$VYPDi+EWX}3sV+Qjwb>gt{z{282wikq2}Q|F><=k43KbMG^OXAMK-OZ(-4 z1k+C5SYeWqLsLYpxWOwmYv+?ye)euhvgK7|FI%B}P}_jabGI6KTnmHCcy(?4i@!%Q zz7M=JhL+fwIXA!OJ7)E-6sel}IaQ3T+&V~lHo)$l`_iR;=|=Uss12`PPUJcT*>Ck| zM#NiO0y0xb@5bA6oxJr-aGAu!#1h)=s_UN)7{GQqUKmzB!Uln0DzAAjC;|G)3)^S0 zaB#vyLdc-=cAI$xT(zap~U*vQDQ(}aZ$SlIUVMk?P|H4Byp((K)SE+!)I zNuoxHM?c&nR|HIwgCu<1_S?WfJEbM>M{jSJ2BkIEVRmG;ezU>c%HLSrN4p>I29gK9 zF|7BDH6MrGdd#MZm;VN0WyKnb%VcijHkdo==<7FlA5(ZskQh56=7)2XAj?%lZnSSW zmX>qe-VvO(A|K{wXBVxL`*6j7hGw1$n52hejtOW=lXCP;Q#`l6VB?@+qrNSQQV7V) zHR-ugL$@lzRdV;ZlLTW zH3Q40KWT|=khV4+NdWzBiJkF{v=8G%Z=d90vP>5|xldrn`WGQ1tFrgF=Uw`7=u>y( z>q?HcVFQBZV9sRcC`7u=TZ|R!BjH;OZv$UH+sY?q8g6-GON2py#Nd`B>NXD4CJ2k4 zNo=FV?&(b<9sDGRd|qP1N6H&p?R(5xUC0*}KAReRm#86k!ZfhMlw9ib-8uCz9!JsY zw-(}*2OT1XbwRHQsSRtG4|Q)bu9b%-T16wYgbiLl#l*NTs;F(isJ%D;yFQdmo}h=K zl)3cxDUCdB%r#_rL+lOHs-6D)eX^9rU5P|_SfLPFz++|_u znV6VZbUHpd${kq+i0THFFuSN|1H`;Hc%9wU5t}4{k5ATgMN;H^{!A07rlyvyoVKyJ z7@O=ZS1^()>e061!pM;FM6PzU!2>5AnKiu9(C{Or-sLvGm5P;B!tlyMteg&EryuRT zdw_JakVh`VcW@9_sH`@%bJLd|?RJ-nft|3|(q9;b7YXR;Sj#

Z=s+z)KgP4iybsqHD)O8ee@mfJW?Ve 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 z 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 Rm?i1j6;G)WGUQBd{Xg(cHKYIl literal 0 HcmV?d00001 diff --git a/public/categories/index.html b/public/categories/index.html new file mode 100644 index 0000000..778fbc7 --- /dev/null +++ b/public/categories/index.html @@ -0,0 +1,422 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+
+
+ + + + + +
+
+ + +
+News Home + +
+
+
+
+ + + + + diff --git a/public/categories/site-news/index.html b/public/categories/site-news/index.html new file mode 100644 index 0000000..1eab2f7 --- /dev/null +++ b/public/categories/site-news/index.html @@ -0,0 +1,530 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+ +

Posts tagged "Site News"

+
    + +
  • + + 2021-02-18 -- + + Website Redesign + +
    I know a little bit about a lot of things, and one of the things that I know +only in passing is web development.... + +
  • + +
+
+News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
+
+
+
+ + + + + diff --git a/public/elasticlunr.min.js b/public/elasticlunr.min.js new file mode 100644 index 0000000..79dad65 --- /dev/null +++ b/public/elasticlunr.min.js @@ -0,0 +1,10 @@ +/** + * elasticlunr - http://weixsong.github.io + * Lightweight full-text search engine in Javascript for browser search and offline search. - 0.9.6 + * + * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2017 Wei Song + * MIT Licensed + * @license + */ +!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();o + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

Document not found (404)

+

This URL is invalid, sorry. Please use the navigation bar or search to continue.

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/FontAwesome/css/font-awesome.css b/public/handbook/FontAwesome/css/font-awesome.css new file mode 100644 index 0000000..540440c --- /dev/null +++ b/public/handbook/FontAwesome/css/font-awesome.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/public/handbook/FontAwesome/fonts/FontAwesome.ttf b/public/handbook/FontAwesome/fonts/FontAwesome.ttf new file mode 100644 index 0000000000000000000000000000000000000000..35acda2fa1196aad98c2adf4378a7611dd713aa3 GIT binary patch literal 165548 zcmd4434D~*)jxjkv&@#+*JQHIB(r2Agk&ZO5W=u;0Z~v85Ce*$fTDsRbs2>!AXP+E zv})s8XszXKwXa&S)7IKescosX*7l99R$G?_w7v?NC%^Bx&rC7|(E7f=|L^lpa-Zk9 z`?>d?d+s^so_oVMW6Z|VOlEVZPMtq{)pOIHX3~v25n48F@|3AkA5-983xDXec_W** zHg8HX#uvihecqa7Yb`$*a~)&Wy^KjmE?joS+JOO-B;B|Y@umw`Uvs>da>d0W;5qQ!4Qz zJxL+bkEIe8*8}j>Q>BETG1+ht-^o+}utRA<*p2#Ix&jHe=hB??wf3sZuV5(_`d1DH zgI+ncCI1s*Tuw6@6DFOB@-mE3%l-{_4z<*f9!g8!dcoz@f1eyoO9;V5yN|*Pk0}XYPFk z!g(%@Qka**;2iW8;b{R|Dg0FbU_E9^hd3H%a#EV5;HVvgVS_k;c*=`1YN*`2lhZm3 zqOTF2Pfz8N%lA<(eJUSDWevumUJ;MocT>zZ5W08%2JkP2szU{CP(((>LmzOmB>ZOpelu zIw>A5mu@gGU}>QA1RKFi-$*aQL_KL1GNuOxs0@)VEz%g?77_AY_{e55-&2X`IC z!*9krPH>;hA+4QUe(ZB_4Z@L!DgUN;`X-m}3;G6(Mf9flyest6ciunvokm)?oZmzF z@?{e2C{v;^ys6AQy_IN=B99>#C*fPn3ra`%a_!FN6aIXi^rn1ymrrZ@gw3bA$$zqb zqOxiHDSsYDDkGmZpD$nT@HfSi%fmt6l*S0Iupll)-&7{*yFioy4w3x%GVEpx@jWf@QO?itTs?#7)d3a-Ug&FLt_)FMnmOp5gGJy@z7B*(^RVW^e1dkQ zkMHw*dK%Ayu_({yrG6RifN!GjP=|nt${60CMrjDAK)0HZCYpnJB&8QF&0_TaoF9-S zu?&_mPAU0&@X=Qpc>I^~UdvKIk0usk``F{`3HAbeHC$CyQPtgN@2lwR?3>fKwC|F> zYx{2LyT9-8zVGxM?E7=y2YuRM`{9bijfXoA&pEvG@Fj<@J$%dI`wu^U__@Oe5C8e_ z2ZyyI_9GQXI*-gbvh>I$N3K0`%aQw!JbvW4BL|QC`N#+Vf_#9QLu~J`8d;ySFWi^v zo7>mjx3(|cx3jOOZ+~B=@8!PUzP`iku=8-}aMR(`;kk#q53fC(KD_gA&*A-tGlyS3 z+m)8@1~El#u3as^j;LR~)}{9CG~D_9MNw(aQga zKO~TeK}MY%7{tgG{veXj;r|am2GwFztR{2O|5v~?px`g+cB0=PQ}aFOx^-}vA95F5 zA7=4<%*Y5_FJ|j%P>qdnh_@iTs0Qv3Shg)-OV0=S+zU1vekc4cfZ>81?nWLD;PJf5 zm^TgA&zNr~$ZdkLfD=nH@)f_xSjk$*;M3uDgT;zqnj*X$`6@snD%LSpiMm2N;QAN~ z_kcBPVyrp@Qi?Q@UdCdRu{^&CvWYrt=QCD^e09&FD^N$nM_`>%e`5*`?~&bbh->n~ zJ(9*nTC4`EGNEOm%t%U8(?hP3%1b;hjQAV0Nc?8hxeG3 zaPKiTHp5uQTE@n~b#}l3uJMQ)kGfOHpF%kkn&43O#D#F5Fg6KwPr4VR9c4{M`YDK; z3jZ{uoAx?m(^2k>9gNLvXKdDEjCCQ+Y~-2K00%hd9AfOW{fx~8OmhL>=?SSyfsZaC!Gt-z(=`WU+-&Dfn0#_n3e*q()q-CYLpelpxsjC~b#-P^<1eJJmK#NGc1 zV_&XPb2-)pD^|e^5@<6_cHeE7RC;w7<*1(><1_>^E_ievcm0P?8kubdDQj%vyA=3 z3HKCZFYIRQXH9UujQt#S{T$`}0_FTN4TrE7KVs}9q&bK>55B|Lul6(cGRpdO1Kd`| zeq(~e`?pp&g#Y$EXw}*o`yJwccQ0eFbi*Ov?^iSS>U6j#82bal{s6dMn-2#V{#Xo$ zI$lq~{fx0cA?=^g&OdKq?7tBAUym`?3z*+P_+QpC_SX>Hn~c4gX6!Ab|67K!w~_Ac z_ZWKz;eUUXv46n53-{h3#@>IKu@7En?4O7`qA>R1M~r=hy#Got_OTNVaQ-*)f3gq` zWqlf9>?rCwhC2Ie;GSYEYlZ8Edx9~|1c$Hz6P6|~v_elnBK`=R&nMuzUuN8VKI0ZA z+#be@iW#>ma1S$XYhc_CQta5uxC`H|9>(1-GVW=IdlO`OC*!^vIHdJ2gzINKkYT)d z3*#jl84q5~c0(mMGIK+jJFO2k6NLvlqs#h}}L0klN#8)z2^A6*6 zU5q!Nj7Gdit%LiB@#bE}TbkhZGoIMXcoN~QNYfU9dezGK=;@4)al-X6K6WSL9b4dD zWqdqfOo0cRfI27sjPXfulka7G3er!7o3@tm>3GioJTpUZZ!$jX5aV4vjL$A+d`^n- zxp1e$e?~9k^CmMsKg9T%fbFbqIHX;GIu<72kYZMzEPZ`#55myqXbyss&PdzkU-kng%ZaGx-qUd{ORDE9`W-<*I${1)W@@_xo| z#P?RjZA0Ge?Tp_{4)ER51-F;+Tjw*r6ZPHZW&C#J-;MVj3S2+qccSdOkoNAY8NUbR z-HUYhnc!Y!{C@9;sxqIIma{CrC z{*4;OzZrsik@3eKWBglt8Gju9$G0;6ZPfp5`1hya;Q!vUjQ{6qsNQ=S2c6;1ApV)% zjDJ4@_b}tnn&43HfiA|MBZsgbpsdVv#(xMHfA~D(KUU!0Wc>La#(y%O@fT{~-ede{ zR>pr0_Y2hXOT@kS3F8L=^RH0;%c~jx_4$nd=5@w@I~NXdzuUt2E2!)DYvKACfAu5A zUwe%4KcdXn;r@iOKr8s4QQm)bG5$uH@xLJ7o5hU3g}A?UF#a~+dV4S9??m7ZG5+_} zjQ<05{sZ6d0><|ea8JQ~#Q6It>z^jLhZ*lv;9g|>Fxqwm@O+4TAHKu*zfkVS4R9I8 z{~NIVcQ50g0KQKVb`<_&>lp7xn*Q?{2i@S=9gJ(JgXqP;%S_@4CSmVFk{g($tYngU z2omdDCYcd#!MC-SNwz*FIf|L&M40PMCV4uTQXRtTUT0GMZYDM0-H5Up z-(yk}+^8)~YEHrRGpXe%CMDJ}DT(-2W~^` zjDf-D4fq2U%2=tnQ*LW*>*Q@NeQ=U48Xk01IuzADy1ym0rit^WHK~^SwU449k4??k zJX|$cO-EBU&+R{a*)XQ6t~;?kuP)y%}DA(=%g4sNM$ z8a1k^e#^m%NS4_=9;HTdn_VW0>ap!zx91UcR50pxM}wo(NA}d;)_n~5mQGZt41J8L zZE5Hkn1U{CRFZ(Oxk3tb${0}UQ~92RJG;|T-PJKt>+QV$(z%hy+)Jz~xmNJS#48TFsM{-?LHd-bxvg|X{pRq&u74~nC4i>i16LEAiprfpGA zYjeP(qECX_9cOW$*W=U1YvVDXKItrNcS$?{_zh2o=MDaGyL^>DsNJtwjW%Do^}YA3 z3HS=f@249Yh{jnme5ZRV>tcdeh+=o(;eXg_-64c@tJ&As=oIrFZ& z*Gx&Lr>wdAF8POg_#5blBAP!&nm-O!$wspA>@;>RyOdqWZe?F%--gC9nTXZ%DnmK< z`p0sh@aOosD-jbIoje0ec`&&fWsK?xPdf*L)Qp(MwKKIOtB+EDn(3w-9Ns9O~i z7MwnG8-?RZlv&XIJZUK*;)r!1@Bh4bnRO*JmgwqANa8v4EvHWvBQYYGT?tN4>BRz1 zf1&5N7@@!g89ym5LO{@=9>;Y8=^ExA9{+#aKfFGPwby8wn)db@o}%Z_x0EjQWsmb6 zA9uX(vr-n8$U~x9dhk~VKeI!h^3Z2NXu;>n6BHB%6e2u2VJ!ZykHWv-t19}tU-Yz$ zHXl2#_m7V&O!q(RtK+(Yads868*Wm*!~EzJtW!oq)kw}`iSZl@lNpanZn&u|+px84 zZrN7t&ayK4;4x_@`Q;;XMO4{VelhvW%CtX7w;>J6y=346)vfGe)zJBQ9o$eAhcOPy zjwRa6$CvN-8qHjFi;}h1wAb{Kcnn{;+ITEi`fCUk^_(hJ&q1Z=yo*jRs<94E#yX67 zRj)s)V&gd0VVZGcLALQ|_Lp<4{XEBIF-*yma#;%V*m^xSuqeG?H-7=M0Cq%%W9`2Oe>Ov)OMv8yKrI^mZ$ql{A!!3mw_27Y zE=V#cA@HopguAWPAMhKDb__-Z_(TN7;*A`XxrMefxoz4{Seu)$%$=sPf{vT@Pf_T`RlrC#CPDl$#FnvU|VBC$0(E>+3EG z&3xsml}L_UE3bNGX6T~2dV6S%_M9{`E9kgHPa+9mas{tj$S<&{z?nRzH2b4~4m^Wc zVF+o4`w9BO_!IohZO_=<;=$8j?7KUk(S5llK6wfy9m$GsiN5*e{q(ZS6vU4l6&{s5 zXrJJ@giK>(m%yKhRT;egW||O~pGJ&`7b8-QIchNCms)}88aL8Jh{cIp1uu`FMo!ZP z1fne;+5#%k3SM7Kqe|`%w1JI=6hJJrog4j?5Iq!j=b=0AJS5%ev_9?eR!_H>OLzLM z_U#QLoi=0npY1+gHmde37Kgp)+PKl=nC>pM|EJCAEPBRXQZvb74&LUs*^WCT5Q%L-{O+y zQKgd4Cek)Gjy~OLwb&xJT2>V%wrprI+4aOtWs*;<9pGE>o8u|RvPtYh;P$XlhlqF_ z77X`$AlrH?NJj1CJdEBA8;q*JG-T8nm>hL#38U9ZYO3UTNWdO3rg-pEe5d= zw3Xi@nV)1`P%F?Y4s9yVPgPYT9d#3SLD{*L0U{ z;TtVh?Wb0Lp4MH{o@L6GvhJE=Y2u>{DI_hMtZgl~^3m3#ZUrkn?-5E3A!m!Z>183- zpkovvg1$mQawcNKoQ*tW=gtZqYGqCd)D#K;$p113iB1uE#USvWT}QQ7kM7!al-C^P zmmk!=rY+UJcJLry#vkO%BuM>pb)46x!{DkRYY7wGNK$v=np_sv7nfHZO_=eyqLSK zA6ebf$Bo&P&CR_C*7^|cA>zl^hJ7z0?xu#wFzN=D8 zxm(>@s?z1E;|!Py8HuyHM}_W5*Ff>m5U0Jhy?txDx{jjLGNXs}(CVxgu9Q4tPgE+Hm z*9ll7bz80456xzta(cX+@W!t7xTWR-OgnG_>YM~t&_#5vzC`Mp5aKlXsbO7O0HKAC z2iQF2_|0d6y4$Pu5P-bfZMRzac(Yl{IQgfa0V>u;BJRL(o0$1wD7WOWjKwP)2-6y$ zlPcRhIyDY>{PFLvIr0!VoCe;c_}dp>U-X z`pii$Ju=g+Wy~f|R7yuZZjYAv4AYJT}Ct-OfF$ZUBa> zOiKl0HSvn=+j1=4%5yD}dAq5^vgI~n>UcXZJGkl671v`D74kC?HVsgEVUZNBihyAm zQUE~mz%na<71JU=u_51}DT92@IPPX)0eiDweVeDWmD&fpw12L;-h=5Gq?za0HtmUJ zH@-8qs1E38^OR8g5Q^sI0)J}rOyKu$&o1s=bpx{TURBaQ(!P7i1=oA@B4P>8wu#ek zxZHJqz$1GoJ3_W^(*tZqZsoJlG*66B5j&D6kx@x^m6KxfD?_tCIgCRc?kD~(zmgCm zLGhpE_YBio<-2T9r;^qM0TO{u_N5@cU&P7is8f9-5vh4~t?zMqUEV!d@P{Y)%APE6 zC@k9|i%k6)6t2uJRQQTHt`P5Lgg%h*Fr*Hst8>_$J{ZI{mNBjN$^2t?KP8*6_xXu5xx8ufMp5R?P(R-t`{n6c{!t+*z zh;|Ek#vYp1VLf;GZf>~uUhU}a<>y*ErioacK@F{%7aq0y(Ytu@OPe;mq`jlJD+HtQ zUhr^&Zeh93@tZASEHr)@YqdxFu69(=VFRCysjBoGqZ!U;W1gn5D$myEAmK|$NsF>Z zoV+w>31}eE0iAN9QAY2O+;g%zc>2t#7Dq5vTvb&}E*5lHrkrj!I1b0=@+&c(qJcmok6 zSZAuQ496j<&@a6?K6ox1vRks+RqYD< zT9On_zdVf}IStW^#13*WV8wHQWz$L;0cm)|JDbh|f~*LV8N$;2oL|R99**#AT1smo zob=4dB_WB-D3}~I!ATFHzdW%WacH{qwv5Go2WzQzwRrv)ZajWMp{13T_u;Rz^V-VF z@#62k@#FD#t@v9ye*A%@ODWm-@oM_$_3Cy1BS+(+ujzNF@8a7?`$B^{iX2A-2_nA? zfi2=05XV^;D_2G}Up$eFW|Ofb^zuE)bWHkXR4Jm!Sz0O?)x6QD^kOufR`*v0=|sS?#*ZCvvr^VkV!zhLF3}FHf%+=#@ae1Qq<4~Y1EGYK$Ib1 zg!s~&&u27X&4Ks^(L3%}Npx!_-A)We=0v#yzv03fzxKZ8iV6KIX5U&?>^E?%iIUZ4 z2sD^vRg%kOU!B5@iV{&gBNc9vB)i{Wa@joIa2#4=oAl|-xqj_~$h33%zgk*UWGUV# zf3>{T#2buK?AZH?)h>10N)#VHvOV}%c|wR%HF|pgm8k`*=1l5P8ttZ1Ly@=C5?d9s z)R>B@43V`}=0??4tp?Y}Ox0$SH)yg(!|@V7H^}C-GyAXHFva04omv@`|LCuFRM2`U zxCM>41^p9U3cR>W>`h`{m^VWSL0SNz27{ske7TN1dTpM|P6Hn!^*}+fr>rJ*+GQN{ ziKp9Zda}CgnbNv#9^^&{MChK=E|Wr}tk?tP#Q?iZ%$2k;Eo9~}^tmv?g~PW^C$`N)|awe=5m{Xqd!M=ST?2~(mWjdOsXK#yVMN(qP6`q#tg+rQexf|*BeIU)a z^WuJyPR4WVsATp2E{*y77*kZ9 zEB{*SRHSVGm8ThtES`9!v{E``H)^3d+TG_?{b|eytE1cy^QbPxY3KFTWh&NZi`C?O z;777FMti@+U+IRl7B{=SCc93nKp`>jeW38muw(9T3AqySM#x@9G|p?N;IiNy(KN7? zMz3hIS5SaXrGqD(NIR0ZMnJT%%^~}|cG(Ez!3#)*o{{QjPUIVFOQ%dccgC0*WnAJW zL*1k^HZ5-%bN;%C&2vpW`=;dB5iu4SR48yF$;K8{SY`7mu6c z@q{10W=zwHuav3wid&;5tHCUlUgeVf&>wKuUfEVuUsS%XZ2RPvr>;HI=<(RACmN-M zR8(DJD^lePC9|rUrFgR?>hO#VkFo8}zA@jt{ERalZl$!LP4-GTT`1w}QNUcvuEFRv z`)NyzRG!e-04~~Y1DK>70lGq9rD4J}>V(1*UxcCtBUmyi-Y8Q$NOTQ&VfJIlBRI;7 z5Dr6QNIl|8NTfO>Jf|kZVh7n>hL^)`@3r1BaPIKjxrLrjf8A>RDaI{wYlKG)6-7R~ zsZQ}Kk{T~BDVLo#Zm@cc<&x{X<~boVS5(zfvp1s3RbASf6EKpp>+IFV9s`#Yx#+I& zMz5zL9IUgaqrnG*_=_qm|JBcwfl`bw=c=uU^R>Nm%k4_TeDjy|&K2eKwx!u8 z9&lbdJ?yJ@)>!NgE_vN8+*}$8+Uxk4EBNje>!s2_nOCtE+ie>zl!9&!!I)?QPMD&P zm$5sb#Le|%L<#tZbz%~WWv&yUZH6NLl>OK#CBOp{e~$&fuqQd03DJfLrcWa}IvMu* zy;z7L)WxyINd`m}Fh=l&6EWmHUGLkeP{6Vc;Xq->+AS`1T*b9>SJ#<2Cf!N<)o7Ms z!Gj)CiteiY$f@_OT4C*IODVyil4|R)+8nCf&tw%_BEv!z3RSN|pG(k%hYGrU_Ec^& zNRpzS-nJ*v_QHeHPu}Iub>F_}G1*vdGR~ZSdaG(JEwXM{Df;~AK)j(<_O<)u)`qw* zQduoY)s+$7NdtxaGEAo-cGn7Z5yN#ApXWD1&-5uowpb7bR54QcA7kWG@gybdQQa&cxCKxup2Av3_#{04Z^J#@M&a}P$M<((Zx{A8 z!Ue=%xTpWEzWzKIhsO_xc?e$$ai{S63-$76>gtB?9usV&`qp=Kn*GE5C&Tx`^uyza zw{^ImGi-hkYkP`^0r5vgoSL$EjuxaoKBh2L;dk#~x%`TgefEDi7^(~cmE)UEw*l#i+5f-;!v^P%ZowUbhH*3Av)CifOJX7KS6#d|_83fqJ#8VL=h2KMI zGYTbGm=Q=0lfc{$IDTn;IxIgLZ(Z?)#!mln$0r3A(um zzBIGw6?zmj=H#CkvRoT+C{T=_kfQQ!%8T;loQ5;tH?lZ%M{aG+z75&bhJE`sNSO`$ z`0eget1V7SqB@uA;kQ4UkJ-235xxryG*uzwDPikrWOi1;8WASslh$U4RY{JHgggsL zMaZ|PI2Ise8dMEpuPnW`XYJY^W$n>4PxVOPCO#DnHKfqe+Y7BA6(=QJn}un5MkM7S zkL?&Gvnj|DI!4xt6BV*t)Zv0YV-+(%$}7QcBMZ01jlLEiPk>A3;M^g%K=cNDF6d!7 z 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 d0mW2@EHO9NV8h3u2x_sp}KECIB>@9+Qn{FBV{ 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 G*yFsbY~cLNXLP73aA74Mq6M9f^&YV`isWW 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

5q!RY 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 + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/FontAwesome/fonts/fontawesome-webfont.ttf b/public/handbook/FontAwesome/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..35acda2fa1196aad98c2adf4378a7611dd713aa3 GIT binary patch literal 165548 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 z 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 d0mRO}xo^G_%I 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 SdSQM28?+M|D(2r_;{O0|uQ74} literal 0 HcmV?d00001 diff --git a/public/handbook/FontAwesome/fonts/fontawesome-webfont.woff2 b/public/handbook/FontAwesome/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4d13fc60404b91e398a37200c4a77b645cfd9586 GIT binary patch literal 77160 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 literal 0 HcmV?d00001 diff --git a/public/handbook/ayu-highlight.css b/public/handbook/ayu-highlight.css new file mode 100644 index 0000000..0c45c6f --- /dev/null +++ b/public/handbook/ayu-highlight.css @@ -0,0 +1,79 @@ +/* +Based off of the Ayu theme +Original by Dempfi (https://github.com/dempfi/ayu) +*/ + +.hljs { + display: block; + overflow-x: auto; + background: #191f26; + color: #e6e1cf; + padding: 0.5em; +} + +.hljs-comment, +.hljs-quote { + color: #5c6773; + font-style: italic; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-attr, +.hljs-regexp, +.hljs-link, +.hljs-selector-id, +.hljs-selector-class { + color: #ff7733; +} + +.hljs-number, +.hljs-meta, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #ffee99; +} + +.hljs-string, +.hljs-bullet { + color: #b8cc52; +} + +.hljs-title, +.hljs-built_in, +.hljs-section { + color: #ffb454; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-symbol { + color: #ff7733; +} + +.hljs-name { + color: #36a3d9; +} + +.hljs-tag { + color: #00568d; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-addition { + color: #91b362; +} + +.hljs-deletion { + color: #d96c75; +} diff --git a/public/handbook/book.js b/public/handbook/book.js new file mode 100644 index 0000000..5e38636 --- /dev/null +++ b/public/handbook/book.js @@ -0,0 +1,660 @@ +"use strict"; + +// Fix back button cache problem +window.onunload = function () { }; + +// Global variable, shared between modules +function playground_text(playground) { + let code_block = playground.querySelector("code"); + + if (window.ace && code_block.classList.contains("editable")) { + let editor = window.ace.edit(code_block); + return editor.getValue(); + } else { + return code_block.textContent; + } +} + +(function codeSnippets() { + function fetch_with_timeout(url, options, timeout = 6000) { + return Promise.race([ + fetch(url, options), + new Promise((_, reject) => setTimeout(() => reject(new Error('timeout')), timeout)) + ]); + } + + var playgrounds = Array.from(document.querySelectorAll(".playground")); + if (playgrounds.length > 0) { + fetch_with_timeout("https://play.rust-lang.org/meta/crates", { + headers: { + 'Content-Type': "application/json", + }, + method: 'POST', + mode: 'cors', + }) + .then(response => response.json()) + .then(response => { + // get list of crates available in the rust playground + let playground_crates = response.crates.map(item => item["id"]); + playgrounds.forEach(block => handle_crate_list_update(block, playground_crates)); + }); + } + + function handle_crate_list_update(playground_block, playground_crates) { + // update the play buttons after receiving the response + update_play_button(playground_block, playground_crates); + + // and install on change listener to dynamically update ACE editors + if (window.ace) { + let code_block = playground_block.querySelector("code"); + if (code_block.classList.contains("editable")) { + let editor = window.ace.edit(code_block); + editor.addEventListener("change", function (e) { + update_play_button(playground_block, playground_crates); + }); + // add Ctrl-Enter command to execute rust code + editor.commands.addCommand({ + name: "run", + bindKey: { + win: "Ctrl-Enter", + mac: "Ctrl-Enter" + }, + exec: _editor => run_rust_code(playground_block) + }); + } + } + } + + // updates the visibility of play button based on `no_run` class and + // used crates vs ones available on http://play.rust-lang.org + function update_play_button(pre_block, playground_crates) { + var play_button = pre_block.querySelector(".play-button"); + + // skip if code is `no_run` + if (pre_block.querySelector('code').classList.contains("no_run")) { + play_button.classList.add("hidden"); + return; + } + + // get list of `extern crate`'s from snippet + var txt = playground_text(pre_block); + var re = /extern\s+crate\s+([a-zA-Z_0-9]+)\s*;/g; + var snippet_crates = []; + var item; + while (item = re.exec(txt)) { + snippet_crates.push(item[1]); + } + + // check if all used crates are available on play.rust-lang.org + var all_available = snippet_crates.every(function (elem) { + return playground_crates.indexOf(elem) > -1; + }); + + if (all_available) { + play_button.classList.remove("hidden"); + } else { + play_button.classList.add("hidden"); + } + } + + function run_rust_code(code_block) { + var result_block = code_block.querySelector(".result"); + if (!result_block) { + result_block = document.createElement('code'); + result_block.className = 'result hljs language-bash'; + + code_block.append(result_block); + } + + let text = playground_text(code_block); + let classes = code_block.querySelector('code').classList; + let has_2018 = classes.contains("edition2018"); + let edition = has_2018 ? "2018" : "2015"; + + var params = { + version: "stable", + optimize: "0", + code: text, + edition: edition + }; + + if (text.indexOf("#![feature") !== -1) { + params.version = "nightly"; + } + + result_block.innerText = "Running..."; + + fetch_with_timeout("https://play.rust-lang.org/evaluate.json", { + headers: { + 'Content-Type': "application/json", + }, + method: 'POST', + mode: 'cors', + body: JSON.stringify(params) + }) + .then(response => response.json()) + .then(response => result_block.innerText = response.result) + .catch(error => result_block.innerText = "Playground Communication: " + error.message); + } + + // Syntax highlighting Configuration + hljs.configure({ + tabReplace: ' ', // 4 spaces + languages: [], // Languages used for auto-detection + }); + + let code_nodes = Array + .from(document.querySelectorAll('code')) + // Don't highlight `inline code` blocks in headers. + .filter(function (node) {return !node.parentElement.classList.contains("header"); }); + + if (window.ace) { + // language-rust class needs to be removed for editable + // blocks or highlightjs will capture events + Array + .from(document.querySelectorAll('code.editable')) + .forEach(function (block) { block.classList.remove('language-rust'); }); + + Array + .from(document.querySelectorAll('code:not(.editable)')) + .forEach(function (block) { hljs.highlightBlock(block); }); + } else { + code_nodes.forEach(function (block) { hljs.highlightBlock(block); }); + } + + // Adding the hljs class gives code blocks the color css + // even if highlighting doesn't apply + code_nodes.forEach(function (block) { block.classList.add('hljs'); }); + + Array.from(document.querySelectorAll("code.language-rust")).forEach(function (block) { + + var lines = Array.from(block.querySelectorAll('.boring')); + // If no lines were hidden, return + if (!lines.length) { return; } + block.classList.add("hide-boring"); + + var buttons = document.createElement('div'); + buttons.className = 'buttons'; + buttons.innerHTML = ""; + + // add expand button + var pre_block = block.parentNode; + pre_block.insertBefore(buttons, pre_block.firstChild); + + pre_block.querySelector('.buttons').addEventListener('click', function (e) { + if (e.target.classList.contains('fa-eye')) { + e.target.classList.remove('fa-eye'); + e.target.classList.add('fa-eye-slash'); + e.target.title = 'Hide lines'; + e.target.setAttribute('aria-label', e.target.title); + + block.classList.remove('hide-boring'); + } else if (e.target.classList.contains('fa-eye-slash')) { + e.target.classList.remove('fa-eye-slash'); + e.target.classList.add('fa-eye'); + e.target.title = 'Show hidden lines'; + e.target.setAttribute('aria-label', e.target.title); + + block.classList.add('hide-boring'); + } + }); + }); + + if (window.playground_copyable) { + Array.from(document.querySelectorAll('pre code')).forEach(function (block) { + var pre_block = block.parentNode; + if (!pre_block.classList.contains('playground')) { + var buttons = pre_block.querySelector(".buttons"); + if (!buttons) { + buttons = document.createElement('div'); + buttons.className = 'buttons'; + pre_block.insertBefore(buttons, pre_block.firstChild); + } + + var clipButton = document.createElement('button'); + clipButton.className = 'fa fa-copy clip-button'; + clipButton.title = 'Copy to clipboard'; + clipButton.setAttribute('aria-label', clipButton.title); + clipButton.innerHTML = ''; + + buttons.insertBefore(clipButton, buttons.firstChild); + } + }); + } + + // Process playground code blocks + Array.from(document.querySelectorAll(".playground")).forEach(function (pre_block) { + // Add play button + var buttons = pre_block.querySelector(".buttons"); + if (!buttons) { + buttons = document.createElement('div'); + buttons.className = 'buttons'; + pre_block.insertBefore(buttons, pre_block.firstChild); + } + + var runCodeButton = document.createElement('button'); + runCodeButton.className = 'fa fa-play play-button'; + runCodeButton.hidden = true; + runCodeButton.title = 'Run this code'; + runCodeButton.setAttribute('aria-label', runCodeButton.title); + + buttons.insertBefore(runCodeButton, buttons.firstChild); + runCodeButton.addEventListener('click', function (e) { + run_rust_code(pre_block); + }); + + if (window.playground_copyable) { + var copyCodeClipboardButton = document.createElement('button'); + copyCodeClipboardButton.className = 'fa fa-copy clip-button'; + copyCodeClipboardButton.innerHTML = ''; + copyCodeClipboardButton.title = 'Copy to clipboard'; + copyCodeClipboardButton.setAttribute('aria-label', copyCodeClipboardButton.title); + + buttons.insertBefore(copyCodeClipboardButton, buttons.firstChild); + } + + let code_block = pre_block.querySelector("code"); + if (window.ace && code_block.classList.contains("editable")) { + var undoChangesButton = document.createElement('button'); + undoChangesButton.className = 'fa fa-history reset-button'; + undoChangesButton.title = 'Undo changes'; + undoChangesButton.setAttribute('aria-label', undoChangesButton.title); + + buttons.insertBefore(undoChangesButton, buttons.firstChild); + + undoChangesButton.addEventListener('click', function () { + let editor = window.ace.edit(code_block); + editor.setValue(editor.originalCode); + editor.clearSelection(); + }); + } + }); +})(); + +(function themes() { + var html = document.querySelector('html'); + var themeToggleButton = document.getElementById('theme-toggle'); + var themePopup = document.getElementById('theme-list'); + var themeColorMetaTag = document.querySelector('meta[name="theme-color"]'); + var stylesheets = { + ayuHighlight: document.querySelector("[href$='ayu-highlight.css']"), + tomorrowNight: document.querySelector("[href$='tomorrow-night.css']"), + highlight: document.querySelector("[href$='highlight.css']"), + }; + + function showThemes() { + themePopup.style.display = 'block'; + themeToggleButton.setAttribute('aria-expanded', true); + themePopup.querySelector("button#" + get_theme()).focus(); + } + + function hideThemes() { + themePopup.style.display = 'none'; + themeToggleButton.setAttribute('aria-expanded', false); + themeToggleButton.focus(); + } + + function get_theme() { + var theme; + try { theme = localStorage.getItem('mdbook-theme'); } catch (e) { } + if (theme === null || theme === undefined) { + return default_theme; + } else { + return theme; + } + } + + function set_theme(theme, store = true) { + let ace_theme; + + if (theme == 'coal' || theme == 'navy') { + stylesheets.ayuHighlight.disabled = true; + stylesheets.tomorrowNight.disabled = false; + stylesheets.highlight.disabled = true; + + ace_theme = "ace/theme/tomorrow_night"; + } else if (theme == 'ayu') { + stylesheets.ayuHighlight.disabled = false; + stylesheets.tomorrowNight.disabled = true; + stylesheets.highlight.disabled = true; + ace_theme = "ace/theme/tomorrow_night"; + } else { + stylesheets.ayuHighlight.disabled = true; + stylesheets.tomorrowNight.disabled = true; + stylesheets.highlight.disabled = false; + ace_theme = "ace/theme/dawn"; + } + + setTimeout(function () { + themeColorMetaTag.content = getComputedStyle(document.body).backgroundColor; + }, 1); + + if (window.ace && window.editors) { + window.editors.forEach(function (editor) { + editor.setTheme(ace_theme); + }); + } + + var previousTheme = get_theme(); + + if (store) { + try { localStorage.setItem('mdbook-theme', theme); } catch (e) { } + } + + html.classList.remove(previousTheme); + html.classList.add(theme); + } + + // Set theme + var theme = get_theme(); + + set_theme(theme, false); + + themeToggleButton.addEventListener('click', function () { + if (themePopup.style.display === 'block') { + hideThemes(); + } else { + showThemes(); + } + }); + + themePopup.addEventListener('click', function (e) { + var theme = e.target.id || e.target.parentElement.id; + set_theme(theme); + }); + + themePopup.addEventListener('focusout', function(e) { + // e.relatedTarget is null in Safari and Firefox on macOS (see workaround below) + if (!!e.relatedTarget && !themeToggleButton.contains(e.relatedTarget) && !themePopup.contains(e.relatedTarget)) { + hideThemes(); + } + }); + + // Should not be needed, but it works around an issue on macOS & iOS: https://github.com/rust-lang/mdBook/issues/628 + document.addEventListener('click', function(e) { + if (themePopup.style.display === 'block' && !themeToggleButton.contains(e.target) && !themePopup.contains(e.target)) { + hideThemes(); + } + }); + + document.addEventListener('keydown', function (e) { + if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { return; } + if (!themePopup.contains(e.target)) { return; } + + switch (e.key) { + case 'Escape': + e.preventDefault(); + hideThemes(); + break; + case 'ArrowUp': + e.preventDefault(); + var li = document.activeElement.parentElement; + if (li && li.previousElementSibling) { + li.previousElementSibling.querySelector('button').focus(); + } + break; + case 'ArrowDown': + e.preventDefault(); + var li = document.activeElement.parentElement; + if (li && li.nextElementSibling) { + li.nextElementSibling.querySelector('button').focus(); + } + break; + case 'Home': + e.preventDefault(); + themePopup.querySelector('li:first-child button').focus(); + break; + case 'End': + e.preventDefault(); + themePopup.querySelector('li:last-child button').focus(); + break; + } + }); +})(); + +(function sidebar() { + var html = document.querySelector("html"); + var sidebar = document.getElementById("sidebar"); + var sidebarLinks = document.querySelectorAll('#sidebar a'); + var sidebarToggleButton = document.getElementById("sidebar-toggle"); + var sidebarResizeHandle = document.getElementById("sidebar-resize-handle"); + var firstContact = null; + + function showSidebar() { + html.classList.remove('sidebar-hidden') + html.classList.add('sidebar-visible'); + Array.from(sidebarLinks).forEach(function (link) { + link.setAttribute('tabIndex', 0); + }); + sidebarToggleButton.setAttribute('aria-expanded', true); + sidebar.setAttribute('aria-hidden', false); + try { localStorage.setItem('mdbook-sidebar', 'visible'); } catch (e) { } + } + + + var sidebarAnchorToggles = document.querySelectorAll('#sidebar a.toggle'); + + function toggleSection(ev) { + ev.currentTarget.parentElement.classList.toggle('expanded'); + } + + Array.from(sidebarAnchorToggles).forEach(function (el) { + el.addEventListener('click', toggleSection); + }); + + function hideSidebar() { + html.classList.remove('sidebar-visible') + html.classList.add('sidebar-hidden'); + Array.from(sidebarLinks).forEach(function (link) { + link.setAttribute('tabIndex', -1); + }); + sidebarToggleButton.setAttribute('aria-expanded', false); + sidebar.setAttribute('aria-hidden', true); + try { localStorage.setItem('mdbook-sidebar', 'hidden'); } catch (e) { } + } + + // Toggle sidebar + sidebarToggleButton.addEventListener('click', function sidebarToggle() { + if (html.classList.contains("sidebar-hidden")) { + var current_width = parseInt( + document.documentElement.style.getPropertyValue('--sidebar-width'), 10); + if (current_width < 150) { + document.documentElement.style.setProperty('--sidebar-width', '150px'); + } + showSidebar(); + } else if (html.classList.contains("sidebar-visible")) { + hideSidebar(); + } else { + if (getComputedStyle(sidebar)['transform'] === 'none') { + hideSidebar(); + } else { + showSidebar(); + } + } + }); + + sidebarResizeHandle.addEventListener('mousedown', initResize, false); + + function initResize(e) { + window.addEventListener('mousemove', resize, false); + window.addEventListener('mouseup', stopResize, false); + html.classList.add('sidebar-resizing'); + } + function resize(e) { + var pos = (e.clientX - sidebar.offsetLeft); + if (pos < 20) { + hideSidebar(); + } else { + if (html.classList.contains("sidebar-hidden")) { + showSidebar(); + } + pos = Math.min(pos, window.innerWidth - 100); + document.documentElement.style.setProperty('--sidebar-width', pos + 'px'); + } + } + //on mouseup remove windows functions mousemove & mouseup + function stopResize(e) { + html.classList.remove('sidebar-resizing'); + window.removeEventListener('mousemove', resize, false); + window.removeEventListener('mouseup', stopResize, false); + } + + document.addEventListener('touchstart', function (e) { + firstContact = { + x: e.touches[0].clientX, + time: Date.now() + }; + }, { passive: true }); + + document.addEventListener('touchmove', function (e) { + if (!firstContact) + return; + + var curX = e.touches[0].clientX; + var xDiff = curX - firstContact.x, + tDiff = Date.now() - firstContact.time; + + if (tDiff < 250 && Math.abs(xDiff) >= 150) { + if (xDiff >= 0 && firstContact.x < Math.min(document.body.clientWidth * 0.25, 300)) + showSidebar(); + else if (xDiff < 0 && curX < 300) + hideSidebar(); + + firstContact = null; + } + }, { passive: true }); + + // Scroll sidebar to current active section + var activeSection = document.getElementById("sidebar").querySelector(".active"); + if (activeSection) { + // https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView + activeSection.scrollIntoView({ block: 'center' }); + } +})(); + +(function chapterNavigation() { + document.addEventListener('keydown', function (e) { + if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { return; } + if (window.search && window.search.hasFocus()) { return; } + + switch (e.key) { + case 'ArrowRight': + e.preventDefault(); + var nextButton = document.querySelector('.nav-chapters.next'); + if (nextButton) { + window.location.href = nextButton.href; + } + break; + case 'ArrowLeft': + e.preventDefault(); + var previousButton = document.querySelector('.nav-chapters.previous'); + if (previousButton) { + window.location.href = previousButton.href; + } + break; + } + }); +})(); + +(function clipboard() { + var clipButtons = document.querySelectorAll('.clip-button'); + + function hideTooltip(elem) { + elem.firstChild.innerText = ""; + elem.className = 'fa fa-copy clip-button'; + } + + function showTooltip(elem, msg) { + elem.firstChild.innerText = msg; + elem.className = 'fa fa-copy tooltipped'; + } + + var clipboardSnippets = new ClipboardJS('.clip-button', { + text: function (trigger) { + hideTooltip(trigger); + let playground = trigger.closest("pre"); + return playground_text(playground); + } + }); + + Array.from(clipButtons).forEach(function (clipButton) { + clipButton.addEventListener('mouseout', function (e) { + hideTooltip(e.currentTarget); + }); + }); + + clipboardSnippets.on('success', function (e) { + e.clearSelection(); + showTooltip(e.trigger, "Copied!"); + }); + + clipboardSnippets.on('error', function (e) { + showTooltip(e.trigger, "Clipboard error!"); + }); +})(); + +(function scrollToTop () { + var menuTitle = document.querySelector('.menu-title'); + + menuTitle.addEventListener('click', function () { + document.scrollingElement.scrollTo({ top: 0, behavior: 'smooth' }); + }); +})(); + +(function controllMenu() { + var menu = document.getElementById('menu-bar'); + + (function controllPosition() { + var scrollTop = document.scrollingElement.scrollTop; + var prevScrollTop = scrollTop; + var minMenuY = -menu.clientHeight - 50; + // When the script loads, the page can be at any scroll (e.g. if you reforesh it). + menu.style.top = scrollTop + 'px'; + // Same as parseInt(menu.style.top.slice(0, -2), but faster + var topCache = menu.style.top.slice(0, -2); + menu.classList.remove('sticky'); + var stickyCache = false; // Same as menu.classList.contains('sticky'), but faster + document.addEventListener('scroll', function () { + scrollTop = Math.max(document.scrollingElement.scrollTop, 0); + // `null` means that it doesn't need to be updated + var nextSticky = null; + var nextTop = null; + var scrollDown = scrollTop > prevScrollTop; + var menuPosAbsoluteY = topCache - scrollTop; + if (scrollDown) { + nextSticky = false; + if (menuPosAbsoluteY > 0) { + nextTop = prevScrollTop; + } + } else { + if (menuPosAbsoluteY > 0) { + nextSticky = true; + } else if (menuPosAbsoluteY < minMenuY) { + nextTop = prevScrollTop + minMenuY; + } + } + if (nextSticky === true && stickyCache === false) { + menu.classList.add('sticky'); + stickyCache = true; + } else if (nextSticky === false && stickyCache === true) { + menu.classList.remove('sticky'); + stickyCache = false; + } + if (nextTop !== null) { + menu.style.top = nextTop + 'px'; + topCache = nextTop; + } + prevScrollTop = scrollTop; + }, { passive: true }); + })(); + (function controllBorder() { + menu.classList.remove('bordered'); + document.addEventListener('scroll', function () { + if (menu.offsetTop === 0) { + menu.classList.remove('bordered'); + } else { + menu.classList.add('bordered'); + } + }, { passive: true }); + })(); +})(); diff --git a/public/handbook/clipboard.min.js b/public/handbook/clipboard.min.js new file mode 100644 index 0000000..02c549e --- /dev/null +++ b/public/handbook/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.4 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return function(n){var o={};function r(t){if(o[t])return o[t].exports;var e=o[t]={i:t,l:!1,exports:{}};return n[t].call(e.exports,e,e.exports,r),e.l=!0,e.exports}return r.m=n,r.c=o,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=0)}([function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function o(t,e){for(var n=0;n + + + + + Post Install Configuration - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +
+ +
+ + + + + + + + + + + +
+
+

Post Install Configuration

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/configuration/networking.html b/public/handbook/configuration/networking.html new file mode 100644 index 0000000..378838c --- /dev/null +++ b/public/handbook/configuration/networking.html @@ -0,0 +1,247 @@ + + + + + + Setting up Networking - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

Setting up Networking

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/configuration/users.html b/public/handbook/configuration/users.html new file mode 100644 index 0000000..59a2f9c --- /dev/null +++ b/public/handbook/configuration/users.html @@ -0,0 +1,247 @@ + + + + + + Adding a User Account - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+

Adding a User Account

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/css/chrome.css b/public/handbook/css/chrome.css new file mode 100644 index 0000000..9ca8633 --- /dev/null +++ b/public/handbook/css/chrome.css @@ -0,0 +1,495 @@ +/* CSS for UI elements (a.k.a. chrome) */ + +@import 'variables.css'; + +::-webkit-scrollbar { + background: var(--bg); +} +::-webkit-scrollbar-thumb { + background: var(--scrollbar); +} +html { + scrollbar-color: var(--scrollbar) var(--bg); +} +#searchresults a, +.content a:link, +a:visited, +a > .hljs { + color: var(--links); +} + +/* Menu Bar */ + +#menu-bar, +#menu-bar-hover-placeholder { + z-index: 101; + margin: auto calc(0px - var(--page-padding)); +} +#menu-bar { + position: relative; + display: flex; + flex-wrap: wrap; + background-color: var(--bg); + border-bottom-color: var(--bg); + border-bottom-width: 1px; + border-bottom-style: solid; +} +#menu-bar.sticky, +.js #menu-bar-hover-placeholder:hover + #menu-bar, +.js #menu-bar:hover, +.js.sidebar-visible #menu-bar { + position: -webkit-sticky; + position: sticky; + top: 0 !important; +} +#menu-bar-hover-placeholder { + position: sticky; + position: -webkit-sticky; + top: 0; + height: var(--menu-bar-height); +} +#menu-bar.bordered { + border-bottom-color: var(--table-border-color); +} +#menu-bar i, #menu-bar .icon-button { + position: relative; + padding: 0 8px; + z-index: 10; + line-height: var(--menu-bar-height); + cursor: pointer; + transition: color 0.5s; +} +@media only screen and (max-width: 420px) { + #menu-bar i, #menu-bar .icon-button { + padding: 0 5px; + } +} + +.icon-button { + border: none; + background: none; + padding: 0; + color: inherit; +} +.icon-button i { + margin: 0; +} + +.right-buttons { + margin: 0 15px; +} +.right-buttons a { + text-decoration: none; +} + +.left-buttons { + display: flex; + margin: 0 5px; +} +.no-js .left-buttons { + display: none; +} + +.menu-title { + display: inline-block; + font-weight: 200; + font-size: 2rem; + line-height: var(--menu-bar-height); + text-align: center; + margin: 0; + flex: 1; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.js .menu-title { + cursor: pointer; +} + +.menu-bar, +.menu-bar:visited, +.nav-chapters, +.nav-chapters:visited, +.mobile-nav-chapters, +.mobile-nav-chapters:visited, +.menu-bar .icon-button, +.menu-bar a i { + color: var(--icons); +} + +.menu-bar i:hover, +.menu-bar .icon-button:hover, +.nav-chapters:hover, +.mobile-nav-chapters i:hover { + color: var(--icons-hover); +} + +/* Nav Icons */ + +.nav-chapters { + font-size: 2.5em; + text-align: center; + text-decoration: none; + + position: fixed; + top: 0; + bottom: 0; + margin: 0; + max-width: 150px; + min-width: 90px; + + display: flex; + justify-content: center; + align-content: center; + flex-direction: column; + + transition: color 0.5s, background-color 0.5s; +} + +.nav-chapters:hover { + text-decoration: none; + background-color: var(--theme-hover); + transition: background-color 0.15s, color 0.15s; +} + +.nav-wrapper { + margin-top: 50px; + display: none; +} + +.mobile-nav-chapters { + font-size: 2.5em; + text-align: center; + text-decoration: none; + width: 90px; + border-radius: 5px; + background-color: var(--sidebar-bg); +} + +.previous { + float: left; +} + +.next { + float: right; + right: var(--page-padding); +} + +@media only screen and (max-width: 1080px) { + .nav-wide-wrapper { display: none; } + .nav-wrapper { display: block; } +} + +@media only screen and (max-width: 1380px) { + .sidebar-visible .nav-wide-wrapper { display: none; } + .sidebar-visible .nav-wrapper { display: block; } +} + +/* Inline code */ + +:not(pre) > .hljs { + display: inline; + padding: 0.1em 0.3em; + border-radius: 3px; +} + +:not(pre):not(a) > .hljs { + color: var(--inline-code-color); + overflow-x: initial; +} + +a:hover > .hljs { + text-decoration: underline; +} + +pre { + position: relative; +} +pre > .buttons { + position: absolute; + z-index: 100; + right: 5px; + top: 5px; + + color: var(--sidebar-fg); + cursor: pointer; +} +pre > .buttons :hover { + color: var(--sidebar-active); +} +pre > .buttons i { + margin-left: 8px; +} +pre > .buttons button { + color: inherit; + background: transparent; + border: none; + cursor: inherit; +} +pre > .result { + margin-top: 10px; +} + +/* Search */ + +#searchresults a { + text-decoration: none; +} + +mark { + border-radius: 2px; + padding: 0 3px 1px 3px; + margin: 0 -3px -1px -3px; + background-color: var(--search-mark-bg); + transition: background-color 300ms linear; + cursor: pointer; +} + +mark.fade-out { + background-color: rgba(0,0,0,0) !important; + cursor: auto; +} + +.searchbar-outer { + margin-left: auto; + margin-right: auto; + max-width: var(--content-max-width); +} + +#searchbar { + width: 100%; + margin: 5px auto 0px auto; + padding: 10px 16px; + transition: box-shadow 300ms ease-in-out; + border: 1px solid var(--searchbar-border-color); + border-radius: 3px; + background-color: var(--searchbar-bg); + color: var(--searchbar-fg); +} +#searchbar:focus, +#searchbar.active { + box-shadow: 0 0 3px var(--searchbar-shadow-color); +} + +.searchresults-header { + font-weight: bold; + font-size: 1em; + padding: 18px 0 0 5px; + color: var(--searchresults-header-fg); +} + +.searchresults-outer { + margin-left: auto; + margin-right: auto; + max-width: var(--content-max-width); + border-bottom: 1px dashed var(--searchresults-border-color); +} + +ul#searchresults { + list-style: none; + padding-left: 20px; +} +ul#searchresults li { + margin: 10px 0px; + padding: 2px; + border-radius: 2px; +} +ul#searchresults li.focus { + background-color: var(--searchresults-li-bg); +} +ul#searchresults span.teaser { + display: block; + clear: both; + margin: 5px 0 0 20px; + font-size: 0.8em; +} +ul#searchresults span.teaser em { + font-weight: bold; + font-style: normal; +} + +/* Sidebar */ + +.sidebar { + position: fixed; + left: 0; + top: 0; + bottom: 0; + width: var(--sidebar-width); + font-size: 0.875em; + box-sizing: border-box; + -webkit-overflow-scrolling: touch; + overscroll-behavior-y: contain; + background-color: var(--sidebar-bg); + color: var(--sidebar-fg); +} +.sidebar-resizing { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.js:not(.sidebar-resizing) .sidebar { + transition: transform 0.3s; /* Animation: slide away */ +} +.sidebar code { + line-height: 2em; +} +.sidebar .sidebar-scrollbox { + overflow-y: auto; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + padding: 10px 10px; +} +.sidebar .sidebar-resize-handle { + position: absolute; + cursor: col-resize; + width: 0; + right: 0; + top: 0; + bottom: 0; +} +.js .sidebar .sidebar-resize-handle { + cursor: col-resize; + width: 5px; +} +.sidebar-hidden .sidebar { + transform: translateX(calc(0px - var(--sidebar-width))); +} +.sidebar::-webkit-scrollbar { + background: var(--sidebar-bg); +} +.sidebar::-webkit-scrollbar-thumb { + background: var(--scrollbar); +} + +.sidebar-visible .page-wrapper { + transform: translateX(var(--sidebar-width)); +} +@media only screen and (min-width: 620px) { + .sidebar-visible .page-wrapper { + transform: none; + margin-left: var(--sidebar-width); + } +} + +.chapter { + list-style: none outside none; + padding-left: 0; + line-height: 2.2em; +} + +.chapter ol { + width: 100%; +} + +.chapter li { + display: flex; + color: var(--sidebar-non-existant); +} +.chapter li a { + display: block; + padding: 0; + text-decoration: none; + color: var(--sidebar-fg); +} + +.chapter li a:hover { + color: var(--sidebar-active); +} + +.chapter li a.active { + color: var(--sidebar-active); +} + +.chapter li > a.toggle { + cursor: pointer; + display: block; + margin-left: auto; + padding: 0 10px; + user-select: none; + opacity: 0.68; +} + +.chapter li > a.toggle div { + transition: transform 0.5s; +} + +/* collapse the section */ +.chapter li:not(.expanded) + li > ol { + display: none; +} + +.chapter li.chapter-item { + line-height: 1.5em; + margin-top: 0.6em; +} + +.chapter li.expanded > a.toggle div { + transform: rotate(90deg); +} + +.spacer { + width: 100%; + height: 3px; + margin: 5px 0px; +} +.chapter .spacer { + background-color: var(--sidebar-spacer); +} + +@media (-moz-touch-enabled: 1), (pointer: coarse) { + .chapter li a { padding: 5px 0; } + .spacer { margin: 10px 0; } +} + +.section { + list-style: none outside none; + padding-left: 20px; + line-height: 1.9em; +} + +/* Theme Menu Popup */ + +.theme-popup { + position: absolute; + left: 10px; + top: var(--menu-bar-height); + z-index: 1000; + border-radius: 4px; + font-size: 0.7em; + color: var(--fg); + background: var(--theme-popup-bg); + border: 1px solid var(--theme-popup-border); + margin: 0; + padding: 0; + list-style: none; + display: none; +} +.theme-popup .default { + color: var(--icons); +} +.theme-popup .theme { + width: 100%; + border: 0; + margin: 0; + padding: 2px 10px; + line-height: 25px; + white-space: nowrap; + text-align: left; + cursor: pointer; + color: inherit; + background: inherit; + font-size: inherit; +} +.theme-popup .theme:hover { + background-color: var(--theme-hover); +} +.theme-popup .theme:hover:first-child, +.theme-popup .theme:hover:last-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} diff --git a/public/handbook/css/general.css b/public/handbook/css/general.css new file mode 100644 index 0000000..815dae1 --- /dev/null +++ b/public/handbook/css/general.css @@ -0,0 +1,174 @@ +/* Base styles and content styles */ + +@import 'variables.css'; + +:root { + /* Browser default font-size is 16px, this way 1 rem = 10px */ + font-size: 62.5%; +} + +html { + font-family: "Open Sans", sans-serif; + color: var(--fg); + background-color: var(--bg); + text-size-adjust: none; +} + +body { + margin: 0; + font-size: 1.6rem; + overflow-x: hidden; +} + +code { + font-family: "Source Code Pro", Consolas, "Ubuntu Mono", Menlo, "DejaVu Sans Mono", monospace, monospace !important; + font-size: 0.875em; /* please adjust the ace font size accordingly in editor.js */ +} + +/* Don't change font size in headers. */ +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + font-size: unset; +} + +.left { float: left; } +.right { float: right; } +.boring { opacity: 0.6; } +.hide-boring .boring { display: none; } +.hidden { display: none !important; } + +h2, h3 { margin-top: 2.5em; } +h4, h5 { margin-top: 2em; } + +.header + .header h3, +.header + .header h4, +.header + .header h5 { + margin-top: 1em; +} + +h1 a.header:target::before, +h2 a.header:target::before, +h3 a.header:target::before, +h4 a.header:target::before { + display: inline-block; + content: "»"; + margin-left: -30px; + width: 30px; +} + +h1 a.header:target, +h2 a.header:target, +h3 a.header:target, +h4 a.header:target { + scroll-margin-top: calc(var(--menu-bar-height) + 0.5em); +} + +.page { + outline: 0; + padding: 0 var(--page-padding); + margin-top: calc(0px - var(--menu-bar-height)); /* Compensate for the #menu-bar-hover-placeholder */ +} +.page-wrapper { + box-sizing: border-box; +} +.js:not(.sidebar-resizing) .page-wrapper { + transition: margin-left 0.3s ease, transform 0.3s ease; /* Animation: slide away */ +} + +.content { + overflow-y: auto; + padding: 0 15px; + padding-bottom: 50px; +} +.content main { + margin-left: auto; + margin-right: auto; + max-width: var(--content-max-width); +} +.content p { line-height: 1.45em; } +.content ol { line-height: 1.45em; } +.content ul { line-height: 1.45em; } +.content a { text-decoration: none; } +.content a:hover { text-decoration: underline; } +.content img { max-width: 100%; } +.content .header:link, +.content .header:visited { + color: var(--fg); +} +.content .header:link, +.content .header:visited:hover { + text-decoration: none; +} + +table { + margin: 0 auto; + border-collapse: collapse; +} +table td { + padding: 3px 20px; + border: 1px var(--table-border-color) solid; +} +table thead { + background: var(--table-header-bg); +} +table thead td { + font-weight: 700; + border: none; +} +table thead th { + padding: 3px 20px; +} +table thead tr { + border: 1px var(--table-header-bg) solid; +} +/* Alternate background colors for rows */ +table tbody tr:nth-child(2n) { + background: var(--table-alternate-bg); +} + + +blockquote { + margin: 20px 0; + padding: 0 20px; + color: var(--fg); + background-color: var(--quote-bg); + border-top: .1em solid var(--quote-border); + border-bottom: .1em solid var(--quote-border); +} + + +:not(.footnote-definition) + .footnote-definition, +.footnote-definition + :not(.footnote-definition) { + margin-top: 2em; +} +.footnote-definition { + font-size: 0.9em; + margin: 0.5em 0; +} +.footnote-definition p { + display: inline; +} + +.tooltiptext { + position: absolute; + visibility: hidden; + color: #fff; + background-color: #333; + transform: translateX(-50%); /* Center by moving tooltip 50% of its width left */ + left: -8px; /* Half of the width of the icon */ + top: -35px; + font-size: 0.8em; + text-align: center; + border-radius: 6px; + padding: 5px 8px; + margin: 5px; + z-index: 1000; +} +.tooltipped .tooltiptext { + visibility: visible; +} + +.chapter li.part-title { + color: var(--sidebar-fg); + margin: 5px 0px; + font-weight: bold; +} diff --git a/public/handbook/css/print.css b/public/handbook/css/print.css new file mode 100644 index 0000000..5e690f7 --- /dev/null +++ b/public/handbook/css/print.css @@ -0,0 +1,54 @@ + +#sidebar, +#menu-bar, +.nav-chapters, +.mobile-nav-chapters { + display: none; +} + +#page-wrapper.page-wrapper { + transform: none; + margin-left: 0px; + overflow-y: initial; +} + +#content { + max-width: none; + margin: 0; + padding: 0; +} + +.page { + overflow-y: initial; +} + +code { + background-color: #666666; + border-radius: 5px; + + /* Force background to be printed in Chrome */ + -webkit-print-color-adjust: exact; +} + +pre > .buttons { + z-index: 2; +} + +a, a:visited, a:active, a:hover { + color: #4183c4; + text-decoration: none; +} + +h1, h2, h3, h4, h5, h6 { + page-break-inside: avoid; + page-break-after: avoid; +} + +pre, code { + page-break-inside: avoid; + white-space: pre-wrap; +} + +.fa { + display: none !important; +} diff --git a/public/handbook/css/variables.css b/public/handbook/css/variables.css new file mode 100644 index 0000000..9534ec8 --- /dev/null +++ b/public/handbook/css/variables.css @@ -0,0 +1,253 @@ + +/* Globals */ + +:root { + --sidebar-width: 300px; + --page-padding: 15px; + --content-max-width: 750px; + --menu-bar-height: 50px; +} + +/* Themes */ + +.ayu { + --bg: hsl(210, 25%, 8%); + --fg: #c5c5c5; + + --sidebar-bg: #14191f; + --sidebar-fg: #c8c9db; + --sidebar-non-existant: #5c6773; + --sidebar-active: #ffb454; + --sidebar-spacer: #2d334f; + + --scrollbar: var(--sidebar-fg); + + --icons: #737480; + --icons-hover: #b7b9cc; + + --links: #0096cf; + + --inline-code-color: #ffb454; + + --theme-popup-bg: #14191f; + --theme-popup-border: #5c6773; + --theme-hover: #191f26; + + --quote-bg: hsl(226, 15%, 17%); + --quote-border: hsl(226, 15%, 22%); + + --table-border-color: hsl(210, 25%, 13%); + --table-header-bg: hsl(210, 25%, 28%); + --table-alternate-bg: hsl(210, 25%, 11%); + + --searchbar-border-color: #848484; + --searchbar-bg: #424242; + --searchbar-fg: #fff; + --searchbar-shadow-color: #d4c89f; + --searchresults-header-fg: #666; + --searchresults-border-color: #888; + --searchresults-li-bg: #252932; + --search-mark-bg: #e3b171; +} + +.coal { + --bg: hsl(200, 7%, 8%); + --fg: #98a3ad; + + --sidebar-bg: #292c2f; + --sidebar-fg: #a1adb8; + --sidebar-non-existant: #505254; + --sidebar-active: #3473ad; + --sidebar-spacer: #393939; + + --scrollbar: var(--sidebar-fg); + + --icons: #43484d; + --icons-hover: #b3c0cc; + + --links: #2b79a2; + + --inline-code-color: #c5c8c6;; + + --theme-popup-bg: #141617; + --theme-popup-border: #43484d; + --theme-hover: #1f2124; + + --quote-bg: hsl(234, 21%, 18%); + --quote-border: hsl(234, 21%, 23%); + + --table-border-color: hsl(200, 7%, 13%); + --table-header-bg: hsl(200, 7%, 28%); + --table-alternate-bg: hsl(200, 7%, 11%); + + --searchbar-border-color: #aaa; + --searchbar-bg: #b7b7b7; + --searchbar-fg: #000; + --searchbar-shadow-color: #aaa; + --searchresults-header-fg: #666; + --searchresults-border-color: #98a3ad; + --searchresults-li-bg: #2b2b2f; + --search-mark-bg: #355c7d; +} + +.light { + --bg: hsl(0, 0%, 100%); + --fg: #333333; + + --sidebar-bg: #fafafa; + --sidebar-fg: #364149; + --sidebar-non-existant: #aaaaaa; + --sidebar-active: #008cff; + --sidebar-spacer: #f4f4f4; + + --scrollbar: #cccccc; + + --icons: #cccccc; + --icons-hover: #333333; + + --links: #4183c4; + + --inline-code-color: #6e6b5e; + + --theme-popup-bg: #fafafa; + --theme-popup-border: #cccccc; + --theme-hover: #e6e6e6; + + --quote-bg: hsl(197, 37%, 96%); + --quote-border: hsl(197, 37%, 91%); + + --table-border-color: hsl(0, 0%, 95%); + --table-header-bg: hsl(0, 0%, 80%); + --table-alternate-bg: hsl(0, 0%, 97%); + + --searchbar-border-color: #aaa; + --searchbar-bg: #fafafa; + --searchbar-fg: #000; + --searchbar-shadow-color: #aaa; + --searchresults-header-fg: #666; + --searchresults-border-color: #888; + --searchresults-li-bg: #e4f2fe; + --search-mark-bg: #a2cff5; +} + +.navy { + --bg: hsl(226, 23%, 11%); + --fg: #bcbdd0; + + --sidebar-bg: #282d3f; + --sidebar-fg: #c8c9db; + --sidebar-non-existant: #505274; + --sidebar-active: #2b79a2; + --sidebar-spacer: #2d334f; + + --scrollbar: var(--sidebar-fg); + + --icons: #737480; + --icons-hover: #b7b9cc; + + --links: #2b79a2; + + --inline-code-color: #c5c8c6;; + + --theme-popup-bg: #161923; + --theme-popup-border: #737480; + --theme-hover: #282e40; + + --quote-bg: hsl(226, 15%, 17%); + --quote-border: hsl(226, 15%, 22%); + + --table-border-color: hsl(226, 23%, 16%); + --table-header-bg: hsl(226, 23%, 31%); + --table-alternate-bg: hsl(226, 23%, 14%); + + --searchbar-border-color: #aaa; + --searchbar-bg: #aeaec6; + --searchbar-fg: #000; + --searchbar-shadow-color: #aaa; + --searchresults-header-fg: #5f5f71; + --searchresults-border-color: #5c5c68; + --searchresults-li-bg: #242430; + --search-mark-bg: #a2cff5; +} + +.rust { + --bg: hsl(60, 9%, 87%); + --fg: #262625; + + --sidebar-bg: #3b2e2a; + --sidebar-fg: #c8c9db; + --sidebar-non-existant: #505254; + --sidebar-active: #e69f67; + --sidebar-spacer: #45373a; + + --scrollbar: var(--sidebar-fg); + + --icons: #737480; + --icons-hover: #262625; + + --links: #2b79a2; + + --inline-code-color: #6e6b5e; + + --theme-popup-bg: #e1e1db; + --theme-popup-border: #b38f6b; + --theme-hover: #99908a; + + --quote-bg: hsl(60, 5%, 75%); + --quote-border: hsl(60, 5%, 70%); + + --table-border-color: hsl(60, 9%, 82%); + --table-header-bg: #b3a497; + --table-alternate-bg: hsl(60, 9%, 84%); + + --searchbar-border-color: #aaa; + --searchbar-bg: #fafafa; + --searchbar-fg: #000; + --searchbar-shadow-color: #aaa; + --searchresults-header-fg: #666; + --searchresults-border-color: #888; + --searchresults-li-bg: #dec2a2; + --search-mark-bg: #e69f67; +} + +@media (prefers-color-scheme: dark) { + .light.no-js { + --bg: hsl(200, 7%, 8%); + --fg: #98a3ad; + + --sidebar-bg: #292c2f; + --sidebar-fg: #a1adb8; + --sidebar-non-existant: #505254; + --sidebar-active: #3473ad; + --sidebar-spacer: #393939; + + --scrollbar: var(--sidebar-fg); + + --icons: #43484d; + --icons-hover: #b3c0cc; + + --links: #2b79a2; + + --inline-code-color: #c5c8c6;; + + --theme-popup-bg: #141617; + --theme-popup-border: #43484d; + --theme-hover: #1f2124; + + --quote-bg: hsl(234, 21%, 18%); + --quote-border: hsl(234, 21%, 23%); + + --table-border-color: hsl(200, 7%, 13%); + --table-header-bg: hsl(200, 7%, 28%); + --table-alternate-bg: hsl(200, 7%, 11%); + + --searchbar-border-color: #aaa; + --searchbar-bg: #b7b7b7; + --searchbar-fg: #000; + --searchbar-shadow-color: #aaa; + --searchresults-header-fg: #666; + --searchresults-border-color: #98a3ad; + --searchresults-li-bg: #2b2b2f; + --search-mark-bg: #355c7d; + } +} diff --git a/public/handbook/elasticlunr.min.js b/public/handbook/elasticlunr.min.js new file mode 100644 index 0000000..94b20dd --- /dev/null +++ b/public/handbook/elasticlunr.min.js @@ -0,0 +1,10 @@ +/** + * elasticlunr - http://weixsong.github.io + * Lightweight full-text search engine in Javascript for browser search and offline search. - 0.9.5 + * + * Copyright (C) 2017 Oliver Nightingale + * Copyright (C) 2017 Wei Song + * MIT Licensed + * @license + */ +!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.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 A;{X5v literal 0 HcmV?d00001 diff --git a/public/handbook/favicon.svg b/public/handbook/favicon.svg new file mode 100644 index 0000000..90e0ea5 --- /dev/null +++ b/public/handbook/favicon.svg @@ -0,0 +1,22 @@ + + + + + diff --git a/public/handbook/fonts/OPEN-SANS-LICENSE.txt b/public/handbook/fonts/OPEN-SANS-LICENSE.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/public/handbook/fonts/OPEN-SANS-LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/public/handbook/fonts/SOURCE-CODE-PRO-LICENSE.txt b/public/handbook/fonts/SOURCE-CODE-PRO-LICENSE.txt new file mode 100644 index 0000000..366206f --- /dev/null +++ b/public/handbook/fonts/SOURCE-CODE-PRO-LICENSE.txt @@ -0,0 +1,93 @@ +Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/public/handbook/fonts/fonts.css b/public/handbook/fonts/fonts.css new file mode 100644 index 0000000..858efa5 --- /dev/null +++ b/public/handbook/fonts/fonts.css @@ -0,0 +1,100 @@ +/* Open Sans is licensed under the Apache License, Version 2.0. See http://www.apache.org/licenses/LICENSE-2.0 */ +/* Source Code Pro is under the Open Font License. See https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL */ + +/* open-sans-300 - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), + url('open-sans-v17-all-charsets-300.woff2') format('woff2'); +} + +/* open-sans-300italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 300; + src: local('Open Sans Light Italic'), local('OpenSans-LightItalic'), + url('open-sans-v17-all-charsets-300italic.woff2') format('woff2'); +} + +/* open-sans-regular - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans Regular'), local('OpenSans-Regular'), + url('open-sans-v17-all-charsets-regular.woff2') format('woff2'); +} + +/* open-sans-italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), + url('open-sans-v17-all-charsets-italic.woff2') format('woff2'); +} + +/* open-sans-600 - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 600; + src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'), + url('open-sans-v17-all-charsets-600.woff2') format('woff2'); +} + +/* open-sans-600italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 600; + src: local('Open Sans SemiBold Italic'), local('OpenSans-SemiBoldItalic'), + url('open-sans-v17-all-charsets-600italic.woff2') format('woff2'); +} + +/* open-sans-700 - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), + url('open-sans-v17-all-charsets-700.woff2') format('woff2'); +} + +/* open-sans-700italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 700; + src: local('Open Sans Bold Italic'), local('OpenSans-BoldItalic'), + url('open-sans-v17-all-charsets-700italic.woff2') format('woff2'); +} + +/* open-sans-800 - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 800; + src: local('Open Sans ExtraBold'), local('OpenSans-ExtraBold'), + url('open-sans-v17-all-charsets-800.woff2') format('woff2'); +} + +/* open-sans-800italic - latin_vietnamese_latin-ext_greek-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 800; + src: local('Open Sans ExtraBold Italic'), local('OpenSans-ExtraBoldItalic'), + url('open-sans-v17-all-charsets-800italic.woff2') format('woff2'); +} + +/* source-code-pro-500 - latin_vietnamese_latin-ext_greek_cyrillic-ext_cyrillic */ +@font-face { + font-family: 'Source Code Pro'; + font-style: normal; + font-weight: 500; + src: url('source-code-pro-v11-all-charsets-500.woff2') format('woff2'); +} diff --git a/public/handbook/fonts/open-sans-v17-all-charsets-300.woff2 b/public/handbook/fonts/open-sans-v17-all-charsets-300.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9f51be370fa913ce6de2922b580c262c4822b337 GIT binary patch literal 44352 zcmV(;K-<4}Pew8T0RR910Ifg(5dZ)H0f7hr0Ib{q0RR9100000000000000000000 z0000QE*lUWfmQ}!0EY+&fhq})G!YOAg!yQMtSAeP3IG8%0we>R0t6rhgFFYi4Ge-h zTM$x_K;*{m=TyO<(oF`$dr#+gT@uRz<@OP72f1way{Ld4djxa`IG0*=K;{4c|Nq>i zF~-^s+Z{rPn$}0zLzV=G*ddk#MfRZCOSo7Svxg)@O1QTM(GtC{-8am>TkfXJ&}5JO zXokZnNWAaG&x#r1r&DFc3k@sfl$|@RDaX?kWW{EN@TZnHp}gCDd}u9PW@H>gZ142z+QEhtr+J1&#|>KAj6Y2`)3tZkBe+ebjmTS6=W*;+$iHPBB3Un)Qo?6q*dE(P3T9y565vHowfyevYxI9K2P(y z$<_L{@8?J5hBF;TxvX%vUMY{MW;AQOFw;MRE?UNs>(i)Pw#F30SO&%}gA&nV#5ynh z%lr4w|41^EwI78NR7X_&MdMPeXq|gj4oJ6}tzd{4Fvwwq1Zjy_sfS1l0YYgJLOuSa zG~qZt#{MG5VL1;uY?c0qywYwhjn*_`$CiZFZCFDFz-?kG;zz}gkK?(Z;(4Ip0|Y@p zL`0q-DhfWlFW)O~_Uv1l(z*7n%=kiif-51?{(S1>dTz;-%RXz{zW_NG4POWVdSfQ{H?gb&VPWmSuI@as@lXQ zCML+EVq_sv+K31qR)E!rHdbOZcI*#x`rpX1-FQZd2?w2J5+HD^d^xN_9WLUu;R1_>$Sl2l1j{i_PqRoxBKXmEfAv5RRCG~gHz zoRPqp)jl)`>4DtY_ee=+oD0vBlrtv1+}R|)Aj>WYFNl--dsEGJL13vB!x?g=A&fDlOONKn#&pyZ<<^Gt#Y5O9+B{||V8CFK!GIY^G7 ziird-fZ=XPfYkAzOvx!^1&5rvR8_9Zlqy%TZCti4x_G(NsHD}UoUD}Q&&1ywU=hnR zK_eK;d!w1V-89?ZEBgl|7bFMOFTBI&;bU#pwZ9KM5d*ckoOlTrnn@#e=0bxf_LKF$ zd-0Mi4MXYT*CGx?Tq%ZXXdY`yIWWVJf|?K(5DNrL%GP_mZs@nw-vBb}Rw0W;wB!)N z5TjzUSNZXIA7943^nXK*r#Dw9|Mtf&ksu-=h_`Yp9V;Dkh;8<4psUZVb-$?#qp%T! ziAdB1b$5t5hjOzR8iD$*)2$e71R6>Zt8%DEY$Sg2KWN&b4Cqr8h>8`6#((@8#L}XktLaTS zryU~vMx03nNxOB%uQY)H>VL7pz)zP2nhY%8WH@)-0RsdY-07d0c5ee-ah{%=QSM%u z*8so2)#K3GU!m!|?O$6+?&yD~(Fj>ZOxK05BApxGi zJr7YET6WG{j1#TYt(MkW%SPIA4dOUU&zsN+<{}nS6r*LQrr)v8tl?2R`* z6w<>(odO>Dg>%+<`=H~%Re+D2bI267Gb@WPo}vT*tKEȮck{9tEK*~BMoW% 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 literal 0 HcmV?d00001 diff --git a/public/handbook/fonts/open-sans-v17-all-charsets-300italic.woff2 b/public/handbook/fonts/open-sans-v17-all-charsets-300italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2f545448418cba6668a2e7d49e9616e8c69dfd15 GIT binary patch literal 40656 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 bQBM5)6s%p?oy_T)fR3IrepgG2|qH4K6n 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

D& zKmG7e67!kl#@t`?2092GluuaI?(wqHGc$CxbhOu&-QklBs;yusvX`9XbS$sFoH+FwvSs*$VNBEt-3}x$RNG$?<{E4Ybo(b3OQlfghskNz z9}K5Z3VQ3758HkG0jW@{RIXI$g7RShkH;@~Tu&=BS_r#d@9~%{hig#_2T@|P9H)w? z=gh}5S>q^Cq)p*cpk@GaSXq4sH<14^6;np5c+t|$J9x&lS&Se9UXJl& z`)tC!CGF^PM{9Gle70PoNpUr~Y%X6Z!}+OG>@qySno#@WZs|(!*Vl)pnmp&Xm-VKQ zd#My=>7WO!yH+kA!}m@QP$?RL){Bk$Qv*y2cO;BUYachhU4q|dA!Mv|yd}&v+!gE% z{DqB_ousX_y~Gbfu*tQR**BQz*PQqTVG6mV8#<{f+pRkMaZ3L)vy(`szQ9`Qf3L->DdXY}1dMc^^Csk2NTKs7&QcmZsc@0=Q*+*}0+ubaVYp z?_|MQ3hbnc(VG!jcF*kMaE)V8EC4oZFthXNL(^I^9lZlOJ$lJAO5=PrN|Oa{fGt+^ z86n<5N4dk4So5{kLjS&dhC18h8m3KH)**}vqTFD5^iMTKEbcl&5* zW^QC_D;06l5fzsu|eN0BcF>w|9d0O=b_CFVJ+E}_9y>Lu<@sRBZRB_KQXt_6*y+3*^M zE`8Gx-~2b)<#e>sMPht9=HdY`yV6x{- z64g$bGMR7NOT#uSC|2C5PQzyT^d!Zjg}qSQ?g6h$P4ccGk1(o5QhVy0CTs#8Vc)~9 zOq7?zT_f$!BRru4nCKiVUdJbNGaH|)2T8r+vx5vQZAuho$o6xH5)jXZGCov~fcRfT z&bKQLJ3z=#;>0N62R2Ai419Sb^WkaElLsFHLI;>$2KQ0{9@j2ZT<&_5+_Qnn+unjA znR%4OQ<~yW{LJ??8#ND;4y+f5FkhH;oGaMu*V%`Yil((-`_{i*wzrFu0@>r@;Q!@9 ztG-5C$|o66q0!cO8N3oR-ZuJgm%HhR9u|9gr72nkgf z`o9%BG~SIbmXx=T6}XWG!96o?82ddt~la{g9g5aRjJlk4d!jyanU_J7pF% z77h|AA4MVw=oD5BKVh$ZqKjco|ES*^`7lni8w`M~OOWG;!0pS{gxy|=mLhl`j&hO$ zyh#a7>{8aWnp$JtTk9*E)-=y}7@o8Aa4GKMcm(?Dkj`*yw&d^BbmmXdiwG6W=0S!H zhPH0Do+Bm19r|tQO1}!sqQwXgXJt)nTYP{voU&oA`&wBCy5wXMu+q{aM~Pnu^`Xm% z>~wKZWVqL`FH-T@4e}yAN80yR(3BfT^Ox^K6v1kT9mt8Me)EpvvO~*=Dzl0TbRG>Y z021OhH){SbYUb?JJhVvyjO_=O!9SzJSr7p`)%p3ee#i#M@JWL}?M@`DqCi*ZE@Tjp F{|Bsk2y6fV literal 0 HcmV?d00001 diff --git a/public/handbook/fonts/open-sans-v17-all-charsets-600italic.woff2 b/public/handbook/fonts/open-sans-v17-all-charsets-600italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..c99aabe80340fd88a6aeb5729251e76c9a6f35ec GIT binary patch literal 42120 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 E9}-z&tN;K2 literal 0 HcmV?d00001 diff --git a/public/handbook/fonts/open-sans-v17-all-charsets-700.woff2 b/public/handbook/fonts/open-sans-v17-all-charsets-700.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..421a1ab25fa88105ab776552d7201205f7899841 GIT binary patch literal 44988 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 literal 0 HcmV?d00001 diff --git a/public/handbook/fonts/open-sans-v17-all-charsets-700italic.woff2 b/public/handbook/fonts/open-sans-v17-all-charsets-700italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..12ce3d20d1ce2288206e8b4f31c20f76452efe37 GIT binary patch literal 40800 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%0DER>;wf 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%0Deo9y(?}8?riQx3p&>dOY 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

33OR1_N*!%ylDDa|3D1;gP8brBkv%FrMeyX$5% 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�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 literal 0 HcmV?d00001 diff --git a/public/handbook/fonts/open-sans-v17-all-charsets-italic.woff2 b/public/handbook/fonts/open-sans-v17-all-charsets-italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..398b68a0853fbf6368758deb1da49d347e3e7d89 GIT binary patch literal 41076 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

  • ~`;p}3;==ZtNy# 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 literal 0 HcmV?d00001 diff --git a/public/handbook/fonts/open-sans-v17-all-charsets-regular.woff2 b/public/handbook/fonts/open-sans-v17-all-charsets-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..8383e94c65478622baf43553262e0e31b8725e2b GIT binary patch literal 43236 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⪚aqC6F-jh=?`}zBG zNE$rgasmJvDFU-b3YQ|=f%SQN0PrJ20y6u8#V(zW|LXQ|MEZO=jsF9Plf4GH6xWio z$b2B^$62#Hu^onvtwcNv9TU_FYKS>a))R@PP01DO%}xTMoQNf>gw803<2N_}dkMYi40yn|{h+v5)0a}lth6{X zztO*A%`$sAMEv5F=}#YrR!MnY*)vozr+UcJ@WZqgioRi%#`T(q$eHMOBZsZag%X#4Pb*2*Z#Wx z&ks0sb9yc{CH+Rfw9_>(&}CTMHJhL??8iBWzx1?pl=oW)RP2aC z&OdLF6n#2WDaXnlJM3>KcldwjqVd*crBz-iOwDe;OhGU^v3H(3njP`_B&~t=S;98A zm)vrGUQX$ohd3^}PqKoXS3-$p2u3K>2!{p{SPZRN`l)*Q)EZaY#pKm643AzgS+s@Z zY~bt~u49E$r(CA-OGy0JeVxgJTTs()jG<<;CT^40l7dAWr0Qt}o~B2UVq|{1p$jk5 zhz>=Fj5=f25FI)|$}xVv#fr%B9y0tK#-PrEH~1}4sxgyqvmz?}eHfz2U!PTU+G-n~ zU_l~^bYatd`qLOXu>j^z8plVWX>G({)62)U2agnQ33{6wI!$)Evu4c2 z<~Jg)-5M)jtYKKReHU#~L_JL<@kf05^bUIt=9ZkA^%xs4%ayEJR031*S48$%iIj7J zA_lGyHT3vY-0}6?Q)GCA&*oja>&ymIW!?*o#xY3yYd2Zcrr9J)X-RbhDzVu6#SWR& zRH8Z7T&lYpP+0S|CKPianmRP$iac{G% zy4gD<&5Y$UA@fp^7&>c1bcpq)<=ZpF=^!s%W)er%er)`38a!_|O~HI?P7mqcAR~*t z3~w{|!MO!B#BJ06drDjz6p#8@C3wc97p;7Ywsri<;HP-gsIfkNNV*mem8iaYgfVop z3^ywEcI<3i;N+3=HF_R;tL8loBmADxU#-Haewu9P%dJnI^TMguk&!LUhY#i!-DD4u zxZnE&3x~~)71%J&UcHGH39iy)U|rZ z$ac?qn2`vz=+8I%pY@IO0f5je%57snOlID9=IUIHFmlhUplce>E7Kdj6l4H_<%AjAqJ{6GGWL)%Tnpmg|M@n723~SPuWwx43M$-5Uv$NQ& zCA%#yvC7iP%jcJ{xqNfETahiBE9%N@X5fO+RN0CFn`wsh;=A5fy*(9wb<0k4x_Z`D z`geG72BW!NB1{|(I}rcHtWvdjd=81Zrj&|2+ZU!&c10epC&n@*KN}x9*D_FOeCP?w zz)I_byOx1g<3qzTkY;^w+Gx2NQV|a1!TD>nrFv|U)cS<;g0rTGuIvBb^DYwTy##2t zE>E)f^$|LoOBaTbzJ;k?(3mwdQ2gB>KQ6j8{mQthkC3bH=W9bh8$MHuQ`&{J4&bn9R8hl4{j9T5QLxKz@{(y_5GZD zmyc$B>)v^RN8iJ4FP*1R4MC~2Di!2NxrLeDCG&eqn(Ht>A70CVWo98Skc6{?+p0ld z#W8swf-16eQrFCIj`#WXb{JUd7t1)Kgd7YJCss>H$=4A>Ev4xijjm#_gQJ62cZy-e z;-3yCcJ7%wz{+~%6!3_6%!lUC_r7?yxw~MvgUN%VqXL8+* zT39Ev(sZ*VkKe58YgVo>_Z(1#IP;R>>-c(NV@t`@oGhh*Qc$#x;l8t>7A9YcvZB!x8;HLDrsM=?TvDI1yW$3 zhvy+}TIOr{1-yWOSLYX83x{pPO-~}`Q#uhg{Tx3#S;c&X05mA_FLe{EumKM1vFQ*x zrZn6L#aeWWtYkr`l&$wv?Hfhb@y87Z><&)YgJ7JlVtJ6?wFRe}IIE6VQf%Oah}ZpQ z3(6UpvB_|Y?iqaafO|wn5Q%`RrbZyvv*b!ss^+aE^&pO&lOA}DvPTeV zim$(7E$-UT5N5Un+CtrIp*3#JpGtG{ zeHh!6ou1e8|7aGweLr1xbbXSr@iT<|DcS1_caLZJso&8N$MbIhd$}ORk;26pApguE zrtv=iz?V=IhwZVeMbTOXL|<6AgSQR@dbMDL%j=W|JS&VdG3GUC%-Yo&Y-4skWxvGG zZ}&$QN2ZD@2V< zmD_7OtK`M9U{wBDRhG~)%#=A(rEDr1Wvpt2uPw@mHV{1BWYJX^G7pP2l;hDdiHo&9 zB(@q(Dngr!o)KDUy2-4oLwVck0lKu$><0=(+M$2EYBq1FJ99Yo`R>_znc+<8Q3|4{ z(sW`9TtCqM>dw@ginkMoGsDAqVFsk`=!t%-vvT#C5~|e>LS>0`a>dfz`T-INWS18< z)iS19Iz1^r%mA5z)0ehFBd)*cg8suI`_9}!YbxbXeWX+mF_|wgSQjnH?_M|%?n@mG{Pn6WZ38)nuxZeBjSWN&v>Iw8I(M{x2Rpv7#SXPjnNh3J~W`4gqV- z>NM3!jfTCZTS~xq)%hKW8W43a>(&~JI@wgC&-e9n)YTT$n4RZi_?zfQhJdiEwgvAC z{<7NRg6%cnS-zwp$JETWs~%rxQmc1fsjU8bxt*AFa}O{jdEKi%n82KcK;l*W-l7X`CKiosO_=Yr0MuLZ0T4d%Re~ za6Im~fI~8Jfew6{c&!63wgNVFtXnqGOni_}Z*b022maq?Wz|Kbhc@>-ThPGO9Vx@O ztW2FK9YLxmhCxE&v^Y~ZagwIBbkFxbq(FWRjI$3(BYtm1_xs4_J~x!ajsfFzoW$WU zjvqbpY1(o4b6yRgw;=DNQ&|&T@t}cTs zW5nqaZ@0}T8vB+;hvN>Cqd1J}AV3_`B6!bpsjuIVShvsoMv*quYzv-%atSY%nxlcB zT756{jcz3kx%nUqalf|ROzm2`~BTQV*Ke0{AGu?y6NwT(b0VU7u{v;P5#Qx4ug zswwWX`d@t@o&nw&n+`KY1SU|z6#8TtfS3gToh-q+%WS(}7l;vcOC0p~8a40?m|bFz zSBS;(SGcQMquuy?eF5cEh;&fIDluvUb)6y(+dzmj+mP)b14a9sIe%5H+U`(_@EL0= z;{l{;0hi7+3sU{5)A@`tahG-ou0y6dxaWno#ifsa0 zgM5i82{t4pB`LTItyy6@=D=S8U`CYOF^q|MFvEmkF)W8Yckf#OGvVjK3;E^)Le4Xu z)hp&5c7KN!FYv&}*w|Q#88ljl`ft#{Hxv~pac(Pp4lnSHEoi2Yn)fR*Z5koIJl@_s zh^l~_%nK^!qVNWphTQA(kG z4_o9BQg(Y*8Xno;b==$+Ihb8S5zxyT;E^q=dmb0&TvggA zo7&v<8>j5jz?02%-&tj&+byMJ$UE)K4HUNx7;L&cG%@Dc&bTH5&Kd=C75edmlcHu4 zAZXG^-!W2_?NLj5Pchyrf>exRGIC`cTC;X)R6cZ2wKVZ44S>Q^PX>Je^RVxt$ZYL2 zoevfrOUS7R0LM5vBk>wK$X$1|LX-kW#K0*!^!1!$Z&0xdOcNc5UMnZbK2nigdzNbp@s8gZOK40>~ZMKpp^aFX5- zZqlHqrFX(hoS#_;WxE^@Qm-K(R)|h45?&GVF!O>Lp@NFMRkjOm5uecFjV9}bvlPYP z5D2jm1i@G+ch=uIhb#&*%f=m45+n)W+*>Ck!@+|=l7_}5FlCoKV$BxC11pQH6|Xu< z<`i16q{s&*w<@D@$w$Ux4@MCvaKajmdRZDhNag;~58d8HP~wFL0{emqG0BbzXdP=H z4PYXHaUb^-DQ!Vxck*jj@a884@7Wt&pSMhBE1aq{6&5}%kq)ODbO}SjZp==E`EJ~&<_%T(&6vScUrbucjtRR9ftQdE9 zLskg#M5d+{5d}~xqR9TEmx{Z9OwCYs%jT?ZDmpoM%$2*yx&kq?2|~aiF$m&qW-oS4 zTVx!uQ!YFxwya&<7Th+y!y8t-pd4kjASG!Qq6!=~(#GmRog=L8meQAr?8=ohUz z05W0;z9_u`+$1I#8D(tJ?;F9 z+Z~fspzYE?NHp&FAsMH(qdJGsN+mPSjXbFgxjNy3qBBGX--6wz&f@gG;wm6X+}BRK zbIDqFE3DS_dVo^KOsRHp2PonT=_G>y4^r`3#(1BlEDf3Eir!RJ?00E8eXl+|mT3{D z9+HUndJ=9);75>jwY4~OH>EXgZ(?+AF0X{}dRH_)#$DAgw1YHEn{qmnH{?H8vG5dZ zi|h?UpqT7gbu&iaoe_H}RcodJn6kL|B4KKf$p;Zkg_! z7j^+Rh#gx7&GZf|8&KRzy}!zZp{s)LKv_4qC_O=HGwEQ#PT+N+q+>kyjVs)@361qh zc3I}G0L9K2ZNQsKc9ocWqFbAxJJmP90|4TOC>e%tLfb)E26<=Tsg70z7X-IZ+Cu@B zEfwB>z($RM|6t&K2P}Dge!aI}L`{Sur2=5Q?szIHKKE5ERzmaymFW(TWoqc|BrTSq zU}*!ajLy7O+G|+sRYUH=o=V+ZF$Jf4#`959H9#!zi#R% z8ccYfrZMB~^QRWr5UR(b1>+nHb4{F_Z81$?=n?I;)Jmt_Q-j0}j+ZHugLX>7ZUjR5 z+8DIf2_b11Ag~DGtbv$+1W7(r&(pN>3_OrO9V7hvr^O|?x9?Xs+z-3T76Ka%uK2#; z&KVXPh$N*rYFfD5eO2C(DIm3X(4X7gUKDUHba}69Ut&|_*U!Dm0CEqS)oH7R2AxT*Ng>w7Bj0H1nZKe`X}lO$HM_pXAJp*1Ip3_9n&W^k)bdjZEgqqGho zu>#*0tC#Nx(xP=wQALu}XyU|?@h(6B4 zI|3)V1G@0J&uYSG8W7l08a6q@ZsYY|+n(Maqyeq=VqyhLs$ZVg5;#72@+H}4L#h2Z zEKj|gs~#Qcu@CjPEtDwYP05$b=AP%u-K*(=B)0zazyG{JOL@wSXV^W_LejYGt@+Bd zN07pk)4}IFA#hPugNHHOo%AymRhCburTXe9gWOQA&>_y*cROk_p#)?IBNt!PLR6aR z-&}M*-1QVi7A1hL8`{#4SaUTM`_=q!`?u_6c0g-Mq~0P(qisi9Cm0bMqRXb3eim9` zX>Bbb{Ot4@R#1tG$-!=PWwgUmt4cqHg);**>OknPYh1Ode}ASliwUbwxI1I;pW=>w zD^!Q`D8m9UR41p9f3`Mzq?H93;k=LB@JyfbPZnB$iU-A7s(Tnzw7jwD#%=J*p|G;x=eqGBQIfRUHGA()mJogqGG6rQ08Uku#wjE8 zy2+x1adyKfQ_V+?1t)HI=ybK`@g6|6kI6+Gqh|mR5UA0rvM0%TZ$*&>WtnaFBMR>r z^6K0?is!_d*-E4J?{rvkDNsW_MjKqHLf=vqTrIxI3$BW;L}w^gVJPGZ#{YrghFrQw zIMO%0gv@eD;8Y1a&~2mQOn-Za7`~~IQ#sx}G?w<_KE{$;VV6*cktecK8E8@*PTBmd z)umSTS($XfHp(Sm`%{sEwGNeL$GPalh8#$t<|RPh=!{WTxYz@a2$QiOAx7Pl@JcKz z7CG#*rWmqQUHz2Z94e({+~>l{gJN!;S`vuG;CsYQOEnLYh}H}!x%-yV9}4$ZtcF#d|qZW=kR%NOm0m&<2(brs1LIc(&Qa3S!>+`A#(d% zSLCx7_QE7g!j*8PmD9gOHm_2END{N=%AH*DceWIajcC*^3lR?5fZ!ddLVlyjJolU) zspYe|se(nuH|%}z->e~+=@bm!yprf3SSE36Y#U7la&%e^dihfLn;%?#Zye zss?$@MBXtKRK`MgLK6kb1x|Y|MA~TeCl{1TCX-wcOtoOg(a!~u%DAs8&$Ytxn(w>P ziT+|AV+9t+7L^t_+ZBez1LSTpXd|;pXx#&BTo>dVYH)+)%eV|aX|jgxJacpjg zBcgXrI&)X)llk?IouR|K2N=w4$7{_a9+J`|lS|bgyg%jAC`Zz?j)h7C{giEDIl}=! zVlvh}S^b2r(UUz2VnAHe9+700gDtMJA6UK?HeVG5-edpM8j049O$JSh#dz9H5K4lT zYZl%E4~F&HNy@>9AS}b~lYfxGfP3X@XYMx5k)HzkyO~#H$AaKp#qQ!FBhRrDy6+Ot zi7Gsa7T5{lR@Hn-0g9jz`#aYn4`0*I`sy@gu!&UHMItbkbpQg`9SEp|#kv}6%$!B{ z!8#3YVN--CxJ7WdQ*-Fbau5SKLFHni#!;@O@fNjlCdGF2o_x^zrrSqHh`ejnfr7|i zp*Vvhb);7{nc8^|qJu#VoU(P~mm znm##q*D?rb*WbrPoLue3R$9M7CXb?0U~T4OE{t+ju1&#W$oNIVqm-9Or<<;%`0*m4 zFY9&eHDQAP&Kf-Mm5)&=5#D4PD6|)>8!dH(PnJVIGvmXK<$X7kAA$!L!eJ%^bObO4 zB*0^;y6@dDq?mf>h^Wj(9en>dU#36pQ^D|U9NU0L!@gBI{<@b_6ev#-8|(2)gBkAkjwZg-WGK}Oi=_Z{ym3<@q3 zC`ZgSRyYBcW_aQYfpq|M_3QCB`CsMifTlo@ARI1drsZ zZ1cou3G`*~HN^W^IW_Pjz(XQuwxz0TaD&;LtzbZyLz)d%l*Qn(#d{e%Ef3od9&n(q zy3p>jE(__!R|r_GxB25#T%j-Mn=fD3ax*N4nP*^q*w(KMhki6Z*v@cw6E8~Gsicci z!Z0AdD3##YlTnAL!xp~>2W~2YIZv}2S)Bu31!Tr;;>fav5t#>kZuKS-cdKB|R^5lm zAiIoO%n(=`A;( z38KcX6B#_+C5Z<+DZwOqSg>Mwd607FshGXZsusutivXvIoxXM1Ivz=7o>gmX*3iwG z^QM~VKuQ2gDBvN~`Qco+wq=nh=N%>QOUH*I19PTo$I_WpW7>~LKONIk9-pOTY11%_ zubU<3P>{0tkS-qHJ@DFBqBMDtyvu#!gas~lw?fT7B7wK)^AhCZ4tc1R$vD-q&pyjS zTf_y=vKmUxhtTm1#T+E<;ut4oaEd*i^j(IH5$w!!2--PQ7H&e$T!Ar<-Ja+AEdV8a z9FqRbwz*48t`-dSmeBNr$IpL9!aQ4wDy0dJ765Y7VJ4|R)g=VuWEI!+Mt8+Wm4k?+ z1iY9GbMp($k))MgIfqL@s@S9yCS-k(pGFg6a~b5m#Ly@J$QYA1$TGjChGDdBU=wmHwsTDzag z*IPdcJ@GtiU5tn;u5yE7q9mmeK(T6`N<@4UO@WpT=_$2{1mcN8^j2GPoOjZAYFQN< z0%#7-k-!VTm`mTejv6Z(d0v~Ph1MiUF2Q8uDj_-ol5ks&1yF04ej7LfVcZYO5t*`O9EOcli&KGBu|)e(r0B|cL&N)`5G=WnQwjuBd2qIGRR)`? zg_j1FPKvo1N>ZW;fDA59I|{5doSmek(qafu>iSrP56j}pbBG`u8SNqr#~3+6!7;l4f!%QrJUdk{s zCVgFvfYy-mrIdJsKDmFQhP%lq++|Y6jRAKkh}WGKnH)pxb4j)f?mE^vCxlYGO``zJ z)IR8RlF~2t)BBXw{;Y+iRlxTRo17N}1#)m`fEi)z7A|m7aie@p4AoMrOP3*le zXuSgPh%q@Tex5ZENm38vy{HLhgc9f7dFXAUTwq^_Tn(ZCT!2<c{m&-n3G-C9V+w=KvH0Z2KMH(9&3^xio=g zCR=bJGkSi5&RvD>GV3Qg0++1|Bb3msWvgvikIkeF=mpFlpEzH9| z&0JvkoA*#ch^k9wEe5+7U#MIBg(}5O(omY@CJ#dyYrHz18}l#)DIeImpxkK+XQGQJ zMHgzNjpwKm0A_vG9_>4*u>J^a z3yxO3-B(ZIT|)F1x;$9~!b&+dI$gtpMpkl7-e1FT0(2+})z^RRA!o9cjBkySh(p|@ z=46wSFmu4dxC0JB3C^ULa+lB5d^O`+JNI?K{yEcM;(z}CwhFI2OKlfSyWRYW(TUa$ zy;7Ed(2!09n1eCafg?O-|;&oc*%If&^<8Md@2 z49M(;Dd=8oc1~8z;R2kBVEE$XFpMyEy5VgAfz6L1XuceP+wd>%Jp3Wu)x)s+Wb}@? zGV9wr{(M>=Q=HC+!{vL9aLh)?Znnd4u!vY_d?b{75z-`$MjK~Y!8Yl`E=Mri0bP9Y z*Y9acAGe|fZ59GBRI_KPms_y?Ewp%}K?z9M*Bmgc6RO6Rn>@V6{Ufx?(;Y6m%-*N0 z6K{BfqX&>3L)>WBHBaLQ7qs--s6=m@ue(5!Bqt)z|wsm`K?`^tx6XOS> zK!taxd_e;#&|sWE-KUc2ilSU97KXm930t`(*{2OJ9mkognP#@&x|1ogTDvMyA7Uj&S(P86RkW(BvBEY^ zs-%)#2X}O)4DOKW=oF5!e#o0`A46RSXRGDp;~Mx< zV)?E25#TBH==0bW1t-$!D{yTF$qZ*vkja{eXuGC0A4kkwo&u#2?)mjv4!9sJv#P4( zN8lUxX?xl|mL-QF%wra%>z2Hee%jk9zquGRCK`cTosWJsWC?p?jDSq%w#xr`ff%y^ zm|0afh|dHaxjFLL@PF{G7$s=3Rywz}Nm*K68vuYmwf{#XHr@fS4L|DX?wX(EZ0we5{QuM}CFFz63M|AokOx~noyVp417tr3kx<;^w zqCp>2iH(@0%yp>EAKvV|(RhM^Deh9~7ynuA@X@r$Rr==hXw;^0-|~${ zi=@td54E=qdlsMTO5%p+#Z^{aAsZPY5nzzCnp%~llC4&8T)36GrCAcen63wdYl|s*%4*cs zi33o?U`7?2$2M}NIz(q?CR6Oo3jN)ZvXb<1NUX{}08zx*fo-3>4~r8^l4U0+B_*?K z0;9`|vPcstsCRh&RqS!Zg(*T`p+Ig=2*bI>&>b|TwVy_U zMcY;@-|;I(x@>Z`R)v|nQ&~7FAB=|c8t`cRts|-sORrZ)zmy)D*7rhI zbrd@-#KA}f9So&iH|BX> z*m_NSJjdJBXbZjMvGL;sby}aPuWLzm`lmq-zSJNxKNpl}9+~7;@H6wN&Lbb1L$m~3 zr~rO8>(R{_Hmjp1P+8ny3ecf2C*WrY-2MzWa79CDx0LKVnr@7VKF+A6h4u;Fv>_xPV`sta8#MQ&}qROcI8%!npZAQ4tO@UkD3MjJ7Co+aYQ zSJlO69R}1E@jiOOLl>fEi?>R~rA3;;@gl&DRc9fkYJk73k~Y_89CpIa2esB5$hIr1adCLVNJiZ?nB#{97f zAL08NZhIRl(~wCPeTCY(ZqEdw6t{F*Std1RRx&m@(?qUdgn9Z~L|IoKn=8hB zH-|-yx~A!7cpxfqL$6g;(oh;t#KsSvR9lwSvZqX24ah_**5!Rt*_(Bb7R$x*j0lRh zIJ45)wp!pCC(NoQ((jINi<6Mo&HP+5w#T;J5wxZRmm7AS<_KhaOy{<9eD-c}TU@TC zdpA1Ax18nS@uQ6=)VRks-fvHhvJj%>C`)#f#CCDZR(I?(4rBNX>q93nK@~za#vndU zWjF(~g#CBe>5mStack)qHddRb?w+y6#ewzW`c&MwH{JJMysa>90Q&ar+mW}`Hh#Oj z%x3y>CYY|L>zQRgP5lx#FJ3&Kv0kvIlNUG0byhYxqmUi*Zjh#bdRtyUrCbMbWtH$} zD>hM4%4g-{%5|il%gVXAF$N|a3dLv2S}QH!s<8L-ZdV~SfOK!ZS)}4{Ya-7EJuN6l z(!gDMYNeasZb;SG)v0)05$ZQ&xo3WZIL*;CX!olGhYkI$9#zJ z0|4ITb~K;I^{}HKXGWv7sdD=;V-TBmRDjsN9DX-b?{;W84}Rq3C%tFR!#dJ5(`4R{ zRbRf_Ai?EZ(PP1=IJJ+S*+I=-Kpi@)}NZr{q*{+ z9OC`)RnXqK@5xqk!K>J6@|FUjQ9;_&o^Qb;`A zcnkCGdT_bAJX1Y;)~*cO_D@Fo(rRM&bhOexF}2f~tR00{_CGk>8?=e)hoT+|=K`H5 z?{lx2A1~HXa2w-Ew6owL7j)XTF=;}5Cz4|kKb(SFD&eeCH0D9O&LNW3bzX3d?FHj5 zQ#tURDWo!@@xXMX9U7QSU;XCgJVFV0B897&yu_dy9N!@Jkg9?4mDDi8kaWgzCojvk zD1;mkm|YsEGfP969wGyliWAE}7!as7iUGWSR8JpiSkn9S`n|jEg_oJ(kEMTac=a25 zzyA*ATQ9qB-@pIfi@Wu&{L0V&_OE~XXMeA{xEQ9fTjQrpnfJrr{=Mm`QctJfd%C+f zE!z*Be0g*>zyqNDmnnXrKQaz|&v8X+XkNT!pv^^HTtBgWc03h!=Kd)qZ5ow)T+zoV z;CP~#f?NGOCm(Ij(ltGYNn?9{>_b6#5=INaoQc%Db4@q26_J@&vEYC7o4*=5frw(d zh!yMdR>*kkQK`zJl32cPaIT!@!u3`o`&`h0Mk@3IUptT|Q;tQybkhhm!(-C-xwT`g z6&gA*K&+L9;3&na!PjxD1aru|)p9y!Iuv>jF3cq>5fce_oWPquE#lBG{i2=LRvjNU z0AgIokfG~us#q4xJKl2Ga8ZL%Bt(4(>QW*x^#uF%=06K|>x&Rk91f~m^p^jy8@jZi zyO|gQ%}R$e4900BkP=Zv^EfF<_c>hz5B+<-{fv9c13gt?6ZtS4%nixIAzMuVI@N;4qq2SwDV zxwd98xm66a(t%3VY+Y}NB@7EgaZM$Zu5Zd{jeg>03u436L(3bef?yyl*bYGvxn0>> zdp2Qq8vCj2IU1oR`5a2c!*~&5c2pUf+#FBvSp=Ke5A?*K;4)4CI!(gX-@v%mXe3V7k*f@k%36PH+NYm;;CY&L0im)yGp#xU8kW#J&eU$ zhzPr=5TbU@l8x6^O-1?M)u4+b^8#@Q4T_m;5XVgH0MzQIhL}z@i{7q!boPU5#bzf0 zTUcPa-A*F%Q?~m|%T2$jRPb6?Atg%&Zk?ORXxcQ&)D8ze_8YJOm!{|DFP|RYkb$8Uli?&CU~BrM6N#}{L=SW5F(&o2`b!tP`$M7@ z$VFP&g?XLI1Scrr+_V#&W4W$*)8onkYvnar(+y!pHP_-c{L{U8k6cu7F&L*3F zVAtb_0GXf!iZ(_2J5{xjP*U#TJl|a+)`m*wPq|n4xcVYBw9BTYS<>n5c0rlg4+yYwhPU2k%w0>25iFXFd}R5 zC(c-`U8@ekQs9x@Vu`o~<0Jx<-v|UJ5n>~7sD)6!@nppq!W82zr5*PfgA*pg2}fCJ zv?UrsIpIuCT-eUFQ0nPQH=U#jz_iHIA5r6CAY5x*v#JBUoE~a*XA%KLLA|&w+cCl; z=hkUpEU7?$-SEmhoq4p{>VtO(&m6jUeDt%;rS;siy#Y42w z!o-`IsX}VTvFYPdkJljPS*ZZ;yHy-l9h^SD>l&$!J~^I~6E0|?KbvwC>~8^jD?nHv zjOcmp>0EW!E~BZX#m(Ec?dq6);VH9QsnHQCDfWtLh3zzjkyo=1viMo&n@TUtHgz?8 zm#-_kYv?IvUDzg49XA?Ib&OSfQw8%(KIq3A?0$xA08GI}34cW|LT83cJ9$xeLBf6kJUeMHev>m#xf3c=5WAqIo0!?qvleu>dT`Yn?>vWK0$~EE zAJ&j+dT8+{S^bQ6ncF~69CR+07Cd0m3u*d4abg8J5TE&|{T=;3AnKpmHK=iH%PxK! zU3bXqqlsM~JAn=x$^~`F&fd;Z@fkZ0Z3~92nPf za!0!M0sW!}RpfojhNt_K#HlZOLe(d4#e~>}<3TBAQy~By0}QJy z{~!=l#H2OW4L2sLL@KFEvw(#Wdc!@@v1_-ejv07TZXDwYZ;rPQw22<$<3JA7`(`Ss zU}3z2=9U36a*RAQfd?5Ri(h>Ee3IT>Q)Wxln`entEAVR;>r~@-YmmF3XZ_hN*zc-H z7!qUV5w{S}YWg~@yDm;8O6KE*(v;ADr|-_#fepo(r_Su}s@}i~9mKP?%6Zh7AFC$V z$n&bD+3PO~f<1L&_9;D73ohJ3dq8$s)wfL(XT4s@`92b z@KB5@)P_hj9BPK)ba#?kV&!)QEzodu)q)Bu-sl=J>zquIGF=hF6oW3UgQm;TqMHhe z)3>#K5_S=#nVY8L&ZK>AhMD0&D2M}P=|dnUr4$1+?V=ub122oyqfNDLnDxZ4yE2_?(M;%fA?&J~- zOFONK?KrTr3_CvFEZz$?MmY(ps3%=`I-X5(agWAz_jY6VTyJ4%WtaY<;;PhOsZ?up z1{GgM%yk@kIazck2mm5VK6cT0A<}tE@TA%>5fIK5CQc-#^1qO508a-IA5u*Ta~zNW zZ2+i=ir^B#ZLH%NlOS_UNE`$$c8G9%jA% z!_i-8#H^4TUBO}kC zm+5+vP6NuO^JkGl1mxkw6RT7=zj5hmt+jjpq?&cc)hDOmeq4<^B zi)aSJ&>YOTZ{fTo490jF9U$Pnh44u@3{v>w>T17TF4qne+~6^+_vFdr-J=D*94|Lx z->(ZNw06h4(lFc@J~iXS-ee;i9VVw`M1FZi;O6Pn7~f)1NAqN1{y2upSE#0HE|grCR?yQ7R1omgpP9gO2apE7P(HE^6GGMj@+Tky|klhhYM+OtAR_(P@b>3vR z3p%_6%e57!L~_@kTy1}&^H$j|Ww-x|U{RH!{j{8x&|umTF;7~pYu}wjI@eA3mxu;L z4NG(KK&tVG3uj*Ep(9EfdX&9I6FqD~oqI?!PjZM~{?0n&_B6)WNJj4oWo66~i26BF@Kjw?IXr&>JqN(dD$S ziWBOEnFBzTrr~7uM%IsX17S7Vwo!}3IRc~zGex}#3|l>*5(jy24|?R zMRl}Ai(ld+%}+a+=o(k<*CoX>EDOkh$$JUDXDl17txGftq}TfY#FcT_!>`#0*>+A^ z0NckiGU`&PrC~esBbCSm2U$@s#&i}WDfxyjQD+!w$PYw{(%{zrkcZE3ML*E(8s&bB z)7G5!-G!b~^E~@r7uYk5G(-U+MQOm042Y}PAL+P`Glz22iR6fZ!Q*_4PD9Bk>QIi# zanA|GuD~UI%>iuRe+ij!KZ~qvBuT)8^lK9_wi0H9du5D z)F>OZxfi{o?f!6~bvmKeGV<(APa13+*_`1}2aQ7uEvg2*di49aR!;4<&GYQQ4R_BQ z$zrOKZ=*1rLvEbl8JDkuVg+rOXS^~sl9#NPf}2HIsTJ%2x&&M4$>6l(h#`eC^}C&v zSNB9EcS(pp)y+Py$7nbg(vLS@%~sO*LjB2=To6MDvX+qu-8mk2^((@IzhURsT7L`O zq0wFHMLlDN1t2C|1%~EduPZQ!i&}5G4WJ#Kk{1Oh5#2>7TjOr5*QkkrOFe+3j!P*a zgMfuhUBP5TFBVwBu;H3!zhCLpGwJOyzM0za>v~nPEq}yKv2M>LQk=mHnzWfKY$~*k z$}Y`^DAp)r@^M*Jik+=^`Q#~FO-46RVlQ>!=xHL#~R}#AyI;gz&j~p^Oya9_hkP#2 zs>^1nXqpsw9F45j-ao0VI82Qs*sj&_@1U*7Hz|WOsee#8vK-YEe7HLc)$rCm8q_ba zJ>afHwxV0@AmV zfVcqG7y5X!CuhAjW2fG3)75Iqy-H4iZW`mP2W!PJ$b%+Tjkka7PEa*L&EUid?5MRu z(D7irOsekiQ?Ex(w@EqD{{INq5 zDei7pHhAn%`U(l);Gb})ToiR{r+Gov=#kg{?8F%Q;U0dA@mVa($MdUf1^n$^BGQ~Mb-nc{lO-c4#c}* zPW@7l1`Ts8H_aRp$?gDikAZnR=HBXj^>{PPRHvJ!BK(j{A+Ule{;byA77vt7{*#Rh zkLs9GUm>rmGseE0mK>`m_sgXkl>-F7+3%%!2$s=p%RLz z8S&+(fj1D~v-%Ar0`UGDScu}oH&9r>#W%1qkMG_4p%p{P7K@xb%F`?j~7{^J}RxTAXa%Xy4EWphQIw!Gscqns78k5J?o#EGC8}#Ih7E%ZTH3bi|W@9s@=aNy3DgWKu{ajpd}X zf($aTkVQ78zn_0VU{ElN9TFNA9x-i1g-R!Mc&$pKI{hY$#@mMYYS-$EuNri!w(6nJ z229$s>ziSRth?Z_$f#z~8)7cH6e zflwrtNM-W)nJZOljaH{O7)@r2wI`lsX?HkXZjaaJ;OOKGV45)-0EZ_KNn{F@)^C42 z_abWslf~w6d3=FTB$h~Jpj@F;sXLym7Si?7t85aaWP}lu*<$UsC+@oEz6Tz=<59M# zi>sTvho_gfkFOsP1cpFia0C*C#$cBdXlN;c{x1Rslf~vJtEj4}YiMd|>*(s~*PDT% zk+F%XnYo3fm9>qnoxOvjle3Gfn}?^Dw~sFZi9%zrI6Q$!B2%a|I)lk#bGSUd06?Kg zERo9O3Z+V|(dzU7B1|abLMm;n|EPqbYPw-sw&Qw2`aw60;v~)TqBLhYP!rmERTiwh zm3iPB`jnoNuA^4QeCN@4GM%Yc9bYV0Yh8LQrk^nqM;A|_+Rtov`@`{czFcqj$Mg06 ze1C`I=?oZ_;{{QY6;;y>)3P1c^Mf#olQe^QQC4-+qOKoCOs08RH+s3=?vLl|{rUbt z2u4s0CrFBBSdJG&Nmf)%H%!ZR%9U!Z-e|Vkoo=r`7>>r1>1@7OuGX9FZhttQmd?xd zc7Hry@6VSYDVkw9UJxZ&Q8nE#E!%NDKL8A)I7zd-D66_@yB?5O)I73!R)5zJkz_^H zbi=f4$Mpa%2*C)7;RH$149nvSgd(v-Dw8XeDz!$d(;JK?v&Cw&JDe`J$Ln)&baDnT zSR9@}B#|jp8lAypu{m5GUmz5TB~lqES146#jTX}B4MrF-nJrcu>f-9=?%^4X7qK|} z&h+;24ZkR*%9N{6sS01UPXpXdI*vqf_xW_wkxR87#j;m)7`fP&nV@kA5BaZHoFJ5( zx+ZgPMFt_945wdf!u?fDCqiNBHK%epP4Ox4TyWT++;wt>>wFT3YE>pMs@Q`&%)+mG zP^(6q8!{EMVjw7jYH%{JiOp>)ENvDe`n94qN@h# znk<4&%rmW((~*s>eq}0AwFVx51HUq*e53B*dw9LYH#?4Cvi%YHX2*g}NTWK(ztV0p z+WWq*W>vG>e01;oWl96IS=7_(fQ8ehv2dnk^Q;Kk186`O7B`cXK zg(?qGGJguCA#Jn^n5dapTkxX9np$hC>ZE*aDkzsacXM_5UG;GMCt{VeRcV(E7bf3V zC@(hyR`N;{z&wjJs8T8qT2;1|LF8-n#vpippVLs7sv9DbV_h%Z^Kor|;mDJ27Nrv{ z$dmx7`;l1j<8Eo6h@@ll=t7V`4%S^~T0tTKRE-HxA=j!-IOJfplM)x>kmfO=j3*T# z0D%UOF#!O8Qc5YMl+w#FIOqHsBoLsC3%OQJ!USjvQc9_mQc5ZH6}UIhVnUbzWn9P< z@Jj*J=tq9J&7=RUqwC<^y?>M|PK&8~#xJH9k+otBa&0uLVg<56um~ z^cXj6n%nBf1wC08i?HU7Q5Vab<_#k;7i{D!`bj~_(%a?fdO==^(FM%0v~SYb1uy~1 zxR6RuXAM4tI}Qsbw*p?e%DD@M$>cZq@UkVE`MWx#zr}Akk8j8Ir=A@d5dZa4ZLg2Z zlqj=3(FgTLv5WY?$NcAdJcj!suOn@>jq|%OSylf9)0+ewfm3Ca?WqX+bWn4(5 z9oOV_2os=;3#qi@8ZX;Nm;hy5NTnUuc-byt0+ewfm3Ca?&AS*8CO{b%QfbFEUbak_ zym4PR8vqc35fsA-l4e+rPv`+41S2Sh6C};B9G}n&KnO-q3?~_u;}bdngkS{4aDt>6 zmg5up00_Ydis1xFGc3m^bODH<7*1f2&r9;U|7D>4|H8tR^6$zw?1E=w4(4=tP8oF& zJ``~fR1cm4+Z*+Q1|^VW(%K7EYo1-Y zFZIbbltugpER)Y7{?ntyZ}39Of3VOKXtLnH8}QyR7EEw&E=9$eGn;avVutnRW5F8|&$`EwXKi3csh z51Ofs!>QsU{yfGv?X>=1D)v+Na5d!*CsXvWkLbhRvqI~9%e6Lgct#VzXG<2lZXO+nlj4W@_=F9JpVwbL sKA>_s$7x|9PP@q8#SEVgNs+jhFSVY2`RcXSI9}qeG9P$E3pY^Y0k^?P^sPuHs*^98f*i-(>UYFZ_TcJeCTwOy%dZ@Vy4Pu~2M( zKSFWOm9)c#9LYv2G$rw#U$b*Z&veP2SbwwvLG$h01Lr5{lE>|5&02mWU5)3ZAvl2bKagq?*I^Dn+55$glFL7Tm=Eu&ET2V>7C{+Yd!SL9Qm z9y8ZK*exR_r(kcvlatJ?^hE_{`Nv2thC-dN7fWw=2pjH3O6Q3t;_Nq6a3KQ~`#Uim z$BWMYi5%X#c`H6Qav_~#C9Jfjo>Qz`A|LM3U@P=v@JlPAP_8l%iyfMU9@0x`C96b_+?UcXOxp7{Ot zzxK?WOI^Y!+GvcZ2WAs?Vt`R#)eFS`jYy0RB#Z>35$*ulw(-wA*gy8<=l!1iGamQ{ z1Vj|U4Vr6VY8tMcn&sNLR!h^}uyRz|vNAIrpt*G$QEBqDq@dI*@{~B|91$r35=%De z1+_8C5jKO_#6*}QYh+H5FN^{xY>=DT-TP0Ieu>9<;z8jMM%G9KL0KHf^VDI!-P@UH zDaBd`%~>kdLKLABj!?!!eE%oi`k?*)u2gkSrMjZuZMhbe5G(>7v;9OA-pugNKZodj zKZ9aP2iBlKrP^FpE_Vy`ctaep(%4`hRk(u6LG?TeJoRh(c8^ME6W(7JTVMwaM&yK# z?$qcSSp}%fK?4Mo*erm6`FGP`{k)FmL_|qlz92Ost-~er*h)o9tW6qUE!Sh=$Je`za$!TY6w(t@f!C zqDpKehPo_z&w6+O~k7f}!rYKdR2Qo-PxoRtmdjYCWi5Wa zU+4l0#JFB#Y>>%CQV``zl2JBF1^-{mUgwcD zPqVEUipSuP(YK+Em;kb&30xCx4_fFmr3Mi~giWO%7-2l$RJIzZ5UJDn+;`#P(92&c z7bCP_!@L-}ycd)5)l z0fH9c%Q{%|8c7ETRS;{SI$fI9Wf8jyL7k%OQr)Bu{C_|7U;2->&(r_5Q>rGc0TKY$ za{^Ep@{_Laofk=?wC)K^2h?)fNmqgz3WA@|AQT>+->XW;zb8{K*{rmL|G0p}WkpQu zIbK(uuWL-1bxa|ZIk1S$qyd?XiUCTN{q+A$f;ee8rb;QIBJ1WHX_c`;%{M8t@y z9%Jf%4lmGm1EVDI{AOh;^pTAkh?%(O>PPPeryuhc0mC9iYiYIUEfNwsUl@lT{g93Qx}NlKy(En9EjdPL;@2- zSV~w&*i6_>NFW?0+#ozAq!2PrAyXE?u}=^|i4G#RAmUPrUF`Cy(gmU7imIcyy2@zW zwISq4y#SV00VM4LNV*2FbPFIEQ6$ndlf{TJ$4v7&4uX;uL1c4*T|RTkk-i2$Fml~- zl-zUymEouwwZJK!a)xKNJAQV-!UgxAU17r&kMD-Y2{%0PdI}vpj1ZSHo{F)%hRiKO_z!RLVg zeH$ng8W0TNjD-y+oN>VwH|&7mjtBlkOeTXEXXn%JS@dT5vUy=%(;rU|KyXHALX=ip zK`!)gjG~CMP#i2t_=3<9s!+NFlor`1&8rChxL3?+gdliCWK=YC3{1kJu8u)gc+WwH z9Cb>rv#z`Ao*&%zz`y;+fBot2@GDC>DR-4Ua*>Zh6r&X7s6tz1sxZU ztPDBqs9e`vcf&1r#G3l_d47j}_KRQr>5<1uYv}S+*&-WNY0XqutgJtoK*1jRWp}%0 zs0t?nWllAt=#24!!f8a6#Sja4uGo5iUlDvba7W0XJ~uuh;)j;_3;o6Z6FcHw*=iK^ zt*|WPv-QfzQ&?U~v!hCFbE;`*>F604ftifV&T3)V%qzQLapbhBTqecM!<)~Z_yq+2 z9AZinexyU6qRc2`vf2h4ZL--GTW#~$6Hhf^Xx4&hm)-U|;GhJD9Ch4Dr<``iWp{gK zNvMxqmvS=fmc37*NiJ)$={_@OQK$~#FpCIRGV-DB=f#RaTLUR4R$22OzxZpit9X0y zz-ldF)!|Rp*`Njc9E)*cTx=XGX}?mLvtX8|D&c5j?X!3!9kRx%JtLkwt3#H@E}!)` z16L66-1Fim#EvKlQc~=4tukTctYT$OkAGNL-jE_CzjYH8BdFC#&*}-L*NxW{Juj@a zE_UWF8Z~VJJ=g5m_utqzM{QhX;|Xmgt<@YW|_8+QjIsKY+r#mGV#fV0Xux;I5ua8+-9Tunsv1kJXR>`e*CTXc+_oT#YMDrVI4xLoGZ-qnKY z2{ja`ylc3`NWUXXbu}i6H5I_*83ZdT=WZ@m1RoE#;tKYSsFtfXzh~XhmmM&3xB?qB2cm&SPIUf}kB@*3hvDoDT}4 z#h!6V&Jo*E#;=CNjxi6ElY?2{@PW1c@_OQ>3Je?q8Ws)#5ox7aqtNUiAc$L zwK*&^6=CL>=d|-Ky6lGto3WV4h>;`>LiRC*^=6uHT}zXFP~Ke2q*-abt;w>-!IU}S zj7!H9Zn)=(6tAWE>JR^YoUW$I<5>uZP3*RX%Brj;o-3l90Fh7tMEtf`qpfU}c*n$T zyqI#|9O*rP&I*p=lUXBTDj82F38UJSDXvRY*Gv;4oS zRu5*~7$~!6ZMd1k>m+;YUN^br;3tP{vdBTMd?DLfq{)_W^7Wfy<)&P=RMb_kS=w}~ zl|I8#Wdt&1UZ*Ta)@#y|B$Qb(8gYv>abc2@t1`6`(<_V7e>_bSo>JeRm9FzL&lKWR zr$3A1KmEij`n`^GML&qe2EPjEetSVkn*@6B^Sc}muJJs`s%c$K<6BiWNG=J8+J(j(z=4r{SBvg`3LS z?c9DY9?bQd?!WtXM+2fhuqasi;&^pB@Ff3WQd}{jIWPQP-+@kaCzJ?!G2kr-V@wKF z3dAgAGjG(ejFqIL^ngw6*#4X;O0AO+>3Hv9=&dekWP5_F4TMAcmpiB3@yE=8jWs2^&FisB;u zYTa=*)_>T-MHk(2c;ycDaL0+uR-*+w^vkVbcWa!l3@UplxB6Y}nk2NWsgtL=RM+}E z$(OcSAi4OyweRpnp@$|k?i96m7jM_)j0ZW@uE)IZCo=!y`D=$i4qZFb;01y6l{R*V zJmngDX>qb;UG5_CD>Ouw%R^*kGQ2{rMlMFckUFRT>i?l>?K^s^PxQl zv8NqqU$*@EC4PB>M+o?C0qaeu2-0i8;EMf=uOkUiQT2MFIG~Nc`7|m%A@F_|<$lFY z>7#dGhj{AG=tJ+}`Wh10#80Xv>&id(uT1RnH`-)S)OC993J;8l8fvwpBbbRkRI_`i zj6rWjqEw2A_0lz1pPq&$c{@+?8HLSEI_Naz%%tUxFpg$x-V1z|9fypb15|)0$q;fZwAxlDTyjUE*91ddV6*GDy*G{2 zrlex7a|E<*fW-H#&3kxEKO}ZqQ2R%fAz1XjUFyks+C3zByuDT6A=hOGb&79RI#Q@T zF1`6mMT>TB{Hp9C%K1Txb_)+sMfoVsvvcsRTpM881BbM<9p6um9NbX&$fB|YRkeKC zsh7^)1etsx3^I&ipAxpBo!$(6lfx937eESWCqlsiXn=e&r z&G!EI(cL#RGBzUvMArrimK^` zY1xh&gkBD(qfpwnI%Me%^+en{V{?B*ha!mCly+Z{lkHg3CVlTUZ+g=n)E)w55`VY; zTYuR-JkTg|!pWvco2$ya+rB8Pky=AO%6u^6PCXJrp^{O)BbBW9yE%+S`zXwjs7E83 z)kEdbfLmx+m%Wq7HzVWo8_X7 zR>}mD^CLjj4)D)gwchpmEddD3aZS5|pdTpn3jnPEkff9Wfgpedph3js?60KZK9cG zn{Tn@)+c4kEVa<3u5?vv*wek(n{|x6iOp|wy#2lZive%OJMmt803X8F;A`=#@aynL z3HgKy0+K)`a0wcMlMp7P3EhMlgyn=agnx;rh@TO^A^u8yL&_(WlL#aVi9r&Pq$D}1 znq(kZNKVoy(s(* zl;_Kj=fWM%<1((~5XU*gWv+6IJ>Kyt8_bqxF^u(>t=iTd+8OM{VI0GG+^Nafuua;m z&D*(M*{wafLAU9yU1q*A%3Hc{Qhm}zhC2FkbR7YKM5=*&1Hgcb>T?h>Y^PDJO1grtHhLK7p4bibZ4QNtF6e2tK_SQPDa*P zZyh?NOCOm9FSdE+m@P_#p@#hbZ631Dx#vgoBJ0!G8!;AI2t9esw#G>RZ=fsp=P;s! z=+H;ipdIwno!%K=gLwISYHDfWelt`_Nli|1fLhI|`(ziPQ7>JhyoX9fS1xhwq6R*E z?XnTyc=@F(F-leDp(SN4rAWtLNs%Wj`2ytRZ^>!NZ5pgMUAnto*qr{ybx-VrgveHq3m~^Z z9=Qgfm$$Zb&@0>7uCmK%Z>ItDJpla{aJVpr(HwP8=|R6t@{XIFaM##br32$% z`$9WAgPG1|m*zN+K?WUsJ_}pK;+6owwhY4|sNU*JU*-@iSoNOoi>eS{%KYmB9nZMM~zTST%$KPv>58Ju**%;Wuh7l5*2xBl~k{`;(i8h zm@sBipmZaRvD<}8-NrSlstSFk6d6*6xiJRpaS;!~$L{x2jZjchQLCoo1?4Y5pkOFy z7*l0fZk5&6SZm!OK!TfYx$Ukrf1(N&Ek-P{iHqb@(?8TzPXk?a)y=C88fAisCV9)` zfh0zHlmFkFM&CN*J8BdmY8GMYCQjS5h@?%dlSDf~yi?SsLvx0tGa}PDS~8|FeMWYX zQQ6RwEu*tzT$e!R3^sRgd63@?a)N*l#<5&ub~h;ut~bPdAm;}uU&;%ntRQHGQ&Tim zMHsQ%k3#XV6gtY|NckMEfTI<1Ix=S}=3J$mt%NI8ayc3|y2qUwxYvE|_kagI zg9VqR;bsJ0sUw=UjBjWmo)&kbP1URTsp> z%LjQ){!_fyZ!rIQ>T7gk>#nyJ*CNXIz<^Q6*yzbB1|Trz^rWXX#ek3h*X>1z+x)Hm zvHvp|ipElZxaH^T9bGKjalz^Q@u3&|_wW5@Wx$D(a@H=!)pE1BJ9#*Jx_G&I2l!O% zTZx~ul@3S$%6Y2bt&*=Q{$K*Z1w#mh6b>~o`wtvFeyVewk1$%NK~1MgbcSSS8Id)8 zIgptn8C@nTClLKbQJxU;qBws_3ZS$=D1|^Rl#0TrErxr=LNAWi&~#SBi3psG$f-zN zsGN&YxK=gStKoHTcvCBHYvX+#e5#9|_3^8IemCG1YpIt6^^>GQQZ!5&Yckl9#hx6F zNK~%4I9z)bLt&^|+BRQ&!r}I9WI6sd$^dmcRYBx}A#7&d5S$B2XCYo%FSK43L45 zNsBNs2{|Px8HFazEMtKWB6Ns|YSV6*en;iX(`DPNMN>AdS*L2OzmKPhzx^{`ELZF8 zZhs?rl^H8`oTSO(#*3dIRHP{0ZdX}FKzVf;p*u`iHg>_Z={PvkXW-(_k};5nH&bRl z{;b)nP1!hsYy}II%$vXG(gGmb4FCXG86bG<&rlaiYIm`Vqn4A6yR0X;Z5pg-B{iNO~m zdZR|YtBawIuINqxgrdU%2t#)UAROZgM4;OM(Cs#TjPBQX!}o|ncL5+89R|PzbXNc- zV(h@mHf;s8$|^xtTkVcD*0^b{wXR!domaB#pX|g=$zhjWTnyc&j^;W~8!m8(FkPlQSGdMRU1zFp zkfEC_=N9)^)!k2qo(ClGus!~~J;7Z)B~6L^>7Lz^e~}c=AM2DCUU2c!OZmL=ioe(1 zD(0Pcg1ncev2^L0`{<)fKKZ1d&%PVdKN5@pKSyHtCBsU8{IOQ1Oh;wOa=9Ir9RHdM z2SR&9C}cus#G;f7gOLoa@~|~h5KtMmM=FAkcPJ9@2Wl&5@6`{%~s)pkpxH9);){4tGWodPc*; zQH+suffP@e6eYxBF=bMmW|oL)lajPBC}vGc(bm!tGbuwW%f|FcIoh4__Z#~w;F=X< z_M{T+tsHYERp{_krL)yy{-ioxtPu+*H3_v=ESS`$t99b=$ zlgT}{ct4&_93OPI=+p~lXpb=HHJ>UQQe=h zZ1Rgf{*Ky{3|##aEhd?Gn-zy94*W;#TjhoGQ2CIhpuFKKln)XQs!B^N4NO`+6><|) z>suar7HXrDTRIE%Sh&8P>8GE!1{mO-frdykRHQG)ijrZ1i5w=^bVRJhY?k_4uIoSE zXIzj+pq7tJM;?LU4?HAyGDGc;=M#$;UU=_~H~O_|HP~%t{&W=U z5unpMLArGd(Q8!1*y(fc!cn1{JG`VukkSEV9`SQ(Epuhr!3Joe!WHA6>sba;J zDN|-hxpMESP+_G?l~$`#Wi1qv^{5!OV`BOU3(Ib79DDKb>?a_0fQ-x$YC1=mn0&&@ z>Xej})0#9nqxa}rYJ>?U=rLfxaMR5&(o8cc%`!`u+2&H2Z$7Ps7Sb6s$Y7C0TD)sL zqK!TvvfXwXJM5sh(?{xj>|?EVJH_a<(`uY?Nzi4NHM-)8w5zUZ@~KZ{eC`VgU-?R{ zTW)D{#~s7mb5FYm9_ZNL`EKeqS<95w#waH=jY!I;nl;-iE$xjSJ@y%Gw6}Wo+AlGE z!AJq#$au|)3B*e9hLsYSQP9e$#K$UXIiVqbR*802MFNbD4pvt^?s{uiyTNKRPv9+k zTAijDI$29KyP4MN_A{&BJclm!qFUastsU++R@Z3NAHh?sSSKY)(3C3GS(!3)<;rzYp#lQ}!VpMEY9u71k&zkE z(2Pe%XTiWQ4il3Z3riF>HX9C(Xk1)&5)yMsNyW*?%p)gPLqTB?C8c^QDvPP9HK4y7CKJEejAF5fSgopUHc`7>jl-embb8}*>AT%pJstzE zSDVjgt>t!wVbtpWaAux=a=?H-QG&i;NZ%+) zKQN+Sl%hWv(?3cR(3Hml0?B|trcMqFWeI^9p(sZf%n3(%B49xzDi8%rqEV3;SP_d# z#KD?)R3-s7B%%pPuq7EyNr4@yXhs_BNk?-s;6Nr?kOfC_q9wWDL~cA!9ypU1t;h!# z^5b<1z?Fgsr4ZaGjCUvkcZy;<#o$44%%B83DT$esf)}MRi!$)0EFvfeACyNV72u1C zh@}#IQyH_V0zXtm9M#~L>WHTX{81C{Qme^H8@5oV$xjzDsn;NV_?!lfREF>cjT+gE z;Y*q{B{GGtXx5a=9KNPSlbX z-Gm z{vnI}xnpQlsX}jr(HM}B#v&n^fP!LtGmIf1Ai(H=(SH*Z@}IDz=V~?h#~gF~Z_%-2 z8K$M)Bel#Bu5GrF``q=P@clvpQH~ra5D+AJ^5B&zLsg*yr7N$|Z-Ik*+-Q%H-54o2 z1O%0ch$^tLmE+<rt`2j+faeys2;mvB&miqh+7%&)UHOJD820Lv}c8*Xqc9%UE!X;}|(%C$skO ziJi*E#A!Q|wQqG+GS*q)^8?v5F1f_+vdd~+afQ-VSB>+T&nWt~paWSHz7vcsi^7lI zv^9$&<)1#6BjDg7s%ZpiX(bsM)i5zhXw)bmEzPGz3$IqK{5o_V?tjs$B)EixRLjT+ zdlU^kxyi_EX;c_#C#6t2>2Z^K$iTHWp$obuTiuKYyMwStP>(DuA}GnWdIUuBKPxz- zIC}`XPW+qXv+X+ZJ<0d$34FMozf})eOGbG0PmW=rAL}o(;SL*bvWXTuH`$fWZZvjl zut$kK$=qOtyLMW#Pc6CUR-nDLt>6B-XNYyzpsUaNFHK7?u`{)^w9G_WW+8Uw0`^ys zIa6HLZ@wb)JFDa~q8iTqaDhH?TUR7QBKu~EoNp*9a|lV1>x#~h9MN@Kf0~__Y}Jl&18yDr2(pH3Ltr%p2vyF9`Sz=kssw*xT_h4#U9&78I z|Hj`xF4#WO~_b+nvu>Uld3n(;#Lav>%RN^mmQ8Q}NKT~dV zOdp#IE9`fmj6Sm_;tOo!zVOU$FKmh0;gx>dE8N+n{cW#KdZ(H;)RW%U)3$0syUmVm z6wfFZ`^#N$qI^0Zd-YlD2lsE zz*(aHpwS45Xj0iNtv$6jaRV5w+kYiTnagMr-qr?3T2)?VL;o1eGp$g56Ndo0L6MLY z+#HF|G|=`_8EotRa94{A@0l7~D5A}wCwuo_CkBd`R9f#}D08rbPB7PY>xipLi``KM zt8r1<>g?6pRP2dhp)H}Q_VpRWvz3}~`o7ezacN76t86wCu1PrkRt-Wa{gk~Z(WeED zoUqLZ<5O|(q7jfSb>g4d`=}euk1RKiNk-Dtm=RO2wAZBO^?56Y6Q`Z|zbw6R1xfIa z75YRWkavmobqO|}-BrR*e{&@WvwlGgGj^V__XGV3~9(itittC^hg-b@&a(xLf^F|}JQXb`1dA1o- zs$T5ik#HnSk92G0Xreu2epDlx=IGC8qE>4<$Is(@wr^!)mkP*V6R@D>*xGJpE-qJw zPY==8+>0B1)z#fSFT6KqrQ`BIW-O{RoaXCgNkNFt2+>y6GI_6@`k61=R;Am8=iap^ zePKSg>NDqM2_ewZ@QDz0aKHc{=~)vWwFH6>`#|8}63(lk$v5uqHoKyTTYa7W540Vt z#Pu#j%a@PW*;%t+QFBhi;ZT;UE?)0LpCh6-iON!01y)T}aO!-zP_=5QRzdxiN&b48 zbGg++A2$<~LQ!2`rMBKl%JYH->onxm?KG=Of!%c8NYL7 zf{`S>>tfUClW3?N>Hac5i+rPSdjvQEL_7c{%oYYzhx0EnjW2|c8rNR@gVSLhfqp3VewJP}^Iv?>fagmcs=yarM-5O6=u#Qo0xI3*8nWEhby#z>NR+00e5ZFTcnoKFAK3n+POFas> z^ME)-+>$gwg)a1;0%=kpj3Jj<5S)lS6JdFGyAF{5;$JKd2K=t0#MY8AYK2uvMBKoz z-HH2X0{9|tAxnmn9HXp4fnj)pCN@7Ka5yG37_{RR!U#hr4bd|v8PkhCa1sLxkv@;u zGiQK;Nmh8)p2kTJQgCbH={Y1!&Ic#;rZhQVGUA4$T!Lw?G!U)ElnVuqo&5+iD~1O9}qiact(Z;Z2Vez zS&{YBKG5Ksu;Zf`uZec3kr=M{wH z`@byF^dbfhDO1anr0zW}!FDGReiJBBCrew%IaPPq{CeXr7Y-sPFA;aZeRtNJL7hBK zx|L<3t*^}Ua95D<`eY{u0%dxf;lOVND<|bqQ;o(;?M9p-b!SHSi--8G&cz&UE#U3+H zURNOIZr7mpIk1kLpqI!592c-@!hKwXThtb-lp2+S=yi5QLhJ|5}HBF8-8ON zSAbJ02J!?ZpI!kQ9AteBZEGjQGvVhp!UBu!3h+)ok#iaB-Hb{_j8EcN%)D-y5FZ}q zt`8CdW}fjJ*f2d0PMPBlS-@e$fox2Ph4BF3FG->rG5JW2I85=2TuPXH^Ar0pk!P;| zki((cqcK3ye*qL2v*=s5Bo8nR&QDZsT*ld->G#^4L}~jh);IaE(y! zNyH?fX=F)X-)-x?r`>f511o@suA(RR>6y<`tWndtvW;Fevmm`28I1{rYi4BpZ zGj00#FawppV^(!fed%N;aTkq1i($3i++l=rgjrjn9it;7oRj_eAL6Eo`{|oDG8JGq zA<4HyF*?#bq}`^j0x1{IAv5F&F#Q_EG~H63Z6YYuJ(30(Z8By*q}(0D_K=b1A{ln+ z03?eZ5b%%j6p~>JEa4Jx+ve>eNT~C#0L2WNTiA2Mgu4fa^N6O1*Qc5QLPuQ8(r*Yi zyx;CUlW!)gBif8swl|CIMnwkx@xwq4x%-8YMvGFAUPUL2)z2n9>awHVW+4jO-eKE( zjU?;8tQ5LDHssObgR8LyqZ946ln$Tu?r^(U=#7epMJrc>SYy;PWujhBX8duNfEaqS~WsEkBxxCC86@{2B! z@=ADPbB)9H-sAeZMj6u;N!%$=Fl^)tKqujNv>38TF%B5ug_vT9- zqzVMj;t+Fm|7(b(=1FmR=#{IzaQ%s682m_s=xtR6l+FjIj0vQKB9~X%j-%!kXJdXV z8)sS2`ZU2{;KZ1Cx9?J}XjG!G%~In_mhWmT$@!7<@Gqq>K#YRDA~1i&ZLM$Pz&tsC zI^y280QG%DndK;-@>D;eeoFGyITZ;qUblK&lugX9G@)kGXJf)vv>Zb@LL4n=*b7g{ zy&A4jD2@$;hb;#TPTbX)7G83g9j0ttS9KyMw9{d?<%i6Zk(neu37<>`Y8qi?zWeAj zVTUj6K2!@j&v*Np37pua1$~OX;P{q(Sc#=C(yZ#0!JFQ8e7&9OuWaHQI7qksZ;V2DrXG>rTv> z9&Px#-jgV(9~#*9pELVhb6{E7Ku^oDCVBv@X?`-p#hx|vf+zw8E0T|M40L*v$WkQC zNkzAYiN(K#lIVvTTT?)UrMl_6mD;BJ<=J<_z)gZv<$YE~nCmIjI(S@`0Y02)hx83e zSWW<5CjU?Jym12O9hx=>mFD)T1zP|FXxhFIJ-30;LkvFGyMR?bgnSONXBe{PNrK7P z?BN{!+8%!Eoc3+Q{mUztW4vS_a?};wp8p~&&_YreETge^ba*o;hs{f&#g=gvlx;_Gn7yjCx?MBNl^{@4=s;TX90*Z(qiCnaK0E{){!ban#tk zRI)g+WnIv2I9ZFLY|dD5J#96OvQPX_&spD({Nn-Hny36%EG{lgn5{g9X|Y58q}4{F zh$<0u#1m~I&SVR3D_Pa}F~7Fa<1y=|Xa=>&@H|J{D*yilHur9_2VF z#V)368OIfcY=H)=OvQ$-Izoz|q*_#0jQ^s9S#}5hr#mRptg-C^Iv) z04~>c46}1%v?l|Q!k#bAAZRt%8rda^qlHuf&AIj`ffY& z6uh*|T=!JKGLcP_cB{C0`TwU@8W8PIEgyW}$S5h%rM5;d->X#aZCZIo+)fP%J>?%o zUMP!9j)NZWwac`_Xk_JjIOqO7qx`IZX^T?OWrZ2zW<7nBU~UHLR4U2y2z|bwtt9+Y zvraWuMV@t}3g!Y&sqPoLDyi-4W>6+OIgy0aLsl6)JT!HrcOB7qJ>K^cfZahS0!>Ab zJtX}Klde+TCYu8Np!77zz}>-s6LC)=QolO*_vwN3qP`1GCYxMddBd` zg7^GATa49n10F(Ehqzd%a2%3YNV!P`lcu<6w74Mj|#l>yg`Do$XlS~`K6dUp$t9C))FT9 zYnk13!6kwub&of8 z&WyEKomANn+MnU!r81T814~`x(rdf_b<5g?{@DZ2J1RP7&ep3ma63<5f>Kiq&|w+x zi^Q>d3ej24U(KI6_%QXt0($9dIC>cz2>B4V1NCZj_wKf%(&G?p<$lfZSabOMCDT_P z)CH93<-6U4w?k#s45AXIz`qzLdv;LT0i8Nm0NBb-@MMH{yWolmu2_{@VN}Vgq{S~h zsX=BL%5!k+qjII47aWs$_s0*}?&cwtxxc<+4v=#f;G|{`@^`@Cxc8`c$0pQbSInkU zb`l;y?hx*ZhV}ofNYe7iY9!R-dX0MjQ!M|A?Ml%?ROnu%rn}Fp=E#edTC)u^+&oYX zd3d%D;=@FHe))F=gQ-Tb!A}ky!(m{X`;a%)xrKa^qyz-Ej@Pc4$437r6x9HU1yi-J z6Fi>=obI)FrbNK*{uFWn%}rhZ%Ind`#g1}RoLRO7tk`nEXFYGZHZZ(g+>?J?L)$0i ztxRD}hVFZu$%FQE7^(*}ouR%CH&%5tD$jI!9UC7(fyB+jXhK|>jf?EVe!(&9gOkFr zYE|{Sv#X1wIKy1yC>(l@Gg=z%!d~&#^}F<7$EU=?nkqK%RX9L1#rPz6tx8?PbO@pi zZsPi64Yb|(oP*${su_~`MR`IXg&iw4^2m;ul#DDcUR5EV4jkLa3D+pmm|JZvh3jx7 zP*6ifwB*x;@z#)|`UAf@M>-R-r-I7$4F(KELMBmrIEZ7ZBw%eKj9Ocrn5l z93J>i_8_w)Fxd0!Mb8EUaFzD89Fy(|pjxc7^U7Y|FCn z%{iM!it-dhZb*J&5^}Y z%GKfNHbWPhir-06*;dccc`6tXv^3_T)vW?nLRznxL%`>3WL$%d=tSFfmNeJIHSmWS zn22U(uc^AWSDn!<%Mhr3+&hqyrwOaeyQ?#qv4!e=mA z^YY;20aZlKggrHv0c?=ZQMfyJOl}XHVS_VaZtsi`uccHx-aX(kipt@4!|sh>e0~v% z+}~@$V59}5!scb%Qk2-ytheJcq^SXuJkgHl3S=s9zi*QVfB_?@BTrhXE?O8_9#9QH!@yQ&rxj~abRa>$VJMIMQfCBP^TVFW?f@Oi^!8`kOC&` zl0k2_cggTKI02zZt?AXHSBc><1*ebi;9y{=3vF3g!Il?70nls|zFclTDa|WR5$zD>ixkZe~Er&x-6FEI8qM4Jt2^WtnPqgmrnvu4W<}qCRp4SkO%Ctl^ur#_l z1>O0zqn*k!G>WR-#E^|YXn zclJxU7e$u~-1>UK)0(Ak&%kQ6&!0Zs_zVmo4$SAUYu-RFCWP1%q@(o8b^2QsG6fxZ z|2i=%_kE1Z1plr!WX~(^sq@VPGZ0!asfAr{H@8^>g8%d9Em^AM$06Iy&r}*nIV5~G zC^1fvcFHI!-F6Q5Gu8zjq>O24wl%f1Rp{!5Wfz=%!>CwK1dN{h?NrNIv?G+bwHBbF zF!$zEooKVg>B`ixif{0ITE6c@8pvXv6&sVG_z@w(rn}cijBFqug>{!Y1{^lbC@K2r zHerX0$REZ1_V8Fg?+ZCUY{R!~^5)&ou4%vp**erdyRKV3h z|Ew?Y=tbqI{rd~dnKRJd^!L`XF_kQci4RXe&sf>w-7$N$xgdCj(Mx~r4iqd~)OI7< zp|(>%(F4S9o>Vyz1GzXE@oxG)I+zAmCa&ikL8DJo47dQ#H(O$>E{D*6Q){4Y>^IB2%|uyq{(U2kOoviz4#rxX0l6H~&MP=BL7c@joR_u0MhCFZsu!Ec&65 zHX9ZVie;ll-Qm0l!_|mP=X4YMar}5fUEd7R6N0mV)fTWjbpFVyIGl9T=N@ z^}8|E7$Xqmjg!tZq_e}4MwPZoPU=R4AC#L@G>|6s_*U?y=08v! zhGnd;Gv5#))$xfVSuxTAlRZrVi zk$m${+(`Oz!~!X~t>J`tWQKr}5~LLwR~RvEVE#}5G5!jV0D0)CkwzGAL*B+_8&KTW zuz?MeL|~f*#{=^cm7lv$%9{i@FW$zk?I01L$khswyI!G)K^nch85%$P=~t&to>XD&NRajd*`;=TS>Q*fRTZIb_Sz zqYOQQ9Fb4$i%pc%_O%b@sk|_-?(wW$wzz(;8LP16eIY^yN^D|{8x*sFsqwu6Rtisi znGm>+c@oi65q9>QI_tcmk9d_(Bp}f+BOX+FG}x7 zjAewR{0k&mI(JieXWu^~;@@!TmzjsFdyG@)sIiHz;M@!{&#z6w7eq+>y(ZvhGb?KS zNqH_ujrgHiex5SbB1wK9y?8c@`XJXapAS;yxQu0&Hd@RrAg7ltprlk9HY5gmOp$)z@`k6f)yspvT}-M(19hU6lPpXi$?N@p2f5EBB@+;`8qV#i2=msw5!2}6qtVlQ>D};$DD2=d z?R^#;gzRH4*h)futn7b;qjwT0I2UCB3<3|NuFF05)*j=`I&wC0B1lwbhuSjD)M}Zd zC6{3f|r@3p8C0El`mK&=FD& zm~@+C8av-sWZ`T&+MFrRrn0)MXYogagnC<@igL;%2b)1iFiA_fJ|o(Wb>S7LUgN*n zJbiJ<3fj5cJu;^O+IV!vP+~$EjcDd&M1A`*`Dq*D2T}=D5A89`48O^8_Vn#P z|K8kAoRW0YXp}IcXY#k|%e^}DIlPRUkVh%g0_yM4!87fdplv2m1XHsa(5x=9d+eIc z$@!u3ie}8&Zd{eLoo8++6*NyY(IcasN=NlI&$)_>>BekzwXuwPqLt!%o=kWRGrC=P z=thD%84hzevFfy7raDw=q|OS%yO&=wc*Pb&k-~vfp=o?=D0w= zHVwh|*4%!7c75LUvoLv3$dk{?Ug4UBCz`Z+dDW=9B<6Pz7H?zPbfXYG=+)?1Iu#Hp zyJytfX?4Hmq7R;-3PXU$&WF|UTjZ&gW2<2NFup+1)|~Z#$&feASFl@F{>2Q_kZbpJ zTO0$L7eofBVUQUQi;*_4)JiW^Np|LgMUgOGkFc!YCSRP6RHR0d+x!5%(RA9J+^>UK3;XWg zGv(cc9H)nlgV|;z?M5WnA`-Wrts?k;0w4<_1#cR(%R9GUPt!G@)IMH^h^*A8ROA3v zb4Hweq=WxqB>vxl6g^#P-r(Q-)Wun{Z$8q(#4QSc(<1-l?|rnDg|#pAGoNG!V&q}! zm`_N0O)V7i;DIFF45kvnZVSMUws8|{02znp#MA8qq8y~oY@ENprztCL6~-R@YTu%s z=UwZbhgEn?ymJk)$edD9u4E$9ydF_p|VmA3pe zWLk9esX}g+(kr%m2XdHgy+6abK8Ah|W>d7gY_O;s&DiFUY_I5UdX%NhK0@7s9@zIw zmEFRn60Rm$jHP2LQk1DG0W?(d+>|NjJSY9@-IoU|19Z?uJ^!NR(vBeY`z^nh?q}xz z7Jl>l-{J4sp@tN3KV+%bSfN;~E=?385JP*b`G}j{w$u=a+enja|7ODc?wiSPXpFyn z5jmNlEGE90lux@qsowHenR!J`#N-l1qJEYS=*!&_?QA>C*RmlCNj##*E$O6MNWJu1 zK5IsMy-7#EHu_Y~NPxu92Z1}_1c50fy#c%@BR5f3(-|EPUI?o)OpCsDEB$cBjg2(| zQ<7{d%05T^{uptBr{np$Xc9enUI=LrD?9+rV6raXLJ&Z~3whkuUy3` zuPot%Z_vKkL!rh$P40$&9P$hw=dPmQ4i8`1Zc1eD5hS;XYTi}<-QPGjyK`Jvub`en)T!mM0-55x&3aR;jbVo9j>4;RO`EQ_7J4-RBbrS! zD6J#;if?#EaeLx<=}UfQZ|@?d4}8|9OFe&);`hp?X*UQL>KFBCdRjGD{(hd+EL?9& z`t~Pc`8{|suz0CG&7OD~2#>vJvbyh9f;{(_&B=$5zy-+2ck80C z>w{+Ef8>f7yYsZ%v$xwCQw~8o-vSW`08;QeiVAO5j^aLpI@8b2e$VsEC~e;RoG%1i zK=x7n+zUtl_$V4FPWsPt6Ys6{*7tw5Do2{Ndk*UqJCvo(Qt>N8z8L>?B-wV<(p$C5 zc8Oco0lsPFb||~jgtM8uL^x|Cy!^HH%n7T%Z8b^GkCT<-3QGz)W6FNJTb{;n-|87v zO1(k2Mmc_9K$&`o7CQIt?~Rw}pH;lqsn0d%kZ)h+yFtcXeu0hTJY@WK?PGM~~^lS2E(Py*MZ>UWk_NWZWvHo!QS_m-Br4{*y>XI+o%qlb>G^>~Bh|(nDoK(lvZ-ep$SQbGpMN z=GVq$$`b*7dq~kI0MItWYtk!Ro=iCbJ$|@Zp<;5H5Od1PDz9I_^Dyyd-|i4Z_`jF5 zzay9J%;ehBnYL^gS+sb#28@zf$&1rs_-)wwkt$Umn63qh)qO<&N;j6@?`svKuNQX9 zUBqsd1BlJZw^xpK_ME)>pLOm0DERvKy+l538CCD&gXlrIqjUNKuNe|xs2L)ujjG0y zbE>^em~RmaIFrs~)#vkEa}1e1d>-XY%;n4Bk7&)P=xem2(SjPcYQl6j(IhL4Iw_rz z-mA#Ug(!qO(4iakm4`RIYg!G~s6l}b%?qxK`lW|2Pp46x@T5Rhb=-4sNw2(<7iWj7WNU?g0wAFoUv|^DgAl7D^fQ$zbQJ+Hv^x)Zr;xZUCG+<7h*V*qSB{=Bf3^DKgGSR1`1o{U5-FK!YZudwgG2i9DIe1 zVf9^sJ&vc{i_Ukd)y7v-rCJyo`=c%E)gVwm1@4QO9-5qU*vA0Xgdz+zasLz z_!9wqQ!B&wJ^8EL?4;K>p1+0!iN6AqoKE1a7uVJ+&k-*8vj0GTy7jyK;nvfT-aydp z!IHy8$7rvijE#VwER6kIp_%c0Qa?A2xuie^A(jvjZm+X0RcMyRPA|XS)-Gbjl%K2b z751#nQ?s|x440XpB$!+gt{sEdWn`oBu@`#dxiP+bMrITUt#Tzw;N`BK)DMzK7nMCxWTH{6Iy(+4G@Zpns|NyHFA$v0cmJ z4EFXZm;SW0-SouJC(1y@nKAk?cg8Gk+YA-dtJ=O&wY4niyK_MIQ${thACvft*m(u1zcN8eA1o9W96y+&00y1A{9fiYxii ze5^SH=-YXo7-v#2z#Z_$JNX7MA-OgXb&}7qQpDM79n&VZ1oyo|$$Lk`SdOIFi2`Gn4)K?GNSu~T@>`RqIMjaI*0=g(go*ZmZL;hEd zy87Sui%0IZw+>tiqX*L(O@wP1?2Q!RTA;X=NKx-#9TN>PL#YXfdZZ6NV$O#! zphl=Q$Bbsy`vyBtOxMnVkc&nrRE;azDMiEO)lM#;s^^xDR2oUhE-N1tOoe5Zh zgC@i!D!hM>bJq=Cmqsgpq1fdfSM9@fh*3)mJBw=54tKRy>lQiEQ2}5dFL|amhf*Ac z!6ad$%5E*5Q_Grz8#j~2Ac7wSFk)RhH){CLMUcv#vEYKgr_|Iie%23*(U?T*^|*%f zmF9XxG;&=dd)U>AtyO{G-P>=u_C;!PYKP3S5d1N^M=(9j#2;9wL=H-&g)nG zQ_nvYe5LJF3-rGCb#P_Je(;nhp?1^l4bPwt7GF#>*1vjmds|215S;8{Kp9jQ zJa(w<_O?e#gSP%{EOJEG@Fo+{{RU9a?3+encZIl9v9)=)Zjc`#%V;JIYT6Z2YfD!X zBRBx*YUCk&Oc%MK*PffIoIe^tA8fM#R3EtvGQ)Q+&4MH#Z-aD>$W4(LF|}#~wMlF8 zQFXy;Z(WU7lQ0oLLeAr#|DI3-sGG@lkkz2maZ_%vnXJ+#SohytxJzS#sAp&+lZi4u zd&%V6$QM3Zl4huj0Fj5R1n~_zEv-Qd`luYPiFh9ZjU7mz3uZyC`t@KzlL~xt@sH;JfkH$WE) zcxQQ1JHg$sz{WHZQY(CL^d0*V#MRElnp3j-#1%I{~Z ziSNEVeqncTBBU(Jmp} z;#o;$kmB$c>WTQHU zD|zqXsQE^@I*W?9(dvautA{Zh4;Uc~Uv&n9e_)q9=E0xA;fP<&4k4Vg0EG*GuF562 zJ<~l0TD&5(@^N7Iwt;UZC5NgUMb7fzuRz?NX%eO>;C&V22aP}dG$<5+sw0x{-xr=_ zA_{My>}Q~7koFs`BB?V^l%44(%_hao1tt^JRBY;z{ZM1}Lyx4%1P$ezLgM1O#wQbv zze|rD=l9S(Xy@+6Hw~ZXKS~*bD7#&*N+SXr<<)6R;A}VV zb{yvSaCo-|`-Xh1i#jrA>LJ(>H0lTpb{U1f908Ia`BZ>>IpwF@XiZD2Q4#%GD(W$; zY~rjvM5x3@8=6a4NAaEYzl{E4x$;H;kk@QuI ztHdGZ(`j52yEvw>MShJbTX6aJH>4{kB;~3>p;3f6i9AdTtbebqQ*K8~$4l;K2F*XrU0Z(01ix&4*)6x=;pdH2M~+;2T~@WLu;{;GW%G?G&fJY3 z2iB)WmxpWoGSH!kta-@Qf5-n?z&iTg(i){Ei63kA(9c7=)uI5Ln`XH!grUWh!(gVfTb@vEKkpIUgWt4tW-V$S zpiBsjamplbK}p_x=!ig%i}7Zd(DIhBwAFQdFh=S3`)U1PO`Sj))dw>9?d-e`PuklD zz_#2%#HYzhs~**eH@U2p4XgqJ#U)<$bB5I9d=U_e1YU~DPaLSNM@;30OpJKzU}kXf zHcZ=%O3#MA652xkyvzc|8{TZCb}(7pAH~2)M;Y|PB=RLXBs7*kEH{mgfQ!!wbt zKp-*scJua7bI75y=Zb=pAlCxor3uyGjk_~(ct*08?l(s#Zv0NTOT?H|9RE09#RNBK zFHy>3dRa-;pI=mB*~s#_%U6>qQ)derM{SL0lIXP#(&TnQ)y4e6rb~?vlrS~~PtheL zL-zu9Ple4-)Blow|FygG%uQO?=I@7vP6^A5m-k*qBb?>^VVfU-%=Zy@HC>h*tIegS zAt5KU$|IKfoXrigG*drENHx=9Z13ZL6>iE|fHFj-AE)wUW`ox^Hf8#bze~iLH!UYj z*MgL!TE|S8z#6hh#GFZL)L4S@T>h!?)`xhE8dkYt)`BvroNjVA1XTwPIyY{i^8Tdy zFOsymv4~+_m_yeC(ldipYQXo-L}-7Eq?bj=fPJ zuKj@%lhnQ{aQ^MzYDT6K_30nFIVUYFexuLN01`J9^g)9d0s8L(5YwR5VNycy4|1l68$V<=kJJh9j@KN30(oK6z5qP93l~MZn9*W46YuN&s)inrkEQmj8mJL~0 zdK(_IXC-RUaSD0u&#Q@)1$3#(X8k*zEx>wg9=wF}0uE;;3cw2gbyFBlZ^%p?x4gw0zpx;E z8WKh-0GAf2;`F1PltXinE<+$`aL9U?iPv>A6O1L_`+M@hLCmllm98b3QfiZcBY0;_ z3*m*RV3vXS_SRF^S&qtU1V_8vEHrA@-3!?L#IN!c1c>ssr)i$ZiVxzyzwN*h49b3^ z(zQ5JOdY|iOjj^|L^O3 z=k##4y|zPBRr5w8=u=os7o}m88K8PYA@?)@^^WR^6g*PV&9%}6@kkF0td(B^;8+gw37$zWFFIqdXVcascVO5Y!muP>FX5BByS+wL3T=~V>j5rCbGN(l8Uu+x~2k3v{4bjP1T| zmgiG`x_q*q^r6MzF=QtpJJXIJk42M9?hg{L7Vke99~9xH=kZrus7$gmfmdA7PZHe zYa$eZezS9rx}Fp#KrC>!z1f-X?nRZBN=cFX(Gv<$j0%GElvc}Xup1jG-ojA>l$ms( zkILiZN!-&>sKCUsrHYMb0ICRO7d|E{y5K5K!M2({X+!5e_kN-o5Bxzs5+hnY0_A~J|@V+7V_^I8W9qD;e!US>uedYdS_ zy;PQj5=a#aT&)~*(F7i;HfSx$ExMQL+c{YWNTXF}ku>Q)IOs=@sg&Or`O8GwCepkV z!-*93TTHW5PMgC)WCWHA{TSTZo5M8YW90q1|v6RH#U%@Yf^iZXL+lhHU{i~0PR;b`u>djY$9YpiQ7pWI~- zuKH5Yh#jJu72YbU3Dm)!eH0GINID9^k@Ao+`fmFEY#C_{ z>rq`sOB2VSHhpzvGai@k^3c83_+;31K{I*|#cK0aQB5`jEGG^*>Z8Gmn{14t7Vf9; zICk=L$aLSI4dXg9T(G;|djuRZIlK$C$KMG8iWJFiV5baPZpsNZQWRj6_1`Z`ck!u@ z{>PfQ929u%77br67&g)R<<0+_7z+M9t;wvWQY?EuRtsnP*NMMU|OW@U2mgmw znpIknlU{r<6cK(lk4>{(m2y*1)e6sj`ZrBI?7Ayh_~!ZhR*Dq+WtEsz4I0#__wqvr z|0o(tpGz-Im+$?h!iA%vtt>e;bjXVvz2Iq@Mh|eQPu_1ihxW?X!MO`t^O~WRKXGiZ z5S=%F)tYus|L7o`v9H3#sKUQu439Aua5W6~U7ZSzwQHga)d%6oO_i=5XdzC`eiP~+ z8d2VXVPP#r-iLP-62<@9m%H+jO?52 zM-V}7l5wO#(*9NTO{gI^!948b0^&HyWMDKHjEt1Y=s2-w0JHH7A;1k*w6EG@Edpsp zpvS6iGx&UYc21t%=kq=XIBufaNKP3H z-BXXsMCNF+-W=+i`66ga$Wk&>!s!nTRle-(+Tf*rL`iC@DYd(7%7zEADa5dC36-`#Mpn8t z|9!$rzmOcEm0Z{acjjMia61T+Zrd%m-h8HP1K&(`!Ksy(nET(D8PocC_M&a@$g3ZT zCIR8yH~ThIXjf+%t5;O-CRJOpgkaZIn@8& z`R9#l30ww4CAAh3n(Lra9b7cYBB@P-mjmHBZyvw!+5uub)9WYtkKN!bn}9j&E&x;_JIprN2D+B|n3Eq(?Mk$-nGM z7@c<-GawjKFoAkVITot>^}36W7|%Od|6ZUuPs`o!v|n)0mHdMY#=p17ghshET@hF< zm!(xLY^TKjEUatkF&23?#9zqyX&^9H&Pz91va_&Gms`LA`6|CF#I89MT16GX%Za71 zvHV*6b&jcQ{3-JD|ARaYarE@jByGU#Dr=TI&YAarCk9r@?>~81CidZaa8{0j88NG3 z_~3_DB>mGLZ#{)GMD_kKyHIUNig2)**8rqzFN#Ol5(H zdaVZCz%wr)rRc!LXGiS-m_Uz2+4zs_ZZ0UWBD`|X zJr)B*Z&5Z*Mqz$J!*&k+ynHL0x@=i}mDbG}qW)BYJFo`3_ynblKm3s%l(l89BkgD5 zaYac!-sw}XdH1QM=g(F+6+dBE!+6ga|24{r*N=l!;F)6W`)t@h`zoD1&_c!)jl|8n-}UcAC@#(+R5(PzfKsT(5IOGeKdjNu{=#ObV~?xFCB&2Ux}whEQKp z-BNNQh~2QnbmpbA^yO)t8*1Bt4JOD^s{3?ES;Pd(l6xxjANqs}lij3N#hZe{k4@`e zI$vF=d#c+G?S9E2hGxSKaK}fxX-8c>7f>d+h9qTfDoL4Ts7>&d$^_rQ^wmqID02!l2R-SqQf0Pbg|6!#IG?K93g|jWC*y7ebzRV?QErIsth2I zm_QJ3#>Vhop$iyazb*);zTDxmyN7umz!a|+Dr1zX-XBihJ>(#VmB(>-{4 zutoDyBXwx+mEFqIei#v*{N?n&fk<$)E9gpt`MqGCtFhbXcQ+dIdX4$+^uw~aIm*zP zNex;JsZIw*>E>80W{%QzAgNBHB{k^GQHD95`2Sf(VASZI1F7B1#scAn@K|8k?$m*v zp3&*tXNl9nUZ^CBH&q6NR%#CzsuyUg8w6m8+G7<~2Jog93bZ$P%NZ5JfTdoMv?@BH zhfePqQ5BVnO1&5`Hq04(n?xlxArn7hQg@+0p;EV2Tv|B#(!vhO(a)tv_2WT+&P@XG zD}(yT4@dV!_T7FS=@jiE6wxz-$&$4t$#o!iE%zdn5Ii0k@puFbjC4QlhJDb}?5zj* zZoWK@9|(r={ql&L!{@s=iiqRG;j@||=Hl^U;_3<0r&W&;OPHTF9TRQ|(rE&lAFbb3 zYdmxZX+HG&1IuO?-^|^RLftzQ*@nGFq<1lC{xW|d# zQEn=5@jI0hq*B#{PCjI*Fs;Npzfb*7p8A&n&rTBH>a+%Glg8wwa!~i??0?W-WR)e#^>zcQuh?ZT(FBF^ z4J?^DoYhus*^F`Fx?k)r!(d5pC1t*Pk!#MhG;%-`^4sj zxrRfUI94tojN(BxBPi$MZ45K3es`|30grI3F;?&tW2#IDgvW|(hjEzIm6anGZIatQ zyMQutWyHw+_z8KyV)NT^!j~H+d&}cBR&rmj)N2Ap40!CaN3WqL50fc>Eb^C$6wSod zbR*l1;AsD#5FVPgxpmgMb}9ymarxHoF3OpdJt1pkd9YOk zQ^9D}V7dXHW3wgl>mZq^R1+{aH#}<82jo$%CP|u`+CS+)XXm5?`%|R3nq-tKn}>Z` z4X@8O7iXK{_0>-?)wm}bcvH5$G}{hu(me4JfEs6g;`zD&v>-d09nSVqr1ymthmuI= zif`0k7AS9j!?RGn-u(ru$}YjwH{f$z&CM1ac@Fdo7d&jK72YkZt3}rNjFbV270FbJ zZjcKDpd;n?vlZk&7341gP-+Fsvq14>M;Uw4d0*rWYt9AQ3qETI^H`xj1icYCHQ6Ds z3=>7>?s=!!x#@h+bN5z|+W0)ADeCH-)@PtLRhv9i7Tb&Yi;&ZSoA?j*v98L*^J)`j z>|bg>XY3z&#eXJ=fG|S(l~$)SGV4KI1TR2EmRKQ+pclpUCKV-qEJPFp)b_ZSQd;&i zQSA!E{m!IrJYZLO9c9PdHt2hS6WPw}c?QZ=eAzi@iHph7(Sczjh7Y4dT=f0wQ@PQ} zB3ELGL^#<{avZI3*EUNk+I=a62GOTAky~`O7*+YY;w++1E@Gf=;Qy1_-tqqN3~(vh zt7<|n{TDjv*|1mU>#iW=`f_OS?b-T(hf<6Tif7?-thNRxiVQ2^<(C*_J}tMFvs718 zkEKq3@^KR3tr}$-=$h9G-O_jhuqG!?bcts=;&lC!>NPYQ(@Vli4Me9Z%9sCL5{^%qJ^}Rx9VbpnazYjmS9bVkiy&!K}fb@hB)@nFOhdxD;X`}T2 zOYe+1OFMsgKAko5?0H+;blgoW2Jchb0ZtTUQE_Tbd16#V>!Zl&7Fd#Gww~_IH%dC58;75RFYVH##w# z$y1K($`I#k6ERl&*pbl%aa;Vb^5U;t^Wmxjb!6JPpxKcM1sn}#vNZ%k&I|m{?KAC6 zKOv^r_m7K{#p3v?k>jHVD{Ce$+g;&1vfqPWJGZJh7+AwR93bDM`;>ZCtwYm2x~y!SGp3lnxb{QAnPFxHDfp|8VQ-tuGxQa}BOe>RpL;+ZpcR<3 zj7*LfveJYQSCr%yJNG>%)D5nSXpi>EYN}q*tP(ld^<7+1J}%hlb4v{xuh7@-#T_lY zt|d%U%i*zI10_Dd1B9AQ8n?FadJSvDvDTkTe8djX>&J^?Yv&glV>wgn>F>qvJ^vv; zcRg5E-_uhBV?ABHiMNSgR#V33ZCbkE4hvSap{J}KT%TKTEJVyc(XO zi95&v>|=Noh2?`7RY^?scjDC%dC==ohip=b*dkQ$-NgT-V5F0)7Y7jYp0lJv@8{4? zdk_@SU7#d^4!Z^$REok8Q9x*Pd2Q3F zT!1drU38Og*T)~>rg%;Fs?OY~N;aJ?C}vA5&4-p$HkCJ)r{6OTwrCcWM9{0tBBdT; zbIp(7GXVM5jjDJLwL;l_?d#tFL05R)&#L=Gvm;WL zD-uWG52$vrg5+HvLP+I)p4F}fRW5~t;gt*~bBQ7^YyrV8Q4qYNd zf;6Z-4u52?sQbMW=;t`cu`SSr@q+>Deuzqj(-<57DpE zV7#AhOf&(84z?%49f(ADlYP-njzQNT{!DIM@hvOR)?Cz>7b(c?Y3YjdZS>C@kZFq@I#+bEJ)rhtaH0vUlB0al9 zxhSCv?#0@rH=3t4yS1=Q5S8CCn9*cuGK0Gdj)sqUhW?r!m_8;m=3ZcN;DRDiX=GDD zp@QuBHLjpA_!J(O3{<;CL6Pe<499D+5fTd7BlTQhxTYxh#&26FdCIUc&|1(WTVPWd zvdnGzpd%Fk;PC!(t<50wFDAXpo*>fys;*Xf4OVq!=4@pWyk3Ay$xB`HpDe zTaHFKo9Wm2pp4lO>X#c#8<>8?(PPZ!d}X(u4&J2Gg+guN^(}9&?3&TU+kPx4gpDa-r^4# z-`!W&u!gJUwY7jv_`Bo~{Q&o}qTIi^jgq5#?KM&`LhE&YSNGN0bQ?V`*c(dU)+He1 z#~~Ls!)xZk#6c0{wKVj4Egx zcgirUEgf8GZ@h*HsQBAJXfI+G#pfS|@oCd#^>L8a=o9x{!>8Iaw>?OKS zDUAK|AkpB_JPiGZCbu%)T+$dVnMlN`CxoYIduZf+x`FuIr&9yOA>obed?PYi^u4q0 zpr!Dr5wjHfs??hNis<__c&!e`Ew=jDSXweKO=hdY^F;)^x?VrEz8 zVK!`kNiCS4SAO;kAv}g;rgeI?Tp+y0rb53{0ER)FRYCjTzzh}ceXrD zb9yb?-aP(?g{Wkd*9PCouR3TG#CE-1Iq$1pZj%d8mflp60N3ZEUWW?36+;Ey(9<++ z{p8ZglM$Oh_0uuX8y`C7Lw7n?`)`cl)v+t^VnZc#XZKG3r)KDbDYHylsPzkf)H6aV}k0f*&NVB2n0N!7wxV3!POT_mUDE;&IY9 z53bbk(zKgH=^=-);Am{8XYlx!>Ew?q#onqqoK@PN?pJ?dRqo3?Nb^ARrzu+3Pz~Es zPtBOxKlvUTMX(##jV2?r!ER_GI;R5E%Qx{s zx%1N|UekM*Xj?<8m1QEnMK^**bn1S~3d_V*9=PCd}Q;N+NX ze-eqDi&RS~>&4UW-%eRRMLLSj8W(k5ha)#vI(uXQdWZ;CjH)q~)jYmUq|A!xn#B%X zJD;uAG@{KN4u$%q(uU@h?|0*tD&k(+umn)uM6?@N4MvdL=rUx8Ds7DR-?alEnq^Iy zicSAGU*)?SoqnE^aG+~yn&R!m)KnzEck(Lk_KLa-mq9~sk3CqXiWl2CoSlD}Dp>79 z5hz$NyU+r-KqoAbr>w=Vn=&sdds^S!+g;y`3N<;x(I#i8?~C4v&%ILeJPsEsFN>z0 zrfD~Z(oa_u?TA2jSdQ#n8d%zu?)o_J@i@~qI{@@nSGc<6w>?i@IQD!(ePomx=78sR)uOi&GhKO#)G>kXo7dO9X)Y$>q_{guL zG7_VTcI7?=t0O?+#?b#4PJQ-kOL)!=v||r+56W?)1>AV?*Hg+yjW<`ecWb6K=PR^b z8Djrx_dnb^30!_L-QO^?V<+vKy6)P)%iHMj8$-r|qrJ0^e;E#0R4MXQxv&=T)bv!v zNi#AUd5}Jmem_KZ)-eFC7r&Jfknl0KJTqg}l-e7;>w884?|>eKx+-#l`6+a_KHx#Ofpwp_b%pUHCf)W&(WpLdOpI7 zio$)RddM8veQ<~A2z~kA6#IB4taHmiX@lfHKv+&5p zFL@je@1Mm;8+&~Clf~W0ZmIOe{ZA47F71cfS-$`RCsu?tF-f%I&5bIAn@VQJj$~KwrPo8NHVk9V9!J@$)*U43%a?V+l=J!R?c5KG%T+aZa(2;@v zqO>O%e3hpIy6P%|LZ&_66+`C@w{p za!l#Va01<_OR`?qwU&4XzA3wdXW#0O%=6-T(j?vFt|E24YvNphA>pv442G1=k)ZB< zwezXYgA^4&sVp|DnkEuE!P?XWpcx_t6hD|%LJ&uMGU zX)Csq{v|(SFn%GEe}Utl@n7xBX)U&!B0;Mt=dmKsz8}OtKMN`1mRXmf7-BK)+WXUJ zbpj2?3P&EHQx+%ovy6HgMS&yvWKO_Phe@*NGsFwq-Xm8Db)~eF_!tck#(tmEH?Xkn zIRacSPiE13ePiv^TmQ;k-;;c#S5O$ofj?VK7J#%jhtZ4bHOS07>Tx=Chyt9YDBS-7 zb-dN9o0nrR3_KXv3cTW-Uzrsbj%xt^>%rDw$&H}b3m={-cLcF-`B*Y}?D9S$f93$U ziFWbmJSuhG(TlX8Rv}m=60H*WFEVodq)J#Nu%w$O;{7c-asC8y<|N2QUe0nu5TL6Y zax9dyHiRzzyp3J5zR?5WZE9|0BYcUy9}+rN5X4Sj4!4?d8d8O;qzLC&K}>>7R=4NS z=Oud@Gr=420H4^$V~~Dv>@#{LbeE3g2sq0C0?iB(2%wop2-d3lWW3k-63x58Z-eWk znYM3jtM7;xO-X0c-`8WfkNY?EE&7v5)Nx zS5|`t<+PAmOAY=JMMyaN ztMRQo`>)=mry%Y^sXNaGw}$)sapQ6eTXs6%XYiJFeSKE^S*|~v)lzCcf3_Zl<=s@X zO@vRUIokMIz6+7KOk;g8>3Sp`L;aU{iqnX9ack;Tnm4cW-VwC&>a-Hk)T>JL;gY+} zYu-m!RVC?W)zxj@Z%aN}UT0Bmc)mfIr{F*5|77PYfu*i}#6I@B@Lh$eVQ zmhbY8wE*Vj0hOz}O1OpUw7?l-Pw;wJ&lySc)oL){1drFpu`qFgB*<2~i0z<}IE-vT zrUWVG(Zh@&vHil|f|Vpel+PeJfqY%gK+DxXWnbdw7IlT#2?aP@;KYKXJ3tiwr z@GA`i`JGVkV7;JV3-+?n!5&Gm}nqIGxO=Gmhk_W=b3$ zuf)n^0`K*}PhRAXy~c^pI?indr|4|mM&jDNu6&oCx&uz##=!hiaB!N7#Rq*x1Gf8} z8H5jwMAk`Jh~1ORb(5&S6G$H$1x^CYz>algg5I$HEqf~HCI(&LQ{ak<_!XS#=O0B`A6p@C14Sjbc9ck|$S^WI8 zpb}L}B65+~*OliP8_^ZHpLwl5;-mWHl!|QU3zbgVLLtp6`GRS}fBC8&Dbks9E#@%6 zV6iB1fv}9=tr=EI%~)<2`pE(`2-vw?z>YR9{G{H9(Q7hMCLsWY4i|Ds(Dm`cuqpoM zG`IlZ0z^g9%k=r9dc8mDV|tT{C-~{=>M3~qlxp>K7U5ygm^M(akrMW?or;i~guaTc zf`4(ogUwL>Enyn%xBKmQT!3Om9mfCm2!s9;DNJ%ag39Tbil%2c=|42lH75Su%lS3} z-!9g=Z0qU6ugCm8u1%R!QnA!l%>$TEF5$Bd;4v69rVv+oP@zA-%?y=%<~(yoSX(`RWmsN+;@XQ~2{F;!ZxY z@u%n0HnA%D4eof5H84?u!!H)mCb)0vLOEjADmLtW0k4u;AXRM98v5x*#H(E_=B|4O zNp5$<0#xR`81b4fUA~~%ho+1ff53g#EH$Ihr}XBaszJL0b34ABi-0lcWb~x!NrhJW zUsgYd%k<{lQo|}zSO_o&k8^q7w&UY7mEJj5D-gqDP|PT zslIO3orJuLMBZD_&-wqv`r$v!eRd`*kb9c}a--&#xh>kfOLoR4*eLEw_RYBI*2`JE zEIjF*IiCc>27d|5PwZFw)f}H@sGYP814MqfEn^~$GtAY)A@Vn5b4RO`tPt4LR~+56 zHWGg5d%;H@kI$fMfV8IQDydbT<=lSKvLkC)thGm$kt|w^*2w>39TiKCvesaUcy?PL z=X54W(18ann=vzve+E9xeqdwTVPL5JQRw}7hFO>Egv3A&19tAwb7*fBeoOZrqqv{r zMeoHgN>k~KilSd9?Y*$BMR;Kxhup;Ydos>*0z>_wtmr|ayQ*FK z*>0sTr=VG%o?ktGHVeV2{O7B$l!ah!zfub7uejKZjbxNL@wMx+wlSxDg!;{l@g|RY z+qhrHfyaF_&U%}@&m^2RBW`lBwpY|aV0FCh2H|#C9i*y`vE3Rm#Ti3YiJZy=bI9@D zj1k*fhXVawn10B;pZLDE4I|bDxW<0%f}H;1ex{Lr{%xsr@h#(I9-jDqWR}6LU)TF) zOitg47R5TpKuG?LaPbW0#qai1W2w{mteVB@r!ODxpa505f7b2bh?g%|^aqu8{>mB_ zbIq~kC<=4hB~I(m#r4o|t4PFU>)U0i*!-;!!Z$^3>~PI;{KX<7~JYWiit)6)DVfkTDeEDN54nDVvnjdye^9f z=0I~uU{>3e>Ak9z^1b@KioGk-V}Z=<{;EDuvN6A`prAZoBQZjU1WBttL6S=ooQE@K zEu>k(@e&_aNzN-RD5%K)SNTVYHxx6nzc@Lqu3p%6O{P}{_|<%6uw!ZKSFY1_xQJXv z2oHDC5434A8@_G%6ntSl^-{R{l1(ez5}(TYho(8TqoYC4I`f=e}vjA^ZXukj^hkelfGSv%eN! zGvx$H1d2C&=x>m@a&+#}x}0UHig!hMWYx%R$_=6kY5aCp;c}UJ`M+O5DYx|XPd~ei zoKWM~<1bCVKX>fA_Z?;qBX`+9H~IY3`SClvzh=-r+3Mdsusoryfo@*S_f{Mj;cNDxTq)CVh5>ooA2&vVn@WvuWL2U?UFL*nS9FG$Sv}EePj+Nnv>8mRvF>iN?s# zf3%_hP@phj0>-GZ5g8MR3?`nT^gw|b1z~o6cxzd=C)rrX!GR@D$P7gW0`(GBDp%^m zdauL--D2s0jJ;ZE!TvRV(X>T4c=tZXO-u2i_cAwH`1kEfk;8Hzq#ahpV{1x;=CT@!CV%mr0v})QDt|`L)y33T0+@=?+V6 z(6deR7%G9s@P5jG`}sPK8Bw%@hQ7Eyu9_>l*08RmeFH%<8x4HEJ8K`~EmN(|qsjiywp?({gVfV!9HZEMfi22aZx0W5sT_HZSj1d@>E+1d&(q~VUW_@|Ew%W>3mM8r@7m)D z%SPX#X5QTuJK$UFw1RA1u*%2*Ky|9kun^zh_ve&V&NCO?hwh8-Ptz_~<+AktW%_mI z#WdaEDyK#I>hp_|7<9Gr;^$ne@`ci{d~J_p6ja|M9R(Hdl|-t3qL_sus`clHyf~_V zt$e-KXjCqjpATRA-HD4>^Xl{QDI9^^bVHda5P>u*6ovLaX4RsV zArWn1o#vMw1WnS$Bag24H6WEsZsyc}$Np0uUj-kaI}SKXmX4P#Td{0NFe{g>#6!*? zWo+<bP0)G3Ikf-1I4U9+ z!CV$}7JK8MOx*weBg955Gwjys%bmGpf53j&b9l9H$(nhe#xe}`{`AOlly;+V1{5|j zqrKWSDdSuad-n&YghkL|ojh;z)YpWk{oZh7I_uF*4yTGe*xj6c4{Lvwn1?f`+MN#+ zmIN||2ORCEN)nmZVnT47hbR!RHI9xIzxMp*cKCHV_~(!NH%uUN*^6y=mYi6q@X1C% z*YD=6MdMH|2bqm9PHH2GLB%lW3vac8JZH^hCLd{AygksMq4~T1!I9hP^!2W6&K;Hz z%_pzg^K?;?y9x79Y{V0cl7|@VLy3`qH;Nx_B+sML=95YDY1Dbhe^%jw!HOq6D$`tET|qe_7OkMdv+q4ihxatBTc2cqW%Qwt=m3a4 z7aq8SJ{gWW;d>iKM&6r4(Yr&QhRo(hFPi#!*M248NO|WrJG&1!-m2*}@y{bM-UJs= zH_Kc}&Ul-RnPD!amOn%a)O-Xi&q_f z1?{WJ|00NU5|jcgJW=>2>q|OfiK*F>Qda-Uj6DsO z$|}iPt@U30;sekFi}l`52^qV(bn9EM5}nY_JHV8cX@F%E83y*ztJYwq|A+3mRhu$n z_F~n(>u`+{z6yG4&;A*`@1V6G>)4Y(s#)y$*7GS5vsMW=BMDRPlfz;$Tla0NL|PNz z*2oi7qmdey$*`Nzkf6!s%ows|3?FM}8nM4&%q$jJzu8u%#5an1+Kcjcv*WpH`$m(a&0BWB_Id%ZIGXz$3_q4O@}$xo2{GYlkY zLbG_Z!#Lpt^WDTaI_I;-W=lLFtTWDf$#-E~QY0AF#8-CqxYo;E`!fveto<2MyIzB? z{`URb&mht$+)VM#YU*EoP)|2VOXQtNq4`N#}AEIE1JtZ*Ighd;vu)GYcTHXJA zlmYVEM;q`gg#CQi9S2sZ3%xs!ivE@$ zKm9CFYdLHRm?t)zJc%K{Q| z2@bae=}&){sj1IduNgmVxbZ!o|NV^yhI2vvoj+7qIF!$(UkRP5l3xt%x9bCvpx9_) zHP}Qrr`U$(nj-2-JG9asQJc6nv>4|U*;oxmQ&1d`IQ00xsm4};BgI_Ol3J3PK6bXZ z%(cR5wK0Fyno$f^mmK748b!-E=cb9U!Zp?QKHtdhzKA#+QWZw48D*p?M9FDs1dT11Mkbdg2_{sx^}QA?=p zQZJvXEUAQNb1JK@jYP`ZX_U2eajCWQBjoVgFZAdbMAOpL$dL@jIVMV<{5AkV?MaC= zN-!9y%@z$QaxSi{RK`)~ND+HNL?b!Fx2^53(K z2oedg*(lec;-9kG(!!fafzTntJD(%qKK>O80*{O*OoC_Mxxpju)eS8TmYSh+aB#OKk z(jCf+MfM9Xo~xJ^iFIVTYz}^Lu?dkEg6iJUOwvr$O@&HO@R7;+!)}NpNEr5kHCC9M z?Hvbg0M+H+qSdN?4yRwGZpf+gS*_d$IR?$anAY4cB)9Jne&bLhw{FE>l3 z^3rCqOILMWQdQWrI?So8gluv{FjyKAD`4~rScUm?mPe$b%3K-~D`W*j3R?g`W6kHa z@(n{4)1n=KYv0-)1-Nu7P|CAjN=wtO0T_7~ClXM+Z}$~k>jO4{sfhcF9M~=I>zE6u?AyJmSaz^!I~kW}CfQ@)%_LLy0XzoZ<-DUu%` zxf;&FVT>|A1cT!9Q5Zjjh!}Pd$vt6rxZ*>ht8Dhw5H0R>oodeAWFizsAQdGHMoC2k zf-W^}LUQe-WuzPJ0QVd|jK_uW_z(^s2F}~nsxX);ES9>4Q9p{sGUb)?=(lL}8#D^x zEpE$;p(ylPi7lvJmHEDk9fYJ@*>0HtNy`5aS#WS==3xab2wCEZLH za=Hujg8Wla6Z_CYRBriG1?-PUS@kPGx_SYtVTF;7{a3$bV8DHE2mbF*=6nLW;197k z{(oxcSWe)aqGe0nfY^s^DB;9jK017Xk{VWwMnOi9UcUl+K~e9q?2QplzCNex$j^=q z#T_oY%{g7CkRmRg#bEJ`Wco!_sG#Zz8hxkAr|J1HkAxJurLOE$5W=qdKBJV&rM>=^ z){|fL7>&LQ$FmtszOl;x$~Iat+NL{Qa{1M19WK@qmo_;CvfSxv+$6$-2}S2mmB#bA64x22d*{j>D@W{vkkmPALm3p8QMo+WTFf6gk#@L@1s2HTZwl?jAaDRS3? zREtkJShDN)ZLhYS=FSh!M;`p;fL~&lVmkVB`a3XEiQRud-HSlVsW1hMDn}xE?Z3#x zw{MG{JQ1x87C)gUuL^oaJQq*|RPal3^WWLFF+w}L%kyeK z3wDL0aQHDe;ut!P?m=KE0)~h>SU400&l{E8**788Ii{P;K0kS+#&=Z3sr&t~_u=s6 zu&U*7`1^HO@S;nKdCetV6%kqmn@o6_l1Ui-sa+Kn5ylJ7eg@`Ell*bZ*($4&F)fnv z-=C2JrpB;G9>}SSbj0fh@4$qt8L(7&he^{5DuS0I|dV+fXewLopOn1))X{9CvblN$GVN%q5|<;OJ6^ zTMU|`IEohwLP0N*uzq1_MJ}C=O>-bi9*vI4fJb|;}PdJ%IeqMvV zMm@Tp$(ea;;=Ii`A0K@tD}3A?s)3U^vaRP@H;KN}lj$6Jr<*MHF1Gf}l1?eBtQ<9d zCNu~qoT=3}?%&Y73F-h;L)&V|G!;PVeS9dw1xh?_H;pgxwh=Bm$ zJ71SvJy4&B#}e`SIx95WXEiAuD(fJZJ7`roOiK8LG~>46?%A0G$jj-c!P+L?J8cJ% zzZiTXJD6CR^AUW!W5t}z{AiDrF4Iq`pE_C)Ym zY2k3lfr;*FUCyX(MU^`ZD`=yu=yr(9m~H2AkQL{>O!&$i+%b6~13pjcxMn<)G-><1 zvvN9Qcwy-?Fw2EJKqVNID_#)Q3MiqAItqadJu8g%A zwufmLTLY*7pW)%IiSd)KbvHkz{@Y7Gdi8wF{o@>j(>Hp&5^D>Wj4i zmI@QqJY+O(gnx8tx#$qfjK@1dx5xs;491oLgI=S>wj=|jWF>cU1ye)~AeeFJCwwUS zheY0w^Fj+f0!xw3#gLIufih%ZTj4-FOWmR}F2I?^MIGG(+k{4p24sII|w6V#~IQ)lO|Y%4la78IO{ej&>7fakG$(=1>0$Obed76?AMBIio&r`ia5|Il_rTDto+(xu z9p17yst-yEtz%-;$yyr{N)6^4A{De`vG}3f%9=I>raxnOf>!CE1mY9Xj1)GfpF-ZX zQV9ls#FS!^qv{jd>0tP1I}|wRC$+X~9p9Yl_8isi+<=E9Guul9fdsp&k+K&pVyV&gM{yO zvlSJtLQShN^KA1hX<@ad1@F7JqhUc-i9bytYfRzbtE>vhi-!ZBVS`X!%QTyrb+SbzwTl`S$q+ny9aDCR9WjVQ z&OJ)td!Oir%Ibn^<-+TD%gC9v7p!H<)19SQ9I|0|DFDPg-H5|v-~_1Le}3&D$og;` zAIWNh*9~(UN?yNy*YFWQBhZ6G1)m<7d*oyZ;QyK)G&OWVF!y)Z=u=*T05}mCLU6Xc z9zqfU;2oox~kXkPQ!+US=t~xn37aS4Jo!MGuPLdR-`l4#vj`qU=QM_tTNjk?eY1K(HIG z^KAGI#_u9LI}szDPI*q@*XshA-*DTXyo2$!hl@n@*)6en@C;-CgoNjD2Yt!w!-Wa% zWf>F4pjZ{>c5uG)%i@C(%y?X`R-!I67}lXr6~iwcew07s55R=6t^D=n91 z(FrI=o5EAbz&fk|@-js$tM*4b|8E||5o`Lm>H7Tu`@ve<3e|eQD=MDE`AC`H1m3Ts zczoUTC`|pjCg1zPESia~N!^skdE#f;jQ`vJ5M;-Y$qhmc9!FgOeK@bmxdUrT7&C#) z&}UuxFFuu7P47;&LEQoWFX=#fhzKZnMolzb3;VVZn%@LCr!Ad&1lf$yV!}seZ=A6g zW0&6@-FRigmC^s{FyW(fHcsDzvB_38Y3?@b`VM|uL%r+lt6xb!ng~VS+Env(=D|29 z;_@yXY7{@@$dVQtKRbpe%*Nl(JO0j{!Rd?E)2#EX@7+c2?}5)cFhJ-R8a76DV3P@m zB!<}}63={=*3^e1zwqs(5H)fJ$2rOAn)^@YW28981un&v{OkFebwaL%gdYUs861R@ zM7|Sq3=l~SsVa)H6&rcizAl^LlyvfUKEEFVf0(1&rBL)l5<@D9#53QEQWK;lHfx%PS@O9`($4us}1>A$Py95d=@o~0+AYvcqm(e1_Qu}rRQb)Gt-9SmTQ%$rh|%# zii%1q7I{*gynvMQa!Qk=S-BZ-%qKV@RnT?p;%{Iq@;Zkd$kN$^F}W{NZaa z=Y}c%$m9Q$bGQ}Rd(ol>MNUWsfSIH+yI}yBiegK_UXy^RJ48)QP3`*3v7Gr%Ehw9l z&n%3Zn)-#bP8%|NW|F+me)ly>v=J|fjB$b>l|_3-A_+=RNo zYopIqfCiw;uI74Mkg>hWj`ig=kszjYB1dmyrzLMk#d~2Al+e^=%n&n3A$HI3 z5*glgv7||2V{bF`jtHWOC4o4WIi*-di8`r89CMuDl+Sc?@^w9 z7KXOTF}#5xU>e3rL`rNbM0$SNP}*L$QC?otlT1Szoe&c6M3d6Agn)+O2OcPtt^5wc zlNnhNWmYYVXwR6L_;kO;jr!L!1bZLw$FcU=-`){HG_fQQ$6S`Mj1&%$!x8UG)tE?* zR;1URXGDZ&Tukq=pBEz2cpxB7%nK(tk(>zQ6gNmu1kogTVJdpM|93U&q)ut)G~FQ5 zkitSoC&59YmT9`{Ch>_29*+Reb_TC4!gyVy^{#nlfA?#*e}GdEAdrMy)+ z6;)EXAJ0B}r<`jw2_}avDmyx&sz;~T#yPx)2%`roj5mP4B1F%$oSWYFtoLCj&b}fi z{hp^YM8O-|LFuo1~u zC%^Vxs3PuoVnDLyL{CePI+%CVh7jT^Eb}N)Rt2)lmD(|11!7h3Ixy?9ajRndSDE3< zv%9OwUgiRZ&weN`rh+QszLpoFp%)waG?Wfa+2q&WD=WgAoVdrfEE`>T5glPzzK-5t z3vzyobI*pN!ZPwiTi#K_cN*$kO%HjOs=Y_S5<8H}rcy=XVts}?U)o8ulrdcPR#wKj zJueOSCnk({($;vLOk^U{MliML9UzU;VY2zx3Rzcjx0Dx?r`kRybH&@5(5(*S5LO?`9R;)y+vX%0SVkoF8&{V2YtwybT=;|s@ z^{)x?y{NqI{>gX#z7yrPKQ~ygKv9j4d@RL|o=zK5LA+P7V}j=@dZ=hdUTI=_#dO*v z#Z{eAX`{ayu4a10^vdbglN47geUQck=3~0e9wm;8PaIcPIS%0G6+4C_lViHoCm#33 z^_`GE#gkuZTGWk6J84@^UDc-c28EO8*VXLcOCK;W+x{ez9{_%mo06r4lq2Hy= zud`4MziZ3J0GMR}kmqyT?0{kx{9wP&`h`*bbd%Qq=z@rV^+Y*co$0cGkYE5%%-8;x z%fJ0vRRV(Vt2kf?5oB5V@giR2fB$rEI`Xy`vKj8fa9*}9RG%G=h#?>jEB*qSEX)Pg z3zEGX_g;w~`;kw+IoHMiOkf@OXTl3*rYt?xU2P>LLws*}Jhv6f%O_-+?AlqFg{})# zWg>YE1rpEAdp0yiap z0Ag3Tv!cmeiX_*Rnc5!;>u6W(#<_!vov3ui(_1{kgUL5y`q;_40=je*lq& z#se6PVO!8MX=c<%$cr1bHgdS1`z^-mw=9c-6iA%|y?UX$I-@uxDw8zho_v#Vd1+ZC zjG^bLvo@v(+CYiF)6GwHrQ}2@vOR@W4*wDwoz|+I9@G(9lx!N>(HKu1oXDkWP6kkC z1$EV^hfu%yJ@whvfjFXR1+H<=&$$Bm%t4bXp&8(yG*YOilCH29WDB8R1h2G(N2;OO>y@OPL+` z($vp%s`W2&P_NSLZmoIU-BS0wQ{=v!syU2y<@#)EMjX*}#DSe$N;v4?$tuAc;3{ci zu<@jHx3X4P?foB62byb$lX$<5YT2w>*^{{#)!O1ZdNr)Bo^>P@RZ&OwNzFjRXn?1( zm2-WzIWX1Khy~zIgw%a>s-`rZAH0w&=iyaca1oCx*JoQZ;)tdd{nk-;(D$_98?QT~ zmv;?>i^Z>U9cW%U!1f1}4!xV_PM}&>eouY2uY^OXn8l!SeYVAcYdZJjL7;bM2nML! z8mZ5LxVD{^EYJO91VAF!kku{F7+rxE9VIHIbvLG=siJp7-Dn-K z`c+KN1_drcN_DLGMp+RAPS1F;^eAm_25!(6ToF)Eca zF{>b0a7qSO35S|O-BWi;7J5VjBGz0p^`e|wJ^aNh7OX}G9IC-*(lU_LdCRb@UosTZs`(mSpy zVM%jlr_NC=htVo+aHu8PM#e0mW?eKJg<)wmcc#^9NYhq>A!SHAw6k!;E$%lbVx#-4 zBZIk_X4>W9x3m+^j_}>^-PN#=S;9NQccUQ;D_Abmk;=%{Z*R9;hTtUyxHDd!;mZJt zv7MzWC}(ppdoQNnQ_HL}9IFyLyX!{9m=6lk?PG3KDc(h!aly%A3F%{H^pK^nV-URm z{*%lts2`(7(*M_{YJ0*N>8#Q5=CQ>i#S>Mkq^@YnqKVOhcontgur*OI`2Ah?%FP>Y z8n^!YN9qQf$4A?WwG&r_lAQ_WGJL6gh}AwxIfqtoh%D7GDC(dQZCN&_6h(H(u$@RH zOV||3v%3)>(`~1<_7RfDM%>=astHbrBO4*&t8p^VXt|S~lSeUGs%%IUlBFu9ieUDY z1e_lIP}LWFCpX%#x>$knsx>uOprQ+!VzeyiE5Z|(Sp z5>`}J+)+uc{mfbO$}N628cHCtt#@ z*8O_l*N8B%Ilcy(UTg!QunV3EhN?xOdShg$YCXTZb64>p+|`KWu5%k6Dk7A-A(D1; z=%&3I*ULTsRy4YKkd*nFKya`9Gy8ss=}wJ)?rkjO>t~<0Yq6l4?9M*FiyiqtJ2T@Z z)0zHnzzqG)3l8Ms1${j5Rcww;*~`da3Dsx^ffsfGl(X}xR@(8>sIS0oPbM=xUHgUH zOzgCm{*yQ6I{=+a#!W%ID~h$ej|gn?_kcFE`Hk0YHJShvrajGvGtvMKv=Z0Mc)(hL zd6TS>jP1hgN(gL8y>HovrwD&0CVXdE&gZULQU=1LUk52Uq(vz7HYX z<*Ui~E_~XhY5JMNy@c&M?gwQ!?8kHy_yv2lo%@z+G3fea>c;uV+3*7Wy{J@N&65j| z2LAvpGD?x*4EJI9`05X(0CxuN+SO)soMviE(a0mz6#H1R>T9WpaClsSdD`N_6%*}@ z27O=XqcBiv06Hw_n%rf+>&M8%R~N#RBMK0%_z3R(J3vJZe3+)H*DKK8P4swBafiNB zmhF$r@02C5+aMVLT@Wi8x70Z~V3Yta~y<1~0h`%IQ1e6doGXL;8C5MgI zS?Wnfg1ndg*Ydvxty1Nqro405Mx<9dh@z&ed7+$7 z2%11>MRJ>n1`;7J2VLY5M_lHSJIwGwc8^l|Ac0Q|OdSg9k-5p*0oxK;ewkM%Ih6a! znAND0#laAeMorVN?$jV=o_JhN_B8J3{6z;9((^Yb2=y4^BOSDJs47WKengzry5nNU)1(h^=?NB~* z_Nt!!^ZCzHdY+qx46K^KxX>(4MZEy925i@o+L0~6cZVE)WB>JGrltzP%c`NDv2g zBh?^&7?~9w&`K2kK>ws%1-vz=>ca!_%QHUskc;VB%kGwfivQ`+9{Cv59f5E^f)jwB zD&*9{PzUM8$Xur|1UVx4M{-_4T99whtlQlHXhKH|BzDcJpkM6f?)rpY0drP;_I8?4 z&|B5pzHf^!WkO&Oq*ti0QYkzbWFugK>}%mp3Kj#|4dKf6@r6$SaFYD-y9EOaDX6bC z<-wY_?$wh?efR_0XsJF2k$2lNnp|9$AE(~$Pq>1PX!GOL^}NOSb^PkCpUeT;xtl=> z+cstZl|fu9vb@@5s||7T3gA>(gC{sXbw~THb(HPC)}3G$vC}rzaRSI*Pa->Z%{8a{ zj&icxXSQYBAna^|$$i$1cUghL_NIstfqz1!bN)kR-JwJIg(ySNfHRcei`Lc+N^Z%* zIW<+8ArlTD^d(^c-E*?&6L$EcMqZ$b*mo_GDUE_xI|H*kH~xjGat9gBX!!>a0;*NB zhpGcK7&fDrAG4ZXPu@AL<y6s&GQ5Qo-}j!b>O0Vl#9i`Vk7b4V2Bn|@s3TPk z6*gjuZL`?i7SvPf2)g;`8grEvxc&BC8ePv0S9tV4`OKPK8{Z(;MNBm@*~{3AUzFD? zFC)E}pWzFxFZ8kUg?I&T!pkPB$Mo2mv?>ROr~^ttQ2pr;;hRS>tA7_ZN|`G_Atz4;Lrw2^hMZT0nj~vcOOL| zaV@)R?`Y<+6!%J++oq@%U{AZX$v00nneFIrwl-t#^y1T=QJL&&=Rb0zgNGDa>_FpX z*6z|ahqK$R`PZm@6>~1Y@30jR@DkAh7{hy74!+uV9d}j$z=RG%E1leVzRmaf!JWSv z9e%?Gi;=$28a-t)Sfm6|=aCTwP4@{lM$w{4ujprtZ-lbg+0?Ig+apd>f#FBVY%>ss&qIFpQwIVg;lcv<|uw3x>`eL)gm*+IftII<=5ElY3|ta5hBg z54omn+5r?KI+n9W}vc%8IRgb(coiS&7~($E?rg67dJC-Q}co<6zFfq$qw1# zmMG;e)kzA=1Z#_6PZli&v{ek}0|u&fK@zJj=V#s55VQT7zJ)d7{l_MtXBbu6F&7MD zYFZT&tyT|wSj&U>M2Sa2@WKed(EeG-Jt?jOl)z2}$#;K3%k=CM4f^Vxt376eFB4!d z9wb0=UGni?lp&7}BQ@GBJ8yP*(EvRm)Yh~lmu$xiL@R?fczf!0gYgD=+e0yk4Y(sY z{z^ig!{cb{c!3n7i~%9jq5+thnhwOvk+T1uay1>Y36;;29SU1Avjs!?VLY z!3RFQNiS~DG6U^lNKyE9hBbh7I+PzVhh~BcJ@~)s7#d_VOAVWBRT|;*A3`5-lVlM( zkfcz|Xgzl;-zaG13!2}EtZ`FtmTy`{WZNJ$iUl1x)=(h!PPwWNu%KF@dU;S+p!_+C zYLy!{l}@XU%yJw}HwLpen0hB^c8O9hTHEG22nz3$70tWt_^mzuxoVof3+q!oz@bRO zs7V}HZKk)R*<{Oh4MIHEfrDV?-BmlC)Zk&wUdLav@9y`qWJfy2oRqQZ_#g>yZ65|oN46)_=W0|vKu)0o=GtwT(f9E`k zu-s+EVF3YPnMk#3uNK~OTDbk9>>2OMphdnpmq#Y|D{<7rP$1ZF{z`?xs!q3I#!(D3 z?IW0B7};5hE_C-8m`X7d^n~F2?0@a?2QB%p>jr`EpUxt($$-{k6}F& z4aeSJ9YZ5Faifn(S>2DE>r<`^>`m3}$~PD4oQzVQwwLkM>EXnM)K9)ZX=hDjf1+t2 zi6Tl7!NgMfdAAd%+B*_D6ecl;jM`{lvhQlX#OaYO_N9Iy}3M{#Rbn76{2QrAboq zS4t1oMz_xtRuB@|4GYZktxHsGrhfiRF-7zR`PG3doeWHp3tz_0uNOR(og4Ek)srz}YIH0xkgb{f0) zwkE+o$%tGNnbDG@!NX|w+vC>boEEjWw6Dh3SH^~_g2>tnvZaP7D2K^Z+QF^1vzF@Z zXXwY1*-+#RDKg=TT(M0YqJ|dZ#oo_t+qJ?P#o{SnxGrj?eSQhpnz*~)a9gVtT$>bxue)X$BN2@gq&aZ_SuBxYb zclEK_d9YXsy%u@m5sem47xXAfp3E60u}<cia`2$Rj}d;sD`de@GcoMiAA;BP`{OYnULAw-apE5sLId ziLmww1!`CeO^o1~B!wpq?{Pi!onM%pBP4kbUKQB&!B9wO{Q+|&3j}Wy z9v{JZE@QJyh?zFpoTDh)Si~7Sbce6 zV5<@P5+zDU+^GieJO;Qi!2I7A^vAC?l`(^c&y3I{Ra#BP$#>rW{J^AOAR{DT~bCG*R2l!(5 zt*&v6NXOM+f)55JWKrKWn-_%)au@sFeTb{XR=Rwy8G1Oo!$>JJx};eRnl<*Bceu+y{S7XdF6YfygAX91|B3FDqF zgqcs6AWKF?rjaadVd^H67id43yrQ`wO(-O%g+iLYrMsswQ_be284`^7<|8o=GBP&c z9wnW$9&#$(ln(I`T(`5XU+w;c1BCH=Z;1i&@f|~zE#mTnxPi$wHr9fI^$F(;i*vHU zGgqwk@}q`k`mi8+LR>T|W48&bb!a$bwqvfg{f=`T^~$rG(U&a()cfN|w+AOIsWb$i zED+^k@x~jSl8_hh(MDgRTTXhIYRv8l_Msl9i+2CK7$%Jh4^_{z4s4PL8tUon1C9*{w;Mi^oka4deF*@Zgzh!2yX zxrqRrPlu8_w`q(b82vOmVHg^I#$X0^y8 zB6vA;?d{lWNk2S@&qMpbs|~rXT)#uMd|?L4pg^m{>5uMf|Rft-qcC!pj0J;dDLA1yeC z894Hx3#!v?e5s8`A&cE^cgkhP2NQWS*-(ZuuU)d;zU)i@#&C#F_c2|Xt-RCu!uAz! z&=#3a@`2dHH6P3~e*;|TkJ$JBsZTd5YUjLhwNAqiX9ItMol-qy@m>`_&QCl5dyk194_Ta# znChg<)5stXGdQTE5TKyIb4%@ALTF2z@!~-=Am}$3Ay7mFS4J#|2|TmIMMS}g{%V|U zs5&f)x&$`Vt==EYC0%m~Q; zg#2M{Ozh7wA};O(LHBxf;S^Ba{BdMK7glE;O-gS&ucmCt zORr^&o+-V;JwNh#mu*ys%C=m18|W4`HW$GavqT`e)k=+R1PvTPV0!DD&CDXRu{R$eYwkIXVfLYasjItOG0BdnbH z6MUAcM>6QHP!F>_a*40KIze>{A8S)2l9i#{3VmwpOGyPhTz9{G1HWMY?ELU)!q@XC z{l?L7Hv-1$Q^xTS|3ieQ6-L0qUg5w<@OGq$V#}U&ku_5S-orkz!%`RjWp`O081NB1 zq_)4x3oCt(>j_EDp;o!=v1ZZp3N(qhI5LDM@+@(cnYb3lv*bTHp_=n51}uNvj(yuo zYk~R>%p(%#h3cP}V7=?a+)wK0_zBUHcCT+Y^>&Qg+X)|uv2=`ai0_&d<2$_65bxy% zwohSPxb#fjezDw1WN;D=z!Y>xaY(WXwz7eSB}Mv0W`=pI_Ib@}@&tHx6ZMx}yZw((gaeT0$HBm7SME9BI?UFmt{G2&&Cp*r+)v(`+bS)cU@VfRoj;)a zw;AZLdV*dYjyE7yy2fvgN(O?7)8Z%IM$O6JFoKSWr9kjA#2{H$uI%3qHJFUuPWNrw zh~hq|MFYZTETE~PD+~W)h^vbReOUh=5R2McAt=TYIo}oD_ z9NzB&Xt*(X=T6_S<5f8K^;Lkuf$qF5OfqSNW2 zwvcUFwgB7FfcoJP)7hY}f@a~|xG2R6zDx-w@|eng!fX+PS6gc^8s?2nIAr}uL#$)C zsw&X8p$^uoq|yL^!9fbwrxSO&vk=`E1y!8$b`9d-pnelF^=q0qyd#eBxZPfQE1JU@y1Do`7k9yt4c(i_&cCQZf(YS4e_cDK;=UYEE&QkTJ#VB zw2zZaq)Z}3S;tQEjSZ^uvzQ^EWH}IBeM=VnM^WG6kF%p+*kOcW7!&zl1mu3zo;vOy z??@Cc*`c;B`mC5OguDrD*4gYtu z9EH7I!I2bGUOq5LP4BxAsIj`h-zc}NID!2~Uup}SxMMamq+lS6lF_cvkoA9C8h0g9 zMr}%yJj%;o(ovJtj-&jfXQ~KgjOqn%IoBs$u;l?zrFMpZO8r?oN180|+JyQneBc_n-YnFY|(wQVT>R4VvX=5N55 zCR34!b7D zQ$RGlS7ExVQnL&P#%qu%Yp^~t>vv*{C|~R)ddOGjrx{_$6Or4JHJd>3iWT=pp}g*G z`EAyl1lTR1z_gm`-y0DKax-FR$_qVA+%JPRUXt-r56ez>-n{TKkB_srR2GV9p~u5P zX~%CGt2A8rD=aiAki+0JqsJ!J(lrvt->?v!HBuqplC^F9DAMU(k!Pn44{I9s~oP zu6HT&M&-_6R#A0KmY_OpR@meruS)e#lz4pM_41J|j8^IWp7ul)Tpa8#KiNfj{8gep zXkaHS`D(U6h{?yEXCw%Y{p7`+T@cLJLnQR&Pf|K1+dfrg;TvDeA!8b5_UAFmtVJz_ zJd@@9uWdu1-O9jJ54Qe2e&Kp6cIH4%6O4Lx_85VNs`ZBPJjO)cjefI^4ae9_eaja}{@VM}9azzI@m(?`+x-pEMA)79nxMvTi_ zwT~&Q?-;g`5;GXgswaeL?B?B-9pz_J2TsSo8Yx#hwbT}~%x9}E6V)Q-;b0ecA6bs# zUN->Owm5^KWD9w2n`DypF$>fllMZMxvNMONEsc|&=M6^4q{oee@31DVJOamDcTqqT z{=Yd`HT(EUF@JF9yfBH9)e7aECxcqKyv~Xfqo3U;b#6O`)nuyt0AG+UdUd&nzx>Ra z-pUL@Ej$c>207soE*>Bd@8=fDHy#4RznC`k34*%X+NcGjE^&zS^KlG8S!2R`Jlqf= zWlJ%#S-nm?$&8A2vR?TzxuRRACl?t0J#YbYmb?c;q)0QBd4W*8VQfCAnBmUeV5T7W z+xBrH{OOgChbRpFr~DfHXLUi_vRj4`}I>8&gi5YKihcA>6hMChuj`8T?^LE#PnLq<-k=exnE3CnCw`}-r_H>a-5+^ z8CDd&6YRZnTE*RaX4{yq3MtiK)L8c~YtD}~z6P!5((u)VM6@HnEq=8~GmzC9A!6r{ zVL_IUy8g6Mg%82;zlC;$*qT8ps|SWbDOzB?wg%f{Hy^yy>aWOH>?YzMdDNJ;cncB; zV`w)$X6J1x=a*=%xCqwB6@M4_3c};#h){iUIpm{hi_1m}7oE0aGzv0EJk?5X=khlH z_-VJHG4N~({&Q2RC22?Vb*1UoUWOoR>>Ra7gBxq%V~;r3V6dF@z?R>aBIY%s_*2S*d&>3g8YQby-XV zscdjQ5mn-l6hn_TVm}O4p}e&!wKXd~08xBJKw|}T6cfd79_LMC%E{;@URj=sdKjC? zVV>Q3M2CuS-Nee|Nvb$i^{2V=wQefS&~JGsMX#JWblVNXImbt%L#BxiJCYRlms{%( zF;!)T)egO^pS^X{RdcRCib%^Cl7B$WLdFZki4aP_Um(=b1X*5Hfn*B-x=Tu)Q$D zLAUgM99SO49=v?Q(X4m_^y9~gpb}|Ga+jU|g^E~^f%c-Y2xA>Yl2|fWs9tZg211*Q zyq__1Jpcr<1~W``3VBz_<+K3i0;kk9n^Q{Av_wgd{>WmJ8(^kFdeOnpC&N)lC!u4N zuK84{^w4y(KKj_>&QP}VzH7#Av0sHieQMv2Av?dCy$(=hfWy2bo3kCE9C#Y{Pn9a| zqxG>W`s3$Zpo`$ap%%O$j>i4Wg9TZ^BOL66k;jHCqmxsBM@fbMx5E9dg;ro_twXrT1n0(PNL= zgyT!2=#l6>Z_%8ur6|qn7QJ5AK_)#+2xV5QnEFK&sslxOO=DqGqJIZK`O> zAy?fR27<>7KcRB_A-h(%*m2xU+bUP|;+`<^&Z~}XT;?ZR(JqorIRNVZvk}cqq>mI3 ztT4A6Vfj%xCM%w0jiPO;q&WYWD6NaA} z0_7G2?}$)lucJ?V8K!1RvC+amfagnIvhhtrqvR~^`yREF*OuSCub*$8F<|d2p;Lk6 zmcTtk5hh0lRAu2NCHT(_J9sI%LWs?o&`ioy@rpQE3wouT%0v#2dxr-Lu0~4fAe(0F&Hyp-&_yU_C%u6Tc*FWI z(7cObe?Exp;lD z9j-8{#(_{gl{Mp1oqlQPXrULhGU}ySj*Mx&P?ucgtex^z{~Tra3a{F%mc7LWl>z@X zBsHxT{o*U&WvF~LlM z>7eCC_7n`qyp(l3lYE@;?nrX#%UUu1fxN4_i2Awe5(!{pPK7_tz_~?~q|FK4{ej&0 zOFwMNIsDwnE=>a_`Zy=(qA)O_uo^DLholpzA)ND-VHRfcXEWk8MXVSOL5`(EC3sjM zq>IH1LWP)p1MBzU`tn;GsH=SoOdmmJ)0EDOUk`}q3|LsLw;c~%mQ@#wT1Grp zMNI1}k%780a1UZrGPIvSfJO?$t4ii`C12wpZdX@4bJOp#6koQ4*DD}O;$@1A__Ynq zAR-rm^A0DOfPpjs>>z8uSt52VJ(}|blNWZHtrP^pm=C0l@sS-u{tPsgue$0QF;Fds zaMneu2!TXKHK*=VR$FYd|Nef7lkQmaY@uh?PIbi8HfXzH+V<(WMxFC}RP!}c@Y1O3 zA|m1L2;Q}854vYe_aIf0)`7c6S)j-e$MyN{*WPCxrek<>dX{;V_nBUOF@Sp?Y$xz6#<=ospQMXo+8r%!Fe-&ch-C0P@Mnh? zOWR2-UglV}anVrY%ZzzA>sA%Lw3x{9B$2w=kF&{#3UP`vHedRdw8E#fBykId>#xfyi+-f&}b*X^B{m)ERjIj3%1ZY znUd3*k^CNFIh4MlPZi04y|dEdyaz4x~-5kO6;dm=*-x*D&>*A ztGyDO7?oW5gUXOI+B&AZQfY5A4s3w!H<&mMIJy!>G!h1nru=V`@@Q0I;yd|eX4YcE znyPRwOP=j110-WOT>h{9f?Mjr2i7SWa_8_DeQ;ZIY6JpNpf}GKk`dsXCr!Bujs(KZZnEEIM)a%5rGqokssT4YUM-U8@mYjD;n3NJ`~qN6gAjbU0g5y?noKnaXp-l>!}gYhj1oZMPlV1^8R%+ z7r`R@fy>P2*h3s7xq=b-aePx#VZM;`MeAC?`~DO~>_o#k8UCJs`A$7mW4ATD^nnIn z0UuHNc*-qYk)=8z%mSo$_~9gw$Fi~ge#b#gq4%wIJ)!&Nra;cJxy!FeM)UJEH7;Mb zZ^^Dr(yei#;|9s!$z)5tV9w^Bg9kr8P3-Nj6rUoFFZ`-x zB+M}D`LCs7;4xsshm))r^JU7Hv+S6SXw#?DZ007g`0(d6d%juPHwX{jo4i{IWJRMf zY4&y!&r>~kb?G{`_q-o^@fp=~KfE4a=oFVs(^U8N1^h&INulIzPwHC$ws`J;K)|37 z3AsFM-eLHQuKr#y8mtWHmXc3ek7ldmJ8k5W=DgnTKQ0r$9hH8j)2X^J(tkO1ieuTm z{y1D>6vw8N7|7RfB}6S$X`CY)H)2i!nzjLnE+f+Mj2lL5`AKjv4L&AadPQi_Bf^7$ z5rUH^@MUs!OP3GOB~x}yTa%z3BZsfA10`!8TEg&g))^rq7%z(wBIIh79DE_NrU4IQ zkEs4VCBPb##J<}QR(6F(Ub&WDTDI=@o$@Og6vlyP4i->5$ImA*}?W`!V@x@F9!g+G^B#8l;e@)Fo1lMW86X8ljWzcVLqKL8qa zsxw&{*ZT9{?vRvozlv)w%dcKca?i|npN@O4&)@x{EwtltBxE(!6}c5=JoKIZ)qDKx z6Hs^#V}eOTJ2!bLJXPIo&A*It{O>-D0HMZ^V@|=PR^g{!qNyjfv=d_%+F)?*hG;IU3yx?G zn^kkPBB(laPx(%k)oP}1v`!1KIU-`BBZKJI0S>T{GLxc;aO^%d0wLUPi2vD;#(x&O zfHF+0w9LpdUG1<{pMmNEw2PEf2^5VR7{G7a`BQasi2H0LlQok~krJI~rorisq{w8S z$0Ik1m`b>!_ijFbPdxG13cSvLY6)mWmWG-~i|B8CJD+*G#xqg zu9UdFeEhw?`+oj;d-;I#eIIh-$d_0F`ZdLBf#y6iexk$+EB&J@;0;=TJX6iFL74}g z^JYD`xVbtxTK9DVV@jPbW$qMVOtnk3ZjInCidL>3VMdm`*z@La%E2TUe0a}8Zfy}>a7{E#xNAr(H{W|XL-Ty}beqos|RdoqnPhAVb5C*a4 zJ>6ZtUOwKhe_oy;B3X-K5vp37=Krz1bvll@2Dkmj|1tczyYS6#wg2CBgIAti`gTbc zHeMkFg<(s0ME{PVs{iX_GQzPdy|vr^eqgAwG9ke?Z_E~(iWJ9Ha;Hev zhyj9VjA~Us@6$0!h5F&4D_3izkP7-OdYUr6t>u1Y!VCI%S3%zsYf~Psyq(D3QK{wLT%<3387VE4e7S2Nu45j$Gec0r~3=eC0M%Ad_$HJzJzV5WqU=S z5pbWSo52p#AHT)^r({;yOm;ETHcoU|!EAw4GkpCjqTP081H-P=Yq3jxUMu%KlW%d2 zjH2Qk<@>6>QgB%L3j7G@!VUL8ZYIlK68L+!o1jN=SnmBqV5c9AbcpB2AR2hdCkmI< zvTn}8EdpY8RkobI*_!mYwp>9W_V$T#bqNvSr+)!x7HYEsPl#LM=1uFJkTI63eBuv& z?_zI!3{Z~YTe47^5jTkKnCsnUjw+K@(#Y@qZ8B{|GI{r+bIniPL8<)Q-OLBts1cgK zb1@L#?HH97Rn`nXO^OCpmN==;I8#3ua_6dJ|NaKn?%cXpYyfd)Gi>C&l`kf?5l;`R zbXh`+4^@_2Z!C&gd!1isgCy>J7RhfcD37T>r7Jliy%BMzQX2gSvRmVjFw$5Ze95C) ze8DnH)`{t5KBOW=d{?rX%`IRI|+EzA@VJb$ESnb5zkcWpiDNe@!^ zHyfROMfY^n2DUY_gbQ~EVNgyw39nTWdBd{zpX5Tfl&0_G2}X&PEx|eD*+v!#=aQJ} z2Dnf*>y2?X@QeEu3WxtLm-5Sbhe^f%nd>e9w}J_4B8Jxi4uf{CPH%sN`48k6{ZI|; zB-1z9#^knn)74Z6Nryw(t#QlU^yhMCCH+7)xr0U>hm@-RiHby7WzbUk~QU{ec5 z`(L~-J|=qfl6$=D9?c*#dfD=7py6)c%WJ;zo{VX@cw=>SY`6KIUh8u=jpc-HXXpoQ zOEtmovo6L+G4pllqq0Ry!t^rYU>IDPNg`+OJzNgw1-ij&eSw1yXL3#OhQuSOXkS&= zEpuo0H?s~T{+rc^(~_*V-sB>-Kr3_7DLo}KI@v_$j6IY*-m6`k$m;%!(l2I?W3?N1 znVo6ki$DHaMzX$?gww}$8(CeM0YMSgqwFaeqC%!^G0Em)c+CUEx_H5DZ6nd6=yxX) z7mre+4nOL%_#a6ql$&5e7G8UcvT%?Rz| z6R7nO2jiT+v={ps5Ze!t!y{2YxhsUHUSMK3!nNCV^(}9om|Q`X0DaWs52TEjJgv*# zz^9|?2$k=gdx$vRQRs+g)jc-4r?;B~5Lg_LTPAAdJOx$M)*`XvA%U{>XD?tI0*yA4*)3IBjAHf0AoNp>?Roi@DVmh1s)if2j_+aroMgRi%P91 z_o3EvF9z154d{ddAP%B~@k0Uz2T(gD0H}>$g6hcvZ30OU2eq(A;$KIaIu8GNvp^7dEJ7Z=dRCzjhZNeKJW0D@~%5 z8fef$JpTFHDICssr5FpHTwMa$MXt_aK%$alKjG(&`31YfO%!IN=Hrxy>JJq$dNv2R zXY5|*sqS~LcIep$C(5}X)h64=B%3wLD9lw&%v(?AmaOaNe4wHV7Wp!EfkirpXieaS z(P&&Y$()5cN%4V?uoJYLa45#hj=cRVhH`~mr749P1}#t5<(EbKggZTYsg=`naKlD4 z5Q+LDd*8$kP4$iSXkBD8Sh3)|8DnqpYD<8_!TL2`;?L@&h+;Xhh=guKgZQhln4aAE zdpstt&3u@&pb26QMEsO#IH(&=!#YH+Li`}@{7$m$@hSO9Zis{fFq$L61D|qKl=zdl z7Aa&Cfn~;3O*dnonFvbM_9cIWw1}{aQ^hdZmzIaE5DL7Ut01mwnT*+llPe}y`xZ>} z3bc6H^j3J)t2x3&W-=a2dJFn*9~BE;y!YnR;IaSp_HYy zVQ%jXwYtmVb=`zn|32sJ_{`-gZoi^cSDBlrjTMe}m#&VNj^mU216Lr{v*6ZOD`m0LVlnshK1U46f+ z5ZCJ^*|d4%M?XZ>kC?Pbg-jcay_(}H==W<4LGtb7;d^ceQ|Ic8z zioCnKgr%EdpOlFvvUbQ|(K0~sz_BrMaVZ6)Xj&^0Rz$yE4?G-pu$&GL&0/g,">").replace(/"/g,""").replace(/'/g,"'")}function r(e,...n){var t={};for(const n in e)t[n]=e[n];return n.forEach((function(e){for(const n in e)t[n]=e[n]})),t}function a(e){return e.nodeName.toLowerCase()}var i=Object.freeze({__proto__:null,escapeHTML:t,inherit:r,nodeStream:function(e){var n=[];return function e(t,r){for(var i=t.firstChild;i;i=i.nextSibling)3===i.nodeType?r+=i.nodeValue.length:1===i.nodeType&&(n.push({event:"start",offset:r,node:i}),r=e(i,r),a(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:r,node:i}));return r}(e,0),n},mergeStreams:function(e,n,r){var i=0,s="",o=[];function l(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset"}function u(e){s+=""}function d(e){("start"===e.event?c:u)(e.node)}for(;e.length||n.length;){var g=l();if(s+=t(r.substring(i,g[0].offset)),i=g[0].offset,g===e){o.reverse().forEach(u);do{d(g.splice(0,1)[0]),g=l()}while(g===e&&g.length&&g[0].offset===i);o.reverse().forEach(c)}else"start"===g[0].event?o.push(g[0].node):o.pop(),d(g.splice(0,1)[0])}return s+t(r.substr(i))}});const s="",o=e=>!!e.kind;class l{constructor(e,n){this.buffer="",this.classPrefix=n.classPrefix,e.walk(this)}addText(e){this.buffer+=t(e)}openNode(e){if(!o(e))return;let n=e.kind;e.sublanguage||(n=`${this.classPrefix}${n}`),this.span(n)}closeNode(e){o(e)&&(this.buffer+=s)}value(){return this.buffer}span(e){this.buffer+=``}}class c{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const n={kind:e,children:[]};this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,n){return"string"==typeof n?e.addText(n):n.children&&(e.openNode(n),n.children.forEach(n=>this._walk(e,n)),e.closeNode(n)),e}static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(e=>"string"==typeof e)?e.children=[e.children.join("")]:e.children.forEach(e=>{c._collapse(e)}))}}class u extends c{constructor(e){super(),this.options=e}addKeyword(e,n){""!==e&&(this.openNode(n),this.addText(e),this.closeNode())}addText(e){""!==e&&this.add(e)}addSublanguage(e,n){const t=e.root;t.kind=n,t.sublanguage=!0,this.add(t)}toHTML(){return new l(this,this.options).value()}finalize(){return!0}}function d(e){return e?"string"==typeof e?e:e.source:null}const g="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",h={begin:"\\\\[\\s\\S]",relevance:0},f={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[h]},p={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[h]},b={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},m=function(e,n,t={}){var a=r({className:"comment",begin:e,end:n,contains:[]},t);return a.contains.push(b),a.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),a},v=m("//","$"),x=m("/\\*","\\*/"),E=m("#","$");var _=Object.freeze({__proto__:null,IDENT_RE:"[a-zA-Z]\\w*",UNDERSCORE_IDENT_RE:"[a-zA-Z_]\\w*",NUMBER_RE:"\\b\\d+(\\.\\d+)?",C_NUMBER_RE:g,BINARY_NUMBER_RE:"\\b(0b[01]+)",RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(e={})=>{const n=/^#![ ]*\//;return e.binary&&(e.begin=function(...e){return e.map(e=>d(e)).join("")}(n,/.*\b/,e.binary,/\b.*/)),r({className:"meta",begin:n,end:/$/,relevance:0,"on:begin":(e,n)=>{0!==e.index&&n.ignoreMatch()}},e)},BACKSLASH_ESCAPE:h,APOS_STRING_MODE:f,QUOTE_STRING_MODE:p,PHRASAL_WORDS_MODE:b,COMMENT:m,C_LINE_COMMENT_MODE:v,C_BLOCK_COMMENT_MODE:x,HASH_COMMENT_MODE:E,NUMBER_MODE:{className:"number",begin:"\\b\\d+(\\.\\d+)?",relevance:0},C_NUMBER_MODE:{className:"number",begin:g,relevance:0},BINARY_NUMBER_MODE:{className:"number",begin:"\\b(0b[01]+)",relevance:0},CSS_NUMBER_MODE:{className:"number",begin:"\\b\\d+(\\.\\d+)?(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[h,{begin:/\[/,end:/\]/,relevance:0,contains:[h]}]}]},TITLE_MODE:{className:"title",begin:"[a-zA-Z]\\w*",relevance:0},UNDERSCORE_TITLE_MODE:{className:"title",begin:"[a-zA-Z_]\\w*",relevance:0},METHOD_GUARD:{begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,n)=>{n.data._beginMatch=e[1]},"on:end":(e,n)=>{n.data._beginMatch!==e[1]&&n.ignoreMatch()}})}}),N="of and for in not or if then".split(" ");function w(e,n){return n?+n:function(e){return N.includes(e.toLowerCase())}(e)?0:1}const R=t,y=r,{nodeStream:k,mergeStreams:O}=i,M=Symbol("nomatch");return function(t){var a=[],i={},s={},o=[],l=!0,c=/(^(<[^>]+>|\t|)+|\n)/gm,g="Could not find the language '{}', did you forget to load/include a language module?";const h={disableAutodetect:!0,name:"Plain text",contains:[]};var f={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:null,__emitter:u};function p(e){return f.noHighlightRe.test(e)}function b(e,n,t,r){var a={code:n,language:e};S("before:highlight",a);var i=a.result?a.result:m(a.language,a.code,t,r);return i.code=a.code,S("after:highlight",i),i}function m(e,t,a,s){var o=t;function c(e,n){var t=E.case_insensitive?n[0].toLowerCase():n[0];return Object.prototype.hasOwnProperty.call(e.keywords,t)&&e.keywords[t]}function u(){null!=y.subLanguage?function(){if(""!==A){var e=null;if("string"==typeof y.subLanguage){if(!i[y.subLanguage])return void O.addText(A);e=m(y.subLanguage,A,!0,k[y.subLanguage]),k[y.subLanguage]=e.top}else e=v(A,y.subLanguage.length?y.subLanguage:null);y.relevance>0&&(I+=e.relevance),O.addSublanguage(e.emitter,e.language)}}():function(){if(!y.keywords)return void O.addText(A);let e=0;y.keywordPatternRe.lastIndex=0;let n=y.keywordPatternRe.exec(A),t="";for(;n;){t+=A.substring(e,n.index);const r=c(y,n);if(r){const[e,a]=r;O.addText(t),t="",I+=a,O.addKeyword(n[0],e)}else t+=n[0];e=y.keywordPatternRe.lastIndex,n=y.keywordPatternRe.exec(A)}t+=A.substr(e),O.addText(t)}(),A=""}function h(e){return e.className&&O.openNode(e.className),y=Object.create(e,{parent:{value:y}})}function p(e){return 0===y.matcher.regexIndex?(A+=e[0],1):(L=!0,0)}var b={};function x(t,r){var i=r&&r[0];if(A+=t,null==i)return u(),0;if("begin"===b.type&&"end"===r.type&&b.index===r.index&&""===i){if(A+=o.slice(r.index,r.index+1),!l){const n=Error("0 width match regex");throw n.languageName=e,n.badRule=b.rule,n}return 1}if(b=r,"begin"===r.type)return function(e){var t=e[0],r=e.rule;const a=new n(r),i=[r.__beforeBegin,r["on:begin"]];for(const n of i)if(n&&(n(e,a),a.ignore))return p(t);return r&&r.endSameAsBegin&&(r.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")),r.skip?A+=t:(r.excludeBegin&&(A+=t),u(),r.returnBegin||r.excludeBegin||(A=t)),h(r),r.returnBegin?0:t.length}(r);if("illegal"===r.type&&!a){const e=Error('Illegal lexeme "'+i+'" for mode "'+(y.className||"")+'"');throw e.mode=y,e}if("end"===r.type){var s=function(e){var t=e[0],r=o.substr(e.index),a=function e(t,r,a){let i=function(e,n){var t=e&&e.exec(n);return t&&0===t.index}(t.endRe,a);if(i){if(t["on:end"]){const e=new n(t);t["on:end"](r,e),e.ignore&&(i=!1)}if(i){for(;t.endsParent&&t.parent;)t=t.parent;return t}}if(t.endsWithParent)return e(t.parent,r,a)}(y,e,r);if(!a)return M;var i=y;i.skip?A+=t:(i.returnEnd||i.excludeEnd||(A+=t),u(),i.excludeEnd&&(A=t));do{y.className&&O.closeNode(),y.skip||y.subLanguage||(I+=y.relevance),y=y.parent}while(y!==a.parent);return a.starts&&(a.endSameAsBegin&&(a.starts.endRe=a.endRe),h(a.starts)),i.returnEnd?0:t.length}(r);if(s!==M)return s}if("illegal"===r.type&&""===i)return 1;if(B>1e5&&B>3*r.index)throw Error("potential infinite loop, way more iterations than matches");return A+=i,i.length}var E=T(e);if(!E)throw console.error(g.replace("{}",e)),Error('Unknown language: "'+e+'"');var _=function(e){function n(n,t){return RegExp(d(n),"m"+(e.case_insensitive?"i":"")+(t?"g":""))}class t{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,n){n.position=this.position++,this.matchIndexes[this.matchAt]=n,this.regexes.push([n,e]),this.matchAt+=function(e){return RegExp(e.toString()+"|").exec("").length-1}(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map(e=>e[1]);this.matcherRe=n(function(e,n="|"){for(var t=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,r=0,a="",i=0;i0&&(a+=n),a+="(";o.length>0;){var l=t.exec(o);if(null==l){a+=o;break}a+=o.substring(0,l.index),o=o.substring(l.index+l[0].length),"\\"===l[0][0]&&l[1]?a+="\\"+(+l[1]+s):(a+=l[0],"("===l[0]&&r++)}a+=")"}return a}(e),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const n=this.matcherRe.exec(e);if(!n)return null;const t=n.findIndex((e,n)=>n>0&&void 0!==e),r=this.matchIndexes[t];return n.splice(0,t),Object.assign(n,r)}}class a{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const n=new t;return this.rules.slice(e).forEach(([e,t])=>n.addRule(e,t)),n.compile(),this.multiRegexes[e]=n,n}considerAll(){this.regexIndex=0}addRule(e,n){this.rules.push([e,n]),"begin"===n.type&&this.count++}exec(e){const n=this.getMatcher(this.regexIndex);n.lastIndex=this.lastIndex;const t=n.exec(e);return t&&(this.regexIndex+=t.position+1,this.regexIndex===this.count&&(this.regexIndex=0)),t}}function i(e,n){const t=e.input[e.index-1],r=e.input[e.index+e[0].length];"."!==t&&"."!==r||n.ignoreMatch()}if(e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return function t(s,o){const l=s;if(s.compiled)return l;s.compiled=!0,s.__beforeBegin=null,s.keywords=s.keywords||s.beginKeywords;let c=null;if("object"==typeof s.keywords&&(c=s.keywords.$pattern,delete s.keywords.$pattern),s.keywords&&(s.keywords=function(e,n){var t={};return"string"==typeof e?r("keyword",e):Object.keys(e).forEach((function(n){r(n,e[n])})),t;function r(e,r){n&&(r=r.toLowerCase()),r.split(" ").forEach((function(n){var r=n.split("|");t[r[0]]=[e,w(r[0],r[1])]}))}}(s.keywords,e.case_insensitive)),s.lexemes&&c)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");return l.keywordPatternRe=n(s.lexemes||c||/\w+/,!0),o&&(s.beginKeywords&&(s.begin="\\b("+s.beginKeywords.split(" ").join("|")+")(?=\\b|\\s)",s.__beforeBegin=i),s.begin||(s.begin=/\B|\b/),l.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin),s.end||s.endsWithParent||(s.end=/\B|\b/),s.end&&(l.endRe=n(s.end)),l.terminator_end=d(s.end)||"",s.endsWithParent&&o.terminator_end&&(l.terminator_end+=(s.end?"|":"")+o.terminator_end)),s.illegal&&(l.illegalRe=n(s.illegal)),void 0===s.relevance&&(s.relevance=1),s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((function(e){return function(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map((function(n){return r(e,{variants:null},n)}))),e.cached_variants?e.cached_variants:function e(n){return!!n&&(n.endsWithParent||e(n.starts))}(e)?r(e,{starts:e.starts?r(e.starts):null}):Object.isFrozen(e)?r(e):e}("self"===e?s:e)}))),s.contains.forEach((function(e){t(e,l)})),s.starts&&t(s.starts,o),l.matcher=function(e){const n=new a;return e.contains.forEach(e=>n.addRule(e.begin,{rule:e,type:"begin"})),e.terminator_end&&n.addRule(e.terminator_end,{type:"end"}),e.illegal&&n.addRule(e.illegal,{type:"illegal"}),n}(l),l}(e)}(E),N="",y=s||_,k={},O=new f.__emitter(f);!function(){for(var e=[],n=y;n!==E;n=n.parent)n.className&&e.unshift(n.className);e.forEach(e=>O.openNode(e))}();var A="",I=0,S=0,B=0,L=!1;try{for(y.matcher.considerAll();;){B++,L?L=!1:(y.matcher.lastIndex=S,y.matcher.considerAll());const e=y.matcher.exec(o);if(!e)break;const n=x(o.substring(S,e.index),e);S=e.index+n}return x(o.substr(S)),O.closeAllNodes(),O.finalize(),N=O.toHTML(),{relevance:I,value:N,language:e,illegal:!1,emitter:O,top:y}}catch(n){if(n.message&&n.message.includes("Illegal"))return{illegal:!0,illegalBy:{msg:n.message,context:o.slice(S-100,S+100),mode:n.mode},sofar:N,relevance:0,value:R(o),emitter:O};if(l)return{illegal:!1,relevance:0,value:R(o),emitter:O,language:e,top:y,errorRaised:n};throw n}}function v(e,n){n=n||f.languages||Object.keys(i);var t=function(e){const n={relevance:0,emitter:new f.__emitter(f),value:R(e),illegal:!1,top:h};return n.emitter.addText(e),n}(e),r=t;return n.filter(T).filter(I).forEach((function(n){var a=m(n,e,!1);a.language=n,a.relevance>r.relevance&&(r=a),a.relevance>t.relevance&&(r=t,t=a)})),r.language&&(t.second_best=r),t}function x(e){return f.tabReplace||f.useBR?e.replace(c,e=>"\n"===e?f.useBR?"
    ":e:f.tabReplace?e.replace(/\t/g,f.tabReplace):e):e}function E(e){let n=null;const t=function(e){var n=e.className+" ";n+=e.parentNode?e.parentNode.className:"";const t=f.languageDetectRe.exec(n);if(t){var r=T(t[1]);return r||(console.warn(g.replace("{}",t[1])),console.warn("Falling back to no-highlight mode for this block.",e)),r?t[1]:"no-highlight"}return n.split(/\s+/).find(e=>p(e)||T(e))}(e);if(p(t))return;S("before:highlightBlock",{block:e,language:t}),f.useBR?(n=document.createElement("div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n"):n=e;const r=n.textContent,a=t?b(t,r,!0):v(r),i=k(n);if(i.length){const e=document.createElement("div");e.innerHTML=a.value,a.value=O(i,k(e),r)}a.value=x(a.value),S("after:highlightBlock",{block:e,result:a}),e.innerHTML=a.value,e.className=function(e,n,t){var r=n?s[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),e.includes(r)||a.push(r),a.join(" ").trim()}(e.className,t,a.language),e.result={language:a.language,re:a.relevance,relavance:a.relevance},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.relevance,relavance:a.second_best.relevance})}const N=()=>{if(!N.called){N.called=!0;var e=document.querySelectorAll("pre code");a.forEach.call(e,E)}};function T(e){return e=(e||"").toLowerCase(),i[e]||i[s[e]]}function A(e,{languageName:n}){"string"==typeof e&&(e=[e]),e.forEach(e=>{s[e]=n})}function I(e){var n=T(e);return n&&!n.disableAutodetect}function S(e,n){var t=e;o.forEach((function(e){e[t]&&e[t](n)}))}Object.assign(t,{highlight:b,highlightAuto:v,fixMarkup:x,highlightBlock:E,configure:function(e){f=y(f,e)},initHighlighting:N,initHighlightingOnLoad:function(){window.addEventListener("DOMContentLoaded",N,!1)},registerLanguage:function(e,n){var r=null;try{r=n(t)}catch(n){if(console.error("Language definition for '{}' could not be registered.".replace("{}",e)),!l)throw n;console.error(n),r=h}r.name||(r.name=e),i[e]=r,r.rawDefinition=n.bind(null,t),r.aliases&&A(r.aliases,{languageName:e})},listLanguages:function(){return Object.keys(i)},getLanguage:T,registerAliases:A,requireLanguage:function(e){var n=T(e);if(n)return n;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))},autoDetection:I,inherit:y,addPlugin:function(e){o.push(e)}}),t.debugMode=function(){l=!1},t.safeMode=function(){l=!0},t.versionString="10.1.1";for(const n in _)"object"==typeof _[n]&&e(_[n]);return Object.assign(t,_),t}({})}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);hljs.registerLanguage("php",function(){"use strict";return function(e){var r={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},t={className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{begin:/\?>/}]},a={className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},n={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},i={keyword:"__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ die echo exit include include_once print require require_once array abstract and as binary bool boolean break callable case catch class clone const continue declare default do double else elseif empty enddeclare endfor endforeach endif endswitch endwhile eval extends final finally float for foreach from global goto if implements instanceof insteadof int integer interface isset iterable list new object or private protected public real return string switch throw trait try unset use var void while xor yield",literal:"false null true",built_in:"Error|0 AppendIterator ArgumentCountError ArithmeticError ArrayIterator ArrayObject AssertionError BadFunctionCallException BadMethodCallException CachingIterator CallbackFilterIterator CompileError Countable DirectoryIterator DivisionByZeroError DomainException EmptyIterator ErrorException Exception FilesystemIterator FilterIterator GlobIterator InfiniteIterator InvalidArgumentException IteratorIterator LengthException LimitIterator LogicException MultipleIterator NoRewindIterator OutOfBoundsException OutOfRangeException OuterIterator OverflowException ParentIterator ParseError RangeException RecursiveArrayIterator RecursiveCachingIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RecursiveTreeIterator RegexIterator RuntimeException SeekableIterator SplDoublyLinkedList SplFileInfo SplFileObject SplFixedArray SplHeap SplMaxHeap SplMinHeap SplObjectStorage SplObserver SplObserver SplPriorityQueue SplQueue SplStack SplSubject SplSubject SplTempFileObject TypeError UnderflowException UnexpectedValueException ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Throwable Traversable WeakReference Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass"};return{aliases:["php","php3","php4","php5","php6","php7"],case_insensitive:!0,keywords:i,contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[t]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler"}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},t,{className:"keyword",begin:/\$this\b/},r,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:i,contains:["self",r,e.C_BLOCK_COMMENT_MODE,a,n]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},a,n]}}}());hljs.registerLanguage("nginx",function(){"use strict";return function(e){var n={className:"variable",variants:[{begin:/\$\d+/},{begin:/\$\{/,end:/}/},{begin:"[\\$\\@]"+e.UNDERSCORE_IDENT_RE}]},a={endsWithParent:!0,keywords:{$pattern:"[a-z/_]+",literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},relevance:0,illegal:"=>",contains:[e.HASH_COMMENT_MODE,{className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/}]},{begin:"([a-z]+):/",end:"\\s",endsWithParent:!0,excludeEnd:!0,contains:[n]},{className:"regexp",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:"\\s\\^",end:"\\s|{|;",returnEnd:!0},{begin:"~\\*?\\s+",end:"\\s|{|;",returnEnd:!0},{begin:"\\*(\\.[a-z\\-]+)+"},{begin:"([a-z\\-]+\\.)+\\*"}]},{className:"number",begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{className:"number",begin:"\\b\\d+[kKmMgGdshdwy]*\\b",relevance:0},n]};return{name:"Nginx config",aliases:["nginxconf"],contains:[e.HASH_COMMENT_MODE,{begin:e.UNDERSCORE_IDENT_RE+"\\s+{",returnBegin:!0,end:"{",contains:[{className:"section",begin:e.UNDERSCORE_IDENT_RE}],relevance:0},{begin:e.UNDERSCORE_IDENT_RE+"\\s",end:";|{",returnBegin:!0,contains:[{className:"attribute",begin:e.UNDERSCORE_IDENT_RE,starts:a}],relevance:0}],illegal:"[^\\s\\}]"}}}());hljs.registerLanguage("csharp",function(){"use strict";return function(e){var n={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let nameof on orderby partial remove select set value var when where yield",literal:"null false true"},i=e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),a={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},s={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},t=e.inherit(s,{illegal:/\n/}),l={className:"subst",begin:"{",end:"}",keywords:n},r=e.inherit(l,{illegal:/\n/}),c={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,r]},o={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},l]},g=e.inherit(o,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},r]});l.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.C_BLOCK_COMMENT_MODE],r.contains=[g,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var d={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},i]},_=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",b={begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},d,a,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},i,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+_+"\\s+)+"+e.IDENT_RE+"\\s*(\\<.+\\>)?\\s*\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{begin:e.IDENT_RE+"\\s*(\\<.+\\>)?\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE,E],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0,contains:[d,a,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}}());hljs.registerLanguage("perl",function(){"use strict";return function(e){var n={$pattern:/[\w.]+/,keyword:"getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qq fileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmget sub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedir ioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when"},t={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:n},s={begin:"->{",end:"}"},r={variants:[{begin:/\$\d/},{begin:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{begin:/[\$%@][^\s\w{]/,relevance:0}]},i=[e.BACKSLASH_ESCAPE,t,r],a=[r,e.HASH_COMMENT_MODE,e.COMMENT("^\\=\\w","\\=cut",{endsWithParent:!0}),s,{className:"string",contains:i,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*\\<",end:"\\>",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"{\\w+}",contains:[],relevance:0},{begin:"-?\\w+\\s*\\=\\>",contains:[],relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",begin:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",relevance:10},{className:"regexp",begin:"(m|qr)?/",end:"/[a-z]*",contains:[e.BACKSLASH_ESCAPE],relevance:0}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return t.contains=a,s.contains=a,{name:"Perl",aliases:["pl","pm"],keywords:n,contains:a}}}());hljs.registerLanguage("swift",function(){"use strict";return function(e){var i={keyword:"#available #colorLiteral #column #else #elseif #endif #file #fileLiteral #function #if #imageLiteral #line #selector #sourceLocation _ __COLUMN__ __FILE__ __FUNCTION__ __LINE__ Any as as! as? associatedtype associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c compactMap contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n=e.COMMENT("/\\*","\\*/",{contains:["self"]}),t={className:"subst",begin:/\\\(/,end:"\\)",keywords:i,contains:[]},a={className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:/"""/,end:/"""/},{begin:/"/,end:/"/}]},r={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0};return t.contains=[r],{name:"Swift",keywords:i,contains:[a,e.C_LINE_COMMENT_MODE,n,{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*[!?]"},{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},r,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:i,contains:["self",r,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:i,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain|@dynamicMemberLookup|@propertyWrapper)\\b"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,n]}]}}}());hljs.registerLanguage("makefile",function(){"use strict";return function(e){var i={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin:"",relevance:10,contains:[a,i,t,s,{begin:"\\[",end:"\\]",contains:[{className:"meta",begin:"",contains:[a,s,i,t]}]}]},e.COMMENT("\x3c!--","--\x3e",{relevance:10}),{begin:"<\\!\\[CDATA\\[",end:"\\]\\]>",relevance:10},n,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:")",end:">",keywords:{name:"style"},contains:[c],starts:{end:"",returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:")",end:">",keywords:{name:"script"},contains:[c],starts:{end:"<\/script>",returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:"",contains:[{className:"name",begin:/[^\/><\s]+/,relevance:0},c]}]}}}());hljs.registerLanguage("bash",function(){"use strict";return function(e){const s={};Object.assign(s,{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{/,end:/\}/,contains:[{begin:/:-/,contains:[s]}]}]});const t={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,t]};t.contains.push(n);const a={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,s]},i=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10}),c={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b-?[a-z\._]+\b/,keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},contains:[i,e.SHEBANG(),c,a,e.HASH_COMMENT_MODE,n,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},s]}}}());hljs.registerLanguage("c-like",function(){"use strict";return function(e){function t(e){return"(?:"+e+")?"}var n="(decltype\\(auto\\)|"+t("[a-zA-Z_]\\w*::")+"[a-zA-Z_]\\w*"+t("<.*?>")+")",r={className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},a={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},i={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},s={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(a,{className:"meta-string"}),{className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},o={className:"title",begin:t("[a-zA-Z_]\\w*::")+e.IDENT_RE,relevance:0},c=t("[a-zA-Z_]\\w*::")+e.IDENT_RE+"\\s*\\(",l={keyword:"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_t short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary",literal:"true false nullptr NULL"},d=[r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,a],_={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:l,contains:d.concat([{begin:/\(/,end:/\)/,keywords:l,contains:d.concat(["self"]),relevance:0}]),relevance:0},u={className:"function",begin:"("+n+"[\\*&\\s]+)+"+c,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:l,illegal:/[^\w\s\*&:<>]/,contains:[{begin:"decltype\\(auto\\)",keywords:l,relevance:0},{begin:c,returnBegin:!0,contains:[o],relevance:0},{className:"params",begin:/\(/,end:/\)/,keywords:l,relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,i,r,{begin:/\(/,end:/\)/,keywords:l,relevance:0,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,i,r]}]},r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s]};return{aliases:["c","cc","h","c++","h++","hpp","hh","hxx","cxx"],keywords:l,disableAutodetect:!0,illegal:"",keywords:l,contains:["self",r]},{begin:e.IDENT_RE+"::",keywords:l},{className:"class",beginKeywords:"class struct",end:/[{;:]/,contains:[{begin://,contains:["self"]},e.TITLE_MODE]}]),exports:{preprocessor:s,strings:a,keywords:l}}}}());hljs.registerLanguage("coffeescript",function(){"use strict";const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);return function(r){var t={keyword:e.concat(["then","unless","until","loop","by","when","and","or","is","isnt","not"]).filter((e=>n=>!e.includes(n))(["var","const","let","function","static"])).join(" "),literal:n.concat(["yes","no","on","off"]).join(" "),built_in:a.concat(["npm","print"]).join(" ")},i="[A-Za-z$_][0-9A-Za-z$_]*",s={className:"subst",begin:/#\{/,end:/}/,keywords:t},o=[r.BINARY_NUMBER_MODE,r.inherit(r.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'''/,end:/'''/,contains:[r.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[r.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/,contains:[r.BACKSLASH_ESCAPE,s]},{begin:/"/,end:/"/,contains:[r.BACKSLASH_ESCAPE,s]}]},{className:"regexp",variants:[{begin:"///",end:"///",contains:[s,r.HASH_COMMENT_MODE]},{begin:"//[gim]{0,3}(?=\\W)",relevance:0},{begin:/\/(?![ *]).*?(?![\\]).\/[gim]{0,3}(?=\W)/}]},{begin:"@"+i},{subLanguage:"javascript",excludeBegin:!0,excludeEnd:!0,variants:[{begin:"```",end:"```"},{begin:"`",end:"`"}]}];s.contains=o;var c=r.inherit(r.TITLE_MODE,{begin:i}),l={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(o)}]};return{name:"CoffeeScript",aliases:["coffee","cson","iced"],keywords:t,illegal:/\/\*/,contains:o.concat([r.COMMENT("###","###"),r.HASH_COMMENT_MODE,{className:"function",begin:"^\\s*"+i+"\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[c,l]},{begin:/[:\(,=]\s*/,relevance:0,contains:[{className:"function",begin:"(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[l]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[c]},c]},{begin:i+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}}());hljs.registerLanguage("ruby",function(){"use strict";return function(e){var n="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",a={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},s={className:"doctag",begin:"@[A-Za-z]+"},i={begin:"#<",end:">"},r=[e.COMMENT("#","$",{contains:[s]}),e.COMMENT("^\\=begin","^\\=end",{contains:[s],relevance:10}),e.COMMENT("^__END__","\\n$")],c={className:"subst",begin:"#\\{",end:"}",keywords:a},t={className:"string",contains:[e.BACKSLASH_ESCAPE,c],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<[-~]?'?(\w+)(?:.|\n)*?\n\s*\1\b/,returnBegin:!0,contains:[{begin:/<<[-~]?'?/},e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,c]})]}]},b={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:a},d=[t,i,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(r)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:n}),b].concat(r)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[t,{begin:n}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:a},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[i,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,c],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(r),relevance:0}].concat(r);c.contains=d,b.contains=d;var g=[{begin:/^\s*=>/,starts:{end:"$",contains:d}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:d}}];return{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:a,illegal:/\/\*/,contains:r.concat(g).concat(d)}}}());hljs.registerLanguage("yaml",function(){"use strict";return function(e){var n="true false yes no null",a="[\\w#;/?:@&=+$,.~*\\'()[\\]]+",s={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:"{{",end:"}}"},{begin:"%{",end:"}"}]}]},i=e.inherit(s,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),l={end:",",endsWithParent:!0,excludeEnd:!0,contains:[],keywords:n,relevance:0},t={begin:"{",end:"}",contains:[l],illegal:"\\n",relevance:0},g={begin:"\\[",end:"\\]",contains:[l],illegal:"\\n",relevance:0},b=[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---s*$",relevance:10},{className:"string",begin:"[\\|>]([0-9]?[+-])?[ ]*\\n( *)[\\S ]+\\n(\\2[\\S ]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+a},{className:"type",begin:"!<"+a+">"},{className:"type",begin:"!"+a},{className:"type",begin:"!!"+a},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"\\-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},{className:"number",begin:e.C_NUMBER_RE+"\\b"},t,g,s],c=[...b];return c.pop(),c.push(i),l.contains=c,{name:"YAML",case_insensitive:!0,aliases:["yml","YAML"],contains:b}}}());hljs.registerLanguage("d",function(){"use strict";return function(e){var a={$pattern:e.UNDERSCORE_IDENT_RE,keyword:"abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__",built_in:"bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring",literal:"false null true"},d="((0|[1-9][\\d_]*)|0[bB][01_]+|0[xX]([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))",n="\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};",t={className:"number",begin:"\\b"+d+"(L|u|U|Lu|LU|uL|UL)?",relevance:0},_={className:"number",begin:"\\b(((0[xX](([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)\\.([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)|\\.?([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))[pP][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))|((0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(\\.\\d*|([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)))|\\d+\\.(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)|\\.(0|[1-9][\\d_]*)([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))?))([fF]|L|i|[fF]i|Li)?|"+d+"(i|[fF]i|Li))",relevance:0},r={className:"string",begin:"'("+n+"|.)",end:"'",illegal:"."},i={className:"string",begin:'"',contains:[{begin:n,relevance:0}],end:'"[cwd]?'},s=e.COMMENT("\\/\\+","\\+\\/",{contains:["self"],relevance:10});return{name:"D",keywords:a,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,{className:"string",begin:'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?',relevance:10},i,{className:"string",begin:'[rq]"',end:'"[cwd]?',relevance:5},{className:"string",begin:"`",end:"`[cwd]?"},{className:"string",begin:'q"\\{',end:'\\}"'},_,t,r,{className:"meta",begin:"^#!",end:"$",relevance:5},{className:"meta",begin:"#(line)",end:"$",relevance:5},{className:"keyword",begin:"@[a-zA-Z_][a-zA-Z_\\d]*"}]}}}());hljs.registerLanguage("properties",function(){"use strict";return function(e){var n="[ \\t\\f]*",t="("+n+"[:=]"+n+"|[ \\t\\f]+)",a="([^\\\\:= \\t\\f\\n]|\\\\.)+",s={end:t,relevance:0,starts:{className:"string",end:/$/,relevance:0,contains:[{begin:"\\\\\\n"}]}};return{name:".properties",case_insensitive:!0,illegal:/\S/,contains:[e.COMMENT("^\\s*[!#]","$"),{begin:"([^\\\\\\W:= \\t\\f\\n]|\\\\.)+"+t,returnBegin:!0,contains:[{className:"attr",begin:"([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",endsParent:!0,relevance:0}],starts:s},{begin:a+t,returnBegin:!0,relevance:0,contains:[{className:"meta",begin:a,endsParent:!0,relevance:0}],starts:s},{className:"attr",relevance:0,begin:a+n+"$"}]}}}());hljs.registerLanguage("http",function(){"use strict";return function(e){var n="HTTP/[0-9\\.]+";return{name:"HTTP",aliases:["https"],illegal:"\\S",contains:[{begin:"^"+n,end:"$",contains:[{className:"number",begin:"\\b\\d{3}\\b"}]},{begin:"^[A-Z]+ (.*?) "+n+"$",returnBegin:!0,end:"$",contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{begin:n},{className:"keyword",begin:"[A-Z]+"}]},{className:"attribute",begin:"^\\w",end:": ",excludeEnd:!0,illegal:"\\n|\\s|=",starts:{end:"$",relevance:0}},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}]}}}());hljs.registerLanguage("haskell",function(){"use strict";return function(e){var n={variants:[e.COMMENT("--","$"),e.COMMENT("{-","-}",{contains:["self"]})]},i={className:"meta",begin:"{-#",end:"#-}"},a={className:"meta",begin:"^#",end:"$"},s={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},l={begin:"\\(",end:"\\)",illegal:'"',contains:[i,a,{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TITLE_MODE,{begin:"[_a-z][\\w']*"}),n]};return{name:"Haskell",aliases:["hs"],keywords:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",contains:[{beginKeywords:"module",end:"where",keywords:"module where",contains:[l,n],illegal:"\\W\\.|;"},{begin:"\\bimport\\b",end:"$",keywords:"import qualified as hiding",contains:[l,n],illegal:"\\W\\.|;"},{className:"class",begin:"^(\\s*)?(class|instance)\\b",end:"where",keywords:"class family instance where",contains:[s,l,n]},{className:"class",begin:"\\b(data|(new)?type)\\b",end:"$",keywords:"data family type newtype deriving",contains:[i,s,l,{begin:"{",end:"}",contains:l.contains},n]},{beginKeywords:"default",end:"$",contains:[s,l,n]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,n]},{begin:"\\bforeign\\b",end:"$",keywords:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",contains:[s,e.QUOTE_STRING_MODE,n]},{className:"meta",begin:"#!\\/usr\\/bin\\/env runhaskell",end:"$"},i,a,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,s,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),n,{begin:"->|<-"}]}}}());hljs.registerLanguage("handlebars",function(){"use strict";function e(...e){return e.map(e=>(function(e){return e?"string"==typeof e?e:e.source:null})(e)).join("")}return function(n){const a={"builtin-name":"action bindattr collection component concat debugger each each-in get hash if in input link-to loc log lookup mut outlet partial query-params render template textarea unbound unless view with yield"},t=/\[.*?\]/,s=/[^\s!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]+/,i=e("(",/'.*?'/,"|",/".*?"/,"|",t,"|",s,"|",/\.|\//,")+"),r=e("(",t,"|",s,")(?==)"),l={begin:i,lexemes:/[\w.\/]+/},c=n.inherit(l,{keywords:{literal:"true false undefined null"}}),o={begin:/\(/,end:/\)/},m={className:"attr",begin:r,relevance:0,starts:{begin:/=/,end:/=/,starts:{contains:[n.NUMBER_MODE,n.QUOTE_STRING_MODE,n.APOS_STRING_MODE,c,o]}}},d={contains:[n.NUMBER_MODE,n.QUOTE_STRING_MODE,n.APOS_STRING_MODE,{begin:/as\s+\|/,keywords:{keyword:"as"},end:/\|/,contains:[{begin:/\w+/}]},m,c,o],returnEnd:!0},g=n.inherit(l,{className:"name",keywords:a,starts:n.inherit(d,{end:/\)/})});o.contains=[g];const u=n.inherit(l,{keywords:a,className:"name",starts:n.inherit(d,{end:/}}/})}),b=n.inherit(l,{keywords:a,className:"name"}),h=n.inherit(l,{className:"name",keywords:a,starts:n.inherit(d,{end:/}}/})});return{name:"Handlebars",aliases:["hbs","html.hbs","html.handlebars","htmlbars"],case_insensitive:!0,subLanguage:"xml",contains:[{begin:/\\\{\{/,skip:!0},{begin:/\\\\(?=\{\{)/,skip:!0},n.COMMENT(/\{\{!--/,/--\}\}/),n.COMMENT(/\{\{!/,/\}\}/),{className:"template-tag",begin:/\{\{\{\{(?!\/)/,end:/\}\}\}\}/,contains:[u],starts:{end:/\{\{\{\{\//,returnEnd:!0,subLanguage:"xml"}},{className:"template-tag",begin:/\{\{\{\{\//,end:/\}\}\}\}/,contains:[b]},{className:"template-tag",begin:/\{\{#/,end:/\}\}/,contains:[u]},{className:"template-tag",begin:/\{\{(?=else\}\})/,end:/\}\}/,keywords:"else"},{className:"template-tag",begin:/\{\{\//,end:/\}\}/,contains:[b]},{className:"template-variable",begin:/\{\{\{/,end:/\}\}\}/,contains:[h]},{className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[h]}]}}}());hljs.registerLanguage("rust",function(){"use strict";return function(e){var n="([ui](8|16|32|64|128|size)|f(32|64))?",t="drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!";return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",keyword:"abstract as async await become box break const continue crate do dyn else enum extern false final fn for if impl in let loop macro match mod move mut override priv pub ref return self Self static struct super trait true try type typeof unsafe unsized use virtual where while yield",literal:"true false Some None Ok Err",built_in:t},illegal:""}]}}}());hljs.registerLanguage("cpp",function(){"use strict";return function(e){var t=e.getLanguage("c-like").rawDefinition();return t.disableAutodetect=!1,t.name="C++",t.aliases=["cc","c++","h++","hpp","hh","hxx","cxx"],t}}());hljs.registerLanguage("ini",function(){"use strict";function e(e){return e?"string"==typeof e?e:e.source:null}function n(...n){return n.map(n=>e(n)).join("")}return function(a){var s={className:"number",relevance:0,variants:[{begin:/([\+\-]+)?[\d]+_[\d_]+/},{begin:a.NUMBER_RE}]},i=a.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];var t={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)}/}]},r={className:"literal",begin:/\bon|off|true|false|yes|no\b/},l={className:"string",contains:[a.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,s,"self"],relevance:0},g="("+[/[A-Za-z0-9_-]+/,/"(\\"|[^"])*"/,/'[^']*'/].map(n=>e(n)).join("|")+")";return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[i,{className:"section",begin:/\[+/,end:/\]+/},{begin:n(g,"(\\s*\\.\\s*",g,")*",n("(?=",/\s*=\s*[^#\s]/,")")),className:"attr",starts:{end:/$/,contains:[i,c,r,t,l,s]}}]}}}());hljs.registerLanguage("objectivec",function(){"use strict";return function(e){var n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n,keyword:"@interface @class @protocol @implementation"};return{name:"Objective-C",aliases:["mm","objc","obj-c"],keywords:{$pattern:n,keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},illegal:"/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+_.keyword.split(" ").join("|")+")\\b",end:"({|$)",excludeEnd:!0,keywords:_,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}}());hljs.registerLanguage("apache",function(){"use strict";return function(e){var n={className:"number",begin:"\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?"};return{name:"Apache config",aliases:["apacheconf"],case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"section",begin:"",contains:[n,{className:"number",begin:":\\d{1,5}"},e.inherit(e.QUOTE_STRING_MODE,{relevance:0})]},{className:"attribute",begin:/\w+/,relevance:0,keywords:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{end:/$/,relevance:0,keywords:{literal:"on off all deny allow"},contains:[{className:"meta",begin:"\\s\\[",end:"\\]$"},{className:"variable",begin:"[\\$%]\\{",end:"\\}",contains:["self",{className:"number",begin:"[\\$%]\\d+"}]},n,{className:"number",begin:"\\d+"},e.QUOTE_STRING_MODE]}}],illegal:/\S/}}}());hljs.registerLanguage("java",function(){"use strict";function e(e){return e?"string"==typeof e?e:e.source:null}function n(e){return a("(",e,")?")}function a(...n){return n.map(n=>e(n)).join("")}function s(...n){return"("+n.map(n=>e(n)).join("|")+")"}return function(e){var t="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",i={className:"meta",begin:"@[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},r=e=>a("[",e,"]+([",e,"_]*[",e,"]+)?"),c={className:"number",variants:[{begin:`\\b(0[bB]${r("01")})[lL]?`},{begin:`\\b(0${r("0-7")})[dDfFlL]?`},{begin:a(/\b0[xX]/,s(a(r("a-fA-F0-9"),/\./,r("a-fA-F0-9")),a(r("a-fA-F0-9"),/\.?/),a(/\./,r("a-fA-F0-9"))),/([pP][+-]?(\d+))?/,/[fFdDlL]?/)},{begin:a(/\b/,s(a(/\d*\./,r("\\d")),r("\\d")),/[eE][+-]?[\d]+[dDfF]?/)},{begin:a(/\b/,r(/\d/),n(/\.?/),n(r(/\d/)),/[dDfFlL]?/)}],relevance:0};return{name:"Java",aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},c,i]}}}());hljs.registerLanguage("x86asm",function(){"use strict";return function(s){return{name:"Intel x86 Assembly",case_insensitive:!0,keywords:{$pattern:"[.%]?"+s.IDENT_RE,keyword:"lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63",built_in:"ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr",meta:"%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__"},contains:[s.COMMENT(";","$",{relevance:0}),{className:"number",variants:[{begin:"\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\b",relevance:0},{begin:"\\$[0-9][0-9A-Fa-f]*",relevance:0},{begin:"\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b"},{begin:"\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b"}]},s.QUOTE_STRING_MODE,{className:"string",variants:[{begin:"'",end:"[^\\\\]'"},{begin:"`",end:"[^\\\\]`"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)"},{begin:"^\\s*%%[A-Za-z0-9_$#@~.?]*:"}],relevance:0},{className:"subst",begin:"%[0-9]+",relevance:0},{className:"subst",begin:"%!S+",relevance:0},{className:"meta",begin:/^\s*\.[\w_-]+/}]}}}());hljs.registerLanguage("kotlin",function(){"use strict";return function(e){var n={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},a={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},i={className:"subst",begin:"\\${",end:"}",contains:[e.C_NUMBER_MODE]},s={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},t={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[s,i]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,s,i]}]};i.contains.push(t);var r={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},l={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(t,{className:"meta-string"})]}]},c=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),o={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},d=o;return d.variants[1].contains=[o],o.variants[1].contains=[d],{name:"Kotlin",aliases:["kt"],keywords:n,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,c,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},a,r,l,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:n,illegal:/fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin://,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[o,e.C_LINE_COMMENT_MODE,c],relevance:0},e.C_LINE_COMMENT_MODE,c,r,l,t,e.C_NUMBER_MODE]},c]},{className:"class",beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin://,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/,excludeBegin:!0,returnEnd:!0},r,l]},t,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},{className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0}]}}}());hljs.registerLanguage("armasm",function(){"use strict";return function(s){const e={variants:[s.COMMENT("^[ \\t]*(?=#)","$",{relevance:0,excludeBegin:!0}),s.COMMENT("[;@]","$",{relevance:0}),s.C_LINE_COMMENT_MODE,s.C_BLOCK_COMMENT_MODE]};return{name:"ARM Assembly",case_insensitive:!0,aliases:["arm"],keywords:{$pattern:"\\.?"+s.IDENT_RE,meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 pc lr sp ip sl sb fp a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 {PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @"},contains:[{className:"keyword",begin:"\\b(adc|(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|wfe|wfi|yield)(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?[sptrx]?(?=\\s)"},e,s.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"[#$=]?0x[0-9a-f]+"},{begin:"[#$=]?0b[01]+"},{begin:"[#$=]\\d+"},{begin:"\\b\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^[ \\t]*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"^[a-z_\\.\\$][a-z0-9_\\.\\$]+"},{begin:"[=#]\\w+"}],relevance:0}]}}}());hljs.registerLanguage("go",function(){"use strict";return function(e){var n={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{name:"Go",aliases:["golang"],keywords:n,illegal:">>|\.\.\.) /},i={className:"subst",begin:/\{/,end:/\}/,keywords:n,illegal:/#/},s={begin:/\{\{/,relevance:0},r={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a,s,i]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,s,i]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,s,i]},{begin:/(fr|rf|f)"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},l={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},t={className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:["self",a,l,r,e.HASH_COMMENT_MODE]}]};return i.contains=[r,l,a],{name:"Python",aliases:["py","gyp","ipython"],keywords:n,illegal:/(<\/|->|\?)|=>/,contains:[a,l,{beginKeywords:"if",relevance:0},r,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,t,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}}());hljs.registerLanguage("shell",function(){"use strict";return function(s){return{name:"Shell Session",aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[/\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}}());hljs.registerLanguage("scala",function(){"use strict";return function(e){var n={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:"\\${",end:"}"}]},a={className:"string",variants:[{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:'"""',end:'"""',relevance:10},{begin:'[a-z]+"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,n]},{className:"string",begin:'[a-z]+"""',end:'"""',contains:[n],relevance:10}]},s={className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},t={className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,relevance:0},i={className:"class",beginKeywords:"class object trait type",end:/[:={\[\n;]/,excludeEnd:!0,contains:[{beginKeywords:"extends with",relevance:10},{begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[s]},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[s]},t]},l={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[t]};return{name:"Scala",keywords:{literal:"true false null",keyword:"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,{className:"symbol",begin:"'\\w[\\w\\d_]*(?!')"},s,l,i,e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}}());hljs.registerLanguage("julia",function(){"use strict";return function(e){var r="[A-Za-z_\\u00A1-\\uFFFF][A-Za-z_0-9\\u00A1-\\uFFFF]*",t={$pattern:r,keyword:"in isa where baremodule begin break catch ccall const continue do else elseif end export false finally for function global if import importall let local macro module quote return true try using while type immutable abstract bitstype typealias ",literal:"true false ARGS C_NULL DevNull ENDIAN_BOM ENV I Inf Inf16 Inf32 Inf64 InsertionSort JULIA_HOME LOAD_PATH MergeSort NaN NaN16 NaN32 NaN64 PROGRAM_FILE QuickSort RoundDown RoundFromZero RoundNearest RoundNearestTiesAway RoundNearestTiesUp RoundToZero RoundUp STDERR STDIN STDOUT VERSION catalan e|0 eu|0 eulergamma golden im nothing pi γ π φ ",built_in:"ANY AbstractArray AbstractChannel AbstractFloat AbstractMatrix AbstractRNG AbstractSerializer AbstractSet AbstractSparseArray AbstractSparseMatrix AbstractSparseVector AbstractString AbstractUnitRange AbstractVecOrMat AbstractVector Any ArgumentError Array AssertionError Associative Base64DecodePipe Base64EncodePipe Bidiagonal BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError BufferStream CachingPool CapturedException CartesianIndex CartesianRange Cchar Cdouble Cfloat Channel Char Cint Cintmax_t Clong Clonglong ClusterManager Cmd CodeInfo Colon Complex Complex128 Complex32 Complex64 CompositeException Condition ConjArray ConjMatrix ConjVector Cptrdiff_t Cshort Csize_t Cssize_t Cstring Cuchar Cuint Cuintmax_t Culong Culonglong Cushort Cwchar_t Cwstring DataType Date DateFormat DateTime DenseArray DenseMatrix DenseVecOrMat DenseVector Diagonal Dict DimensionMismatch Dims DirectIndexString Display DivideError DomainError EOFError EachLine Enum Enumerate ErrorException Exception ExponentialBackOff Expr Factorization FileMonitor Float16 Float32 Float64 Function Future GlobalRef GotoNode HTML Hermitian IO IOBuffer IOContext IOStream IPAddr IPv4 IPv6 IndexCartesian IndexLinear IndexStyle InexactError InitError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException InvalidStateException Irrational KeyError LabelNode LinSpace LineNumberNode LoadError LowerTriangular MIME Matrix MersenneTwister Method MethodError MethodTable Module NTuple NewvarNode NullException Nullable Number ObjectIdDict OrdinalRange OutOfMemoryError OverflowError Pair ParseError PartialQuickSort PermutedDimsArray Pipe PollingFileWatcher ProcessExitedException Ptr QuoteNode RandomDevice Range RangeIndex Rational RawFD ReadOnlyMemoryError Real ReentrantLock Ref Regex RegexMatch RemoteChannel RemoteException RevString RoundingMode RowVector SSAValue SegmentationFault SerializationState Set SharedArray SharedMatrix SharedVector Signed SimpleVector Slot SlotNumber SparseMatrixCSC SparseVector StackFrame StackOverflowError StackTrace StepRange StepRangeLen StridedArray StridedMatrix StridedVecOrMat StridedVector String SubArray SubString SymTridiagonal Symbol Symmetric SystemError TCPSocket Task Text TextDisplay Timer Tridiagonal Tuple Type TypeError TypeMapEntry TypeMapLevel TypeName TypeVar TypedSlot UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UndefRefError UndefVarError UnicodeError UniformScaling Union UnionAll UnitRange Unsigned UpperTriangular Val Vararg VecElement VecOrMat Vector VersionNumber Void WeakKeyDict WeakRef WorkerConfig WorkerPool "},a={keywords:t,illegal:/<\//},n={className:"subst",begin:/\$\(/,end:/\)/,keywords:t},o={className:"variable",begin:"\\$"+r},i={className:"string",contains:[e.BACKSLASH_ESCAPE,n,o],variants:[{begin:/\w*"""/,end:/"""\w*/,relevance:10},{begin:/\w*"/,end:/"\w*/}]},l={className:"string",contains:[e.BACKSLASH_ESCAPE,n,o],begin:"`",end:"`"},s={className:"meta",begin:"@"+r};return a.name="Julia",a.contains=[{className:"number",begin:/(\b0x[\d_]*(\.[\d_]*)?|0x\.\d[\d_]*)p[-+]?\d+|\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\b\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eEfF][-+]?\d+)?/,relevance:0},{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},i,l,s,{className:"comment",variants:[{begin:"#=",end:"=#",relevance:10},{begin:"#",end:"$"}]},e.HASH_COMMENT_MODE,{className:"keyword",begin:"\\b(((abstract|primitive)\\s+)type|(mutable\\s+)?struct)\\b"},{begin:/<:/}],n.contains=a.contains,a}}());hljs.registerLanguage("php-template",function(){"use strict";return function(n){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},n.inherit(n.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),n.inherit(n.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}}());hljs.registerLanguage("scss",function(){"use strict";return function(e){var t={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"},i={className:"number",begin:"#[0-9A-Fa-f]+"};return e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:"\\#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},{className:"selector-attr",begin:"\\[",end:"\\]",illegal:"$"},{className:"selector-tag",begin:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",relevance:0},{className:"selector-pseudo",begin:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{className:"selector-pseudo",begin:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},t,{className:"attribute",begin:"\\b(src|z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",illegal:"[^\\s]"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:":",end:";",contains:[t,i,e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"meta",begin:"!important"}]},{begin:"@(page|font-face)",lexemes:"@[a-z-]+",keywords:"@page @font-face"},{begin:"@",end:"[{;]",returnBegin:!0,keywords:"and or not only",contains:[{begin:"@[a-z-]+",className:"keyword"},t,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,i,e.CSS_NUMBER_MODE]}]}}}());hljs.registerLanguage("r",function(){"use strict";return function(e){var n="([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*";return{name:"R",contains:[e.HASH_COMMENT_MODE,{begin:n,keywords:{$pattern:n,keyword:"function if in break next repeat else for return switch while try tryCatch stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...",literal:"NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10"},relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",relevance:0},{className:"number",begin:"\\d+\\.(?!\\d)(?:i\\b)?",relevance:0},{className:"number",begin:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{className:"number",begin:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{begin:"`",end:"`",relevance:0},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]}]}}}());hljs.registerLanguage("sql",function(){"use strict";return function(e){var t=e.COMMENT("--","$");return{name:"SQL",case_insensitive:!0,illegal:/[<>{}*]/,contains:[{beginKeywords:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",end:/;/,endsWithParent:!0,keywords:{$pattern:/[\w\.]+/,keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void"},contains:[{className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},{className:"string",begin:'"',end:'"',contains:[{begin:'""'}]},{className:"string",begin:"`",end:"`"},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]}}}());hljs.registerLanguage("c",function(){"use strict";return function(e){var n=e.getLanguage("c-like").rawDefinition();return n.name="C",n.aliases=["c","h"],n}}());hljs.registerLanguage("json",function(){"use strict";return function(n){var e={literal:"true false null"},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],t=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],a={end:",",endsWithParent:!0,excludeEnd:!0,contains:t,keywords:e},l={begin:"{",end:"}",contains:[{className:"attr",begin:/"/,end:/"/,contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(a,{begin:/:/})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(a)],illegal:"\\S"};return t.push(l,s),i.forEach((function(n){t.push(n)})),{name:"JSON",contains:t,keywords:e,illegal:"\\S"}}}());hljs.registerLanguage("python-repl",function(){"use strict";return function(n){return{aliases:["pycon"],contains:[{className:"meta",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}}());hljs.registerLanguage("markdown",function(){"use strict";return function(n){const e={begin:"<",end:">",subLanguage:"xml",relevance:0},a={begin:"\\[.+?\\][\\(\\[].*?[\\)\\]]",returnBegin:!0,contains:[{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0,relevance:0},{className:"link",begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}],relevance:10},i={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},s={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};i.contains.push(s),s.contains.push(i);var c=[e,a];return i.contains=i.contains.concat(c),s.contains=s.contains.concat(c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:c=c.concat(i,s)},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:c}]}]},e,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},i,s,{className:"quote",begin:"^>\\s+",contains:c,end:"$"},{className:"code",variants:[{begin:"(`{3,})(.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})(.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},a,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}}());hljs.registerLanguage("javascript",function(){"use strict";const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);function s(e){return r("(?=",e,")")}function r(...e){return e.map(e=>(function(e){return e?"string"==typeof e?e:e.source:null})(e)).join("")}return function(t){var i="[A-Za-z$_][0-9A-Za-z$_]*",c={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/},o={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:e.join(" "),literal:n.join(" "),built_in:a.join(" ")},l={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:t.C_NUMBER_RE+"n?"}],relevance:0},E={className:"subst",begin:"\\$\\{",end:"\\}",keywords:o,contains:[]},d={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,E],subLanguage:"xml"}},g={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,E],subLanguage:"css"}},u={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,E]};E.contains=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,d,g,u,l,t.REGEXP_MODE];var b=E.contains.concat([{begin:/\(/,end:/\)/,contains:["self"].concat(E.contains,[t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE])},t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]),_={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:b};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:o,contains:[t.SHEBANG({binary:"node",relevance:5}),{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,d,g,u,t.C_LINE_COMMENT_MODE,t.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+",contains:[{className:"type",begin:"\\{",end:"\\}",relevance:0},{className:"variable",begin:i+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),t.C_BLOCK_COMMENT_MODE,l,{begin:r(/[{,\n]\s*/,s(r(/(((\/\/.*)|(\/\*(.|\n)*\*\/))\s*)*/,i+"\\s*:"))),relevance:0,contains:[{className:"attr",begin:i+s("\\s*:"),relevance:0}]},{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.REGEXP_MODE,{className:"function",begin:"(\\([^(]*(\\([^(]*(\\([^(]*\\))?\\))?\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.UNDERSCORE_IDENT_RE},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:o,contains:b}]}]},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:"<>",end:""},{begin:c.begin,end:c.end}],subLanguage:"xml",contains:[{begin:c.begin,end:c.end,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[t.inherit(t.TITLE_MODE,{begin:i}),_],illegal:/\[|%/},{begin:/\$[(.]/},t.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},t.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0},{begin:"(get|set)\\s+(?="+i+"\\()",end:/{/,keywords:"get set",contains:[t.inherit(t.TITLE_MODE,{begin:i}),{begin:/\(\)/},_]}],illegal:/#(?!!)/}}}());hljs.registerLanguage("typescript",function(){"use strict";const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);return function(r){var t={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:e.concat(["type","namespace","typedef","interface","public","private","protected","implements","declare","abstract","readonly"]).join(" "),literal:n.join(" "),built_in:a.concat(["any","void","number","boolean","string","object","never","enum"]).join(" ")},s={className:"meta",begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:r.C_NUMBER_RE+"n?"}],relevance:0},o={className:"subst",begin:"\\$\\{",end:"\\}",keywords:t,contains:[]},c={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[r.BACKSLASH_ESCAPE,o],subLanguage:"xml"}},l={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[r.BACKSLASH_ESCAPE,o],subLanguage:"css"}},E={className:"string",begin:"`",end:"`",contains:[r.BACKSLASH_ESCAPE,o]};o.contains=[r.APOS_STRING_MODE,r.QUOTE_STRING_MODE,c,l,E,i,r.REGEXP_MODE];var d={begin:"\\(",end:/\)/,keywords:t,contains:["self",r.QUOTE_STRING_MODE,r.APOS_STRING_MODE,r.NUMBER_MODE]},u={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:[r.C_LINE_COMMENT_MODE,r.C_BLOCK_COMMENT_MODE,s,d]};return{name:"TypeScript",aliases:["ts"],keywords:t,contains:[r.SHEBANG(),{className:"meta",begin:/^\s*['"]use strict['"]/},r.APOS_STRING_MODE,r.QUOTE_STRING_MODE,c,l,E,r.C_LINE_COMMENT_MODE,r.C_BLOCK_COMMENT_MODE,i,{begin:"("+r.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[r.C_LINE_COMMENT_MODE,r.C_BLOCK_COMMENT_MODE,r.REGEXP_MODE,{className:"function",begin:"(\\([^(]*(\\([^(]*(\\([^(]*\\))?\\))?\\)|"+r.UNDERSCORE_IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:r.UNDERSCORE_IDENT_RE},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:d.contains}]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[\{;]/,excludeEnd:!0,keywords:t,contains:["self",r.inherit(r.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*"}),u],illegal:/%/,relevance:0},{beginKeywords:"constructor",end:/[\{;]/,excludeEnd:!0,contains:["self",u]},{begin:/module\./,keywords:{built_in:"module"},relevance:0},{beginKeywords:"module",end:/\{/,excludeEnd:!0},{beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:"interface extends"},{begin:/\$[(.]/},{begin:"\\."+r.IDENT_RE,relevance:0},s,d]}}}());hljs.registerLanguage("plaintext",function(){"use strict";return function(t){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}}());hljs.registerLanguage("less",function(){"use strict";return function(e){var n="([\\w-]+|@{[\\w-]+})",a=[],s=[],t=function(e){return{className:"string",begin:"~?"+e+".*?"+e}},r=function(e,n,a){return{className:e,begin:n,relevance:a}},i={begin:"\\(",end:"\\)",contains:s,relevance:0};s.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t("'"),t('"'),e.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},r("number","#[0-9A-Fa-f]+\\b"),i,r("variable","@@?[\\w-]+",10),r("variable","@{[\\w-]+}"),r("built_in","~?`[^`]*?`"),{className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0},{className:"meta",begin:"!important"});var c=s.concat({begin:"{",end:"}",contains:a}),l={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(s)},o={begin:n+"\\s*:",returnBegin:!0,end:"[;}]",relevance:0,contains:[{className:"attribute",begin:n,end:":",excludeEnd:!0,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:s}}]},g={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",returnEnd:!0,contains:s,relevance:0}},d={className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:c}},b={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:n,end:"{"}],returnBegin:!0,returnEnd:!0,illegal:"[<='$\"]",relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,l,r("keyword","all\\b"),r("variable","@{[\\w-]+}"),r("selector-tag",n+"%?",0),r("selector-id","#"+n),r("selector-class","\\."+n,0),r("selector-tag","&",0),{className:"selector-attr",begin:"\\[",end:"\\]"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"\\(",end:"\\)",contains:c},{begin:"!important"}]};return a.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,g,d,o,b),{name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:a}}}());hljs.registerLanguage("lua",function(){"use strict";return function(e){var t={begin:"\\[=*\\[",end:"\\]=*\\]",contains:["self"]},a=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[","\\]=*\\]",{contains:[t],relevance:10})];return{name:"Lua",keywords:{$pattern:e.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:a.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:a}].concat(a)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\[=*\\[",end:"\\]=*\\]",contains:[t],relevance:5}])}}}()); diff --git a/public/handbook/index.html b/public/handbook/index.html new file mode 100644 index 0000000..e090edf --- /dev/null +++ b/public/handbook/index.html @@ -0,0 +1,245 @@ + + + + + + Preface - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + + + + + + + + +
    +
    +

    Preface

    +

    What is this?

    +

    HitchHiker Linux is a general purpose Linux distribution that has been carefully +assembled to give a more traditional, Unix-like experience. HitchHiker provides, +out of the box, all development tools and libraries to rebuild itself from source +code as well as being a solid base from which to create whatever system is +desired.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/installation/binary/arm/index.html b/public/handbook/installation/binary/arm/index.html new file mode 100644 index 0000000..ddb2f48 --- /dev/null +++ b/public/handbook/installation/binary/arm/index.html @@ -0,0 +1,247 @@ + + + + + + Installing on Arm - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    Arm

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/installation/binary/arm/rpi.html b/public/handbook/installation/binary/arm/rpi.html new file mode 100644 index 0000000..a0cb15e --- /dev/null +++ b/public/handbook/installation/binary/arm/rpi.html @@ -0,0 +1,247 @@ + + + + + + Raspberry Pi - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    Raspberry Pi

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/installation/binary/downloading.html b/public/handbook/installation/binary/downloading.html new file mode 100644 index 0000000..7e584b8 --- /dev/null +++ b/public/handbook/installation/binary/downloading.html @@ -0,0 +1,247 @@ + + + + + + Downloading Binary Sets - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    downloading

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/installation/binary/index.html b/public/handbook/installation/binary/index.html new file mode 100644 index 0000000..fb61f2a --- /dev/null +++ b/public/handbook/installation/binary/index.html @@ -0,0 +1,247 @@ + + + + + + Installing Binary Sets - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    Binary

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/installation/binary/riscv/beagle-v.html b/public/handbook/installation/binary/riscv/beagle-v.html new file mode 100644 index 0000000..b7984e4 --- /dev/null +++ b/public/handbook/installation/binary/riscv/beagle-v.html @@ -0,0 +1,247 @@ + + + + + + BeagleV - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    BeagleV

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/installation/binary/riscv/index.html b/public/handbook/installation/binary/riscv/index.html new file mode 100644 index 0000000..8dc92b0 --- /dev/null +++ b/public/handbook/installation/binary/riscv/index.html @@ -0,0 +1,247 @@ + + + + + + Installing on Riscv - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    Riscv

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/installation/binary/riscv/qemu.html b/public/handbook/installation/binary/riscv/qemu.html new file mode 100644 index 0000000..4fbfffd --- /dev/null +++ b/public/handbook/installation/binary/riscv/qemu.html @@ -0,0 +1,247 @@ + + + + + + Qemu - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    Qemu

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/installation/binary/x86/index.html b/public/handbook/installation/binary/x86/index.html new file mode 100644 index 0000000..14a2189 --- /dev/null +++ b/public/handbook/installation/binary/x86/index.html @@ -0,0 +1,259 @@ + + + + + + Installing on x86 - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    x86

    +

    The x86 platform includes all 32-bit Intel and Intel compatible processors +ranging from i386 to i786 processors. For the purposes of installation, the +x86_64 architecture, including all AMD64 and Intel 64-bit processors, is identical +in function and included in this page.

    +
    +

    NOTE:

    +

    Please note that the minimum supported processor is i486. This is not a limitation +specific to HitchHiker, but a limitation of the Linux Kernel itself and Glibc. +Should you have a computer of this vintage, and wish to get it running, you have +the choice of installing an older and likely unsupported distribution, or +installing an operating system descended from 4.4BSD (FreeBSD, NetBSD, and OpenBSD).

    +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/installation/index.html b/public/handbook/installation/index.html new file mode 100644 index 0000000..5418a35 --- /dev/null +++ b/public/handbook/installation/index.html @@ -0,0 +1,247 @@ + + + + + + Installation - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    Installation

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/installation/source/building-hitchhiker.html b/public/handbook/installation/source/building-hitchhiker.html new file mode 100644 index 0000000..8f14a5f --- /dev/null +++ b/public/handbook/installation/source/building-hitchhiker.html @@ -0,0 +1,247 @@ + + + + + + Building HitchHiker - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    Building HitchHiker

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/installation/source/downloading.html b/public/handbook/installation/source/downloading.html new file mode 100644 index 0000000..e4a3bea --- /dev/null +++ b/public/handbook/installation/source/downloading.html @@ -0,0 +1,247 @@ + + + + + + Downloading HHL Source - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    downloading

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/installation/source/index.html b/public/handbook/installation/source/index.html new file mode 100644 index 0000000..29507aa --- /dev/null +++ b/public/handbook/installation/source/index.html @@ -0,0 +1,247 @@ + + + + + + Installing from Source - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    Source

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/installation/source/preparing.html b/public/handbook/installation/source/preparing.html new file mode 100644 index 0000000..b56ff12 --- /dev/null +++ b/public/handbook/installation/source/preparing.html @@ -0,0 +1,247 @@ + + + + + + Preparing to Build - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    Preparing to Build

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/introduction/audience.html b/public/handbook/introduction/audience.html new file mode 100644 index 0000000..eac1cb6 --- /dev/null +++ b/public/handbook/introduction/audience.html @@ -0,0 +1,267 @@ + + + + + + Target Audience - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    Target Audience

    +

    My first computer was a Tandy TRS-80 handed down from an uncle. The interface +consisted of a blinking cursor on a monochrome screen, and it had no storage +beyond RAM and ROM. Whatever you could type into memory before shutting it off +and run with the included Basic interpretor was the extent of the software that +ran on that computer. As limited as it was, it was fascinating to me.

    +

    In this day and age an interface consisting of a blinking cursor without wallaper, +icons, notifications and voice input is bewildering to the average human. +Nevertheless, that is the interface that a fresh installation of HItchHiker will +always present to the user. Therefore, it can be reasoned that the target audience +will consist of individuals who either are comfortable with using a command line +interface or are eager to learn. Some proficiency using Linux or Unix is helpful, +but not 100% necessary given an ability and willingness to read the documentation +and get used to being "close to the machine".

    +

    Indeed, HitchHiker will not do any kind of hand holding while you are installing +and using your new system. You will be expected to learn the hows and whys of +what makes a computer work. Most operating systems, including the majority of +Linux distributions, will gladly install, configure, and run 100s of programs +without your ever being aware that they are doing it. By the time you have +achived proficiency with HitchHiker, you will know what every running process is +for and why it is needed.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/introduction/features.html b/public/handbook/introduction/features.html new file mode 100644 index 0000000..e227436 --- /dev/null +++ b/public/handbook/introduction/features.html @@ -0,0 +1,280 @@ + + + + + + Features - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    What's Included

    +
      +
    • A full C and C++ development environment including compiler, headers and libraries.
    • +
    • Up to date versions of kernel, base libraries and toolchain components.
    • +
    • Where possible, BSD and historical Unix utilities have been incorporated.
    • +
    • Full documentation is included for all included software.
    • +
    • The HitchHiker build system is capable of bootstrapping itself from another +Linux distro or from HitchHiker itself, and is available for x86, Arm and RiscV +architectures.
    • +
    +

    What's Missing

    +
      +
    • Systemd - HitchHiker uses the S6 supervision suite and a minimal init.
    • +
    • No installer - HitchHiker is installed using Unix command line tools present +on any Linux distribution.
    • +
    • No apt, rpm, dnf, pacman, etc. HitchHiker uses NetBSD Pkgsrc for installing +extra software.
    • +
    • No daemons beyond what is required to provide a functional command prompt are +started by default.
    • +
    • No extra configuration is done to provide a "consistent look and feel" or any +such crap. +The Linux world is full of choices. Unfortunately, among the hundreds of installable +offerings the vast majority are "vanity distros" which are just a remix of another +distribution, with a different set of installed packages and a few cool wallpapers.
    • +
    +

    HitchHiker on the other hand is not based on any other distribution of Linux. It +is a fully independent offering which tracks the most recent releases of the Linux +kernel, Glibc, GCC etc. It's smaller userland utilities have been mostly ported +from BSD or implemented from scratch. It's source tree can compile the entire +operating system with a single command using Makefiles. We strive for an active +and independent presence and want to push open source into new and exciting +frontiers, such as RiscV, while paying homage to classic Unix. While there are +other offerings that cover some of the same territory (Arch, Gentoo) we felt that +there was space for something different.

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/introduction/index.html b/public/handbook/introduction/index.html new file mode 100644 index 0000000..2b616de --- /dev/null +++ b/public/handbook/introduction/index.html @@ -0,0 +1,281 @@ + + + + + + Introduction - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    Introduction

    +
    #!/don't/panic
    +man 42
    +
    +

    HitchHiker Linux is a very Unix-like distribution of Linux with a focus on +simplicity, elegance and providing a solid base that the end user can turn into +whatever they see fit.

    +

    Core Principles:

    +
      +
    • The default installation should include the bare minimum required software to provide a solid base.
    • +
    • Complexity should be discouraged in favor of code elegance, security and maintainability.
    • +
    • End users should not be discouraged from tinkering with their system.
    • +
    • The distribution should make as few assumptions as possible regarding end use.
    • +
    • While newer releases of software often eliminate bugs and vulnerabilities, newer software packages are not by default more secure than stable, mature packages (newer is not always better).
    • +
    • Any changes to the core system functionality, especially those which change expected functionality, must be well justified and well vetted before deployment.
    • +
    • The base installation should include everything required to rebuild itself from source.
    • +
    • The distribution should make as few changes to the upstream software as possible, delivering it as intended by the original author.
    • +
    • Patching of sources should only be done to fix bugs or vulnerabilities.
    • +
    +

    HHL was born of a desire to harness the greater hardware support of Linux while +paying respect to the Unix systems from which Linux was born. The author was a +long time user of FreeBSD who migrated to Arch for several years, but has become +increasingly frustrated with Systemd, Gnome, RedHat and Ubuntu dominance. It is +believed that there is a need for a distribution that does not pander to ease of +use for casual users at the expense of putting up roadblocks for experienced Unix +veterans.

    +

    Architectures

    +

    HHL is running on the following processor architectures:

    +
      +
    • x86 (minimum i486)
    • +
    • x86_64
    • +
    • armv7l
    • +
    • aarch64
    • +
    • riscv64
    • +
    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/mark.min.js b/public/handbook/mark.min.js new file mode 100644 index 0000000..1636231 --- /dev/null +++ b/public/handbook/mark.min.js @@ -0,0 +1,7 @@ +/*!*************************************************** +* mark.js v8.11.1 +* https://markjs.io/ +* Copyright (c) 2014–2018, Julian Kühnel +* Released under the MIT license https://git.io/vwTVl +*****************************************************/ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Mark=t()}(this,function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;t(this,e),this.ctx=n,this.iframes=r,this.exclude=i,this.iframesTimeout=o}return n(e,[{key:"getContexts",value:function(){var e=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach(function(t){var n=e.filter(function(e){return e.contains(t)}).length>0;-1!==e.indexOf(t)||n||e.push(t)}),e}},{key:"getIframeContents",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=void 0;try{var i=e.contentWindow;if(r=i.document,!i||!r)throw new Error("iframe inaccessible")}catch(e){n()}r&&t(r)}},{key:"isIframeBlank",value:function(e){var t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}},{key:"observeIframeLoad",value:function(e,t,n){var r=this,i=!1,o=null,a=function a(){if(!i){i=!0,clearTimeout(o);try{r.isIframeBlank(e)||(e.removeEventListener("load",a),r.getIframeContents(e,t,n))}catch(e){n()}}};e.addEventListener("load",a),o=setTimeout(a,this.iframesTimeout)}},{key:"onIframeReady",value:function(e,t,n){try{"complete"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch(e){n()}}},{key:"waitForIframes",value:function(e,t){var n=this,r=0;this.forEachIframe(e,function(){return!0},function(e){r++,n.waitForIframes(e.querySelector("html"),function(){--r||t()})},function(e){e||t()})}},{key:"forEachIframe",value:function(t,n,r){var i=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},a=t.querySelectorAll("iframe"),s=a.length,c=0;a=Array.prototype.slice.call(a);var u=function(){--s<=0&&o(c)};s||u(),a.forEach(function(t){e.matches(t,i.exclude)?u():i.onIframeReady(t,function(e){n(t)&&(c++,r(e)),u()},u)})}},{key:"createIterator",value:function(e,t,n){return document.createNodeIterator(e,t,n,!1)}},{key:"createInstanceOnIframe",value:function(t){return new e(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(e,t,n){if(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING){if(null===t)return!0;if(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)return!0}return!1}},{key:"getIteratorNode",value:function(e){var t=e.previousNode();return{prevNode:t,node:null===t?e.nextNode():e.nextNode()&&e.nextNode()}}},{key:"checkIframeFilter",value:function(e,t,n,r){var i=!1,o=!1;return r.forEach(function(e,t){e.val===n&&(i=t,o=e.handled)}),this.compareNodeIframe(e,t,n)?(!1!==i||o?!1===i||o||(r[i].handled=!0):r.push({val:n,handled:!0}),!0):(!1===i&&r.push({val:n,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(e,t,n,r){var i=this;e.forEach(function(e){e.handled||i.getIframeContents(e.val,function(e){i.createInstanceOnIframe(e).forEachNode(t,n,r)})})}},{key:"iterateThroughNodes",value:function(e,t,n,r,i){for(var o,a=this,s=this.createIterator(t,e,r),c=[],u=[],l=void 0,h=void 0;void 0,o=a.getIteratorNode(s),h=o.prevNode,l=o.node;)this.iframes&&this.forEachIframe(t,function(e){return a.checkIframeFilter(l,h,e,c)},function(t){a.createInstanceOnIframe(t).forEachNode(e,function(e){return u.push(e)},r)}),u.push(l);u.forEach(function(e){n(e)}),this.iframes&&this.handleOpenIframes(c,e,n,r),i()}},{key:"forEachNode",value:function(e,t,n){var r=this,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},o=this.getContexts(),a=o.length;a||i(),o.forEach(function(o){var s=function(){r.iterateThroughNodes(e,o,t,n,function(){--a<=0&&i()})};r.iframes?r.waitForIframes(o,s):s()})}}],[{key:"matches",value:function(e,t){var n="string"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){var i=!1;return n.every(function(t){return!r.call(e,t)||(i=!0,!1)}),i}return!1}}]),e}(),o=function(){function e(n){t(this,e),this.opt=r({},{diacritics:!0,synonyms:{},accuracy:"partially",caseSensitive:!1,ignoreJoiners:!1,ignorePunctuation:[],wildcards:"disabled"},n)}return n(e,[{key:"create",value:function(e){return"disabled"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),new RegExp(e,"gm"+(this.opt.caseSensitive?"":"i"))}},{key:"escapeStr",value:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createSynonymsRegExp",value:function(e){var t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var i in t)if(t.hasOwnProperty(i)){var o=t[i],a="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(i):this.escapeStr(i),s="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(o):this.escapeStr(o);""!==a&&""!==s&&(e=e.replace(new RegExp("("+this.escapeStr(a)+"|"+this.escapeStr(s)+")","gm"+n),r+"("+this.processSynonyms(a)+"|"+this.processSynonyms(s)+")"+r))}return e}},{key:"processSynonyms",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:"setupWildcardsRegExp",value:function(e){return(e=e.replace(/(?:\\)*\?/g,function(e){return"\\"===e.charAt(0)?"?":""})).replace(/(?:\\)*\*/g,function(e){return"\\"===e.charAt(0)?"*":""})}},{key:"createWildcardsRegExp",value:function(e){var t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(e){return e.replace(/[^(|)\\]/g,function(e,t,n){var r=n.charAt(t+1);return/[(|)\\]/.test(r)||""===r?e:e+"\0"})}},{key:"createJoinersRegExp",value:function(e){var t=[],n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join("["+t.join("")+"]*"):e}},{key:"createDiacriticsRegExp",value:function(e){var t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"],r=[];return e.split("").forEach(function(i){n.every(function(n){if(-1!==n.indexOf(i)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp("["+n+"]","gm"+t),"["+n+"]"),r.push(n)}return!0})}),e}},{key:"createMergedBlanksRegExp",value:function(e){return e.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(e){var t=this,n=this.opt.accuracy,r="string"==typeof n?n:n.value,i="";switch(("string"==typeof n?[]:n.limiters).forEach(function(e){i+="|"+t.escapeStr(e)}),r){case"partially":default:return"()("+e+")";case"complementary":return"()([^"+(i="\\s"+(i||this.escapeStr("!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿")))+"]*"+e+"[^"+i+"]*)";case"exactly":return"(^|\\s"+i+")("+e+")(?=$|\\s"+i+")"}}}]),e}(),a=function(){function a(e){t(this,a),this.ctx=e,this.ie=!1;var n=window.navigator.userAgent;(n.indexOf("MSIE")>-1||n.indexOf("Trident")>-1)&&(this.ie=!0)}return n(a,[{key:"log",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",r=this.opt.log;this.opt.debug&&"object"===(void 0===r?"undefined":e(r))&&"function"==typeof r[n]&&r[n]("mark.js: "+t)}},{key:"getSeparatedKeywords",value:function(e){var t=this,n=[];return e.forEach(function(e){t.opt.separateWordSearch?e.split(" ").forEach(function(e){e.trim()&&-1===n.indexOf(e)&&n.push(e)}):e.trim()&&-1===n.indexOf(e)&&n.push(e)}),{keywords:n.sort(function(e,t){return t.length-e.length}),length:n.length}}},{key:"isNumeric",value:function(e){return Number(parseFloat(e))==e}},{key:"checkRanges",value:function(e){var t=this;if(!Array.isArray(e)||"[object Object]"!==Object.prototype.toString.call(e[0]))return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];var n=[],r=0;return e.sort(function(e,t){return e.start-t.start}).forEach(function(e){var i=t.callNoMatchOnInvalidRanges(e,r),o=i.start,a=i.end;i.valid&&(e.start=o,e.length=a-o,n.push(e),r=a)}),n}},{key:"callNoMatchOnInvalidRanges",value:function(e,t){var n=void 0,r=void 0,i=!1;return e&&void 0!==e.start?(r=(n=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?i=!0:(this.log("Ignoring invalid or overlapping range: "+JSON.stringify(e)),this.opt.noMatch(e))):(this.log("Ignoring invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:n,end:r,valid:i}}},{key:"checkWhitespaceRanges",value:function(e,t,n){var r=void 0,i=!0,o=n.length,a=t-o,s=parseInt(e.start,10)-a;return(r=(s=s>o?o:s)+parseInt(e.length,10))>o&&(r=o,this.log("End range automatically set to the max value of "+o)),s<0||r-s<0||s>o||r>o?(i=!1,this.log("Invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)):""===n.substring(s,r).replace(/\s+/g,"")&&(i=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:s,end:r,valid:i}}},{key:"getTextNodes",value:function(e){var t=this,n="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,function(e){r.push({start:n.length,end:(n+=e.textContent).length,node:e})},function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},function(){e({value:n,nodes:r})})}},{key:"matchesExclude",value:function(e){return i.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(e,t,n){var r=this.opt.element?this.opt.element:"mark",i=e.splitText(t),o=i.splitText(n-t),a=document.createElement(r);return a.setAttribute("data-markjs","true"),this.opt.className&&a.setAttribute("class",this.opt.className),a.textContent=i.textContent,i.parentNode.replaceChild(a,i),o}},{key:"wrapRangeInMappedTextNode",value:function(e,t,n,r,i){var o=this;e.nodes.every(function(a,s){var c=e.nodes[s+1];if(void 0===c||c.start>t){if(!r(a.node))return!1;var u=t-a.start,l=(n>a.end?a.end:n)-a.start,h=e.value.substr(0,a.start),f=e.value.substr(l+a.start);if(a.node=o.wrapRangeInTextNode(a.node,u,l),e.value=h+f,e.nodes.forEach(function(t,n){n>=s&&(e.nodes[n].start>0&&n!==s&&(e.nodes[n].start-=l),e.nodes[n].end-=l)}),n-=l,i(a.node.previousSibling,a.start),!(n>a.end))return!1;t=a.end}return!0})}},{key:"wrapGroups",value:function(e,t,n,r){return r((e=this.wrapRangeInTextNode(e,t,t+n)).previousSibling),e}},{key:"separateGroups",value:function(e,t,n,r,i){for(var o=t.length,a=1;a-1&&r(t[a],e)&&(e=this.wrapGroups(e,s,t[a].length,i))}return e}},{key:"wrapMatches",value:function(e,t,n,r,i){var o=this,a=0===t?0:t+1;this.getTextNodes(function(t){t.nodes.forEach(function(t){t=t.node;for(var i=void 0;null!==(i=e.exec(t.textContent))&&""!==i[a];){if(o.opt.separateGroups)t=o.separateGroups(t,i,a,n,r);else{if(!n(i[a],t))continue;var s=i.index;if(0!==a)for(var c=1;c + + + + + Installing Third Party Software - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    Installing Third Party Software

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/print.html b/public/handbook/print.html new file mode 100644 index 0000000..35d00f3 --- /dev/null +++ b/public/handbook/print.html @@ -0,0 +1,370 @@ + + + + + + The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    Preface

    +

    What is this?

    +

    HitchHiker Linux is a general purpose Linux distribution that has been carefully +assembled to give a more traditional, Unix-like experience. HitchHiker provides, +out of the box, all development tools and libraries to rebuild itself from source +code as well as being a solid base from which to create whatever system is +desired.

    +

    Introduction

    +
    #!/don't/panic
    +man 42
    +
    +

    HitchHiker Linux is a very Unix-like distribution of Linux with a focus on +simplicity, elegance and providing a solid base that the end user can turn into +whatever they see fit.

    +

    Core Principles:

    +
      +
    • The default installation should include the bare minimum required software to provide a solid base.
    • +
    • Complexity should be discouraged in favor of code elegance, security and maintainability.
    • +
    • End users should not be discouraged from tinkering with their system.
    • +
    • The distribution should make as few assumptions as possible regarding end use.
    • +
    • While newer releases of software often eliminate bugs and vulnerabilities, newer software packages are not by default more secure than stable, mature packages (newer is not always better).
    • +
    • Any changes to the core system functionality, especially those which change expected functionality, must be well justified and well vetted before deployment.
    • +
    • The base installation should include everything required to rebuild itself from source.
    • +
    • The distribution should make as few changes to the upstream software as possible, delivering it as intended by the original author.
    • +
    • Patching of sources should only be done to fix bugs or vulnerabilities.
    • +
    +

    HHL was born of a desire to harness the greater hardware support of Linux while +paying respect to the Unix systems from which Linux was born. The author was a +long time user of FreeBSD who migrated to Arch for several years, but has become +increasingly frustrated with Systemd, Gnome, RedHat and Ubuntu dominance. It is +believed that there is a need for a distribution that does not pander to ease of +use for casual users at the expense of putting up roadblocks for experienced Unix +veterans.

    +

    Architectures

    +

    HHL is running on the following processor architectures:

    +
      +
    • x86 (minimum i486)
    • +
    • x86_64
    • +
    • armv7l
    • +
    • aarch64
    • +
    • riscv64
    • +
    +

    Target Audience

    +

    My first computer was a Tandy TRS-80 handed down from an uncle. The interface +consisted of a blinking cursor on a monochrome screen, and it had no storage +beyond RAM and ROM. Whatever you could type into memory before shutting it off +and run with the included Basic interpretor was the extent of the software that +ran on that computer. As limited as it was, it was fascinating to me.

    +

    In this day and age an interface consisting of a blinking cursor without wallaper, +icons, notifications and voice input is bewildering to the average human. +Nevertheless, that is the interface that a fresh installation of HItchHiker will +always present to the user. Therefore, it can be reasoned that the target audience +will consist of individuals who either are comfortable with using a command line +interface or are eager to learn. Some proficiency using Linux or Unix is helpful, +but not 100% necessary given an ability and willingness to read the documentation +and get used to being "close to the machine".

    +

    Indeed, HitchHiker will not do any kind of hand holding while you are installing +and using your new system. You will be expected to learn the hows and whys of +what makes a computer work. Most operating systems, including the majority of +Linux distributions, will gladly install, configure, and run 100s of programs +without your ever being aware that they are doing it. By the time you have +achived proficiency with HitchHiker, you will know what every running process is +for and why it is needed.

    +

    What's Included

    +
      +
    • A full C and C++ development environment including compiler, headers and libraries.
    • +
    • Up to date versions of kernel, base libraries and toolchain components.
    • +
    • Where possible, BSD and historical Unix utilities have been incorporated.
    • +
    • Full documentation is included for all included software.
    • +
    • The HitchHiker build system is capable of bootstrapping itself from another +Linux distro or from HitchHiker itself, and is available for x86, Arm and RiscV +architectures.
    • +
    +

    What's Missing

    +
      +
    • Systemd - HitchHiker uses the S6 supervision suite and a minimal init.
    • +
    • No installer - HitchHiker is installed using Unix command line tools present +on any Linux distribution.
    • +
    • No apt, rpm, dnf, pacman, etc. HitchHiker uses NetBSD Pkgsrc for installing +extra software.
    • +
    • No daemons beyond what is required to provide a functional command prompt are +started by default.
    • +
    • No extra configuration is done to provide a "consistent look and feel" or any +such crap. +The Linux world is full of choices. Unfortunately, among the hundreds of installable +offerings the vast majority are "vanity distros" which are just a remix of another +distribution, with a different set of installed packages and a few cool wallpapers.
    • +
    +

    HitchHiker on the other hand is not based on any other distribution of Linux. It +is a fully independent offering which tracks the most recent releases of the Linux +kernel, Glibc, GCC etc. It's smaller userland utilities have been mostly ported +from BSD or implemented from scratch. It's source tree can compile the entire +operating system with a single command using Makefiles. We strive for an active +and independent presence and want to push open source into new and exciting +frontiers, such as RiscV, while paying homage to classic Unix. While there are +other offerings that cover some of the same territory (Arch, Gentoo) we felt that +there was space for something different.

    +

    Installation

    +

    Binary

    +

    downloading

    +

    x86

    +

    The x86 platform includes all 32-bit Intel and Intel compatible processors +ranging from i386 to i786 processors. For the purposes of installation, the +x86_64 architecture, including all AMD64 and Intel 64-bit processors, is identical +in function and included in this page.

    +
    +

    NOTE:

    +

    Please note that the minimum supported processor is i486. This is not a limitation +specific to HitchHiker, but a limitation of the Linux Kernel itself and Glibc. +Should you have a computer of this vintage, and wish to get it running, you have +the choice of installing an older and likely unsupported distribution, or +installing an operating system descended from 4.4BSD (FreeBSD, NetBSD, and OpenBSD).

    +
    +

    Arm

    +

    Raspberry Pi

    +

    Riscv

    +

    Qemu

    +

    BeagleV

    +

    Source

    +

    downloading

    +

    Preparing to Build

    +

    Building HitchHiker

    +

    Post Install Configuration

    +

    Adding a User Account

    +

    Setting up Networking

    +

    Managing Processes

    +

    Installing Third Party Software

    +

    Updating HitchHiker Linux

    +

    From Binary Sets

    +

    From Source

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/s6/index.html b/public/handbook/s6/index.html new file mode 100644 index 0000000..11671d3 --- /dev/null +++ b/public/handbook/s6/index.html @@ -0,0 +1,247 @@ + + + + + + Managing Processes - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    Managing Processes

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/searcher.js b/public/handbook/searcher.js new file mode 100644 index 0000000..d2b0aee --- /dev/null +++ b/public/handbook/searcher.js @@ -0,0 +1,483 @@ +"use strict"; +window.search = window.search || {}; +(function search(search) { + // Search functionality + // + // You can use !hasFocus() to prevent keyhandling in your key + // event handlers while the user is typing their search. + + if (!Mark || !elasticlunr) { + return; + } + + //IE 11 Compatibility from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith + if (!String.prototype.startsWith) { + String.prototype.startsWith = function(search, pos) { + return this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; + }; + } + + var search_wrap = document.getElementById('search-wrapper'), + searchbar = document.getElementById('searchbar'), + searchbar_outer = document.getElementById('searchbar-outer'), + searchresults = document.getElementById('searchresults'), + searchresults_outer = document.getElementById('searchresults-outer'), + searchresults_header = document.getElementById('searchresults-header'), + searchicon = document.getElementById('search-toggle'), + content = document.getElementById('content'), + + searchindex = null, + doc_urls = [], + results_options = { + teaser_word_count: 30, + limit_results: 30, + }, + search_options = { + bool: "AND", + expand: true, + fields: { + title: {boost: 1}, + body: {boost: 1}, + breadcrumbs: {boost: 0} + } + }, + mark_exclude = [], + marker = new Mark(content), + current_searchterm = "", + URL_SEARCH_PARAM = 'search', + URL_MARK_PARAM = 'highlight', + teaser_count = 0, + + SEARCH_HOTKEY_KEYCODE = 83, + ESCAPE_KEYCODE = 27, + DOWN_KEYCODE = 40, + UP_KEYCODE = 38, + SELECT_KEYCODE = 13; + + function hasFocus() { + return searchbar === document.activeElement; + } + + function removeChildren(elem) { + while (elem.firstChild) { + elem.removeChild(elem.firstChild); + } + } + + // Helper to parse a url into its building blocks. + function parseURL(url) { + var a = document.createElement('a'); + a.href = url; + return { + source: url, + protocol: a.protocol.replace(':',''), + host: a.hostname, + port: a.port, + params: (function(){ + var ret = {}; + var seg = a.search.replace(/^\?/,'').split('&'); + var len = seg.length, i = 0, s; + for (;i': '>', + '"': '"', + "'": ''' + }; + var repl = function(c) { return MAP[c]; }; + return function(s) { + return s.replace(/[&<>'"]/g, repl); + }; + })(); + + function formatSearchMetric(count, searchterm) { + if (count == 1) { + return count + " search result for '" + searchterm + "':"; + } else if (count == 0) { + return "No search results for '" + searchterm + "'."; + } else { + return count + " search results for '" + searchterm + "':"; + } + } + + function formatSearchResult(result, searchterms) { + var teaser = makeTeaser(escapeHTML(result.doc.body), searchterms); + teaser_count++; + + // The ?URL_MARK_PARAM= parameter belongs inbetween the page and the #heading-anchor + var url = doc_urls[result.ref].split("#"); + if (url.length == 1) { // no anchor found + url.push(""); + } + + // encodeURIComponent escapes all chars that could allow an XSS except + // for '. Due to that we also manually replace ' with its url-encoded + // representation (%27). + var searchterms = encodeURIComponent(searchterms.join(" ")).replace(/\'/g, "%27"); + + return '' + result.doc.breadcrumbs + '' + + '' + + teaser + ''; + } + + function makeTeaser(body, searchterms) { + // The strategy is as follows: + // First, assign a value to each word in the document: + // Words that correspond to search terms (stemmer aware): 40 + // Normal words: 2 + // First word in a sentence: 8 + // Then use a sliding window with a constant number of words and count the + // sum of the values of the words within the window. Then use the window that got the + // maximum sum. If there are multiple maximas, then get the last one. + // Enclose the terms in . + var stemmed_searchterms = searchterms.map(function(w) { + return elasticlunr.stemmer(w.toLowerCase()); + }); + var searchterm_weight = 40; + var weighted = []; // contains elements of ["word", weight, index_in_document] + // split in sentences, then words + var sentences = body.toLowerCase().split('. '); + var index = 0; + var value = 0; + var searchterm_found = false; + for (var sentenceindex in sentences) { + var words = sentences[sentenceindex].split(' '); + value = 8; + for (var wordindex in words) { + var word = words[wordindex]; + if (word.length > 0) { + for (var searchtermindex in stemmed_searchterms) { + if (elasticlunr.stemmer(word).startsWith(stemmed_searchterms[searchtermindex])) { + value = searchterm_weight; + searchterm_found = true; + } + }; + weighted.push([word, value, index]); + value = 2; + } + index += word.length; + index += 1; // ' ' or '.' if last word in sentence + }; + index += 1; // because we split at a two-char boundary '. ' + }; + + if (weighted.length == 0) { + return body; + } + + var window_weight = []; + var window_size = Math.min(weighted.length, results_options.teaser_word_count); + + var cur_sum = 0; + for (var wordindex = 0; wordindex < window_size; wordindex++) { + cur_sum += weighted[wordindex][1]; + }; + window_weight.push(cur_sum); + for (var wordindex = 0; wordindex < weighted.length - window_size; wordindex++) { + cur_sum -= weighted[wordindex][1]; + cur_sum += weighted[wordindex + window_size][1]; + window_weight.push(cur_sum); + }; + + if (searchterm_found) { + var max_sum = 0; + var max_sum_window_index = 0; + // backwards + for (var i = window_weight.length - 1; i >= 0; i--) { + if (window_weight[i] > max_sum) { + max_sum = window_weight[i]; + max_sum_window_index = i; + } + }; + } else { + max_sum_window_index = 0; + } + + // add around searchterms + var teaser_split = []; + var index = weighted[max_sum_window_index][2]; + for (var i = max_sum_window_index; i < max_sum_window_index+window_size; i++) { + var word = weighted[i]; + if (index < word[2]) { + // missing text from index to start of `word` + teaser_split.push(body.substring(index, word[2])); + index = word[2]; + } + if (word[1] == searchterm_weight) { + teaser_split.push("") + } + index = word[2] + word[0].length; + teaser_split.push(body.substring(word[2], index)); + if (word[1] == searchterm_weight) { + teaser_split.push("") + } + }; + + return teaser_split.join(''); + } + + function init(config) { + results_options = config.results_options; + search_options = config.search_options; + searchbar_outer = config.searchbar_outer; + doc_urls = config.doc_urls; + searchindex = elasticlunr.Index.load(config.index); + + // Set up events + searchicon.addEventListener('click', function(e) { searchIconClickHandler(); }, false); + searchbar.addEventListener('keyup', function(e) { searchbarKeyUpHandler(); }, false); + document.addEventListener('keydown', function(e) { globalKeyHandler(e); }, false); + // If the user uses the browser buttons, do the same as if a reload happened + window.onpopstate = function(e) { doSearchOrMarkFromUrl(); }; + // Suppress "submit" events so the page doesn't reload when the user presses Enter + document.addEventListener('submit', function(e) { e.preventDefault(); }, false); + + // If reloaded, do the search or mark again, depending on the current url parameters + doSearchOrMarkFromUrl(); + } + + function unfocusSearchbar() { + // hacky, but just focusing a div only works once + var tmp = document.createElement('input'); + tmp.setAttribute('style', 'position: absolute; opacity: 0;'); + searchicon.appendChild(tmp); + tmp.focus(); + tmp.remove(); + } + + // On reload or browser history backwards/forwards events, parse the url and do search or mark + function doSearchOrMarkFromUrl() { + // Check current URL for search request + var url = parseURL(window.location.href); + if (url.params.hasOwnProperty(URL_SEARCH_PARAM) + && url.params[URL_SEARCH_PARAM] != "") { + showSearch(true); + searchbar.value = decodeURIComponent( + (url.params[URL_SEARCH_PARAM]+'').replace(/\+/g, '%20')); + searchbarKeyUpHandler(); // -> doSearch() + } else { + showSearch(false); + } + + if (url.params.hasOwnProperty(URL_MARK_PARAM)) { + var words = decodeURIComponent(url.params[URL_MARK_PARAM]).split(' '); + marker.mark(words, { + exclude: mark_exclude + }); + + var markers = document.querySelectorAll("mark"); + function hide() { + for (var i = 0; i < markers.length; i++) { + markers[i].classList.add("fade-out"); + window.setTimeout(function(e) { marker.unmark(); }, 300); + } + } + for (var i = 0; i < markers.length; i++) { + markers[i].addEventListener('click', hide); + } + } + } + + // Eventhandler for keyevents on `document` + function globalKeyHandler(e) { + if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey || e.target.type === 'textarea' || e.target.type === 'text') { return; } + + if (e.keyCode === ESCAPE_KEYCODE) { + e.preventDefault(); + searchbar.classList.remove("active"); + setSearchUrlParameters("", + (searchbar.value.trim() !== "") ? "push" : "replace"); + if (hasFocus()) { + unfocusSearchbar(); + } + showSearch(false); + marker.unmark(); + } else if (!hasFocus() && e.keyCode === SEARCH_HOTKEY_KEYCODE) { + e.preventDefault(); + showSearch(true); + window.scrollTo(0, 0); + searchbar.select(); + } else if (hasFocus() && e.keyCode === DOWN_KEYCODE) { + e.preventDefault(); + unfocusSearchbar(); + searchresults.firstElementChild.classList.add("focus"); + } else if (!hasFocus() && (e.keyCode === DOWN_KEYCODE + || e.keyCode === UP_KEYCODE + || e.keyCode === SELECT_KEYCODE)) { + // not `:focus` because browser does annoying scrolling + var focused = searchresults.querySelector("li.focus"); + if (!focused) return; + e.preventDefault(); + if (e.keyCode === DOWN_KEYCODE) { + var next = focused.nextElementSibling; + if (next) { + focused.classList.remove("focus"); + next.classList.add("focus"); + } + } else if (e.keyCode === UP_KEYCODE) { + focused.classList.remove("focus"); + var prev = focused.previousElementSibling; + if (prev) { + prev.classList.add("focus"); + } else { + searchbar.select(); + } + } else { // SELECT_KEYCODE + window.location.assign(focused.querySelector('a')); + } + } + } + + function showSearch(yes) { + if (yes) { + search_wrap.classList.remove('hidden'); + searchicon.setAttribute('aria-expanded', 'true'); + } else { + search_wrap.classList.add('hidden'); + searchicon.setAttribute('aria-expanded', 'false'); + var results = searchresults.children; + for (var i = 0; i < results.length; i++) { + results[i].classList.remove("focus"); + } + } + } + + function showResults(yes) { + if (yes) { + searchresults_outer.classList.remove('hidden'); + } else { + searchresults_outer.classList.add('hidden'); + } + } + + // Eventhandler for search icon + function searchIconClickHandler() { + if (search_wrap.classList.contains('hidden')) { + showSearch(true); + window.scrollTo(0, 0); + searchbar.select(); + } else { + showSearch(false); + } + } + + // Eventhandler for keyevents while the searchbar is focused + function searchbarKeyUpHandler() { + var searchterm = searchbar.value.trim(); + if (searchterm != "") { + searchbar.classList.add("active"); + doSearch(searchterm); + } else { + searchbar.classList.remove("active"); + showResults(false); + removeChildren(searchresults); + } + + setSearchUrlParameters(searchterm, "push_if_new_search_else_replace"); + + // Remove marks + marker.unmark(); + } + + // Update current url with ?URL_SEARCH_PARAM= parameter, remove ?URL_MARK_PARAM and #heading-anchor . + // `action` can be one of "push", "replace", "push_if_new_search_else_replace" + // and replaces or pushes a new browser history item. + // "push_if_new_search_else_replace" pushes if there is no `?URL_SEARCH_PARAM=abc` yet. + function setSearchUrlParameters(searchterm, action) { + var url = parseURL(window.location.href); + var first_search = ! url.params.hasOwnProperty(URL_SEARCH_PARAM); + if (searchterm != "" || action == "push_if_new_search_else_replace") { + url.params[URL_SEARCH_PARAM] = searchterm; + delete url.params[URL_MARK_PARAM]; + url.hash = ""; + } else { + delete url.params[URL_MARK_PARAM]; + delete url.params[URL_SEARCH_PARAM]; + } + // A new search will also add a new history item, so the user can go back + // to the page prior to searching. A updated search term will only replace + // the url. + if (action == "push" || (action == "push_if_new_search_else_replace" && first_search) ) { + history.pushState({}, document.title, renderURL(url)); + } else if (action == "replace" || (action == "push_if_new_search_else_replace" && !first_search) ) { + history.replaceState({}, document.title, renderURL(url)); + } + } + + function doSearch(searchterm) { + + // Don't search the same twice + if (current_searchterm == searchterm) { return; } + else { current_searchterm = searchterm; } + + if (searchindex == null) { return; } + + // Do the actual search + var results = searchindex.search(searchterm, search_options); + var resultcount = Math.min(results.length, results_options.limit_results); + + // Display search metrics + searchresults_header.innerText = formatSearchMetric(resultcount, searchterm); + + // Clear and insert results + var searchterms = searchterm.split(' '); + removeChildren(searchresults); + for(var i = 0; i < resultcount ; i++){ + var resultElem = document.createElement('li'); + resultElem.innerHTML = formatSearchResult(results[i], searchterms); + searchresults.appendChild(resultElem); + } + + // Display results + showResults(true); + } + + fetch(path_to_root + 'searchindex.json') + .then(response => response.json()) + .then(json => init(json)) + .catch(error => { // Try to load searchindex.js if fetch failed + var script = document.createElement('script'); + script.src = path_to_root + 'searchindex.js'; + script.onload = () => init(window.search); + document.head.appendChild(script); + }); + + // Exported functions + search.hasFocus = hasFocus; +})(window.search); diff --git a/public/handbook/searchindex.js b/public/handbook/searchindex.js new file mode 100644 index 0000000..e4d89f6 --- /dev/null +++ b/public/handbook/searchindex.js @@ -0,0 +1 @@ +Object.assign(window.search, {"doc_urls":["index.html#preface","index.html#what-is-this","introduction/index.html#introduction","introduction/index.html#core-principles","introduction/index.html#architectures","introduction/audience.html#target-audience","introduction/features.html#whats-included","introduction/features.html#whats-missing","installation/index.html#installation","installation/binary/index.html#binary","installation/binary/downloading.html#downloading","installation/binary/x86/index.html#x86","installation/binary/arm/index.html#arm","installation/binary/arm/rpi.html#raspberry-pi","installation/binary/riscv/index.html#riscv","installation/binary/riscv/qemu.html#qemu","installation/binary/riscv/beagle-v.html#beaglev","installation/source/index.html#source","installation/source/downloading.html#downloading","installation/source/preparing.html#preparing-to-build","installation/source/building-hitchhiker.html#building-hitchhiker","configuration/index.html#post-install-configuration","configuration/users.html#adding-a-user-account","configuration/networking.html#setting-up-networking","s6/index.html#managing-processes","pkgsrc/index.html#installing-third-party-software","updating/index.html#updating-hitchhiker-linux","updating/binary.html#from-binary-sets","updating/source.html#from-source"],"index":{"documentStore":{"docInfo":{"0":{"body":0,"breadcrumbs":2,"title":1},"1":{"body":32,"breadcrumbs":1,"title":0},"10":{"body":0,"breadcrumbs":8,"title":1},"11":{"body":59,"breadcrumbs":7,"title":1},"12":{"body":0,"breadcrumbs":7,"title":1},"13":{"body":0,"breadcrumbs":10,"title":2},"14":{"body":0,"breadcrumbs":7,"title":1},"15":{"body":0,"breadcrumbs":8,"title":1},"16":{"body":0,"breadcrumbs":8,"title":1},"17":{"body":0,"breadcrumbs":4,"title":1},"18":{"body":0,"breadcrumbs":7,"title":1},"19":{"body":0,"breadcrumbs":7,"title":2},"2":{"body":21,"breadcrumbs":2,"title":1},"20":{"body":0,"breadcrumbs":7,"title":2},"21":{"body":0,"breadcrumbs":6,"title":3},"22":{"body":0,"breadcrumbs":9,"title":3},"23":{"body":0,"breadcrumbs":9,"title":3},"24":{"body":0,"breadcrumbs":4,"title":2},"25":{"body":0,"breadcrumbs":8,"title":4},"26":{"body":0,"breadcrumbs":6,"title":3},"27":{"body":0,"breadcrumbs":7,"title":2},"28":{"body":0,"breadcrumbs":5,"title":1},"3":{"body":134,"breadcrumbs":3,"title":2},"4":{"body":12,"breadcrumbs":2,"title":1},"5":{"body":125,"breadcrumbs":5,"title":2},"6":{"body":44,"breadcrumbs":4,"title":2},"7":{"body":134,"breadcrumbs":4,"title":2},"8":{"body":0,"breadcrumbs":2,"title":1},"9":{"body":0,"breadcrumbs":5,"title":1}},"docs":{"0":{"body":"","breadcrumbs":"Preface » Preface","id":"0","title":"Preface"},"1":{"body":"HitchHiker Linux is a general purpose Linux distribution that has been carefully assembled to give a more traditional, Unix-like experience. HitchHiker provides, out of the box, all development tools and libraries to rebuild itself from source code as well as being a solid base from which to create whatever system is desired.","breadcrumbs":"Preface » What is this?","id":"1","title":"What is this?"},"10":{"body":"","breadcrumbs":"Installation » Installing Binary Sets » Downloading Binary Sets » downloading","id":"10","title":"downloading"},"11":{"body":"The x86 platform includes all 32-bit Intel and Intel compatible processors ranging from i386 to i786 processors. For the purposes of installation, the x86_64 architecture, including all AMD64 and Intel 64-bit processors, is identical in function and included in this page. NOTE: Please note that the minimum supported processor is i486. This is not a limitation specific to HitchHiker, but a limitation of the Linux Kernel itself and Glibc. Should you have a computer of this vintage, and wish to get it running, you have the choice of installing an older and likely unsupported distribution, or installing an operating system descended from 4.4BSD (FreeBSD, NetBSD, and OpenBSD).","breadcrumbs":"Installation » Installing Binary Sets » Installing on x86 » x86","id":"11","title":"x86"},"12":{"body":"","breadcrumbs":"Installation » Installing Binary Sets » Installing on Arm » Arm","id":"12","title":"Arm"},"13":{"body":"","breadcrumbs":"Installation » Installing Binary Sets » Installing on Arm » Raspberry Pi » Raspberry Pi","id":"13","title":"Raspberry Pi"},"14":{"body":"","breadcrumbs":"Installation » Installing Binary Sets » Installing on Riscv » Riscv","id":"14","title":"Riscv"},"15":{"body":"","breadcrumbs":"Installation » Installing Binary Sets » Installing on Riscv » Qemu » Qemu","id":"15","title":"Qemu"},"16":{"body":"","breadcrumbs":"Installation » Installing Binary Sets » Installing on Riscv » BeagleV » BeagleV","id":"16","title":"BeagleV"},"17":{"body":"","breadcrumbs":"Installation » Installing from Source » Source","id":"17","title":"Source"},"18":{"body":"","breadcrumbs":"Installation » Installing from Source » Downloading HHL Source » downloading","id":"18","title":"downloading"},"19":{"body":"","breadcrumbs":"Installation » Installing from Source » Preparing to Build » Preparing to Build","id":"19","title":"Preparing to Build"},"2":{"body":"#!/don't/panic\nman 42 HitchHiker Linux is a very Unix-like distribution of Linux with a focus on simplicity, elegance and providing a solid base that the end user can turn into whatever they see fit.","breadcrumbs":"Introduction » Introduction","id":"2","title":"Introduction"},"20":{"body":"","breadcrumbs":"Installation » Installing from Source » Building HitchHiker » Building HitchHiker","id":"20","title":"Building HitchHiker"},"21":{"body":"","breadcrumbs":"Post Install Configuration » Post Install Configuration","id":"21","title":"Post Install Configuration"},"22":{"body":"","breadcrumbs":"Post Install Configuration » Adding a User Account » Adding a User Account","id":"22","title":"Adding a User Account"},"23":{"body":"","breadcrumbs":"Post Install Configuration » Setting up Networking » Setting up Networking","id":"23","title":"Setting up Networking"},"24":{"body":"","breadcrumbs":"Managing Processes » Managing Processes","id":"24","title":"Managing Processes"},"25":{"body":"","breadcrumbs":"Installing Third Party Software » Installing Third Party Software","id":"25","title":"Installing Third Party Software"},"26":{"body":"","breadcrumbs":"Updating HitchHiker Linux » Updating HitchHiker Linux","id":"26","title":"Updating HitchHiker Linux"},"27":{"body":"","breadcrumbs":"Updating HitchHiker Linux » From Binary Sets » From Binary Sets","id":"27","title":"From Binary Sets"},"28":{"body":"","breadcrumbs":"Updating HitchHiker Linux » From Source » From Source","id":"28","title":"From Source"},"3":{"body":"The default installation should include the bare minimum required software to provide a solid base. Complexity should be discouraged in favor of code elegance, security and maintainability. End users should not be discouraged from tinkering with their system. The distribution should make as few assumptions as possible regarding end use. While newer releases of software often eliminate bugs and vulnerabilities, newer software packages are not by default more secure than stable, mature packages (newer is not always better). Any changes to the core system functionality, especially those which change expected functionality, must be well justified and well vetted before deployment. The base installation should include everything required to rebuild itself from source. The distribution should make as few changes to the upstream software as possible, delivering it as intended by the original author. Patching of sources should only be done to fix bugs or vulnerabilities. HHL was born of a desire to harness the greater hardware support of Linux while paying respect to the Unix systems from which Linux was born. The author was a long time user of FreeBSD who migrated to Arch for several years, but has become increasingly frustrated with Systemd, Gnome, RedHat and Ubuntu dominance. It is believed that there is a need for a distribution that does not pander to ease of use for casual users at the expense of putting up roadblocks for experienced Unix veterans.","breadcrumbs":"Introduction » Core Principles:","id":"3","title":"Core Principles:"},"4":{"body":"HHL is running on the following processor architectures: x86 (minimum i486) x86_64 armv7l aarch64 riscv64","breadcrumbs":"Introduction » Architectures","id":"4","title":"Architectures"},"5":{"body":"My first computer was a Tandy TRS-80 handed down from an uncle. The interface consisted of a blinking cursor on a monochrome screen, and it had no storage beyond RAM and ROM. Whatever you could type into memory before shutting it off and run with the included Basic interpretor was the extent of the software that ran on that computer. As limited as it was, it was fascinating to me. In this day and age an interface consisting of a blinking cursor without wallaper, icons, notifications and voice input is bewildering to the average human. Nevertheless, that is the interface that a fresh installation of HItchHiker will always present to the user. Therefore, it can be reasoned that the target audience will consist of individuals who either are comfortable with using a command line interface or are eager to learn. Some proficiency using Linux or Unix is helpful, but not 100% necessary given an ability and willingness to read the documentation and get used to being \"close to the machine\". Indeed, HitchHiker will not do any kind of hand holding while you are installing and using your new system. You will be expected to learn the hows and whys of what makes a computer work. Most operating systems, including the majority of Linux distributions, will gladly install, configure, and run 100s of programs without your ever being aware that they are doing it. By the time you have achived proficiency with HitchHiker, you will know what every running process is for and why it is needed.","breadcrumbs":"Introduction » Target Audience » Target Audience","id":"5","title":"Target Audience"},"6":{"body":"A full C and C++ development environment including compiler, headers and libraries. Up to date versions of kernel, base libraries and toolchain components. Where possible, BSD and historical Unix utilities have been incorporated. Full documentation is included for all included software. The HitchHiker build system is capable of bootstrapping itself from another Linux distro or from HitchHiker itself, and is available for x86, Arm and RiscV architectures.","breadcrumbs":"Introduction » Features » What's Included","id":"6","title":"What's Included"},"7":{"body":"Systemd - HitchHiker uses the S6 supervision suite and a minimal init. No installer - HitchHiker is installed using Unix command line tools present on any Linux distribution. No apt, rpm, dnf, pacman, etc. HitchHiker uses NetBSD Pkgsrc for installing extra software. No daemons beyond what is required to provide a functional command prompt are started by default. No extra configuration is done to provide a \"consistent look and feel\" or any such crap. The Linux world is full of choices. Unfortunately, among the hundreds of installable offerings the vast majority are \"vanity distros\" which are just a remix of another distribution, with a different set of installed packages and a few cool wallpapers. HitchHiker on the other hand is not based on any other distribution of Linux. It is a fully independent offering which tracks the most recent releases of the Linux kernel, Glibc, GCC etc. It's smaller userland utilities have been mostly ported from BSD or implemented from scratch. It's source tree can compile the entire operating system with a single command using Makefiles. We strive for an active and independent presence and want to push open source into new and exciting frontiers, such as RiscV, while paying homage to classic Unix. While there are other offerings that cover some of the same territory (Arch, Gentoo) we felt that there was space for something different.","breadcrumbs":"Introduction » Features » What's Missing","id":"7","title":"What's Missing"},"8":{"body":"","breadcrumbs":"Installation » Installation","id":"8","title":"Installation"},"9":{"body":"","breadcrumbs":"Installation » Installing Binary Sets » Binary","id":"9","title":"Binary"}},"length":29,"save":true},"fields":["title","body","breadcrumbs"],"index":{"body":{"root":{"1":{"0":{"0":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"2":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"4":{".":{"4":{"b":{"df":0,"docs":{},"s":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"df":1,"docs":{"2":{"tf":1.0}}},"df":0,"docs":{}},"6":{"4":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"8":{"0":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}},"a":{"a":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"h":{"6":{"4":{"df":1,"docs":{"4":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"5":{"tf":1.0}}}}},"c":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"22":{"tf":1.0}}}}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"5":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"d":{"df":1,"docs":{"22":{"tf":1.0}}},"df":0,"docs":{},"g":{"df":1,"docs":{"5":{"tf":1.0}}},"l":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"y":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"d":{"6":{"4":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"r":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":3,"docs":{"11":{"tf":1.0},"4":{"tf":1.4142135623730951},"6":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"m":{"df":2,"docs":{"12":{"tf":1.0},"6":{"tf":1.0}},"v":{"7":{"df":0,"docs":{},"l":{"df":1,"docs":{"4":{"tf":1.0}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}},"u":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}}}}},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}}},"w":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}},"b":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"3":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":5,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.4142135623730951},"6":{"tf":1.0},"7":{"tf":1.0}}},"i":{"c":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"16":{"tf":1.0}}}}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"3":{"tf":1.0}}}}},"df":2,"docs":{"1":{"tf":1.0},"5":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}}}},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"27":{"tf":1.0},"9":{"tf":1.0}}}}},"df":0,"docs":{}},"t":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}}}},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}},"x":{"df":1,"docs":{"1":{"tf":1.0}}}},"s":{"d":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}},"i":{"df":0,"docs":{},"l":{"d":{"df":3,"docs":{"19":{"tf":1.0},"20":{"tf":1.0},"6":{"tf":1.0}}},"df":0,"docs":{}}}}},"c":{"a":{"df":0,"docs":{},"p":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"1":{"tf":1.0}}}}}}}}},"s":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":1,"docs":{"6":{"tf":1.4142135623730951}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"3":{"tf":1.7320508075688772}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}}},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"o":{"d":{"df":0,"docs":{},"e":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"m":{"a":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.7320508075688772}}},"df":0,"docs":{}}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"3":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"5":{"tf":1.7320508075688772}}}}}},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":3,"docs":{"21":{"tf":1.0},"5":{"tf":1.0},"7":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"5":{"tf":1.7320508075688772},"7":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"1":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}}}}}},"d":{"a":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"6":{"tf":1.0}}}},"y":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"3":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"s":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":2,"docs":{"1":{"tf":1.0},"6":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}}}}},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":6,"docs":{"1":{"tf":1.0},"11":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.7320508075688772},"5":{"tf":1.0},"7":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"o":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"f":{"df":1,"docs":{"7":{"tf":1.0}}}},"o":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"5":{"tf":1.0},"6":{"tf":1.0}}}}}}}},"df":1,"docs":{"5":{"tf":1.0}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}},"n":{"'":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"2":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}}}},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":2,"docs":{"10":{"tf":1.0},"18":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.0}}}}},"s":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":2,"docs":{"2":{"tf":1.0},"3":{"tf":1.0}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}}}},"n":{"d":{"df":2,"docs":{"2":{"tf":1.0},"3":{"tf":1.4142135623730951}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}}}}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}},"t":{"c":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}},"x":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"3":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"1":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"3":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}},"r":{"a":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"f":{"a":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}},"df":0,"docs":{}},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"w":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}},"t":{"df":1,"docs":{"2":{"tf":1.0}}},"x":{"df":1,"docs":{"3":{"tf":1.0}}}},"o":{"c":{"df":0,"docs":{},"u":{"df":1,"docs":{"2":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"4":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"s":{"d":{"df":2,"docs":{"11":{"tf":1.0},"3":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"5":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"6":{"tf":1.4142135623730951},"7":{"tf":1.0}},"i":{"df":1,"docs":{"7":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":3,"docs":{"11":{"tf":1.0},"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"g":{"c":{"c":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"1":{"tf":1.0}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"1":{"tf":1.0}},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"l":{"a":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"b":{"c":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"5":{"tf":1.4142135623730951},"7":{"tf":1.0}}},"df":0,"docs":{}},"r":{"d":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}},"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"6":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"l":{"df":0,"docs":{},"p":{"df":1,"docs":{"5":{"tf":1.0}}}}},"h":{"df":0,"docs":{},"l":{"df":2,"docs":{"3":{"tf":1.0},"4":{"tf":1.0}}}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"6":{"tf":1.0}}}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"k":{"df":8,"docs":{"1":{"tf":1.4142135623730951},"11":{"tf":1.0},"2":{"tf":1.0},"20":{"tf":1.0},"26":{"tf":1.0},"5":{"tf":1.7320508075688772},"6":{"tf":1.4142135623730951},"7":{"tf":2.0}}}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}},"m":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"df":1,"docs":{"5":{"tf":1.0}}}},"u":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}},"n":{"d":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}}},"i":{"3":{"8":{"6":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"8":{"6":{"df":2,"docs":{"11":{"tf":1.0},"4":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"8":{"6":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}}}},"n":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"d":{"df":4,"docs":{"11":{"tf":1.7320508075688772},"3":{"tf":1.4142135623730951},"5":{"tf":1.4142135623730951},"6":{"tf":2.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"6":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"5":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"u":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"l":{"df":7,"docs":{"11":{"tf":1.7320508075688772},"21":{"tf":1.0},"25":{"tf":1.0},"3":{"tf":1.4142135623730951},"5":{"tf":1.7320508075688772},"7":{"tf":2.23606797749979},"8":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"11":{"tf":1.7320508075688772}}},"n":{"d":{"df":1,"docs":{"3":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"f":{"a":{"c":{"df":1,"docs":{"5":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.0}}}}}}}}}},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"2":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"t":{"'":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":4,"docs":{"1":{"tf":1.0},"11":{"tf":1.0},"3":{"tf":1.0},"6":{"tf":1.4142135623730951}}}}}}}},"j":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":3,"docs":{"11":{"tf":1.0},"6":{"tf":1.0},"7":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"i":{"b":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"1":{"tf":1.0},"6":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.4142135623730951},"5":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"e":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}}},"u":{"df":0,"docs":{},"x":{"df":8,"docs":{"1":{"tf":1.4142135623730951},"11":{"tf":1.0},"2":{"tf":1.4142135623730951},"26":{"tf":1.0},"3":{"tf":1.4142135623730951},"5":{"tf":1.4142135623730951},"6":{"tf":1.0},"7":{"tf":2.0}}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"3":{"tf":1.0}}}},"o":{"df":0,"docs":{},"k":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"m":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}},"df":0,"docs":{}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}}}}},"k":{"df":0,"docs":{},"e":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"5":{"tf":1.0}},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"n":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"24":{"tf":1.0}}}},"df":1,"docs":{"2":{"tf":1.0}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":1,"docs":{"7":{"tf":1.0}},"u":{"df":0,"docs":{},"m":{"df":3,"docs":{"11":{"tf":1.0},"3":{"tf":1.0},"4":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"7":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"d":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}},"df":0,"docs":{}},"t":{"b":{"df":0,"docs":{},"s":{"d":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"23":{"tf":1.0}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"5":{"tf":1.0}}}}}}}}}}}},"w":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.7320508075688772}}}}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}},"i":{"df":0,"docs":{},"f":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.7320508075688772}}}}}},"l":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"b":{"df":0,"docs":{},"s":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"7":{"tf":1.0}}},"r":{"df":3,"docs":{"11":{"tf":1.0},"5":{"tf":1.0},"7":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"1":{"tf":1.0}}}}},"p":{"a":{"c":{"df":0,"docs":{},"k":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}},"df":0,"docs":{}},"m":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":1,"docs":{"11":{"tf":1.0}}}},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"25":{"tf":1.0}}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}},"y":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":1,"docs":{"13":{"tf":1.0}}},"k":{"df":0,"docs":{},"g":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}}},"l":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"6":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":1,"docs":{"21":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"c":{"df":1,"docs":{"0":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"19":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"df":0,"docs":{}}},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"24":{"tf":1.0},"5":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"11":{"tf":2.0},"4":{"tf":1.0}}}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"i":{"d":{"df":4,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.0},"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":2,"docs":{"1":{"tf":1.0},"11":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"7":{"tf":1.0}}}},"t":{"df":1,"docs":{"3":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":1,"docs":{"15":{"tf":1.0}}}}}},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"5":{"tf":1.0}}},"n":{"df":1,"docs":{"5":{"tf":1.0}},"g":{"df":1,"docs":{"11":{"tf":1.0}}}},"s":{"df":0,"docs":{},"p":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"13":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.0}}},"df":0,"docs":{}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"d":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"3":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"df":1,"docs":{"7":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"v":{"6":{"4":{"df":1,"docs":{"4":{"tf":1.0}}},"df":0,"docs":{}},"df":3,"docs":{"14":{"tf":1.0},"6":{"tf":1.0},"7":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"a":{"d":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"m":{"df":1,"docs":{"5":{"tf":1.0}}}},"p":{"df":0,"docs":{},"m":{"df":1,"docs":{"7":{"tf":1.0}}}},"u":{"df":0,"docs":{},"n":{"df":3,"docs":{"11":{"tf":1.0},"4":{"tf":1.0},"5":{"tf":1.7320508075688772}}}}},"s":{"6":{"df":1,"docs":{"7":{"tf":1.0}}},"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"7":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"2":{"tf":1.0}}},"t":{"df":3,"docs":{"23":{"tf":1.0},"27":{"tf":1.0},"7":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"2":{"tf":1.0}}},"df":0,"docs":{}}}}},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"m":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"df":5,"docs":{"25":{"tf":1.0},"3":{"tf":2.0},"5":{"tf":1.0},"6":{"tf":1.0},"7":{"tf":1.0}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.0}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"r":{"c":{"df":5,"docs":{"1":{"tf":1.0},"17":{"tf":1.0},"28":{"tf":1.0},"3":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"p":{"a":{"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"u":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"3":{"tf":1.0}}}}}}}},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"d":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}}},"df":6,"docs":{"1":{"tf":1.0},"11":{"tf":1.0},"3":{"tf":1.7320508075688772},"5":{"tf":1.4142135623730951},"6":{"tf":1.0},"7":{"tf":1.0}}}}}}}},"t":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"25":{"tf":1.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}}},"n":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":2,"docs":{"1":{"tf":1.0},"7":{"tf":1.0}}}}},"r":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"7":{"tf":1.0}}}},"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"1":{"tf":1.0}}}}},"df":0,"docs":{}},"df":1,"docs":{"5":{"tf":1.0}},"e":{"df":0,"docs":{},"e":{"df":1,"docs":{"7":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"2":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"u":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":1,"docs":{"3":{"tf":1.0}}}}}}},"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"x":{"df":6,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.4142135623730951},"5":{"tf":1.0},"6":{"tf":1.0},"7":{"tf":1.4142135623730951}}}},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}}}},"p":{"d":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"26":{"tf":1.0}}}},"df":0,"docs":{}},"df":3,"docs":{"23":{"tf":1.0},"3":{"tf":1.0},"6":{"tf":1.0}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"s":{"df":3,"docs":{"3":{"tf":1.4142135623730951},"5":{"tf":2.0},"7":{"tf":2.0}},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"2":{"tf":1.0},"22":{"tf":1.0},"3":{"tf":1.7320508075688772},"5":{"tf":1.0}},"l":{"a":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}}}}},"v":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"2":{"tf":1.0}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}}}}},"t":{"df":1,"docs":{"3":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}}}}}},"w":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}}},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.4142135623730951}}}}},"h":{"a":{"df":0,"docs":{},"t":{"'":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":3,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"5":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"11":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"5":{"tf":1.0}}},"l":{"d":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}}},"x":{"8":{"6":{"_":{"6":{"4":{"df":2,"docs":{"11":{"tf":1.0},"4":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":1.4142135623730951},"4":{"tf":1.0},"6":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"y":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}},"breadcrumbs":{"root":{"1":{"0":{"0":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"2":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"4":{".":{"4":{"b":{"df":0,"docs":{},"s":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"df":1,"docs":{"2":{"tf":1.0}}},"df":0,"docs":{}},"6":{"4":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"8":{"0":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}},"a":{"a":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"h":{"6":{"4":{"df":1,"docs":{"4":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"5":{"tf":1.0}}}}},"c":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"22":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"5":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"d":{"df":1,"docs":{"22":{"tf":1.7320508075688772}}},"df":0,"docs":{},"g":{"df":1,"docs":{"5":{"tf":1.0}}},"l":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"y":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"d":{"6":{"4":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"r":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":3,"docs":{"11":{"tf":1.0},"4":{"tf":1.7320508075688772},"6":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"m":{"df":3,"docs":{"12":{"tf":1.7320508075688772},"13":{"tf":1.0},"6":{"tf":1.0}},"v":{"7":{"df":0,"docs":{},"l":{"df":1,"docs":{"4":{"tf":1.0}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}},"u":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"5":{"tf":2.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}}}}},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}}},"w":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}},"b":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"3":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":5,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.4142135623730951},"6":{"tf":1.0},"7":{"tf":1.0}}},"i":{"c":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"16":{"tf":1.7320508075688772}}}}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"3":{"tf":1.0}}}}},"df":2,"docs":{"1":{"tf":1.0},"5":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}}}},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":9,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":1.0},"12":{"tf":1.0},"13":{"tf":1.0},"14":{"tf":1.0},"15":{"tf":1.0},"16":{"tf":1.0},"27":{"tf":1.7320508075688772},"9":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"t":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}}}},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}},"x":{"df":1,"docs":{"1":{"tf":1.0}}}},"s":{"d":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}},"i":{"df":0,"docs":{},"l":{"d":{"df":3,"docs":{"19":{"tf":1.7320508075688772},"20":{"tf":1.7320508075688772},"6":{"tf":1.0}}},"df":0,"docs":{}}}}},"c":{"a":{"df":0,"docs":{},"p":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"1":{"tf":1.0}}}}}}}}},"s":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":1,"docs":{"6":{"tf":1.4142135623730951}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"3":{"tf":1.7320508075688772}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}}},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"o":{"d":{"df":0,"docs":{},"e":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"m":{"a":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.7320508075688772}}},"df":0,"docs":{}}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"3":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"5":{"tf":1.7320508075688772}}}}}},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":5,"docs":{"21":{"tf":1.7320508075688772},"22":{"tf":1.0},"23":{"tf":1.0},"5":{"tf":1.0},"7":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"5":{"tf":1.7320508075688772},"7":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"3":{"tf":1.7320508075688772}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"1":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}}}}}},"d":{"a":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"6":{"tf":1.0}}}},"y":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"3":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"s":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":2,"docs":{"1":{"tf":1.0},"6":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}}}}},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":6,"docs":{"1":{"tf":1.0},"11":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.7320508075688772},"5":{"tf":1.0},"7":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"o":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"f":{"df":1,"docs":{"7":{"tf":1.0}}}},"o":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"5":{"tf":1.0},"6":{"tf":1.0}}}}}}}},"df":1,"docs":{"5":{"tf":1.0}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}},"n":{"'":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"2":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}}}},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":2,"docs":{"10":{"tf":1.7320508075688772},"18":{"tf":1.7320508075688772}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.0}}}}},"s":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":2,"docs":{"2":{"tf":1.0},"3":{"tf":1.0}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}}}},"n":{"d":{"df":2,"docs":{"2":{"tf":1.0},"3":{"tf":1.4142135623730951}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}}}}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}},"t":{"c":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}},"x":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"3":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"1":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"3":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}},"r":{"a":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"f":{"a":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}},"df":0,"docs":{}},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"w":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}},"t":{"df":1,"docs":{"2":{"tf":1.0}}},"x":{"df":1,"docs":{"3":{"tf":1.0}}}},"o":{"c":{"df":0,"docs":{},"u":{"df":1,"docs":{"2":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"4":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"s":{"d":{"df":2,"docs":{"11":{"tf":1.0},"3":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"5":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"6":{"tf":1.4142135623730951},"7":{"tf":1.0}},"i":{"df":1,"docs":{"7":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":3,"docs":{"11":{"tf":1.0},"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"g":{"c":{"c":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"1":{"tf":1.0}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"1":{"tf":1.0}},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"l":{"a":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"b":{"c":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"5":{"tf":1.4142135623730951},"7":{"tf":1.0}}},"df":0,"docs":{}},"r":{"d":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}},"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"6":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"l":{"df":0,"docs":{},"p":{"df":1,"docs":{"5":{"tf":1.0}}}}},"h":{"df":0,"docs":{},"l":{"df":3,"docs":{"18":{"tf":1.0},"3":{"tf":1.0},"4":{"tf":1.0}}}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"6":{"tf":1.0}}}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"k":{"df":10,"docs":{"1":{"tf":1.4142135623730951},"11":{"tf":1.0},"2":{"tf":1.0},"20":{"tf":1.7320508075688772},"26":{"tf":1.7320508075688772},"27":{"tf":1.0},"28":{"tf":1.0},"5":{"tf":1.7320508075688772},"6":{"tf":1.4142135623730951},"7":{"tf":2.0}}}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}},"m":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"df":1,"docs":{"5":{"tf":1.0}}}},"u":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}},"n":{"d":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}}},"i":{"3":{"8":{"6":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"8":{"6":{"df":2,"docs":{"11":{"tf":1.0},"4":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"8":{"6":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}}}},"n":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"d":{"df":4,"docs":{"11":{"tf":1.7320508075688772},"3":{"tf":1.4142135623730951},"5":{"tf":1.4142135623730951},"6":{"tf":2.23606797749979}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"6":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"5":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"u":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"l":{"df":20,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":2.449489742783178},"12":{"tf":1.7320508075688772},"13":{"tf":1.7320508075688772},"14":{"tf":1.7320508075688772},"15":{"tf":1.7320508075688772},"16":{"tf":1.7320508075688772},"17":{"tf":1.4142135623730951},"18":{"tf":1.4142135623730951},"19":{"tf":1.4142135623730951},"20":{"tf":1.4142135623730951},"21":{"tf":1.7320508075688772},"22":{"tf":1.0},"23":{"tf":1.0},"25":{"tf":1.7320508075688772},"3":{"tf":1.4142135623730951},"5":{"tf":1.7320508075688772},"7":{"tf":2.23606797749979},"8":{"tf":1.7320508075688772},"9":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"11":{"tf":1.7320508075688772}}},"n":{"d":{"df":1,"docs":{"3":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"f":{"a":{"c":{"df":1,"docs":{"5":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.0}}}}}}}}}},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":6,"docs":{"2":{"tf":1.7320508075688772},"3":{"tf":1.0},"4":{"tf":1.0},"5":{"tf":1.0},"6":{"tf":1.0},"7":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"t":{"'":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":4,"docs":{"1":{"tf":1.0},"11":{"tf":1.0},"3":{"tf":1.0},"6":{"tf":1.4142135623730951}}}}}}}},"j":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":3,"docs":{"11":{"tf":1.0},"6":{"tf":1.0},"7":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"i":{"b":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"1":{"tf":1.0},"6":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.4142135623730951},"5":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"e":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}}},"u":{"df":0,"docs":{},"x":{"df":10,"docs":{"1":{"tf":1.4142135623730951},"11":{"tf":1.0},"2":{"tf":1.4142135623730951},"26":{"tf":1.7320508075688772},"27":{"tf":1.0},"28":{"tf":1.0},"3":{"tf":1.4142135623730951},"5":{"tf":1.4142135623730951},"6":{"tf":1.0},"7":{"tf":2.0}}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"3":{"tf":1.0}}}},"o":{"df":0,"docs":{},"k":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"m":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}},"df":0,"docs":{}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}}}}},"k":{"df":0,"docs":{},"e":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"5":{"tf":1.0}},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"n":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"24":{"tf":1.7320508075688772}}}},"df":1,"docs":{"2":{"tf":1.0}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":1,"docs":{"7":{"tf":1.0}},"u":{"df":0,"docs":{},"m":{"df":3,"docs":{"11":{"tf":1.0},"3":{"tf":1.0},"4":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"d":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}},"df":0,"docs":{}},"t":{"b":{"df":0,"docs":{},"s":{"d":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"23":{"tf":1.7320508075688772}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"5":{"tf":1.0}}}}}}}}}}}},"w":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.7320508075688772}}}}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}},"i":{"df":0,"docs":{},"f":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.7320508075688772}}}}}},"l":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"b":{"df":0,"docs":{},"s":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"7":{"tf":1.0}}},"r":{"df":3,"docs":{"11":{"tf":1.0},"5":{"tf":1.0},"7":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"1":{"tf":1.0}}}}},"p":{"a":{"c":{"df":0,"docs":{},"k":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}},"df":0,"docs":{}},"m":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":1,"docs":{"11":{"tf":1.0}}}},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"25":{"tf":1.7320508075688772}}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}},"y":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":1,"docs":{"13":{"tf":1.7320508075688772}}},"k":{"df":0,"docs":{},"g":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}}},"l":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"6":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":3,"docs":{"21":{"tf":1.7320508075688772},"22":{"tf":1.0},"23":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"c":{"df":2,"docs":{"0":{"tf":1.7320508075688772},"1":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"19":{"tf":1.7320508075688772}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"24":{"tf":1.7320508075688772},"5":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"11":{"tf":2.0},"4":{"tf":1.0}}}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"i":{"d":{"df":4,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.0},"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":2,"docs":{"1":{"tf":1.0},"11":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"7":{"tf":1.0}}}},"t":{"df":1,"docs":{"3":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":1,"docs":{"15":{"tf":1.7320508075688772}}}}}},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"5":{"tf":1.0}}},"n":{"df":1,"docs":{"5":{"tf":1.0}},"g":{"df":1,"docs":{"11":{"tf":1.0}}}},"s":{"df":0,"docs":{},"p":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"13":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.0}}},"df":0,"docs":{}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"d":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"3":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"df":1,"docs":{"7":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"v":{"6":{"4":{"df":1,"docs":{"4":{"tf":1.0}}},"df":0,"docs":{}},"df":5,"docs":{"14":{"tf":1.7320508075688772},"15":{"tf":1.0},"16":{"tf":1.0},"6":{"tf":1.0},"7":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"a":{"d":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"m":{"df":1,"docs":{"5":{"tf":1.0}}}},"p":{"df":0,"docs":{},"m":{"df":1,"docs":{"7":{"tf":1.0}}}},"u":{"df":0,"docs":{},"n":{"df":3,"docs":{"11":{"tf":1.0},"4":{"tf":1.0},"5":{"tf":1.7320508075688772}}}}},"s":{"6":{"df":1,"docs":{"7":{"tf":1.0}}},"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"7":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"2":{"tf":1.0}}},"t":{"df":11,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":1.0},"12":{"tf":1.0},"13":{"tf":1.0},"14":{"tf":1.0},"15":{"tf":1.0},"16":{"tf":1.0},"23":{"tf":1.7320508075688772},"27":{"tf":1.7320508075688772},"7":{"tf":1.0},"9":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"2":{"tf":1.0}}},"df":0,"docs":{}}}}},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"m":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"df":5,"docs":{"25":{"tf":1.7320508075688772},"3":{"tf":2.0},"5":{"tf":1.0},"6":{"tf":1.0},"7":{"tf":1.0}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.0}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"r":{"c":{"df":8,"docs":{"1":{"tf":1.0},"17":{"tf":1.7320508075688772},"18":{"tf":1.4142135623730951},"19":{"tf":1.0},"20":{"tf":1.0},"28":{"tf":1.7320508075688772},"3":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"p":{"a":{"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"u":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"3":{"tf":1.0}}}}}}}},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"d":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}}},"df":6,"docs":{"1":{"tf":1.0},"11":{"tf":1.0},"3":{"tf":1.7320508075688772},"5":{"tf":1.4142135623730951},"6":{"tf":1.0},"7":{"tf":1.0}}}}}}}},"t":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":2.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"25":{"tf":1.7320508075688772}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}}},"n":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":2,"docs":{"1":{"tf":1.0},"7":{"tf":1.0}}}}},"r":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"7":{"tf":1.0}}}},"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"1":{"tf":1.0}}}}},"df":0,"docs":{}},"df":1,"docs":{"5":{"tf":1.0}},"e":{"df":0,"docs":{},"e":{"df":1,"docs":{"7":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"2":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"u":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":1,"docs":{"3":{"tf":1.0}}}}}}},"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"x":{"df":6,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.4142135623730951},"5":{"tf":1.0},"6":{"tf":1.0},"7":{"tf":1.4142135623730951}}}},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}}}},"p":{"d":{"a":{"df":0,"docs":{},"t":{"df":3,"docs":{"26":{"tf":1.7320508075688772},"27":{"tf":1.0},"28":{"tf":1.0}}}},"df":0,"docs":{}},"df":3,"docs":{"23":{"tf":1.7320508075688772},"3":{"tf":1.0},"6":{"tf":1.0}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"s":{"df":3,"docs":{"3":{"tf":1.4142135623730951},"5":{"tf":2.0},"7":{"tf":2.0}},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"2":{"tf":1.0},"22":{"tf":1.7320508075688772},"3":{"tf":1.7320508075688772},"5":{"tf":1.0}},"l":{"a":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}}}}},"v":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"2":{"tf":1.0}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}}}}},"t":{"df":1,"docs":{"3":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}}}}}},"w":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}}},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.4142135623730951}}}}},"h":{"a":{"df":0,"docs":{},"t":{"'":{"df":2,"docs":{"6":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":3,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"5":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"11":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"5":{"tf":1.0}}},"l":{"d":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}}},"x":{"8":{"6":{"_":{"6":{"4":{"df":2,"docs":{"11":{"tf":1.0},"4":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":2.0},"4":{"tf":1.0},"6":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"y":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}},"title":{"root":{"a":{"c":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"22":{"tf":1.0}}}}}}},"df":0,"docs":{}},"d":{"df":1,"docs":{"22":{"tf":1.0}}},"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"4":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"m":{"df":1,"docs":{"12":{"tf":1.0}}}},"u":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"b":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"16":{"tf":1.0}}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"27":{"tf":1.0},"9":{"tf":1.0}}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"df":2,"docs":{"19":{"tf":1.0},"20":{"tf":1.0}}},"df":0,"docs":{}}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"21":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":2,"docs":{"10":{"tf":1.0},"18":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"k":{"df":2,"docs":{"20":{"tf":1.0},"26":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"d":{"df":1,"docs":{"6":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"21":{"tf":1.0},"25":{"tf":1.0},"8":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"2":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"x":{"df":1,"docs":{"26":{"tf":1.0}}}}}}},"m":{"a":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"24":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"23":{"tf":1.0}}}}}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"25":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":1,"docs":{"13":{"tf":1.0}}},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"21":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"c":{"df":1,"docs":{"0":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"19":{"tf":1.0}}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"df":0,"docs":{}}},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"24":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"q":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":1,"docs":{"15":{"tf":1.0}}}}}},"r":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"13":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"v":{"df":1,"docs":{"14":{"tf":1.0}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":2,"docs":{"23":{"tf":1.0},"27":{"tf":1.0}}}},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"25":{"tf":1.0}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"r":{"c":{"df":2,"docs":{"17":{"tf":1.0},"28":{"tf":1.0}}},"df":0,"docs":{}}}}},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"25":{"tf":1.0}}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"p":{"d":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"26":{"tf":1.0}}}},"df":0,"docs":{}},"df":1,"docs":{"23":{"tf":1.0}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"22":{"tf":1.0}}}}}},"w":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"t":{"'":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"x":{"8":{"6":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"lang":"English","pipeline":["trimmer","stopWordFilter","stemmer"],"ref":"id","version":"0.9.5"},"results_options":{"limit_results":30,"teaser_word_count":30},"search_options":{"bool":"OR","expand":true,"fields":{"body":{"boost":1},"breadcrumbs":{"boost":1},"title":{"boost":2}}}}); \ No newline at end of file diff --git a/public/handbook/searchindex.json b/public/handbook/searchindex.json new file mode 100644 index 0000000..e8b718b --- /dev/null +++ b/public/handbook/searchindex.json @@ -0,0 +1 @@ +{"doc_urls":["index.html#preface","index.html#what-is-this","introduction/index.html#introduction","introduction/index.html#core-principles","introduction/index.html#architectures","introduction/audience.html#target-audience","introduction/features.html#whats-included","introduction/features.html#whats-missing","installation/index.html#installation","installation/binary/index.html#binary","installation/binary/downloading.html#downloading","installation/binary/x86/index.html#x86","installation/binary/arm/index.html#arm","installation/binary/arm/rpi.html#raspberry-pi","installation/binary/riscv/index.html#riscv","installation/binary/riscv/qemu.html#qemu","installation/binary/riscv/beagle-v.html#beaglev","installation/source/index.html#source","installation/source/downloading.html#downloading","installation/source/preparing.html#preparing-to-build","installation/source/building-hitchhiker.html#building-hitchhiker","configuration/index.html#post-install-configuration","configuration/users.html#adding-a-user-account","configuration/networking.html#setting-up-networking","s6/index.html#managing-processes","pkgsrc/index.html#installing-third-party-software","updating/index.html#updating-hitchhiker-linux","updating/binary.html#from-binary-sets","updating/source.html#from-source"],"index":{"documentStore":{"docInfo":{"0":{"body":0,"breadcrumbs":2,"title":1},"1":{"body":32,"breadcrumbs":1,"title":0},"10":{"body":0,"breadcrumbs":8,"title":1},"11":{"body":59,"breadcrumbs":7,"title":1},"12":{"body":0,"breadcrumbs":7,"title":1},"13":{"body":0,"breadcrumbs":10,"title":2},"14":{"body":0,"breadcrumbs":7,"title":1},"15":{"body":0,"breadcrumbs":8,"title":1},"16":{"body":0,"breadcrumbs":8,"title":1},"17":{"body":0,"breadcrumbs":4,"title":1},"18":{"body":0,"breadcrumbs":7,"title":1},"19":{"body":0,"breadcrumbs":7,"title":2},"2":{"body":21,"breadcrumbs":2,"title":1},"20":{"body":0,"breadcrumbs":7,"title":2},"21":{"body":0,"breadcrumbs":6,"title":3},"22":{"body":0,"breadcrumbs":9,"title":3},"23":{"body":0,"breadcrumbs":9,"title":3},"24":{"body":0,"breadcrumbs":4,"title":2},"25":{"body":0,"breadcrumbs":8,"title":4},"26":{"body":0,"breadcrumbs":6,"title":3},"27":{"body":0,"breadcrumbs":7,"title":2},"28":{"body":0,"breadcrumbs":5,"title":1},"3":{"body":134,"breadcrumbs":3,"title":2},"4":{"body":12,"breadcrumbs":2,"title":1},"5":{"body":125,"breadcrumbs":5,"title":2},"6":{"body":44,"breadcrumbs":4,"title":2},"7":{"body":134,"breadcrumbs":4,"title":2},"8":{"body":0,"breadcrumbs":2,"title":1},"9":{"body":0,"breadcrumbs":5,"title":1}},"docs":{"0":{"body":"","breadcrumbs":"Preface » Preface","id":"0","title":"Preface"},"1":{"body":"HitchHiker Linux is a general purpose Linux distribution that has been carefully assembled to give a more traditional, Unix-like experience. HitchHiker provides, out of the box, all development tools and libraries to rebuild itself from source code as well as being a solid base from which to create whatever system is desired.","breadcrumbs":"Preface » What is this?","id":"1","title":"What is this?"},"10":{"body":"","breadcrumbs":"Installation » Installing Binary Sets » Downloading Binary Sets » downloading","id":"10","title":"downloading"},"11":{"body":"The x86 platform includes all 32-bit Intel and Intel compatible processors ranging from i386 to i786 processors. For the purposes of installation, the x86_64 architecture, including all AMD64 and Intel 64-bit processors, is identical in function and included in this page. NOTE: Please note that the minimum supported processor is i486. This is not a limitation specific to HitchHiker, but a limitation of the Linux Kernel itself and Glibc. Should you have a computer of this vintage, and wish to get it running, you have the choice of installing an older and likely unsupported distribution, or installing an operating system descended from 4.4BSD (FreeBSD, NetBSD, and OpenBSD).","breadcrumbs":"Installation » Installing Binary Sets » Installing on x86 » x86","id":"11","title":"x86"},"12":{"body":"","breadcrumbs":"Installation » Installing Binary Sets » Installing on Arm » Arm","id":"12","title":"Arm"},"13":{"body":"","breadcrumbs":"Installation » Installing Binary Sets » Installing on Arm » Raspberry Pi » Raspberry Pi","id":"13","title":"Raspberry Pi"},"14":{"body":"","breadcrumbs":"Installation » Installing Binary Sets » Installing on Riscv » Riscv","id":"14","title":"Riscv"},"15":{"body":"","breadcrumbs":"Installation » Installing Binary Sets » Installing on Riscv » Qemu » Qemu","id":"15","title":"Qemu"},"16":{"body":"","breadcrumbs":"Installation » Installing Binary Sets » Installing on Riscv » BeagleV » BeagleV","id":"16","title":"BeagleV"},"17":{"body":"","breadcrumbs":"Installation » Installing from Source » Source","id":"17","title":"Source"},"18":{"body":"","breadcrumbs":"Installation » Installing from Source » Downloading HHL Source » downloading","id":"18","title":"downloading"},"19":{"body":"","breadcrumbs":"Installation » Installing from Source » Preparing to Build » Preparing to Build","id":"19","title":"Preparing to Build"},"2":{"body":"#!/don't/panic\nman 42 HitchHiker Linux is a very Unix-like distribution of Linux with a focus on simplicity, elegance and providing a solid base that the end user can turn into whatever they see fit.","breadcrumbs":"Introduction » Introduction","id":"2","title":"Introduction"},"20":{"body":"","breadcrumbs":"Installation » Installing from Source » Building HitchHiker » Building HitchHiker","id":"20","title":"Building HitchHiker"},"21":{"body":"","breadcrumbs":"Post Install Configuration » Post Install Configuration","id":"21","title":"Post Install Configuration"},"22":{"body":"","breadcrumbs":"Post Install Configuration » Adding a User Account » Adding a User Account","id":"22","title":"Adding a User Account"},"23":{"body":"","breadcrumbs":"Post Install Configuration » Setting up Networking » Setting up Networking","id":"23","title":"Setting up Networking"},"24":{"body":"","breadcrumbs":"Managing Processes » Managing Processes","id":"24","title":"Managing Processes"},"25":{"body":"","breadcrumbs":"Installing Third Party Software » Installing Third Party Software","id":"25","title":"Installing Third Party Software"},"26":{"body":"","breadcrumbs":"Updating HitchHiker Linux » Updating HitchHiker Linux","id":"26","title":"Updating HitchHiker Linux"},"27":{"body":"","breadcrumbs":"Updating HitchHiker Linux » From Binary Sets » From Binary Sets","id":"27","title":"From Binary Sets"},"28":{"body":"","breadcrumbs":"Updating HitchHiker Linux » From Source » From Source","id":"28","title":"From Source"},"3":{"body":"The default installation should include the bare minimum required software to provide a solid base. Complexity should be discouraged in favor of code elegance, security and maintainability. End users should not be discouraged from tinkering with their system. The distribution should make as few assumptions as possible regarding end use. While newer releases of software often eliminate bugs and vulnerabilities, newer software packages are not by default more secure than stable, mature packages (newer is not always better). Any changes to the core system functionality, especially those which change expected functionality, must be well justified and well vetted before deployment. The base installation should include everything required to rebuild itself from source. The distribution should make as few changes to the upstream software as possible, delivering it as intended by the original author. Patching of sources should only be done to fix bugs or vulnerabilities. HHL was born of a desire to harness the greater hardware support of Linux while paying respect to the Unix systems from which Linux was born. The author was a long time user of FreeBSD who migrated to Arch for several years, but has become increasingly frustrated with Systemd, Gnome, RedHat and Ubuntu dominance. It is believed that there is a need for a distribution that does not pander to ease of use for casual users at the expense of putting up roadblocks for experienced Unix veterans.","breadcrumbs":"Introduction » Core Principles:","id":"3","title":"Core Principles:"},"4":{"body":"HHL is running on the following processor architectures: x86 (minimum i486) x86_64 armv7l aarch64 riscv64","breadcrumbs":"Introduction » Architectures","id":"4","title":"Architectures"},"5":{"body":"My first computer was a Tandy TRS-80 handed down from an uncle. The interface consisted of a blinking cursor on a monochrome screen, and it had no storage beyond RAM and ROM. Whatever you could type into memory before shutting it off and run with the included Basic interpretor was the extent of the software that ran on that computer. As limited as it was, it was fascinating to me. In this day and age an interface consisting of a blinking cursor without wallaper, icons, notifications and voice input is bewildering to the average human. Nevertheless, that is the interface that a fresh installation of HItchHiker will always present to the user. Therefore, it can be reasoned that the target audience will consist of individuals who either are comfortable with using a command line interface or are eager to learn. Some proficiency using Linux or Unix is helpful, but not 100% necessary given an ability and willingness to read the documentation and get used to being \"close to the machine\". Indeed, HitchHiker will not do any kind of hand holding while you are installing and using your new system. You will be expected to learn the hows and whys of what makes a computer work. Most operating systems, including the majority of Linux distributions, will gladly install, configure, and run 100s of programs without your ever being aware that they are doing it. By the time you have achived proficiency with HitchHiker, you will know what every running process is for and why it is needed.","breadcrumbs":"Introduction » Target Audience » Target Audience","id":"5","title":"Target Audience"},"6":{"body":"A full C and C++ development environment including compiler, headers and libraries. Up to date versions of kernel, base libraries and toolchain components. Where possible, BSD and historical Unix utilities have been incorporated. Full documentation is included for all included software. The HitchHiker build system is capable of bootstrapping itself from another Linux distro or from HitchHiker itself, and is available for x86, Arm and RiscV architectures.","breadcrumbs":"Introduction » Features » What's Included","id":"6","title":"What's Included"},"7":{"body":"Systemd - HitchHiker uses the S6 supervision suite and a minimal init. No installer - HitchHiker is installed using Unix command line tools present on any Linux distribution. No apt, rpm, dnf, pacman, etc. HitchHiker uses NetBSD Pkgsrc for installing extra software. No daemons beyond what is required to provide a functional command prompt are started by default. No extra configuration is done to provide a \"consistent look and feel\" or any such crap. The Linux world is full of choices. Unfortunately, among the hundreds of installable offerings the vast majority are \"vanity distros\" which are just a remix of another distribution, with a different set of installed packages and a few cool wallpapers. HitchHiker on the other hand is not based on any other distribution of Linux. It is a fully independent offering which tracks the most recent releases of the Linux kernel, Glibc, GCC etc. It's smaller userland utilities have been mostly ported from BSD or implemented from scratch. It's source tree can compile the entire operating system with a single command using Makefiles. We strive for an active and independent presence and want to push open source into new and exciting frontiers, such as RiscV, while paying homage to classic Unix. While there are other offerings that cover some of the same territory (Arch, Gentoo) we felt that there was space for something different.","breadcrumbs":"Introduction » Features » What's Missing","id":"7","title":"What's Missing"},"8":{"body":"","breadcrumbs":"Installation » Installation","id":"8","title":"Installation"},"9":{"body":"","breadcrumbs":"Installation » Installing Binary Sets » Binary","id":"9","title":"Binary"}},"length":29,"save":true},"fields":["title","body","breadcrumbs"],"index":{"body":{"root":{"1":{"0":{"0":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"2":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"4":{".":{"4":{"b":{"df":0,"docs":{},"s":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"df":1,"docs":{"2":{"tf":1.0}}},"df":0,"docs":{}},"6":{"4":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"8":{"0":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}},"a":{"a":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"h":{"6":{"4":{"df":1,"docs":{"4":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"5":{"tf":1.0}}}}},"c":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"22":{"tf":1.0}}}}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"5":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"d":{"df":1,"docs":{"22":{"tf":1.0}}},"df":0,"docs":{},"g":{"df":1,"docs":{"5":{"tf":1.0}}},"l":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"y":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"d":{"6":{"4":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"r":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":3,"docs":{"11":{"tf":1.0},"4":{"tf":1.4142135623730951},"6":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"m":{"df":2,"docs":{"12":{"tf":1.0},"6":{"tf":1.0}},"v":{"7":{"df":0,"docs":{},"l":{"df":1,"docs":{"4":{"tf":1.0}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}},"u":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}}}}},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}}},"w":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}},"b":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"3":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":5,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.4142135623730951},"6":{"tf":1.0},"7":{"tf":1.0}}},"i":{"c":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"16":{"tf":1.0}}}}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"3":{"tf":1.0}}}}},"df":2,"docs":{"1":{"tf":1.0},"5":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}}}},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"27":{"tf":1.0},"9":{"tf":1.0}}}}},"df":0,"docs":{}},"t":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}}}},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}},"x":{"df":1,"docs":{"1":{"tf":1.0}}}},"s":{"d":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}},"i":{"df":0,"docs":{},"l":{"d":{"df":3,"docs":{"19":{"tf":1.0},"20":{"tf":1.0},"6":{"tf":1.0}}},"df":0,"docs":{}}}}},"c":{"a":{"df":0,"docs":{},"p":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"1":{"tf":1.0}}}}}}}}},"s":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":1,"docs":{"6":{"tf":1.4142135623730951}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"3":{"tf":1.7320508075688772}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}}},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"o":{"d":{"df":0,"docs":{},"e":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"m":{"a":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.7320508075688772}}},"df":0,"docs":{}}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"3":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"5":{"tf":1.7320508075688772}}}}}},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":3,"docs":{"21":{"tf":1.0},"5":{"tf":1.0},"7":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"5":{"tf":1.7320508075688772},"7":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"1":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}}}}}},"d":{"a":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"6":{"tf":1.0}}}},"y":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"3":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"s":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":2,"docs":{"1":{"tf":1.0},"6":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}}}}},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":6,"docs":{"1":{"tf":1.0},"11":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.7320508075688772},"5":{"tf":1.0},"7":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"o":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"f":{"df":1,"docs":{"7":{"tf":1.0}}}},"o":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"5":{"tf":1.0},"6":{"tf":1.0}}}}}}}},"df":1,"docs":{"5":{"tf":1.0}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}},"n":{"'":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"2":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}}}},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":2,"docs":{"10":{"tf":1.0},"18":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.0}}}}},"s":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":2,"docs":{"2":{"tf":1.0},"3":{"tf":1.0}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}}}},"n":{"d":{"df":2,"docs":{"2":{"tf":1.0},"3":{"tf":1.4142135623730951}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}}}}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}},"t":{"c":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}},"x":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"3":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"1":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"3":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}},"r":{"a":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"f":{"a":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}},"df":0,"docs":{}},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"w":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}},"t":{"df":1,"docs":{"2":{"tf":1.0}}},"x":{"df":1,"docs":{"3":{"tf":1.0}}}},"o":{"c":{"df":0,"docs":{},"u":{"df":1,"docs":{"2":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"4":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"s":{"d":{"df":2,"docs":{"11":{"tf":1.0},"3":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"5":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"6":{"tf":1.4142135623730951},"7":{"tf":1.0}},"i":{"df":1,"docs":{"7":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":3,"docs":{"11":{"tf":1.0},"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"g":{"c":{"c":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"1":{"tf":1.0}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"1":{"tf":1.0}},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"l":{"a":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"b":{"c":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"5":{"tf":1.4142135623730951},"7":{"tf":1.0}}},"df":0,"docs":{}},"r":{"d":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}},"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"6":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"l":{"df":0,"docs":{},"p":{"df":1,"docs":{"5":{"tf":1.0}}}}},"h":{"df":0,"docs":{},"l":{"df":2,"docs":{"3":{"tf":1.0},"4":{"tf":1.0}}}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"6":{"tf":1.0}}}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"k":{"df":8,"docs":{"1":{"tf":1.4142135623730951},"11":{"tf":1.0},"2":{"tf":1.0},"20":{"tf":1.0},"26":{"tf":1.0},"5":{"tf":1.7320508075688772},"6":{"tf":1.4142135623730951},"7":{"tf":2.0}}}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}},"m":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"df":1,"docs":{"5":{"tf":1.0}}}},"u":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}},"n":{"d":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}}},"i":{"3":{"8":{"6":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"8":{"6":{"df":2,"docs":{"11":{"tf":1.0},"4":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"8":{"6":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}}}},"n":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"d":{"df":4,"docs":{"11":{"tf":1.7320508075688772},"3":{"tf":1.4142135623730951},"5":{"tf":1.4142135623730951},"6":{"tf":2.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"6":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"5":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"u":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"l":{"df":7,"docs":{"11":{"tf":1.7320508075688772},"21":{"tf":1.0},"25":{"tf":1.0},"3":{"tf":1.4142135623730951},"5":{"tf":1.7320508075688772},"7":{"tf":2.23606797749979},"8":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"11":{"tf":1.7320508075688772}}},"n":{"d":{"df":1,"docs":{"3":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"f":{"a":{"c":{"df":1,"docs":{"5":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.0}}}}}}}}}},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"2":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"t":{"'":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":4,"docs":{"1":{"tf":1.0},"11":{"tf":1.0},"3":{"tf":1.0},"6":{"tf":1.4142135623730951}}}}}}}},"j":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":3,"docs":{"11":{"tf":1.0},"6":{"tf":1.0},"7":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"i":{"b":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"1":{"tf":1.0},"6":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.4142135623730951},"5":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"e":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}}},"u":{"df":0,"docs":{},"x":{"df":8,"docs":{"1":{"tf":1.4142135623730951},"11":{"tf":1.0},"2":{"tf":1.4142135623730951},"26":{"tf":1.0},"3":{"tf":1.4142135623730951},"5":{"tf":1.4142135623730951},"6":{"tf":1.0},"7":{"tf":2.0}}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"3":{"tf":1.0}}}},"o":{"df":0,"docs":{},"k":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"m":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}},"df":0,"docs":{}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}}}}},"k":{"df":0,"docs":{},"e":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"5":{"tf":1.0}},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"n":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"24":{"tf":1.0}}}},"df":1,"docs":{"2":{"tf":1.0}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":1,"docs":{"7":{"tf":1.0}},"u":{"df":0,"docs":{},"m":{"df":3,"docs":{"11":{"tf":1.0},"3":{"tf":1.0},"4":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"7":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"d":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}},"df":0,"docs":{}},"t":{"b":{"df":0,"docs":{},"s":{"d":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"23":{"tf":1.0}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"5":{"tf":1.0}}}}}}}}}}}},"w":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.7320508075688772}}}}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}},"i":{"df":0,"docs":{},"f":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.7320508075688772}}}}}},"l":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"b":{"df":0,"docs":{},"s":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"7":{"tf":1.0}}},"r":{"df":3,"docs":{"11":{"tf":1.0},"5":{"tf":1.0},"7":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"1":{"tf":1.0}}}}},"p":{"a":{"c":{"df":0,"docs":{},"k":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}},"df":0,"docs":{}},"m":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":1,"docs":{"11":{"tf":1.0}}}},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"25":{"tf":1.0}}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}},"y":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":1,"docs":{"13":{"tf":1.0}}},"k":{"df":0,"docs":{},"g":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}}},"l":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"6":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":1,"docs":{"21":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"c":{"df":1,"docs":{"0":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"19":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"df":0,"docs":{}}},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"24":{"tf":1.0},"5":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"11":{"tf":2.0},"4":{"tf":1.0}}}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"i":{"d":{"df":4,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.0},"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":2,"docs":{"1":{"tf":1.0},"11":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"7":{"tf":1.0}}}},"t":{"df":1,"docs":{"3":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":1,"docs":{"15":{"tf":1.0}}}}}},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"5":{"tf":1.0}}},"n":{"df":1,"docs":{"5":{"tf":1.0}},"g":{"df":1,"docs":{"11":{"tf":1.0}}}},"s":{"df":0,"docs":{},"p":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"13":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.0}}},"df":0,"docs":{}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"d":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"3":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"df":1,"docs":{"7":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"v":{"6":{"4":{"df":1,"docs":{"4":{"tf":1.0}}},"df":0,"docs":{}},"df":3,"docs":{"14":{"tf":1.0},"6":{"tf":1.0},"7":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"a":{"d":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"m":{"df":1,"docs":{"5":{"tf":1.0}}}},"p":{"df":0,"docs":{},"m":{"df":1,"docs":{"7":{"tf":1.0}}}},"u":{"df":0,"docs":{},"n":{"df":3,"docs":{"11":{"tf":1.0},"4":{"tf":1.0},"5":{"tf":1.7320508075688772}}}}},"s":{"6":{"df":1,"docs":{"7":{"tf":1.0}}},"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"7":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"2":{"tf":1.0}}},"t":{"df":3,"docs":{"23":{"tf":1.0},"27":{"tf":1.0},"7":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"2":{"tf":1.0}}},"df":0,"docs":{}}}}},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"m":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"df":5,"docs":{"25":{"tf":1.0},"3":{"tf":2.0},"5":{"tf":1.0},"6":{"tf":1.0},"7":{"tf":1.0}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.0}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"r":{"c":{"df":5,"docs":{"1":{"tf":1.0},"17":{"tf":1.0},"28":{"tf":1.0},"3":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"p":{"a":{"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"u":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"3":{"tf":1.0}}}}}}}},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"d":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}}},"df":6,"docs":{"1":{"tf":1.0},"11":{"tf":1.0},"3":{"tf":1.7320508075688772},"5":{"tf":1.4142135623730951},"6":{"tf":1.0},"7":{"tf":1.0}}}}}}}},"t":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"25":{"tf":1.0}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}}},"n":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":2,"docs":{"1":{"tf":1.0},"7":{"tf":1.0}}}}},"r":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"7":{"tf":1.0}}}},"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"1":{"tf":1.0}}}}},"df":0,"docs":{}},"df":1,"docs":{"5":{"tf":1.0}},"e":{"df":0,"docs":{},"e":{"df":1,"docs":{"7":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"2":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"u":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":1,"docs":{"3":{"tf":1.0}}}}}}},"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"x":{"df":6,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.4142135623730951},"5":{"tf":1.0},"6":{"tf":1.0},"7":{"tf":1.4142135623730951}}}},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}}}},"p":{"d":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"26":{"tf":1.0}}}},"df":0,"docs":{}},"df":3,"docs":{"23":{"tf":1.0},"3":{"tf":1.0},"6":{"tf":1.0}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"s":{"df":3,"docs":{"3":{"tf":1.4142135623730951},"5":{"tf":2.0},"7":{"tf":2.0}},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"2":{"tf":1.0},"22":{"tf":1.0},"3":{"tf":1.7320508075688772},"5":{"tf":1.0}},"l":{"a":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}}}}},"v":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"2":{"tf":1.0}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}}}}},"t":{"df":1,"docs":{"3":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}}}}}},"w":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}}},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.4142135623730951}}}}},"h":{"a":{"df":0,"docs":{},"t":{"'":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":3,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"5":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"11":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"5":{"tf":1.0}}},"l":{"d":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}}},"x":{"8":{"6":{"_":{"6":{"4":{"df":2,"docs":{"11":{"tf":1.0},"4":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":1.4142135623730951},"4":{"tf":1.0},"6":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"y":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}},"breadcrumbs":{"root":{"1":{"0":{"0":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"3":{"2":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"4":{".":{"4":{"b":{"df":0,"docs":{},"s":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"2":{"df":1,"docs":{"2":{"tf":1.0}}},"df":0,"docs":{}},"6":{"4":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"8":{"0":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}},"a":{"a":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"h":{"6":{"4":{"df":1,"docs":{"4":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}},"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"5":{"tf":1.0}}}}},"c":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"22":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"5":{"tf":1.0}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"d":{"df":1,"docs":{"22":{"tf":1.7320508075688772}}},"df":0,"docs":{},"g":{"df":1,"docs":{"5":{"tf":1.0}}},"l":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"y":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"d":{"6":{"4":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"r":{"c":{"df":0,"docs":{},"h":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":3,"docs":{"11":{"tf":1.0},"4":{"tf":1.7320508075688772},"6":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"m":{"df":3,"docs":{"12":{"tf":1.7320508075688772},"13":{"tf":1.0},"6":{"tf":1.0}},"v":{"7":{"df":0,"docs":{},"l":{"df":1,"docs":{"4":{"tf":1.0}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}},"u":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"5":{"tf":2.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}}}}},"v":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}}},"w":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}},"b":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"3":{"tf":1.0}}}},"s":{"df":0,"docs":{},"e":{"df":5,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.4142135623730951},"6":{"tf":1.0},"7":{"tf":1.0}}},"i":{"c":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"16":{"tf":1.7320508075688772}}}}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"3":{"tf":1.0}}}}},"df":2,"docs":{"1":{"tf":1.0},"5":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"w":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}}}},"y":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":9,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":1.0},"12":{"tf":1.0},"13":{"tf":1.0},"14":{"tf":1.0},"15":{"tf":1.0},"16":{"tf":1.0},"27":{"tf":1.7320508075688772},"9":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"t":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"k":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}}}},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}},"x":{"df":1,"docs":{"1":{"tf":1.0}}}},"s":{"d":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}},"i":{"df":0,"docs":{},"l":{"d":{"df":3,"docs":{"19":{"tf":1.7320508075688772},"20":{"tf":1.7320508075688772},"6":{"tf":1.0}}},"df":0,"docs":{}}}}},"c":{"a":{"df":0,"docs":{},"p":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"1":{"tf":1.0}}}}}}}}},"s":{"df":0,"docs":{},"u":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":1,"docs":{"6":{"tf":1.4142135623730951}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"3":{"tf":1.7320508075688772}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}}},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"o":{"d":{"df":0,"docs":{},"e":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.0}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"m":{"a":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.7320508075688772}}},"df":0,"docs":{}}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}}},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"3":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}},"u":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"5":{"tf":1.7320508075688772}}}}}},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":5,"docs":{"21":{"tf":1.7320508075688772},"22":{"tf":1.0},"23":{"tf":1.0},"5":{"tf":1.0},"7":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":2,"docs":{"5":{"tf":1.7320508075688772},"7":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"3":{"tf":1.7320508075688772}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"1":{"tf":1.0}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}}}}}},"d":{"a":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"6":{"tf":1.0}}}},"y":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":1,"docs":{"3":{"tf":1.0}}}}},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"y":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"s":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":2,"docs":{"1":{"tf":1.0},"6":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}}}}},"s":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":6,"docs":{"1":{"tf":1.0},"11":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.7320508075688772},"5":{"tf":1.0},"7":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"o":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"f":{"df":1,"docs":{"7":{"tf":1.0}}}},"o":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":2,"docs":{"5":{"tf":1.0},"6":{"tf":1.0}}}}}}}},"df":1,"docs":{"5":{"tf":1.0}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}},"n":{"'":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"2":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}}}},"w":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":2,"docs":{"10":{"tf":1.7320508075688772},"18":{"tf":1.7320508075688772}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.0}}}}},"s":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"g":{"df":2,"docs":{"2":{"tf":1.0},"3":{"tf":1.0}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}}}},"n":{"d":{"df":2,"docs":{"2":{"tf":1.0},"3":{"tf":1.4142135623730951}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}}}}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}},"t":{"c":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"y":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}},"x":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"s":{"df":1,"docs":{"3":{"tf":1.0}}}},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"1":{"tf":1.0}},"e":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"3":{"tf":1.0}}},"df":0,"docs":{}}}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}},"r":{"a":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"f":{"a":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}},"df":0,"docs":{}},"v":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"w":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}},"i":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}},"t":{"df":1,"docs":{"2":{"tf":1.0}}},"x":{"df":1,"docs":{"3":{"tf":1.0}}}},"o":{"c":{"df":0,"docs":{},"u":{"df":1,"docs":{"2":{"tf":1.0}}}},"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"4":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"s":{"d":{"df":2,"docs":{"11":{"tf":1.0},"3":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"5":{"tf":1.0}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"6":{"tf":1.4142135623730951},"7":{"tf":1.0}},"i":{"df":1,"docs":{"7":{"tf":1.0}}}}},"n":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":3,"docs":{"11":{"tf":1.0},"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"g":{"c":{"c":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"1":{"tf":1.0}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"o":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"1":{"tf":1.0}},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"l":{"a":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"b":{"c":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"5":{"tf":1.4142135623730951},"7":{"tf":1.0}}},"df":0,"docs":{}},"r":{"d":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}},"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"6":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{},"l":{"df":0,"docs":{},"p":{"df":1,"docs":{"5":{"tf":1.0}}}}},"h":{"df":0,"docs":{},"l":{"df":3,"docs":{"18":{"tf":1.0},"3":{"tf":1.0},"4":{"tf":1.0}}}},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"6":{"tf":1.0}}}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"k":{"df":10,"docs":{"1":{"tf":1.4142135623730951},"11":{"tf":1.0},"2":{"tf":1.0},"20":{"tf":1.7320508075688772},"26":{"tf":1.7320508075688772},"27":{"tf":1.0},"28":{"tf":1.0},"5":{"tf":1.7320508075688772},"6":{"tf":1.4142135623730951},"7":{"tf":2.0}}}}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"l":{"d":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}},"m":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"w":{"df":1,"docs":{"5":{"tf":1.0}}}},"u":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}},"n":{"d":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}}},"i":{"3":{"8":{"6":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"4":{"8":{"6":{"df":2,"docs":{"11":{"tf":1.0},"4":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"7":{"8":{"6":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}},"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}}}},"n":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"d":{"df":4,"docs":{"11":{"tf":1.7320508075688772},"3":{"tf":1.4142135623730951},"5":{"tf":1.4142135623730951},"6":{"tf":2.23606797749979}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"6":{"tf":1.0}}}}}}},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}}},"df":0,"docs":{}}}},"d":{"df":0,"docs":{},"e":{"df":1,"docs":{"5":{"tf":1.0}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"d":{"df":0,"docs":{},"u":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"p":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"l":{"df":20,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":2.449489742783178},"12":{"tf":1.7320508075688772},"13":{"tf":1.7320508075688772},"14":{"tf":1.7320508075688772},"15":{"tf":1.7320508075688772},"16":{"tf":1.7320508075688772},"17":{"tf":1.4142135623730951},"18":{"tf":1.4142135623730951},"19":{"tf":1.4142135623730951},"20":{"tf":1.4142135623730951},"21":{"tf":1.7320508075688772},"22":{"tf":1.0},"23":{"tf":1.0},"25":{"tf":1.7320508075688772},"3":{"tf":1.4142135623730951},"5":{"tf":1.7320508075688772},"7":{"tf":2.23606797749979},"8":{"tf":1.7320508075688772},"9":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"11":{"tf":1.7320508075688772}}},"n":{"d":{"df":1,"docs":{"3":{"tf":1.0}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"f":{"a":{"c":{"df":1,"docs":{"5":{"tf":2.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.0}}}}}}}}}},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":6,"docs":{"2":{"tf":1.7320508075688772},"3":{"tf":1.0},"4":{"tf":1.0},"5":{"tf":1.0},"6":{"tf":1.0},"7":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"t":{"'":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":4,"docs":{"1":{"tf":1.0},"11":{"tf":1.0},"3":{"tf":1.0},"6":{"tf":1.4142135623730951}}}}}}}},"j":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"3":{"tf":1.0}}}}}}}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":3,"docs":{"11":{"tf":1.0},"6":{"tf":1.0},"7":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"i":{"b":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"1":{"tf":1.0},"6":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.4142135623730951},"5":{"tf":1.0}}}}},"n":{"df":0,"docs":{},"e":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}}},"u":{"df":0,"docs":{},"x":{"df":10,"docs":{"1":{"tf":1.4142135623730951},"11":{"tf":1.0},"2":{"tf":1.4142135623730951},"26":{"tf":1.7320508075688772},"27":{"tf":1.0},"28":{"tf":1.0},"3":{"tf":1.4142135623730951},"5":{"tf":1.4142135623730951},"6":{"tf":1.0},"7":{"tf":2.0}}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"3":{"tf":1.0}}}},"o":{"df":0,"docs":{},"k":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"m":{"a":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}},"df":0,"docs":{}}}},"j":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}}}}},"k":{"df":0,"docs":{},"e":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"5":{"tf":1.0}},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"n":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"24":{"tf":1.7320508075688772}}}},"df":1,"docs":{"2":{"tf":1.0}}},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":1,"docs":{"7":{"tf":1.0}},"u":{"df":0,"docs":{},"m":{"df":3,"docs":{"11":{"tf":1.0},"3":{"tf":1.0},"4":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}}}},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.0}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"n":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{},"e":{"d":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}},"df":0,"docs":{}},"t":{"b":{"df":0,"docs":{},"s":{"d":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"23":{"tf":1.7320508075688772}}}}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"5":{"tf":1.0}}}}}}}}}}}},"w":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.7320508075688772}}}}}},"o":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}},"i":{"df":0,"docs":{},"f":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.7320508075688772}}}}}},"l":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"b":{"df":0,"docs":{},"s":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"7":{"tf":1.0}}},"r":{"df":3,"docs":{"11":{"tf":1.0},"5":{"tf":1.0},"7":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}}}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"1":{"tf":1.0}}}}},"p":{"a":{"c":{"df":0,"docs":{},"k":{"a":{"df":0,"docs":{},"g":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}},"df":0,"docs":{}},"m":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":1,"docs":{"11":{"tf":1.0}}}},"n":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"25":{"tf":1.7320508075688772}}}}},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}},"y":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}}}},"df":0,"docs":{},"i":{"df":1,"docs":{"13":{"tf":1.7320508075688772}}},"k":{"df":0,"docs":{},"g":{"df":0,"docs":{},"s":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}}},"l":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"b":{"df":0,"docs":{},"l":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"6":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":3,"docs":{"21":{"tf":1.7320508075688772},"22":{"tf":1.0},"23":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"c":{"df":2,"docs":{"0":{"tf":1.7320508075688772},"1":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"19":{"tf":1.7320508075688772}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{},"t":{"df":2,"docs":{"5":{"tf":1.0},"7":{"tf":1.0}}}}}}},"i":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}}},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"24":{"tf":1.7320508075688772},"5":{"tf":1.0}},"o":{"df":0,"docs":{},"r":{"df":2,"docs":{"11":{"tf":2.0},"4":{"tf":1.0}}}}}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"v":{"df":0,"docs":{},"i":{"d":{"df":4,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.0},"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":2,"docs":{"1":{"tf":1.0},"11":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"7":{"tf":1.0}}}},"t":{"df":1,"docs":{"3":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":1,"docs":{"15":{"tf":1.7320508075688772}}}}}},"r":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"5":{"tf":1.0}}},"n":{"df":1,"docs":{"5":{"tf":1.0}},"g":{"df":1,"docs":{"11":{"tf":1.0}}}},"s":{"df":0,"docs":{},"p":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"13":{"tf":1.7320508075688772}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.0}}},"df":0,"docs":{}}}}},"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"d":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"g":{"a":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"3":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"df":1,"docs":{"7":{"tf":1.0}}}}},"q":{"df":0,"docs":{},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"df":2,"docs":{"3":{"tf":1.4142135623730951},"7":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"v":{"6":{"4":{"df":1,"docs":{"4":{"tf":1.0}}},"df":0,"docs":{}},"df":5,"docs":{"14":{"tf":1.7320508075688772},"15":{"tf":1.0},"16":{"tf":1.0},"6":{"tf":1.0},"7":{"tf":1.0}}}},"df":0,"docs":{}}},"o":{"a":{"d":{"b":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"m":{"df":1,"docs":{"5":{"tf":1.0}}}},"p":{"df":0,"docs":{},"m":{"df":1,"docs":{"7":{"tf":1.0}}}},"u":{"df":0,"docs":{},"n":{"df":3,"docs":{"11":{"tf":1.0},"4":{"tf":1.0},"5":{"tf":1.7320508075688772}}}}},"s":{"6":{"df":1,"docs":{"7":{"tf":1.0}}},"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":1,"docs":{"7":{"tf":1.0}}}}},"c":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"e":{"df":1,"docs":{"2":{"tf":1.0}}},"t":{"df":11,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":1.0},"12":{"tf":1.0},"13":{"tf":1.0},"14":{"tf":1.0},"15":{"tf":1.0},"16":{"tf":1.0},"23":{"tf":1.7320508075688772},"27":{"tf":1.7320508075688772},"7":{"tf":1.0},"9":{"tf":1.0}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"h":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"2":{"tf":1.0}}},"df":0,"docs":{}}}}},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"m":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"df":5,"docs":{"25":{"tf":1.7320508075688772},"3":{"tf":2.0},"5":{"tf":1.0},"6":{"tf":1.0},"7":{"tf":1.0}}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.0}}},"df":0,"docs":{}}},"m":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"h":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"u":{"df":0,"docs":{},"r":{"c":{"df":8,"docs":{"1":{"tf":1.0},"17":{"tf":1.7320508075688772},"18":{"tf":1.4142135623730951},"19":{"tf":1.0},"20":{"tf":1.0},"28":{"tf":1.7320508075688772},"3":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951}}},"df":0,"docs":{}}}},"p":{"a":{"c":{"df":0,"docs":{},"e":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}}},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"u":{"c":{"df":0,"docs":{},"h":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"v":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"3":{"tf":1.0}}}}}}}},"y":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"d":{"df":2,"docs":{"3":{"tf":1.0},"7":{"tf":1.0}}},"df":6,"docs":{"1":{"tf":1.0},"11":{"tf":1.0},"3":{"tf":1.7320508075688772},"5":{"tf":1.4142135623730951},"6":{"tf":1.0},"7":{"tf":1.0}}}}}}}},"t":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{}},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":2.0}}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}}}},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"5":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"25":{"tf":1.7320508075688772}}},"df":0,"docs":{}}},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"df":2,"docs":{"3":{"tf":1.0},"5":{"tf":1.0}}}},"n":{"df":0,"docs":{},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}}}}},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":2,"docs":{"1":{"tf":1.0},"7":{"tf":1.0}}}}},"r":{"a":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"7":{"tf":1.0}}}},"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"1":{"tf":1.0}}}}},"df":0,"docs":{}},"df":1,"docs":{"5":{"tf":1.0}},"e":{"df":0,"docs":{},"e":{"df":1,"docs":{"7":{"tf":1.0}}}}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"2":{"tf":1.0}}}}},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":1,"docs":{"5":{"tf":1.0}}}}}},"u":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":1,"docs":{"3":{"tf":1.0}}}}}}},"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"l":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"i":{"df":0,"docs":{},"x":{"df":6,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"3":{"tf":1.4142135623730951},"5":{"tf":1.0},"6":{"tf":1.0},"7":{"tf":1.4142135623730951}}}},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}}}},"p":{"d":{"a":{"df":0,"docs":{},"t":{"df":3,"docs":{"26":{"tf":1.7320508075688772},"27":{"tf":1.0},"28":{"tf":1.0}}}},"df":0,"docs":{}},"df":3,"docs":{"23":{"tf":1.7320508075688772},"3":{"tf":1.0},"6":{"tf":1.0}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"s":{"df":3,"docs":{"3":{"tf":1.4142135623730951},"5":{"tf":2.0},"7":{"tf":2.0}},"e":{"df":0,"docs":{},"r":{"df":4,"docs":{"2":{"tf":1.0},"22":{"tf":1.7320508075688772},"3":{"tf":1.7320508075688772},"5":{"tf":1.0}},"l":{"a":{"df":0,"docs":{},"n":{"d":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}}}}},"v":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"2":{"tf":1.0}}},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}}}}},"t":{"df":1,"docs":{"3":{"tf":1.0}},"e":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"n":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"i":{"c":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.4142135623730951}}}}}}}},"w":{"a":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"5":{"tf":1.0}}}},"df":0,"docs":{},"p":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}}},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":2,"docs":{"1":{"tf":1.0},"3":{"tf":1.4142135623730951}}}}},"h":{"a":{"df":0,"docs":{},"t":{"'":{"df":2,"docs":{"6":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":3,"docs":{"1":{"tf":1.0},"2":{"tf":1.0},"5":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":1,"docs":{"5":{"tf":1.0}}}},"i":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"h":{"df":1,"docs":{"11":{"tf":1.0}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.4142135623730951}}}}}}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"5":{"tf":1.0}}},"l":{"d":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}}},"x":{"8":{"6":{"_":{"6":{"4":{"df":2,"docs":{"11":{"tf":1.0},"4":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":2.0},"4":{"tf":1.0},"6":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"y":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"3":{"tf":1.0}}}},"df":0,"docs":{}}}}},"title":{"root":{"a":{"c":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"t":{"df":1,"docs":{"22":{"tf":1.0}}}}}}},"df":0,"docs":{}},"d":{"df":1,"docs":{"22":{"tf":1.0}}},"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"4":{"tf":1.0}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"m":{"df":1,"docs":{"12":{"tf":1.0}}}},"u":{"d":{"df":0,"docs":{},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"5":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"b":{"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},"v":{"df":1,"docs":{"16":{"tf":1.0}}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":2,"docs":{"27":{"tf":1.0},"9":{"tf":1.0}}}}},"df":0,"docs":{}}},"u":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"d":{"df":2,"docs":{"19":{"tf":1.0},"20":{"tf":1.0}}},"df":0,"docs":{}}}}},"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"21":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"a":{"d":{"df":2,"docs":{"10":{"tf":1.0},"18":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"k":{"df":2,"docs":{"20":{"tf":1.0},"26":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"u":{"d":{"df":1,"docs":{"6":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"a":{"df":0,"docs":{},"l":{"df":3,"docs":{"21":{"tf":1.0},"25":{"tf":1.0},"8":{"tf":1.0}}}},"df":0,"docs":{}}},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"d":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"2":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"l":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"x":{"df":1,"docs":{"26":{"tf":1.0}}}}}}},"m":{"a":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"g":{"df":1,"docs":{"24":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"23":{"tf":1.0}}}}}}}}},"p":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":1,"docs":{"25":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":1,"docs":{"13":{"tf":1.0}}},"o":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"21":{"tf":1.0}}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"c":{"df":1,"docs":{"0":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"p":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"19":{"tf":1.0}}}},"df":0,"docs":{}}},"i":{"df":0,"docs":{},"n":{"c":{"df":0,"docs":{},"i":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":1,"docs":{"3":{"tf":1.0}}}}}},"df":0,"docs":{}}},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"24":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"q":{"df":0,"docs":{},"e":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":1,"docs":{"15":{"tf":1.0}}}}}},"r":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"p":{"b":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"13":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"c":{"df":0,"docs":{},"v":{"df":1,"docs":{"14":{"tf":1.0}}}},"df":0,"docs":{}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":2,"docs":{"23":{"tf":1.0},"27":{"tf":1.0}}}},"o":{"df":0,"docs":{},"f":{"df":0,"docs":{},"t":{"df":0,"docs":{},"w":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"25":{"tf":1.0}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"r":{"c":{"df":2,"docs":{"17":{"tf":1.0},"28":{"tf":1.0}}},"df":0,"docs":{}}}}},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"df":1,"docs":{"5":{"tf":1.0}}}}}}},"df":0,"docs":{},"h":{"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"d":{"df":1,"docs":{"25":{"tf":1.0}}},"df":0,"docs":{}}}}},"u":{"df":0,"docs":{},"p":{"d":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"26":{"tf":1.0}}}},"df":0,"docs":{}},"df":1,"docs":{"23":{"tf":1.0}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"22":{"tf":1.0}}}}}},"w":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"t":{"'":{"df":2,"docs":{"6":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"x":{"8":{"6":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"lang":"English","pipeline":["trimmer","stopWordFilter","stemmer"],"ref":"id","version":"0.9.5"},"results_options":{"limit_results":30,"teaser_word_count":30},"search_options":{"bool":"OR","expand":true,"fields":{"body":{"boost":1},"breadcrumbs":{"boost":1},"title":{"boost":2}}}} \ No newline at end of file diff --git a/public/handbook/tomorrow-night.css b/public/handbook/tomorrow-night.css new file mode 100644 index 0000000..f719792 --- /dev/null +++ b/public/handbook/tomorrow-night.css @@ -0,0 +1,104 @@ +/* Tomorrow Night Theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment { + color: #969896; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-attribute, +.hljs-tag, +.hljs-regexp, +.ruby .hljs-constant, +.xml .hljs-tag .hljs-title, +.xml .hljs-pi, +.xml .hljs-doctype, +.html .hljs-doctype, +.css .hljs-id, +.css .hljs-class, +.css .hljs-pseudo { + color: #cc6666; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-preprocessor, +.hljs-pragma, +.hljs-built_in, +.hljs-literal, +.hljs-params, +.hljs-constant { + color: #de935f; +} + +/* Tomorrow Yellow */ +.ruby .hljs-class .hljs-title, +.css .hljs-rule .hljs-attribute { + color: #f0c674; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-value, +.hljs-inheritance, +.hljs-header, +.hljs-name, +.ruby .hljs-symbol, +.xml .hljs-cdata { + color: #b5bd68; +} + +/* Tomorrow Aqua */ +.hljs-title, +.css .hljs-hexcolor { + color: #8abeb7; +} + +/* Tomorrow Blue */ +.hljs-function, +.python .hljs-decorator, +.python .hljs-title, +.ruby .hljs-function .hljs-title, +.ruby .hljs-title .hljs-keyword, +.perl .hljs-sub, +.javascript .hljs-title, +.coffeescript .hljs-title { + color: #81a2be; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.javascript .hljs-function { + color: #b294bb; +} + +.hljs { + display: block; + overflow-x: auto; + background: #1d1f21; + color: #c5c8c6; + padding: 0.5em; + -webkit-text-size-adjust: none; +} + +.coffeescript .javascript, +.javascript .xml, +.tex .hljs-formula, +.xml .javascript, +.xml .vbscript, +.xml .css, +.xml .hljs-cdata { + opacity: 0.5; +} + +.hljs-addition { + color: #718c00; +} + +.hljs-deletion { + color: #c82829; +} diff --git a/public/handbook/updating/binary.html b/public/handbook/updating/binary.html new file mode 100644 index 0000000..0ae07db --- /dev/null +++ b/public/handbook/updating/binary.html @@ -0,0 +1,247 @@ + + + + + + From Binary Sets - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    From Binary Sets

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/updating/index.html b/public/handbook/updating/index.html new file mode 100644 index 0000000..9f5b0d0 --- /dev/null +++ b/public/handbook/updating/index.html @@ -0,0 +1,247 @@ + + + + + + Updating HitchHiker Linux - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    Updating HitchHiker Linux

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/handbook/updating/source.html b/public/handbook/updating/source.html new file mode 100644 index 0000000..fb89b87 --- /dev/null +++ b/public/handbook/updating/source.html @@ -0,0 +1,239 @@ + + + + + + From Source - The HitchHiker's Guide to HitchHiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + +
    +
    +

    From Source

    + +
    + + +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/hhl.css b/public/hhl.css new file mode 100644 index 0000000..b7dd656 --- /dev/null +++ b/public/hhl.css @@ -0,0 +1,27 @@ +@import url("handbook/variables.css"); +.tags { + background-color: var(--sidebar-bg); + padding-left: 5px; + padding-right: 5px; + border-radius: 10px; +} + +pre { + padding-left: 15px; + padding-right: 15px; + padding-top: 5px; + padding-bottom: 5px; + border-radius: 5px; +} + +.card { + margin-top: 10px; + margin-bottom: 10px; + padding: 15px; + border-radius: 10px; + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2); +} + +.right { + float: right; +} diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..17944b1 --- /dev/null +++ b/public/index.html @@ -0,0 +1,438 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Welcome Travellers!

    +Welcome to HitchHiker Linux, a small distribution that makes few assumptions on +end use and strives to remain faithful to the traditional Unix way. For more +information please visit the About page, or feel free to +check out the Documentation. +
    +

    Site News

    + + +
    +
    + + Website Redesign + +
    2021-02-18
    + +

    I know a little bit about a lot of things, and one of the things that I know +only in passing is web development....

    + + Read More -> +
    +
    + + + +
    +
    +
    +
    + + + + + diff --git a/public/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/index.html b/public/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/index.html new file mode 100644 index 0000000..daea5ee --- /dev/null +++ b/public/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/index.html @@ -0,0 +1,462 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Compiling for aarch64/riscv64 from qemu user mode chroot

    +

    2021-01-28

    +

    This is a novel approach that I've been experimenting with lately, to do some +legwork towards supporting architectures for which I either don't have physical +hardware or else the hardware is limited in capability so much as to make native +compilation impractical.

    + +

    Qemu, in addition to running full virtual machines, also has what is known as +"user mode emulation". In a nutshell, when using qemu in this way one is able to +run binaries for another architecture without creating virtual hardware or a +virtual kernel. In this case, qemu just acts as a translation layer, translating +instructions designed for one ISA to instructions that can be executed on the +host processor. By not running a virtual kernel on virtual hardware, there is +actually a huge savings of system resources.

    +

    Setting this up, while not trivial, is surprisingly straightforward. First, a +suitable root filesystem must be created. Qemu must be compiled statically, and +the static binary copied into the chroot filesystem. Then, by using binfmt-misc, +one can register this qemu executable as the program interpreter for binaries of +the guest architecture. In this way it is actually possible to set up a functional +chroot on a well spec'ed X86_64 machine running Risc-V binaries. There is a bit +more to getting this to work, but suffice to say that it does in fact work, +within the normal limitations of a chroot.

    +

    While running foreign binaries does incur some performance penalty, this method +is actually proving to be a significant improvement over, say, compiling for +aarch64 on a Raspberry Pi 4, as I have four times the memory and a significantly +faster processor with twice the number of cores available. And it has the benefit +of not requiring a cross compiler. Instead, one is running a native compiler via +an emulation layer. But this eliminates many of the pain points of cross compiling. +It's a neat trick.

    +

    So what does this mean for HitchHiker? It means that work is now well underway +towards running HitchHiker on a BeagleV when they become widely available later +this year. I have been eagerly waiting to dip toes into Risc-V as soon as an +affordable option was available, and it looks like said option is now on the +horizon.

    + + +
    +

    Tags for this post:

    + + Arm + + Porting + + RiscV + + Qemu + + + +
    +
    +
    +
    + + + + + diff --git a/public/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/index.html b/public/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/index.html new file mode 100644 index 0000000..dd2a60b --- /dev/null +++ b/public/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/index.html @@ -0,0 +1,432 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Continued porting of BSD userland against remaining self-hosting

    +

    2020-09-03

    +

    At this juncture we're well over the halfway point in regards to providing a predominately BSD userland in HitchHiker, with over 90 console utilities ported against a total of 59 remaining programs brought in from GNU coreutils. That total includes, of course, some programs that are not included in GNU coreutils. Some of the utilities replace standalone GNU packages, such as grep and diff, while some are utilities that may not be present on most Linux distributions, such as pax or leave. In general, the BSD utilities have compatible functionality, as both GNU and BSD have mostly embraced the POSIX standard, but with a few caveats where there are extensions made to the standard. The biggest differences reflect a difference in philosophy, as the BSD utils are quite small and include only what they must, while the GNU versions are all (yes all) larger and accept more options. GNU particularly accept long options and in general have better internationalization. The GNU utilities also accept the --help option, giving a brief summary of their function. BSD utilities specifically omit this functionality, as each command comes with a man page, which would duplicate functionality.

    +

    One of the dangers in just blindly replacing the usual GNU userland on Linux is that when the accepted options differ slightly, some scripts may not run as expected. This also can affect building packages from source if care is not taken to stick with only POSIX specified options when writing Makefiles. To some extent I have been working to minimize the effects here by taking the time to verify each utility works as expected and in some cases implementing options that most users expect, such as the -v switch (verbose) for the ln and rmdir utilities. In other cases, such as the much abused -a or --preserve-attributes options of GNU cp, implementing equivalent functionality in the BSD port is definitely non-trivial, and many people are just trying to copy directories recursively while preserving symlinks when they use 'cp -a', and not actually wanting to preserve ownership or modification times. Those cases can be served by using BSD cp as 'cp -R'. If preserving attributes is the desired behavior, then this is one of the tradeoffs being made and extra steps will have to be taken with chown and touch.

    +

    In order to ensure that HitchHiker always remains self-hosting I have been running bootstrapping the system from itself multiple times during the porting effort. A few issues have been found and fixed along the way, but it has been an overall smooth transition. In one case, I had actually misused 'cp -a' myself in the busybox build (busybox is only built as part of the temporary toolchain).

    +

    One particularly special case is glibc, which has a hard dependency on GNU awk during build time. As I have a preference for the historical (yet still maintained) Nawk, this requires building a statically compiled Gawk early in the bootstrap process as part of the temporary tools in /toolchain, which is discarded along with the rest of the temporary tools after the bootstrap phase and does not become part of the base system. Another example of the "Sheer F%$king Hubris" of much GNU software, which often will only build with other GNU tools, even though other tools exist with equivalent (and sometimes superior) functionality.

    + + +
    +

    Tags for this post:

    + + Porting + + Roadmap + + NonGNU + + + +
    +
    +
    +
    + + + + + diff --git a/public/news/cross-build-progress/index.html b/public/news/cross-build-progress/index.html new file mode 100644 index 0000000..d252a6d --- /dev/null +++ b/public/news/cross-build-progress/index.html @@ -0,0 +1,469 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Cross Build Progress

    +

    2021-02-08

    +

    The sysroot/cross-compile build tree is nearly able to build all of HitchHiker +now, with only a few packages left to tweak.

    + +
      +
    • pkg-config: This is messy in general. There is a circular dependency with Glib, +satisfied by the pkg-config maintainers incorporating a recent version of Glib +directly into the distribution. However, Glib requires extra work to cross +compile. I've looked into it but not yet implemented the fixes.
    • +
    • XML::Parser: Perl was actually able to cross compile successfully to both +aarch64 and riscv64 using perl-cross. XML::Parser is a perl module, uses perl +during it's build and perl modules in general have their own home baked build +system which does not play well with cross compiling. I'm investigating whether +it really needs to be in the base system or can be moved to ports.
    • +
    • Ninja and Meson: may not actually be needed in the base system?
    • +
    • zstd: Uses a Makefile or Meson for it's build system. I've already dealt with +a few projects that built with a plain Makefile and was just putting this off to +be honest, as a few of the others required significant reworking to get a +functional build.
    • +
    • iproute2: Another one using it's own home grown configure script which will +likely require much manual intervention.
    • +
    • mandoc: This builds after a fair amount of manual intervention. However, it +segfaults on riscv64. Unknown whether this is due to qemu or if it will segfault +on real hardware, but not a great sign. I'm looking at porting an earlier man +utility from 4.4BSD-lite. Man should be a simple program.
    • +
    • file: Our file utility, descended from the relatively recent OpenBSD sandboxed +file, built fine on intel and Arm architectures, but the original author pulled +in some SECCOMP defs that are architecture dependent and failed to account for +any architectures besides Intel and Arm. I've hacked the source so that it +compiles on Riscv64. However, there appears to be more work to be done to get it +fully working on that arch. +There were, of course, numerous hiccups along the way. I'll elaborate on a few.
    • +
    +

    Bzip2 has it's own Makefile based build. It also has a separate Makefile to build the shared version of the library, and even when you do build the shared version it uses the static version for bzip2recover. In true hitchhiker fashion after mucking about with what was already there for a while I wound up just discarding it and imported the source directly into the build tree, substitution our own infrastructure. This required creating hhl.sharedlib.mk, which was overdue anyway. At the moment we're building both shared and static versions of libbz2, and linking the bzip2 and bzip2recover binaries against the shared library.

    +

    Recent versions of util-linux include a new utility, hardlink, which links against pcre2 if available. However, the build system detects pcre2 on the host system, not in the sysroot, and there is no provision to manually disable linking against pcre2. Interestingly, there are two competing implementations of the hardlink program, and the one currently in util-linux is potentially going to be replaced as it is not the more fully featured one. There is some interesting discussion of the issue on the mailing list. In the meantime, since it is a potentially useful utility, I just imported the source of the preferred version and am building it using our build infrustructure.

    +

    And now, gettext. This one really pissed me off. Recent versions of gettext include libtextstyle, a library for formatting text for display. The included gettext utilities link against libtextstyle. However, the headers don't yet exist at the time the utilities are built, so the only reason the build is not failing for everyone is that they are building against the headers already present on the host system. The libtextstyle subdirectory is not even in the library search path on the command line.

    +

    Now, this is just bad practice. It means that if those headers are updated for a new release, then distro packagers will be building against the old headers, potentially causing undefined behavior and random bugs. I only caught it because the build utterly fails in a sysroot environment.

    +

    Furthermore, one of the missing headers, included by textstyle.h, is stdbool.h, because for some reason they're worried about building on systems that don't have a working boolean implementation. This is just crazy at this point. It's no wonder GNU projects get bloated.

    +

    In the end, I pulled the headers out of the host system, put them in the appropriate directory inside the source directory, compiled, then did a chroot into the sysroot and did a native compile just to be sure that the headers matched. Those headers are now imported into the build tree and are placed into the source directory after running configure, and the Makefile is patched to search the build directory before the system header directory. It's not a full fix that I would push upstream but it works. A full fix would build the headers first, before building the utilities, then link against them. I didn't feel like going that in depth fixing their build.

    +

    In a general sense, even though I feel that autotools based builds are often extremely bloated and inefficient, based on the mistakes that I keep fixing in other project's home brewed Makefiles to enable cross compilation (as well as simple things like installing into a DESTDIR) I can really see some of the strengths of autotools. Most of the time, all that is needed to cross compile is setting --host and either passing --sysroot in the CFLAGS or, if supported the the specific package, passing --with-sysroot to configure. That isn't to say that autotools is perfect. Frequently the package maintainers compile tests against the host system or check for library support by looking in /usr/include. After a while you begin to realize that you're literally fixing the same mistake repeatedly, and start to feel despair for the human race. And then it works, and everything is all right again.

    + + +
    +

    Tags for this post:

    + + Programming + + Milestones + + Porting + + RiscV + + + +
    +
    +
    +
    + + + + + diff --git a/public/news/editors-glibc-232/index.html b/public/news/editors-glibc-232/index.html new file mode 100644 index 0000000..0a93251 --- /dev/null +++ b/public/news/editors-glibc-232/index.html @@ -0,0 +1,446 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Editors, glibc-2.32

    +

    2020-08-28

    +

    Most people who use any form of Unix have a favorite editor. Most of them also think that everyone else is wrong (but in truth, you're all wrong...). And most Linux distros over the years have gradually catered more and more to the lowest denominator.

    +

    In the beginning, of course, there was only ed (The STANDARD editor!) and then at some point in time came Bill Joy's vi. Most people have, of course, never used the original vi. If you are on Linux, chances are good that you have encountered vim. If you are running BSD in any form then you have vi, except that you don't actually have vi, you have nvi. When 4.4BSDlite was released as the first large scale open source project, the major caveat was that much of the source was patent encumbered by AT&T, including the venerable vi editor. All of this source was therefore replaced, painstakingly, a piece at a time. The selling point of nvi at the time was that it was a "bug for bug compatible" rewrite of vi, which started with the original elvis (a vi clone) source.

    +

    For most of it's existence so far (including it's original, never released to the public form from roughly ten years ago) HitchHiker had vim. I've used vim a lot and over the years have only grown more fond of it. Sticking with it over the rather steep learning curve has been quite helpful in situations where the only editor available is some form of vi or vi clone. However, vim is not without it's issues. All forms of vi or clones of vi have a rather steep learning curve for new users. The vim source code is a rats nest of conditionals and attempts to maintain compatibility with ancient systems that only a masochist or Luddite would use. And for a console based editor it is rather slow (though nowhere near the beast that Emacs has become, a story for another time).

    +

    For ease of use and welcoming less experienced users we follow the same path as FreeBSD by offering the ee editor. It's extremely small (the entire source is a single c file) and has great ease of use due to the integrated menu bar. It isn't an especially powerful editor, but it gets the job done.

    +

    As for vim, I decided a while back that it was going to be replaced with something more lightweight and with a more "correct" code base. I tried a few times to port nvi to HitchHiker, both from the "official" nvi source distribution and also from BSD sources. The main stumbling block has been that the code assumes headers and C library routines which no longer exist in Linux.

    +

    For the solution, let's back up again by a few years. AT&T Unix is the direct ancestor to Solaris. A number of years ago Sun bequeathed the source code for the Solaris operating system to the public in the form of a CDDL licensed source distribution, giving birth to the OpenSolaris operating system in it's many forms, allowing FreeBSD to import the zfs filesystem, and effectively unencumbering historical Unix source code to the benefit of all.

    +

    Therefore, after a few days tinkering, we now have version 3.7 of Bill Joy's original ex/vi editor, which is the version that was current as of the 4.4BSDlite release, ported to and running on HitchHiker Linux. This has been a very gratifying experience overall. Some (probably many if I'm being honest) will miss certain features that they have grown used to in vim, such as syntax highlighting and visual mode. There is no plugin system (which I've never bothered to use in vim anyway...) and you're basically expected to know what you're doing. But the program is SMALL (roughly half the size of nvi, with no dependency on BDB, and orders of magnitude smaller than vim) and noticeably faster than vim when loading large files or pasting large chunks of text. You probably thought vim was fast. But you only -thought- it was fast.

    +

    You are, of course, free to install and use vim if you feel that original vi is too "limiting" for your use. Feel free to use ed for that matter, and to yell out that you're using "THE STANDARD EDITOR" while doing so. We imported ed from FreeBSD a week ago.

    +

    In other news, GNU libc (glibc) released version 2.32 this week. I'm running it already on my Arch systems but for the time being holding off on updating HitchHiker. There were a few notable deprecations in this release for functions, macros, and even a few array definitions that are considered too ancient to support. However, they actually do affect HitchHiker in a few places as we have some rather "historical" code imported into the userland tools. I spent an hour this morning fixing compilation errors when compiling mksh and ex/vi against the new library, in preparation for eventually merging it in. I'll have to check all of the other imported sources against it another day.

    +

    Interestingly, I also had to start using clang to compile these tools in Arch, as the gcc 10 series encountered an "internal compiler error", which was actually a segmentation fault, when compiling the ex/vi sources. In HitchHiker we use gcc-9.30 and these problems don't exist. Good reason to not upgrade for the time being.

    + + +
    +

    Tags for this post:

    + + Porting + + Deprecation + + Glibc + + Libraries + + NonGNU + + 4.4BSDlite + + Editors + + + +
    +
    +
    +
    + + + + + diff --git a/public/news/experimental-clangllvm-based-build-with-nightly-rust/index.html b/public/news/experimental-clangllvm-based-build-with-nightly-rust/index.html new file mode 100644 index 0000000..eb80d44 --- /dev/null +++ b/public/news/experimental-clangllvm-based-build-with-nightly-rust/index.html @@ -0,0 +1,463 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Experimental clang/llvm based build with nightly rust

    +

    2020-11-24

    +

    Ok, so this little side track has been on a slow burn for a while now, but I've currently got a rootfs that I can chroot into with the following features:

    +
      +
    • Built almost entirely with llvm/clang (see caveats below)
    • +
    • Rust nightly compiler installed early in the build, accessible for all users
    • +
    + +
      +
    • Directory hierarchy flattened, directories in /usr are symlinks to directories in /
    • +
    • libc++ standard C++ library from the llvm project instead of libstdc++ from gcc
    • +
    • Both GNU binutils and the lld linker installed (default is still binutils ld for now)
    • +
    • x86_64 only at this time, but should be portable to Arm +Some caveats:
    • +
    • llvm/clang wants to build against libstdc++, so not self hosting unless we go back to libstdc++
    • +
    • There were issues building the compiler-rt module, so llvm and clang link against libgcc
    • +
    • The GNU m4 package will not build with clang, so it had to be built with the gcc compiler from the temporary toolchain. I'm sure this is fixable, but I haven't researched it much yet.
    • +
    • The biggie: glibc refuses to try to build with any compiler except gcc. The. Sheer. Fucking. Hubris. ...again... +Nevertheless, this is all quite promising and brings up a number of possibilities going forward. As llvm by default supports multiple backends for code generation, a huge benefit is that HitchHiker would come out of the box with cross compilation ability. Also, including rust by default gives us the ability to use Rust code in the base system, with numerous potential benefits that I will explain below.
    • +
    +

    The directory hierarchy is simple to understand, but is reversed in implementation from what the "big" distros have done. Basically most "modern" distros have ditched the /usr split by making /bin and /lib into symlinks to /usr/bin and /usr/lib. In this build we instead just give all programs a blank install prefix. Our root directory now takes not only all of our binaries and libraries but also has program data under /share, and we only have /usr because it is expected. everything in /usr is, in fact, just symlinks.

    +

    Rust is installed in a novel way using rustup. As root, we set the RUSTUP_HOME and CARGO_HOME environment variables to /rust, and make /rust/bin a symlink to /bin. That way, we can track a nightly toolchain system-wide and it will install binaries into /bin, for all users to access. We could, of course, build rustc from source, and I have in fact done so previously. However, apart from the ridiculous compilation time that it takes, this is not a great option until the language is truly stable, as a lot of the interesting bits if the Rust ecosystem need something newer than the stable branch. By using rustup and the binary toolchains, we always have access to the most up to date toolchain, and the ability to easily switch from one to another.

    +

    So what are the benefits of having rust available early on? For starters Rust can access C functions and export functions to C, making it relatively easy to replace parts of the software stack previously written in C with Rust code that enjoys the memory and concurrency safety checks which are not present in C. As an example, relibc is a complete C standard library written in Rust. This alternative C library is a potential future path of investigation. But on a smaller scale, there are a number of interesting cli utilities and programs written in Rust.

    +
      +
    • sd is a stream editor similar to sed, but much faster and with a much easier syntax and reduced scope.
    • +
    • fd is a file finding utility which is orders of magnitude faster than find, and has interesting features like skipping .git folders by default.
    • +
    • exa is a file lister with some unique features over ls
    • +
    • The amp editor, while somewhat vi-like, has interesting extra features fuzzy file finder and a token based jump which make moving around even faster than vim. +I have also begun, partially as a learning exercise, writing my own Rust implementations of various small Unix utilities. In the future some may find their way into HitchHiker if we retain Rust in the base system.
    • +
    +

    While this is still in an early evaluation phase, I think it likely that at the very least we will make the switch from gcc to clang/llvm at some future point, with the possibility of bringing some of the other features along as well. What may not make the cut is libstdc++, as replacing the C++ standard library is almost as problematic as replacing the C standard library, leading to the need to port a large amount of third party software in the future. However, I will likely be going further with Rust, and with the flattened filesystem, as I want HItchHiker to be a cutting edge distro while still adhering to traditional Unix practices. Basically, we're going to push the envelope when it makes sense to do so, but not follow fads and trends in the Linux community that might very well be dead ends (like I believe Systemd in particular to be).

    + + +
    +

    Tags for this post:

    + + C Programming + + Rust + + llvm + + Clang + + NonGNU + + Packages + + + +
    +
    +
    +
    + + + + + diff --git a/public/news/goodbye-gnu-coreutils-importing-sed/index.html b/public/news/goodbye-gnu-coreutils-importing-sed/index.html new file mode 100644 index 0000000..6d06d09 --- /dev/null +++ b/public/news/goodbye-gnu-coreutils-importing-sed/index.html @@ -0,0 +1,470 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Goodbye GNU coreutils, importing sed

    +

    2020-09-22

    +

    The porting effort has reached the point where it is now safe to remove GNU +coreutils. At this point, there are now only 16 utilities provided by the +coreutils package that are not implemented in another way in HitchHiker, and none of the missing +utilities are dealbreakers. As follows, here is what is missing and why it isn't +a problem, or what the roadmap is for replacement.

    +
      +
    • b2sum - computes BLAKE2 checksums - there are quite a number of checksum utilities already, and this one is currently not a dealbreaker. If a reason for replacement is discovered it will be implemented from scratch in c.
    • +
    • base32 - encodes file or stdin using base32 - we already have base64 imported from OpenBSD.
    • +
    • basenc - encodes file or stdin using various algorithms - see base32.
    • +
    • chcon - changes SELinux security context - SELinux is a largely Fedora/RedHat backed API which we don't implement currently in HitchHiker. Standard Unix file permissions are not fine-grained enough for just about any use case.
    • +
    • dir - displays directory contents - despite what GNU say about dir, it is basically ls but with a different default behavior. The same behavior can be emulated by using the appropriate flags with ls.
    • +
    • dircolors - sets the colors for eg ls --color - We have BSD ls in HitchHiker, which does not implement the --color option. I have considered re-implementing ls and including the --color option, in which case dircolors would be useful. However, this is non-trivial and no timeframe is given.
    • +
    • hostid - displays the unique numeric id for the current host - not currently a dealbreaker, but potentially useful. Fairly trivial to implement in C.
    • +
    • nproc - gets the number of processors currently available - also potentially useful and fairly trivial to implement in C.
    • +
    • numfmt - format numbers in human-readable form - potentially useful, not a dealbreaker. Non-POSIX utility which accepts mostly GNU style long options. If implemented would be done in a different way, ignoring the behavior of the GNU utility, which is frankly too GNU-centric (long options should have short option equivalents).
    • +
    • pinky - a mini finger implementation - all information available via pinky can be optained with other included utilities. If there is a need for accessing information on remote hosts an actual finger implementation is required anyway.
    • +
    • ptx - honestly the manpage for this utility reads like gibberish. Anyway I've never used it and don't think it's needed, not available on BSD systems anyway and not POSIX.
    • +
    • runcon - run a command with a different SELinux security context - see chcon.
    • +
    • shuf - shuffles file contents randomly - not particularly useful.
    • +
    • stdbuf - run command with modified IO buffering - exists in FreeBSD but not NetBSD or OpenBSD. Non-POSIX. Potentially useful, not considered a priority. Porting from FreeBSD is non-trivial if memory serves from my 1st attempt.
    • +
    • timeout - run a command with a time limit - Not available on BSD systems, Non-POSIX. Potentially useful but not a priority.
    • +
    • vdir - another permutation of ls (see dir) - again just use ls, why have another binary?
    • +
    +

    None of the missing utilities are POSIX specified and are not likely to be called from any kind of portable shell script. With the exception of stdbuf, I could not find alternative implementations for any of the missing utilities. This was a long process fraught with a fair bit of trial and error, and continual testing to ensure that the system could still bootstrap iself as utilities were replaced a few at a time. My first tries removing the coreutils package entirely resulted in various failures, as either a utility had incompatible behavior with one or more packages build systems, or a missing utility was actually required.

    +

    A good example of a surprise was with the 'od' utility, which creates an 'octal dump' of file contents. I did not assume this to be a utility that would see much use. However, the build system for busybox assumes it's existence and fails without it. On looking for a replacement I turned to the Heirloom Toolchest, a collection of utilities derived from ancient Unix sources released by Caldera and Sun. This utility has the dubious distinction of influencing one of the more glaring inconsistencies in bourne shell syntax. For most control flow structures in sh, the closing keyword is the opening keyword reversed, IE if-else-fi or case-esac. However, od was already in existence before the original bourne shell was written, precluding the use of do-od for looping and giving history instead do-done.

    +

    While in there poking around in the heirloom sources I also ported over pg (an early pager), sum (yet another checksum utility) and factor (prints all prime factors of the given number). The sources have been variously tweaked to be more inline with my own coding style, making future maintenance easier. All but pg were commands which are present in coreutils, giving us greater coverage.

    +

    During the porting effort, there were various utilities which were either not present in BSD, sbase or heirloom or else so trivial as to pose no barrier to implementing them from scratch. Here is that list.

    +
      +
    • /bin/true - just return true and exit - implemented as a single line shell script.
    • +
    • /bin/false - the reverse of true.
    • +
    • /sbin/nologin - used for disabled logins, displays a message that the account is disabled and exits with a failure code - implemented in C.
    • +
    • /usr/bin/link - creates hard links - implemented in C.
    • +
    • /usr/bin/unlink - calls the unlink function to remove files - implemented in C.
    • +
    • /usr/bin/shred
    • +
    +

    The shred utility was a special case, as it existed only in GNU coreutils until my own implementation. I've always thought that this was a tremendously useful utility and wanted it in HitchHiker. What it does is overwrites the given file with random data to make recovery exceedingly difficult, optionally doing a final pass with zeros and unlinking the file. It can be used on an entire block device to wipe a hard drive clean. I've been working on dogfooding myself in C lately and this was a good opportunity to code something a little but less trivial. Anyway, this version of the shred command is implemented cleanly from scratch but follows fairly closely the behavior of the GNU version. It differs in not accepting long options, much like the rest of our collection of utilities, and does not implement a few switches that are considered unnecessary in use. At some point I intend to go in and implement file-renaming before deletion, akin to the GNU versions "wipesync" method, but the program is otherwise feature complete. In order to give myself another challenge, I also implemented a progressbar that is displayed with the -v option.

    +

    On to sed

    +

    I have tried in vain to get away from using GNU sed in HitchHiker. After porting BSD sed, sbase sed and GNU minised, all of them proved unsuitable and caused build failures at some point or another. Or rather, non-portable sed usage by the authors of the various build systems caused failure when our sed did not support the input that it was given. The final deal-breaker was the Linux kernel itself, which requires sed to understand some GNU specific regular expressions during the build.

    +

    What I have done is import the GNU sed source code directly into the HitchHiker source tree and made it work with our build system. This is only the second GNU licensed program I have done so with (the first being less) and only the third time that I have successfully stripped a program of it's autotooled build system. It was, to say the least, not trivial. However, the results are rather impressive, as on my 8-core laptop sed now builds in 3.22 seconds, compared with 31.75 seconds for the autotooled build. I'll take a 10x speed increase any day, and it's a great example of how much there is to gain by just using make compared with an autotools build. Indeed, for a smaller program like sed, most of the time is taken by the configure script, and by installing files after compilation. With our "compile in place" method we're skipping entirely the installation phase.

    +

    As GNU sed is fully localized into multiple languages, I took the time to extend the build infrastructure with hhl.locale.mk, which takes any .po files in a program's locale subdirectory (if they exist) and "compiles" them into .mo files in /usr/share/locale using the msgfmt utility. With that in place the infrastructure for building directly from source, rather than just wrapping another build system in make, is pretty much complete, even if there are still things to optimise.

    + + +
    +

    Tags for this post:

    + + Milestones + + Porting + + NonGNU + + Utilities + + + +
    +
    +
    +
    + + + + + diff --git a/public/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/index.html b/public/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/index.html new file mode 100644 index 0000000..564da91 --- /dev/null +++ b/public/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/index.html @@ -0,0 +1,465 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Imported source, pkgsrc on Arm woes, and make includes

    +

    2020-08-01

    +

    I think we'll start this post discussing some of the differences and misconceptions of same between BSD make and GNU make. In the case of BSD make we're primarily referring to NetBSD make, which is a greatly improved version of the historical Unix make utility, and has also been imported into FreeBSD. Among the BSD camp, GNU make is seen as a second citizen. Their version of make is leveraged for building the entire system, without using autotools except in the case of imported external source which has been autotooled by it's authors. It is also the utility that wraps all of the functionality of FreeBSD ports and NetBSD pkgsrc - downloading, patching, compiling and packaging third party software. The complete infrastructure is quite impressive.

    +

    Much of this functionality lies in leveraging included Makefiles, much in the way that C headers can be included to pull in function definitions, and also similar to the concept of shared libraries. These included .mk files, usually located in /usr/share/mk on a BSD system, allow for extremely concise Makefiles throughout the source tree to just specify a few variables and then pull in all of the targets from an inclued file. The most prominent are probably bsd.prog.mk and bsd.lib.mk, which tell make how to build C programs and C libraries respectively.

    +

    It is a common misconception that this functionality only exists in BSD make. GNU make does have this capability as well and I leverage it quite heavily in HitchHiker. Admittedly, it is more developed in BSD make, but the limitations of GNU make in comparison are fairly trivial and easy to work around. One of the sillier things is the default search path that GNU make uses the look for included Makefiles. By default this path starts in the current directory and proceeds through /usr/local/include, /usr/include and finally /usr/gnu/include. Leveraging this would sprinkle .mk files through what are by convention the location of C header files, or alternatively using /usr/gnu/include. I have yet to see a system that has a /usr/gnu directory (maybe it was planned for Hurd?) and I'm not keen on it. As of the last commit, HitchHiker now patches make to no longer search /usr/gnu/include and to now search instead /usr/local/include/mk and /usr/include/mk, the latter being our new default directory. This allows us to include a .mk file by name, without specifying a full or relative path, and at the same time keeps all of our .mk files separated from the system C headers.

    +

    So what exactly does BSD make have over GNU make?

    +
      +
    • Slightly more powerful conditionals. In addition to ifdef, ifndef, ifeq and ifneq BSD make also has a simple if, and allows chaining conditionals with the && and || operators much like shell syntax. By comparison GNU make must nest conditionals for similar functionality.
    • +
    • Included Makefiles can be relative to the install or source prefix. This is quite powerful for building large projects in custom site locations.
    • +
    • Possibly others I have not discovered yet, however in practice GNU make can do -everything- that BSD make does if you take the time to learn how to use it.
    • +
    +

    As part of creating a more integrated build framework, my most recent commit contains a basic analog for bsd.prog.mk, hhl.cprog.mk (cprog due to my not assuming that all programs are written in C!) which now allows extremely concise Makefiles for source code that has been imported into the base system. In the case of rpcgen the following Makefile is all that is needed:

    +
    +# Makefile - hhl - /usr/src/world/rpcgen
    +# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>
    +#
    +progname = rpcgen
    +cflags += -g
    +include hhl.cprog.mk
    +
    +

    As can be seen, there are really only three lines. Lines 1-3 are comments, line 4 specifies the program name, line 5 adds -g to the compiler flags, and line 6 includes hhl.cprog.mk. If you look inside the rpcgen subdirectory of the build tree you will see the following structure:

    +
    +.
    +  ├── Makefile
    +  ├── man
    +  │   └── rpcgen.1
    +  ├── README
    +  └── src
    +    ├── config.h
    +    ├── proto.h
    +    ├── rpc_clntout.c
    +    ├──***snip
    +
    +

    Our included Makefile will generate object files for any .c files in the src/ subdirectory, link those objects into an executable and install man/rpcgen.1 in ${install_prefix}/share/man/man1. It has logic to differentiate man1 from man8 and also installs html and text docs in the doc/ subdirectory. If we needed to specify additional cppflags, cflags, ldflags or libs to link with we would just append them to those vars (by convention I use lower case so as to not interfere with any CFLAGS etc. specified on the command line or in an external build system). If we want to create links to our executable they just need to be specified in the binlinks variable. Defining the variable finish and writing a finish target allows us to do anything else additional that might need done, like installing configuration files or runtime data. In short, while being a fairly tidy 102 lines (some of which is whitespace and comments) hhl.cprog.mk successfully works as an analog for bsd.prog.mk.

    +

    The short list of programs leveraging this framework now include the ee text editor, rpcgen, mksh and lksh shells and the pax archive/copy/link utility. At some later date the source tree will be reorganized to move these directories into bin or usr.bin much like is done in the BSD source trees, as well as importing other sources directly into the tree and "HitchHikerizing" their build systems.

    +

    The title promised some pkgsrc updates relating to arm challenges. In a nutshell pkgsrc seems to be broken in several places for arm on Linux. Perhaps most annoyingly is the buildlink system, which is supposed to make it simpler for packages to find the libs that they are to link against by moving everything into work/.buildlink/lib (relative to the subdirectory that bmake was run from). So far I've discovered that libuuid, libexpat, libstdc++, libacl and libattr libtool archives are skipped every time on arm for reasons that I have not yet discovered. I can work around it by manually linking the .la files in from /usr/lib, but this requires an annoying level of manual intervention. Nevertheless I have managed to build the full LXDE, XFCE and Mate desktops, several shells, emacs, nano and pico editors, Inkscape and am on to building Gimp presently on my RPI. On x86_64 I have all of that plus a fairly complete server stack, Abiword, Gnumeric and the Firefox browser built.

    +

    In short, when q3 releases (and it really is coming soon) there will be a fairly comprehensive selection of software available on both architectures via pkgsrc. However, in the long run we're going to revisit the idea of creating our own ports tree which leverages GNU make and the infrastructure of .mk files that now reside in /usr/include/mk, adding funcionality for creating binary package tarballs and downloading and installing them. This will most likely involve a simple homebrewed package format that takes some inspiration from BSD tarballs, Slackware tarballs and Arch Linux tarballs. A sneak peak in the current build tree at how we register the installation of the base system will give you an idea. We're going to keep things purposely simple and avoid writing a full fledged package manager. More details to come.

    + + +
    +

    Tags for this post:

    + + Arm + + GNU Make + + Pkgsrc + + Porting + + + +
    +
    +
    +
    + + + + + diff --git a/public/news/improved-porting-with-libbsd/index.html b/public/news/improved-porting-with-libbsd/index.html new file mode 100644 index 0000000..22e6ef5 --- /dev/null +++ b/public/news/improved-porting-with-libbsd/index.html @@ -0,0 +1,436 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Improved porting with libbsd

    +

    2020-08-24

    +

    The libbsd project was begun originally by the developers of the Debian K-FreeBSD project as a means of addressing differences in the available functions, headers and c macros between BSD libc and GNU libc. I have imported the source directly into HitchHiker and "hitchhikerized" the build process. Only the static library archives are built at this time. With a few tweaks and an additional "compat.h" header to address a few omissions, this has led to an improvement in my process of porting BSD utilities, and the vast majority of the imported utilities now link with libbsd functions. There is little measurable overhead in the resulting binaries.

    +

    For those utilities that are more difficult to port I have begun porting the work already done to create lobase, a portable package of OpenBSD userland, to the hitchhiker build system. I am also pulling in sources from FreeBSD now. The first program ported from FreeBSD to HHL is the ed editor, which in this case was easier to get going than the version from the NetBSD sources.

    +

    I have always enjoyed the venerable Unix fortune program, and always include a call to it in my shell profile. While I did consider the idea of including it by default in the HitchHiker base system, I decided to go another route and just implement something simpler from scratch. Hence, the small C program 42, which by just prints a random quote from the HitchHiker's guide universe. It accepts no options and can only be extended by editing the source. Just a bit of fun. +screenshot_42.png

    + + +
    +

    Tags for this post:

    + + Porting + + Roadmap + + Libraries + + NonGNU + + C programming + + + +
    +
    +
    +
    + + + + + diff --git a/public/news/index.html b/public/news/index.html new file mode 100644 index 0000000..1a26049 --- /dev/null +++ b/public/news/index.html @@ -0,0 +1,603 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +
    +
    +

    Recent posts

    +
      + +
      + + Website Redesign + +
      2021-02-18
      + +

      I know a little bit about a lot of things, and one of the things that I know +only in passing is web development....

      + + Read More -> +
      + +
      + + Cross Build Progress + +
      2021-02-08
      + +

      The sysroot/cross-compile build tree is nearly able to build all of HitchHiker +now, with only a few packages left to tweak....

      + + Read More -> +
      + +
      + + Reconfiguring the build process + +
      2021-02-01
      + +

      Up until now HitchHiker has used a build process that closely followed that used +by the Linux From Scratch book. There was a temporary toolchain, hacked to use a +different library directory and prefix...

      + + Read More -> +
      + +
      + + Compiling for aarch64/riscv64 from qemu user mode chroot + +
      2021-01-28
      + +

      This is a novel approach that I've been experimenting with lately, to do some +legwork towards supporting architectures for which I either don't have physical +hardware or else the hardware is limited in capability so much as to make native +compilation impractical....

      + + Read More -> +
      + +
      + + Experimental clang/llvm based build with nightly rust + +
      2020-11-24
      + +

      Ok, so this little side track has been on a slow burn for a while now, but I've currently got a rootfs that I can chroot into with the following features:

      +
        +
      • Built almost entirely with llvm/clang (see caveats below)
      • +
      • Rust nightly compiler installed early in the build, accessible for all users
      • +
      +...

      + + Read More -> +
      + +
    +
    +

    Tags:

    + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + + + + + +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/public/news/more-pkgsrc/index.html b/public/news/more-pkgsrc/index.html new file mode 100644 index 0000000..bb66cc8 --- /dev/null +++ b/public/news/more-pkgsrc/index.html @@ -0,0 +1,442 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    More Pkgsrc

    +

    2020-07-14

    +

    While attempting to build the Thunar file manager (via pkgsrc) I encountered a +couple of other errors when it pulled in Samba4 as a dependency. Samba4 has +switched from using GNU autotools to it's own internal version of waf, a Python +based tool for configuring software. Waf takes most options that one +might pass to a GNU configure script. The difference is that an autotools +configure script will generally either ignore an option that it doesn't recognize +or else complain about it but still continue running. In the case of waf, an +unknown option causes an error, which aborts the build. In the case of samba4 +this was --gmp-include.

    +

    About an hour later after failing to find where that option was being included from, in desperation I just did a grep through every Makefile in pkgsrc for "gmp-include" and found a few candidates. After temporarily commenting out the CONFIGURE_ARGS+= lines in devel/gmp/builtin.mk the samba4 build was up and running again. Note that I'm still unsure where it's getting pulled in, as I traced the Makefile includes through a few levels before giving up.

    +

    So, samba4 was building, then it wasn't again. This time the build failed due to the lack of the rpcgen utility, which is included in NetBSD (and indeed FreeBSD and OpenBSD and pretty much every BSD variant) but not in Linux. Linux has libtirpc and rpcgen is widely considered obsolete, and in fact was abandoned by it's chief developers, Sun, some time ago. However since we're building using pkgsrc it's assumed to be on our system. What's more frustrating is that there is no package for it in pkgsrc. This has already been noted on the mailing list as it causes more than one package build failure on Linux.

    +

    As it looks like going with pkgsrc is going to expect us to have rpcgen in several places, I set about trying to find a portable version of the source code. This turned out to be quite more of a chore than expected, but I did find an older version that had been pulled into a more or less portable state. I've imported that source into the HitchHiker build tree and rewrote the Makefile to suit our purposes. After adding it to our system and restarting the samba4 build (with "--gmp-include" still temporarily excised) samba4 builds successfully, and Thunar was able to build successfully as well.

    +

    This whole exercise is a good illustration of the challenges in making any software project truly portable, and why a more efficient build can be achieved by ignoring other systems and targeting the build only to the system actually in use. It's why I've imported the sources for ee, mksh and now rpcgen directly into the source tree and we're building them without any configure checks, as it's already known exactly what's on our running system.

    +

    Another thing this illustrates is some of the problems that arise due to projects switching their build system to one of the dozens of projects that have sprung up to "replace" GNU autotools. The fact is that very few, if any, of the replacements have achieved anything close to the flexibility and maturity of autotools and most probably never will. I'm not a fan of autotools by any means. It's a quagmire that most people don't understand; a lot of devs simply cut and paste from other projects and hope for the best. The Makefiles it generates are of a complexity and length that are ridiculous. However, the fragmentation that is currently occuring as some projects use cmake, waf, ninja, meson, jigdo, scons or whatever the next kid on the block is named is a true nightmare for anyone trying to build and maintain a full distro. That's not even accounting for the various homebrewed shell scripts that I encounter which have varying levels of POSIX compliance and make their own assumptions about the utilities present on your system.

    + + +
    +

    Tags for this post:

    + + NonGNU + + Packages + + Pkgsrc + + + +
    +
    +
    +
    + + + + + diff --git a/public/news/on-libc-rust-experiments-and-risc-v/index.html b/public/news/on-libc-rust-experiments-and-risc-v/index.html new file mode 100644 index 0000000..51fc490 --- /dev/null +++ b/public/news/on-libc-rust-experiments-and-risc-v/index.html @@ -0,0 +1,461 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    On Libc, rust experiments, and Risc-V

    +

    2020-11-15

    +

    LibC

    +

    Recently I have continued the exercise of re-implementing certain base system utilities in C, uncovering more and more differences between BSD and GNU libc implementations. At this point it's really easy to say that I have a strong preference for the BSD extensions to the libc standard as opposed to the GNU extensions. The Berkeley programmers, when they added features, added truly useful features.

    +

    Take random number generation as an example. It is fairly common when programming on Linux to open and read from /dev/urandom. BSD, in the meantime, offers a group of functions in libc (arc4random) that combine pseudo-random number generation with cryptography to produce pseudo-random data that is truly difficult to guess, with a low CPU overhead.

    +

    Another small place where I found the BSD libc to offer superior functionality was when I was writing my own version of the mktemp utility. The BSD versions of the mkstemp and mkdtemp functions allow one to give a template with a variable-length suffix, to give a choice between quick (with a smaller suffix) or as secure as you want to be. By increasing the suffix length, one can exponentially increase the number of possible filenames, making temp files a more difficult vector of attack.

    +

    The GNU (and musl actually) versions of these functions only allow a six character random suffix, period. In fact, my earlier port of mktemp from BSD did not function as expected in this regard, and the GNU coreutils programmers had to roll their own functions to get equivalent functionality to the BSD counterparts. I have elected to not abstract this deficiency away in my code, and the HHL version of the mktemp utility uses the available versions of mkstemp and mkdtemp, with a six character suffix. I would rather maintain the simplicity of the program than to take a risk of introducing bugs by writing my own functions here.

    +

    In any event, the work that I have been doing here makes a strong case for a future port of musl, with the additions of some BSD functions ported to work with musl, as our base C library. As attractive as BSD libc is, a direct port is unrealistic as so much of it is tied to kernel interfaces that differ on Linux. I just find it a shame that Linux users are mostly saddled with such a piece of crap (bloated while still being less functional) in such an important position in the software stack.

    +

    Rust

    +

    There are a lot of programming languages, and they tend to come and go regularly. As programming languages go, it's a safe bet that C, C++, Java and Python will be sticking around. Of the less pervasive languages Go and Rust seem to be well ahead of the pack as pertaining to mass adoption. Go is interesting, largely because of what it leaves out. Go is simple. Go avoids the feature creep that seems to be inevitable in all modern software. However, Go achieves memory safety by using garbage collection. I want to like Go, but that one anti-feature prevents me from even trying it.

    +

    Rust, on the other hand, has feature upon feature to the point where I really am hoping that they ever finish the language someday. That said, I'm intrigued by Rust for a number of reasons. I have been toying with learning the language for a while, doing some simple learning exercises and reading the Rust Book. I recently decided to just dive in and start writing my own programs using Rust, as that seems to be the only way to truly learn a language. My first full Rust program is a clone of a C program that I wrote for generating sine lookup tables, useful in DSP applications. The C version is perfectly fine, but I basically wanted to try porting a known working program and see how well the control flow translated.

    +

    The process was not completely smooth, and it took quite a few iterations to get to the point where the program compiled and actually functioned. However, the documentation is excellent and provided solutions to most of my issues. The other thing that really impressed me was the compiler messages. Often, the compiler will tell you literally the exact change needed to make your program compile. Coming from C, this is a breath of fresh air. And when we're talking about Rust, chances are that if it compiles it's also going to function exactly as expected.

    +

    Rust is also elegant in a way that C never will be. Consider the following C code:

    +
    +for ( i = 0; i < 10, i++) {
    +  // some code
    +}
    +
    +

    And the equivalent Rust:

    +
    +for i in 1..10 {
    +  // some code
    +}
    +
    +

    One thing that requires a different mindset when one moves from an old-school language like C, to a modern language like Rust, is that in C et al, the standard library tries to be all inclusive. Programmers (at least the good ones) try to avoid adding dependencies to anything other than the standard library. Rust, however, has Cargo. Cargo is, in effect, a built in package manager. This is not unheard of; Python has pip and has for years. In Rust, however, the standard library is quite small and everyone pretty much freely uses cargo to access functionality that is not included in libstd. In my case I used cargo to pull in the excellent clap crate, which parses command line arguments and also provides built in documentation. Compared to getopt in C, clap both does more and does it with little effort.

    +

    At this point int time, however, Rust is not going to be landing in the HitchHiker base system, as the only viable Rust compiler uses llvm as a backend. At some point in the future this may well change anyway, as I have been growing increasingly frustrated with both Glibc and gcc (a brief skim of some earlier blog posts will quickly turn up examples). The obvious replacements are musl and the clang compiler, which, being based on llvm, would make the further inclusion of rustc trivial.

    +

    Risc-V

    +

    I do a fair amount of electronics experimenting and often employ various microcontrollers in my projects. Some are Atmega based, while I have more recently fallen in love with the ATSAMD51 Arm Cortex M4 processor based boards from Adafruit. Just this week I have acquired something new to me: a Risc-V based MCU from Seeed Studio, the Sipeed Longan Nano. It's a brilliant chip, although quite lacking in documentation and example code. I'll be playing with it a lot.

    +

    The Nano, however, is a microcontroller, not a full SOC that is capable of running Linux. Right now there are few options for developers wanting to experiment with Risc-V with a full operating system, and the best ones are all prohibitively expensive for their capability. Due out next year, however, is the PicoRio board from Rios labs that is described as close in form factor and capabilities to most Arm boards based around the RPI format. Provided this board is not vaporware and actually does materialize at a reasonable cost, I intend for HItchHiker Linux to be running on it as soon as feasible. I intend to make HitchHiker one of the very first options independent of distros such as Debian and Fedora, and to make Risc-V a first class citizen. It is my hope that in doing so HitchHiker might help to push along the adoption of truly open hardware on which to run open software.

    + + +
    +

    Tags for this post:

    + + C programming + + Rust + + NonGNU + + RiscV + + Glibc + + Utilities + + + +
    +
    +
    +
    + + + + + diff --git a/public/news/page/1/index.html b/public/news/page/1/index.html new file mode 100644 index 0000000..35835d8 --- /dev/null +++ b/public/news/page/1/index.html @@ -0,0 +1,6 @@ + + + + +Redirect +

    Click here to be redirected.

    diff --git a/public/news/page/2/index.html b/public/news/page/2/index.html new file mode 100644 index 0000000..6f75d3c --- /dev/null +++ b/public/news/page/2/index.html @@ -0,0 +1,608 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +
    +
    +

    Recent posts

    +
      + + + +
      + + Some More Home Cooking + +
      2020-10-06
      + +

      After removing GNU coreutils and taking closer stock of what we have as a +"base system", I am mostly happy with the selection but now wish to spend some +time making behaviors, documentation and source code itself more uniform. I have +also done some work towards correcting a couple of omissions that are present +due to the previous surgury. The commit that I pushed this morning has a few +notable changes....

      + + Read More -> +
      + +
      + + Goodbye GNU coreutils, importing sed + +
      2020-09-22
      + +

      The porting effort has reached the point where it is now safe to remove GNU +coreutils. At this point, there are now only 16 utilities provided by the +coreutils package...

      + + Read More -> +
      + +
      + + Continued porting of BSD userland against remaining self-hosting + +
      2020-09-03
      + +

      At this juncture we're well over the halfway point in regards to providing a predominately BSD userland in HitchHiker, with over 90 console utilities ported against a total of 59 remaining programs brought in from GNU coreutils. That total includes...

      + + Read More -> +
      + +
      + + Editors, glibc-2.32 + +
      2020-08-28
      + +

      Most people who use any form of Unix have a favorite editor. Most of them also think that everyone else is wrong...

      + + Read More -> +
      + +
    +
    +

    Tags:

    + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + + + + + + + + +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/public/news/page/3/index.html b/public/news/page/3/index.html new file mode 100644 index 0000000..a8460c6 --- /dev/null +++ b/public/news/page/3/index.html @@ -0,0 +1,606 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +
    +
    +

    Recent posts

    +
      + +
      + + Improved porting with libbsd + +
      2020-08-24
      + +

      The libbsd project was begun originally by the developers of the Debian K-FreeBSD project as a means of addressing differences in the available functions, headers and c macros between BSD libc and GNU libc. I have imported the source...

      + + Read More -> +
      + +
      + + Porting NetBSD userland, infrastructure improvements + +
      2020-08-17
      + +

      As noted previously, I have some issues with the complexity of GNU autotools and the bloat that it introduces into building what should be very simple programs. I pointed out coreutils as one of the worst offenders at that time, and have been exploring ways to either port coreutils to a simpler build system or outright replace the package....

      + + Read More -> +
      + +
      + + Restarting make, buildworld cleanup, default software + +
      2020-08-03
      + +

      One of the deficiencies in the HitchHiker build tree up to this point has been dealing with packages that require some manual intervention after the "make install" step. Originally there was no unified infrastructure to deal with this scenario. Very quickly...

      + + Read More -> +
      + +
      + + Imported source, pkgsrc on Arm woes, and make includes + +
      2020-08-01
      + +

      I think we'll start this post discussing some of the differences and misconceptions of same between BSD make and GNU make. In the case of BSD make we're primarily referring to NetBSD make, which is a greatly improved version of the historical Unix make...

      + + Read More -> +
      + +
      + + Patching pkgsrc, building rust and Arm headaches + +
      2020-07-20
      + +

      Having been working with pkgsrc for a couple weeks now there's a bit of a flow +developing, and quite a bit of progress, with a big caveat. The issues I'm +running into are that there are quite a few more build failures for Arm than +there are for x86_64....

      + + Read More -> +
      + +
    +
    +

    Tags:

    + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + + + + + + + + +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/public/news/page/4/index.html b/public/news/page/4/index.html new file mode 100644 index 0000000..9180d15 --- /dev/null +++ b/public/news/page/4/index.html @@ -0,0 +1,550 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +
    +
    +

    Recent posts

    +
      + +
      + + More Pkgsrc + +
      2020-07-14
      + +

      While attempting to build the Thunar file manager (via pkgsrc) I encountered a +couple of other errors when it pulled in Samba4 as a dependency. Samba4 has +switched from using GNU autotools to it's own internal version of waf, a Python +based tool for configuring software....

      + + Read More -> +
      + +
    +
    +

    Tags:

    + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + + + + + +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/public/news/patching-pkgsrc-building-rust-and-arm-headaches/index.html b/public/news/patching-pkgsrc-building-rust-and-arm-headaches/index.html new file mode 100644 index 0000000..acc673b --- /dev/null +++ b/public/news/patching-pkgsrc-building-rust-and-arm-headaches/index.html @@ -0,0 +1,463 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Patching pkgsrc, building rust and Arm headaches

    +

    2020-07-20

    +

    Having been working with pkgsrc for a couple weeks now there's a bit of a flow +developing, and quite a bit of progress, with a big caveat. The issues I'm +running into are that there are quite a few more build failures for Arm than +there are for x86_64.

    +

    Interestingly, both libdrm and MesaLib fail with similar messages about assembly +code that isn't supported on the current architecture (armv7l). In situations +like this it's hard to blame pkgsrc, as the fault is upstream from there. I'm +getting quite used to adding packages to my local tree and tweaking BSD style +Makefiles. I'm making every attempt to send fixes upstream; however, waiting for +a response each and every time is just not really going to be an option here, so +in the meantime I've decided to import the entirety of pkgsrc into git and use +that tree as the "official" branch for HitchHiker. This will enable our project +to build up a substantial package collection even if upsteam pkgsrc begins to +lag behind.

    +

    One of the problematic packages that is now often being pulled in as a dependency is rustc, the rust compiler. It's problematic on two fronts. First, unless your system has substantial amounts of memory a parallel build will fail as the memory fills up (mine has 8 gig and still fails). Second, and quite frustrating, is that rustc is only compatible with certain versions of either openssl or libressl, and our version of libressl was too new. After seeing if we could use either libressl or openssl from pkgsrc and encountering repeated failures, I just rolled back libressl to the newest version that rust supports.

    +

    Let me pause here for a brief commentary on rust as a programming language. There is a lot to like about rust, and it seems that the language may be with us for quite some time, as it seems to see more usage every day and has achieved a critical mass of developers. I've played around with it myself a little bit and the documentation is very good, it's probably one of the easier to learn languages, and the ecosystem as a whole is very nice when you look at all of the features that cargo brings to the table. However, I am not a fan of the fact that the rust standard library, libstd, is compiled in statically by default. This results in a simple "Hello, world!" executable compiling into a 7.1m binary on my machine before stripping, which comes down to 220k after stripping. When compiling the same program dynamically it comes all the way down to 16k after stripping, so we have approximately a 204k overhead per binary for the static libstd.

    +

    I am also not happy about rolling back libressl, as I would much rather have the newest possible version of what is a security critical piece of software. However, it is I believe still a better and more secure option than openssl, which most distros are still using. It's a shame that a major piece of software like rust, that is a dependency of quite a number of other packages now, has not updated to use the newer abi presented by newer versions of libressl.

    +

    After a couple weeks of building packages on both x86_64 and armv7l, using an identical set of packages in the base system, it is very apparent just how much more development x86_64 gets than arm. Two packages in particular illustrate this quite well - libdrm and MesaLib - both of which are major dependencies of modular Xorg. In both cases assembly code is generated by gcc that contains instructions not supported by the processor, and the only fix is to disable features in the Arm build. In the case of MesaLib this involves patching the source code. Thanks to the Arch Linux Arm team for showing the way, as my patches are adapted from their PKGBUILD.

    +

    There have been just a few more tweaks to the base system as I attempt to fully +finalize the build in preparation for release. The rpcgen utility that I had +incorporated proved to not fully support all features needed for building certain +packages in pkgsrc. After some search I found a newer version that had been +autotooled in the rpcsvc-proto package, which was originally a compatibility +package during the time that SunRPC was being removed from Glibc. I've imported +the source for just the rpcgen utility from that package into hitchhiker's build +tree, removed all of the autotools material, moved all C-preprocessor flags into +a config.h file, disabled NLS and made a very lean, mean Makefile for it. While +I was at it I used similar techniques to update the builds for mksh and pax. +Both of those packages now include their CPPFLAGS as defines in config.h, and I +have even begun eliminating ifdefs out of the C files to make for a cleaner and +faster build.

    + + +
    +

    Tags for this post:

    + + Arm + + Rust + + Systemd + + Libraries + + Pkgsrc + + + +
    +
    +
    +
    + + + + + diff --git a/public/news/porting-netbsd-userland-infrastructure-improvements/index.html b/public/news/porting-netbsd-userland-infrastructure-improvements/index.html new file mode 100644 index 0000000..ad3ff4e --- /dev/null +++ b/public/news/porting-netbsd-userland-infrastructure-improvements/index.html @@ -0,0 +1,446 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Porting NetBSD userland, infrastructure improvements

    +

    2020-08-17

    +

    As noted previously, I have some issues with the complexity of GNU autotools and the bloat that it introduces into building what should be very simple programs. I pointed out coreutils as one of the worst offenders at that time, and have been exploring ways to either port coreutils to a simpler build system or outright replace the package.

    +

    In context, there is nothing particularly wrong with the utilities themselves and functionally they work as expected. One benefit that coreutils provide over almost every other implementation is improved localization. However, there is complexity that is at times not really justified. Let's take the utility program "true" as an example, whose sole purpose is to do nothing and exit with success. A simple C program can be constructed to perform this function perfectly well with the following code:

    +
    +#include <stdio.h>
    +int main() { return 0; }
    +
    +

    This simple code compiles to a 16k executable (stripped) and does everything that we need it to do. But we can do even better actually, with a single line shell script:

    +
    +#!/bin/sh
    +exit 0
    +
    +

    This little gem reads as a whopping 4k on disk on my machine and also fulfills exactly what we expect the program to do. So why exactly is the file true.c in coreutils 80 lines that compiles to a 40k executable after stripping?

    +

    I had at one point tried replacing coreutils and util-linux completely with the sbase and ubase packages from suckless.org. The main issue with doing this is that not all of the utilities are feature complete yet. They are fine for day to day use navigating around in a shell environment, but begin to fail when running scripts that are meant to be portable or building software, when an unsupported flag causes the utility call to fail with an error. I do have a branch containing the entirety of sbase and ubase with the source reconfigured to match our build tree layout of one program per directory, and building using hhl.cprog.mk.

    +

    I have always had a lot of admiration for BSD systems and ran FreeBSD as my main OS on several machines for a number of years. Too much is actually made of the differences between a BSD userland nad a GNU userland, as the vast majority of the time they are functionally equivalent. As mentioned previously, the GNU utilities have better localization. They also accept GNU long options. I have never found the lack of long options to be an issue; on the contrary short options are faster to type and are generally the go to choice for those familiar with the shell interface. Therefore I decided to start working on porting BSD userland to Linux with Glibc, using our HitchHiker build system. As there are a great many small utilities this is a process that isn't going to happen overnight, but has already yielded a surprising amount of success with modest effort.

    +

    There are a few projects already in place that do something similar, such as lobase, that approach the issues of missing functions and macros by creating a compatibility library and then linking the utilities to it. While this is a perfectly valid approach, it has the drawback of increasing code size somewhat. I have also found so far that simply removing macros that don't exist on a Glibc system is enough to get the code to compile with a simple gcc -Wall file.c. At other times one can simply translate from one function to another, for instance from strlcpy to strncpy, the latter which is available with Glibc and does very near the same thing.

    +

    Without getting too further involved in the details, so far I have working copies of the utilities apply, banner, basename, cat, dirname, grep and tr taken from NetBSD. Grep was previously a separate package that has been removed. We previously already had the awesome pax utility imported from MirOS, and have now removed GNU tar in favor of a simlink to pax, which functions very well as a tar replacement. Additionally, the utilities true, false, and which have been replaced with one line shell scripts (which is a zsh builtin, which we can call from another shell with a one line zsh script).

    +

    The result so far is a mixed userland that is predominately composed of GNU utilities with a sprinkling of BSD licensed utilities thrown in. The endgame is to replace the bulk of the GNU utilities with ports of the BSD versions, including many utilities such as apply, banner and pax that do not traditionally even exist on a Linux system. I may supplement this over time with utilities taken from sbase, ubase, or lobase as difficulties are encountered in porting the NetBSD utils, but would like to do as much straight porting against the actual system libraries as possible, as opposed to linking against compatibility libraries.

    +

    On to the build tree infrastructure improvements mentioned in the post title. A few posts back I mentioned standardizing the way that we handle packages that need extra steps beyond "make install". Similarly, I'm working on simplifying the use of build systems other than autotools. One feature of autotools that we leverage by default is that we can build outside of the source tree in a separate object directory. This is the default, but not all packages support this. There are even a few packages out there that mostly mimic autotools from an end user perspective, having a home-brewed configure script, but generally do not support building in an object directly. So now by simply setting the variable ${no_objdir} we can handle those cases in a unified way, and our build system knows that ${objdir}/.dirstamp is not a dependency of the configuration stage for instance.

    +

    Additionally, some packages eschew any kind of configuration step entirely and build just by running make. We now handle this in a more unified manner as well, rather than on a per-package basis, by setting ${use_configure} to false.

    +

    These changes are minor, but are going to go a long way towards implementing a ports tree with a more concise and understandable codebase.

    + + +
    +

    Tags for this post:

    + + NonGNU + + Porting + + + +
    +
    +
    +
    + + + + + diff --git a/public/news/reconfiguring-the-build-process/index.html b/public/news/reconfiguring-the-build-process/index.html new file mode 100644 index 0000000..c742dbc --- /dev/null +++ b/public/news/reconfiguring-the-build-process/index.html @@ -0,0 +1,453 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Reconfiguring the build process

    +

    2021-02-01

    +

    Up until now HitchHiker has used a build process that closely followed that used +by the Linux From Scratch book. There was a temporary toolchain, hacked to use a +different library directory and prefix

    + +

    so as not to conflict with the host system or with the libraries and tools being installed as the finished system. This temporary toolchain was in itself a complete development environment that included everything required to bootstrap a full system. To build to final system, is was necessary to chroot into a new directory containing the temporary tools and root filesystem.

    +

    This method had some advantages, but also involved compiling most packages at least twice. It also required quite a lot of extra work to do any kind of cross compiling. In fact, I had set up an RPI4 specifically as a compilation machine for Armv7l, as it was basically impractical to use my x86_64 laptop to develop for Arm.

    +

    In an effort to increase the flexibility of the HitchHiker build tree, support more architectures, and to streamline the build I am experimenting with using a sysroot compiler for the majority of the build. In testing, with minimal effort I was able to set up cross toolchains for armv7l, aarch64, riscv64, and i486 as well as a native x86_64 toolchain using the same build tree and only adjusting the ${arch} variable in config.mk. In testing I was able to compile almost the complete userland for x86_64, aarch64 and riscv64 without resorting to a chroot, and all on my main machine. My current plan is to compile most of the base system using a sysroot toolchain, either native or cross, including the build of the native toolchain, and then to chroot into the near complete root filesystem to finish up any packages that cannot be easily cross compiled. At this juncture I believe the only package in the base system that will be truly problematic for cross-compilation is Perl, which uses an ill conceived homegrown configure script instead of autotools. However this is not quite verified for all packages just yet.

    +

    In the case of a package refusing to cross-compile, I can then use the method outlined in the previous post and compile with the native toolchain using qemu user-mode emulation.

    +

    In addition to the vast reduction of packages being compiled twice or more, this also has the advantage of running on a fast machine. Additionally, with most of the work not requiring the chroot trick, there is no emulation layer to slow the process down. A future goal will be to fix the issues with Perl and push patches upstream if possible, as Perl is a hard build dependency of the kernel and therefore must be considered an essential part of the base system.

    +

    To give some idea of the resource savings this brings about, here's a quick table outlining the number of passes required for certain packages under the old layout vs the new. Note that it is still necessary to make multiple passes at Binutils and Gcc, as we have to build our sysroot/cross toolchain, but there is a rather significant reduction in the amount of other software being built twice.

    + + + + + + + + + + + + + + + + +
    PackagePasses (old)Passes (new)
    Binutils32
    Gcc3 + separate libstdc++ pass3
    Linux Headers21
    Glibc21
    M421
    Ncurses21
    Bison21
    Diffutils21
    Gettext21
    Make21
    Perl21
    Python21
    Texinfo21
    Patch21
    Busybox1Not Built
    + + +
    +

    Tags for this post:

    + + cross-compile + + sysroot + + + +
    +
    +
    +
    + + + + + diff --git a/public/news/restarting-make-buildworld-cleanup-default-software/index.html b/public/news/restarting-make-buildworld-cleanup-default-software/index.html new file mode 100644 index 0000000..40fc3c6 --- /dev/null +++ b/public/news/restarting-make-buildworld-cleanup-default-software/index.html @@ -0,0 +1,442 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Restarting make, buildworld cleanup, default software

    +

    2020-08-03

    +

    One of the deficiencies in the HitchHiker build tree up to this point has been dealing with packages that require some manual intervention after the "make install" step. Originally there was no unified infrastructure to deal with this scenario. Very quickly during testing I realized that this was an omission that was going to cause problems, as the scenario was much more common than I at first realized and implementing solutions on a per-package basis is both quite error prone and likely to introduce bugs into the build process. Up until the workarounds have involved redefining the .DEFAULT_GOAL variable and creating custom targets to finish the installation, while making the basic installation a dependency of said targets.

    +

    A common problem that arose out of this hodgepodge approach is that if the new targets were ".PHONY" targets (a target that is not an actual file) or the targets were symlinks then if the build was stopped it would error out on resuming, due to the timestamps of dependencies being the same or newer than their targets, or else a target could not actually be run because it involved moving some file that we already moved the first time it ran. This made testing new features a laborious process, as often any errors required removing the entire rootfs and restarting buildworld from the beginning.

    +

    When I implemented hhl.cprog.mk, I took steps to remedy this situation. If one defines the variable "finish" then the system will know that there are steps to be taken after "make install". Then any additional steps can be added to the new target {objdir}/.finished, which is the second dependency of the "finish" target after "install". This worked well in practice, so I have implemented the same functionality in targets.mk which is used by all "external" source packages (those packages for which the source is not included in the HitchHiker build tree but downloaded as tarballs during the build).

    +

    As a result of this, after considerable tweaking, the build can now be restarted from any point after stopping and will run to completion. I consider this to be an important milestone, as it makes future development much less arduous.

    +

    An important goal of HitchHiker is that the base system includes everything needed to bootstrap a full system. As such, it is unfortunately required to include certain packages that will not necessarily be required under all circumstances. A good example of this is the networking stack, as it is next to impossible to bootstrap a full system without a network connection, but we don't know if that connection is going to be wired, wireless, secured wireless, static or dynamic, etc. The first test builds of the complete system ignored this completely and only included what is needed to manually set up a static, wired connection.

    +

    This situation is also now remedied, as the officially distributed builds will include the dhcpcd, wireless-tools and wpa_supplicant packages. However, it is entirely possible to exclude any or all of these packages by setting appropriate variables in the file config.mk in the top level of the source tree.

    +

    There are now a number of things that can be tweaked when building the system from source. One can specify a list of locales to compile for glibc rather than the default of compiling all supported locales. By setting the variable rpi to true, you get the Raspberry Pi foundation kernel instead of linux mainline. And a custom kernel configuration file can be substituted for the default HitchHiker one. None of these tweaks should change the essence of the system being HitchHiker, but just allow the user some extra choice and the ability to slim the system down a fair bit, as well as speeding up the build somewhat.

    +

    Lastly, I want to talk about the roadmap for HitchHiker a little bit. Regarding the build tree itself, at the moment we currently have the .mk file targets.mk which includes most of the logic to build all of the packages that are downloaded and compiled as part of the base system. This file's internal logic defaults to using GNU autotools, but is flexible enough to build packages in other ways by resetting appropriate variables. This approach does work, but requires some deep knowledge of how it all is put together. As eventually I would love to see my work finding a larger audience I would like to make the infrastructure a little bit easier to understand, so for example when we graduate from pkgsrc to our own ports tree there could be some community involvement in fleshing out a complete ports tree.

    +

    To that end, a future goal is going to be removing the autotools logic into an "autotools.mk" file and creating, for instance, "cmake.mk" or "waf.mk", which will know how to build packages using those build systems. At that point one could set the build system to use "waf" via a variable assignment and then include hhl.ports.mk, which would then pull in "waf.mk". Doing this cleanly is an important step in the way to creating a ports tree that will be easily debugged and easy to maintain and update.

    +

    This theoretical "hhl.ports.mk" will also need logic for tracking everything to be installed by each and every package, uninstalling packages and upgrading to newer versions. In short it will need much of the logic of a package manager. I have actually implemented most of this previously in the original HitchHiker system of ten years ago. At that point installed files were tracked by creating a timestamp file before "make install" and then using the find utility to catch any files with a newer timestamp. This had the attractive benefit of being completely agnostic to build system, but is not without it's drawbacks. Chief among the drawbacks is that it is a rather time consuming approach, but there is also the danger that we will miss a file if it is created with the wrong time stamps, or may capture an incorrect file that has been created by another running process. For those reasons I'm planning to implement it by installing into a DESTDIR. The problems here are that one needs to be familiar with multiple build systems to know how to achieve this, and also that the concept of a DESTDIR is not universally implemented in all pieces of software out there. For the former, the solution is good old fashioned grunt work to learn the ins and outs of each build system as it is encountered. For the latter, the approach is going to be patching the build system and submitting patches upstream, with the hope that the authors will be receptive.

    +

    I'm going to interject at this point to point out that pkgsrc uses an entirely different approach by requiring every package directory to include a PLIST file, thus placing the burden squarely on the shoulders of the maintainer to populate this file with every file the package will install on your system. FreeBSD also uses this approach. Functionality could be included into "hhl.ports.mk" to use a PLIST file if it exists, skipping any automatic file discovery.

    +

    Then there is another elephant in the room - dependency tracking. The previous incarnation of HitchHiker kept a flat file database of every file that every package in the ports tree might install, ran "file" on every file in the new package to determine it's file type, then ran ldd on every elf file and compared the results to the database. It was quite effective at catching any binary dependencies. It was also slower than shit on large packages and extremely overkill much of the time. Knowing a bit better now I have no intention of going down that rabbit hole again. Instead, dependencies are just going to be manually specified by the developer in each port's Makefile. While this is somewhat error prone, it can be refined over time to be near perfect and has the advantage of speed. In addition, not all dependencies are library dependencies. Some dependencies are of the nature of expecting another program to be available to exec() at runtime, and some dependencies are simply build time requirements.

    +

    Now here's the point where I'm going to get controversial. BSD ports implement all of this using just make and for years had nothing like the traditional Linux package manager, instead relying on simple command line utilities to manipulate packages. I -don't- want a package manager in HitchHiker. I don't want to reinvent the wheel and write a new one, and none of the existing ones are going to be suitable. I think they're generally just complicated, poorly understood by the average user, and since there are already so many implementations it's virtually impossible at this time for one of them to become "standard", thus basically making the idea of the Linux desktop an unachievable dream. No company is going to bother supporting dpkg, rpm, Slackware tarballs, Arch tarballs, Flatpack and Ubuntu snaps. It's not happening. At most they're going to release an rpm, a deb or a snap and just ignore everybody else. The ideas of the commercial world embracing desktop Linux, the year of desktop Linux, etc are all basically pipe dreams.

    +

    Here's what I picture instead. If we can manipulate source archives into binary packages and then install those packages all using make, we can frankly do the same with binary packages. BSD port trees and pkgsrc had already proven that would work years ago. In fact, in FreeBSD you can install binary packages that are dependencies of the port that you are building rather than building them from source, or build ports that don't have a binary package available when installing binary packages. This system functioned just fine for a long time. Their mistake a few years ago was jumping on the Linux bandwagon and writing yet another package manager, pkg. Since that time I've noticed quite a lot more issues keeping FreeBSD packages up to date, to the point where I even abandoned an installation at one point. So we're skipping it entirely, and instead I'm going to provide a "binary-install" target in "hhl.ports.mk" that will fetch and install binary packages. Easy peasy, no package manager required, unless you consider the ports tree itself to be a package manager.

    + + +
    +

    Tags for this post:

    + + GNU Make + + Milestones + + Roadmap + + + +
    +
    +
    +
    + + + + + diff --git a/public/news/some-more-home-cooking/index.html b/public/news/some-more-home-cooking/index.html new file mode 100644 index 0000000..830e4fc --- /dev/null +++ b/public/news/some-more-home-cooking/index.html @@ -0,0 +1,467 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Some More Home Cooking

    +

    2020-10-06

    +

    After removing GNU coreutils and taking closer stock of what we have as a +"base system", I am mostly happy with the selection but now wish to spend some +time making behaviors, documentation and source code itself more uniform. I have +also done some work towards correcting a couple of omissions that are present +due to the previous surgury. The commit that I pushed this morning has a few +notable changes.

    + +
      +
    • hostid - This is a non-POSIX utility of GNU origin that is present on systems with GNU coreutils but not on BSD based systems. I have written a replacement from scratch in C, which was a fairly trivial task as mentioned previously. The new utility, much like the rest of our userland, behaves like the GNU counterpart with the exception of not accepting long options and not having a help option (help is available via the man-pages, so '--help' is always redundant IMO).
    • +
    • nproc - Another scratch implementation of a utility with a GNU orgin.
    • +
    • rev - A scratch rewrite for HitchHiker, should be functionally identical to the BSD and/or Suckless versions. Notably, my version, the BSD version (which we had previously) and the suckless version are all quite a bit faster than the rev utility provided by the util-linux package due to architectural differences which I'll explain below.
    • +
    • mkdir - Another scratch rewrite. These are being done patially as an exercise in C programming and partially to lessen our dependence on the portability libraries used to port BSD utilities to Linux. However, this utility is currently a special case in that regard (see below).
    • +
    • base64 - This one had been ported from NetBSD but is actually broken on every platform in regards to being able to process it's data from a file rather than stdin. It's now fixed at least in HitchHiker. +I have also begun a process of formatting the source code imported from other sources using clang-format to enforce more uniform standards, and to go through the man-pages a few at a time to do some similar housekeeping. It's a small niggle, but both BSD and Suckless use tabs for indentation where I prefer two spaces for compactness. There are also some inconsistencies in brace styles and function declarations. I prefer the function declaration to be on one line followed by the opening brace on the same line, and for things like loops to include the opening brace on the same line as the loop initialization. Basically, the defaults provided by clang-format make for nice, readable and consistent code.
    • +
    +

    Now, as mentioned above, let's get into some detail with the implementations of +rev and mkdir. Let's begin with rev, which is a simple utility which just reverses the characters in each line. Now, a simple implementation of rev, and basically where I started, would just read each line using getline (or fgetln on a BSD system) and reverse the bytes, excluding the newline, which is replaced back at the end of the output. This works fine for ascii characters, which all by definition fir into a single byte of data. However, utf8 is a fact of life, and we quickly run into a situation where we have reversed the byte order of a multibyte character, printing gibberish to the terminal. The Util-Linux utility solves this by reading each line into an array as a sequence of widechars, essentially reading character by character, and then doing the reversal.

    +

    The BSD, Suckless, and now HitchHiker utilities all use a similar, and more efficient approach. The line is read as described above, then, starting with the charcter preceding the newline, each byte is tested to see whether it is the beginning of a character or the middle of a multibyte character. If we run into a multibyte character, we find the beginning of it and then read forward again to the end of the character, before skipping backwards again past the multibyte character. While sounding convoluted, this is quite a bit faster when processing large amounts of data, as we're only looking at the first few bits of each byte rather than reading each line in character by character.

    +

    Now on to mkdir. Most of this was straightforward to implement, including the -p option, as we just have to construct a path directory by directory by processing the path as a string, using, in our case, the strtok function. However, mkdir is also expected to be able to set the Unix permissions of directories that it creates, and accept the mode arguments in either octal or symbolic format. It is trivial to implement the octal permissions, but implementing symbolic permissions entails coding a parser which must accept a fairly wide range of possible permutations. After looking at how the functionality has been implemented in BSD, GNU, and Suckless utilities, it quickly became apparent that the BSD implementation makes the most sense from the efficient use of code standpoint, as the BSD C-library already contains the getmode and setmode functions. As this has already been ported to Linux via libbsd, and as such is already present in HitchHiker as it has been used to port much code from both NetBSD and FreeBSD, I decided to just go ahead and use it. On a side note, it would be fantastic to see some of these functions present in the GNU C-library. The getmode function is quite useful, and fgetln is quite a bit more, let's say graceful, to use than getline.

    +

    It should be noted that static linking libbsd into a Beerware licensed utility is somewhat problematic. I have been considering extending the build system somewhat, to also build shared libraries alongside the static archives. I am somewhat hesitant, as I feel that low level base utilities such as this should only depend on the system C library at runtime. Alternatively, if at some point in the future HItchHiker does make the switch to Musl libc (which is still on the table) then it might be possible to patch musl to incorporate the functions right into the system C library for HitchHiker, allowing for their removal from libbsd and lessening our reliance on it for porting utilities. I rather like this train of thought...

    +

    The end goal is, of course, the kind of tightly integrated userland that BSD +systems are noted for. When looking at the various base utility implementations, +it is striking that commonly there is a library of common functions built and +linked into the utilities. This tactic is employed by sbase, ubase, GNU coreutils, +Util-Linux, and lobase (the port of OpenBSD userland to Linux, from which I have +borrowed heavily). I'm employing it myself by using libbsd to port NetBSD and +FreeBSD utilities. In the long run, I want to eliminate this trend and fully +integrate everything to where we're only depending on the C library both at build +and run times. My own implementations, with the exception of mkdir, currently do +this. As an example, on BSD systems a program is aware of the name under which it +was invoked via the getprogname and setprogname functions. As GNU libc does not +have these functions, we have a global constant char __progname, which is set to +the program name by calling basename(argv[0]) in the main function. While +this results in some additional boilerplate code, it's actually scarcely more +than what BSD already has due to the need to call getprogname and/or setprogname.

    +

    Similarly, Suckless abstracts away certain things like printing to stderr (their +eprintf function) and getting program arguments, which are easily done just using +fprintf(stderr, "msg") and getopt, respectively.

    +

    A possible eventuality might involve refactoring much of this code somewhat to remove the dependencies on their respective utility libraries and replacing it with more "generic" programming. While this might increase source code size somewhat, it would not likely impact compiled size or efficiency, as we're just removing the abstractions and putting them back into the programs. This has the benefit of making the code easier to understand without having to look at the library and what it does.

    + + +
    +

    Tags for this post:

    + + C programming + + Utilities + + NonGNU + + + +
    +
    +
    +
    + + + + + diff --git a/public/news/website-redesign/index.html b/public/news/website-redesign/index.html new file mode 100644 index 0000000..4aae044 --- /dev/null +++ b/public/news/website-redesign/index.html @@ -0,0 +1,516 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Website Redesign

    +

    2021-02-18

    +

    I know a little bit about a lot of things, and one of the things that I know +only in passing is web development. I am by no means qualified at +or excited about web design. However, in the spirit of DIY I have always muddled +through all of my own projects. This has in the past meant using a CMS of some +sort, and a rather long time ago I settled on Mezzanine, a Django-based CMS +written in Python.

    +

    This worked out all right in most ways. However, a few weeks back I had a server +outage that I traced back to the update from Python 3.8 to Python 3.9. The +virtualenv that I had set up simply stopped working, causing the web server to be +unable to start as the default handler was DOA. Now, a Python virtualenv is a +supposedly complete standalone environment containing the Python interpretor and +libraries frozen to be version compatible with your application. It is supposed +to be self contained and not dependent upon the system-wide Python installation. +The fact that bumping a minor version number caused it to fail is distressing +and has soured my already low opinion of Python somewhat.

    +

    Additionally, I have long desired to incorporate a full handbook into the website +and do so in a way that looks seemless with the rest of the site. HitchHiker is +not going to be a turnkey system for most people and will need good documentation. +I have tried a few things that were available online, including Mezzanine Wiki, +but nothing is really suitable and many packages are broken and/or unmaintained +(including Mezzanine Wiki at the time I tried it).

    +

    Being impressed with the quality of the documentation for Rust I looked into what +they use. The Rust Book is built using mdbook, +which is a wonderful static markdown to html generator that does exaclt what it +claims to do and does it exceptionally well. After messing with it for all of two +minutes I was sold - it's just plain phenominal in use.

    +

    Having settled on mdbook for the forthcoming "Hitch Hiker's Guide to Hitch Hiker +Linux" I decided that if we're going static pages there, it would be a good +time to go static pages everywhere. I set about looking for a static site generator +that would give me enough flexibility for my needs and still be simple to use.

    +

    While there is no shortage of SSG's available right now, there were several popular +ones that I never really considered based on implementation. Jekyll, for one, is +written in Ruby and I'm not looking to pollute my machine with more interpreted +language cruft.

    +

    I gave Hugo a long, hard look and went so far as to install +it and do some testing. Hugo is written in Go, seems to work well, and is definitely +fast. However, none of the available themes were going to be suitable without a +good deal of hacking.

    +

    At first glance, Zola appeared to have the same +strengths and the same issues as Hugo for my use case. I really couldn't see +applying any of the themes that I found directly without a lot of customization, +and there were a couple that I tried that were flat out broken. On top of whatever +customization I was going to have to do to whatever theme I picked, I was also +going to have to adapt to an mdbook theme as well....or was there another way?

    +

    It turns out that the default set of themes that ship with mdbook are pretty much +already great, and would look great adapted to an entire site. Now, mdbook itself +is pretty much not suitable for generating the entire site, as I need a front +page, I want to keep my blog, and I'd like to be able to incorporate other pages +as well that aren't going into the table of contents for the book. But what I +thought I could do is to create my own Zola template using the css from the mdbook +themes.

    +

    So in the end that's what I did. Zola, written in Rust, is actually quite a bit +simpler than Hugo and after a few initial trip ups getting started I'm finding +the template system to be something I can navigate all right. I'm left with a two +step rendering process to build the full site, as I'm rendering most of the site +using Zola and the book using mdbook. But hey, I've already proven that I can do +a good bit of automation using make, right?

    +

    While there's a bit more work left to finish migrating the old site, I have to +say that I'm completely satisfied with my choices as of now. Both Zola and mdbook +do things for me that were not going to be easily achievable in Mezzanine and come +with a lot of benefits right out of the box. As a for instance, built in syntax +highlighting for code snippets! Here's echo in Rust:

    +
    +#![warn(clippy::all, clippy::pedantic)]
    +use std::env;
    +
    +fn main() {
    +    let args: Vec<String> = env::args().collect();
    +    let len = args.len();
    +    let n = len > 1 && args[1] == "-n";
    +    let i = if n { 2 } else { 1 };
    +    for (index, arg) in args.iter().enumerate().skip(i) {
    +        if index < len - 1 {
    +            print!("{} ", arg);
    +        } else {
    +            print!("{}", arg);
    +        }
    +    }
    +    if !n {
    +        println!();
    +    }
    +}
    +
    + +
    +

    Tags for this post:

    + + Site News + + Web Programming + + css + + html + + Zola + + mdbook + + + +
    +
    +
    +
    + + + + + diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..b27b184 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,3 @@ +User-agent: * +Allow: / +Sitemap: /sitemap.xml diff --git a/public/search_index.en.js b/public/search_index.en.js new file mode 100644 index 0000000..de9d88d --- /dev/null +++ b/public/search_index.en.js @@ -0,0 +1 @@ +window.searchIndex = {"fields":["title","body"],"pipeline":["trimmer","stopWordFilter","stemmer"],"ref":"id","version":"0.9.5","index":{"body":{"root":{"docs":{},"df":0,"0":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951}},"df":2},"1":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/website-redesign/":{"tf":1.7320508075688772}},"df":2,".":{"docs":{},"df":0,".":{"docs":{},"df":0,"1":{"docs":{},"df":0,"0":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}},"0":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2,"2":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1},"x":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}},"6":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1,"k":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2}},"s":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"2":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1,".":{"docs":{},"df":0,"3":{"docs":{},"df":0,"2":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951}},"df":1}}},"0":{"docs":{},"df":0,"2":{"docs":{},"df":0,"0":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}},"4":{"docs":{},"df":0,"k":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}},"2":{"docs":{},"df":0,"0":{"docs":{},"df":0,"k":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}}},"3":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1,".":{"docs":{},"df":0,"2":{"docs":{},"df":0,"2":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}},"7":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1},"8":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1},"9":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}},"1":{"docs":{},"df":0,".":{"docs":{},"df":0,"7":{"docs":{},"df":0,"5":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}},"4":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2,".":{"docs":{},"df":0,"4":{"docs":{},"df":0,"b":{"docs":{},"df":0,"s":{"docs":{},"df":0,"d":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951}},"df":1}}}}}}}}},"0":{"docs":{},"df":0,"k":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}},"2":{"docs":{"/about/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0}},"df":2},"k":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}},"5":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1,"9":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}},"6":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1},"7":{"docs":{},"df":0,".":{"docs":{},"df":0,"1":{"docs":{},"df":0,"m":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}}},"8":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2,"0":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}},"9":{"docs":{},"df":0,".":{"docs":{},"df":0,"3":{"docs":{},"df":0,"0":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}},"0":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}},"_":{"docs":{},"df":0,"_":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}}}}}},"a":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"6":{"docs":{},"df":0,"4":{"docs":{"/about/":{"tf":1.0},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951}},"df":4,"/":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"v":{"docs":{},"df":0,"6":{"docs":{},"df":0,"4":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}}}}}}}}}}}}},"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/more-pkgsrc/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}}},"i":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1,"l":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2},"w":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}},"v":{"docs":{"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":1}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":2}}}}}},"u":{"docs":{},"df":0,"s":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}},"c":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":2.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":5}},"s":{"docs":{},"df":0,"s":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":3}}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0}},"df":3}}}}},"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"v":{"docs":{"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":5}}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}},"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.7320508075688772},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":11}}}}},"d":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5,"a":{"docs":{},"df":0,"f":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}}},"p":{"docs":{},"df":0,"t":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":2}}},"d":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":7,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":3}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.4142135623730951}},"df":1}}}}},"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}},"j":{"docs":{},"df":0,"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1},"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}}}},"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":1}}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}}}}},"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0}},"df":2}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}}}},"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":7,"s":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":2.8284271247461903},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951}},"df":6}}}}},"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"o":{"docs":{"/news/editors-glibc-232/":{"tf":1.7320508075688772},"/news/more-pkgsrc/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/website-redesign/":{"tf":1.0}},"df":4}},"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}},"i":{"docs":{},"df":0,"r":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}},"k":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"l":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1,"g":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"m":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.23606797749979},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":5}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":4,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":2.0},"/news/website-redesign/":{"tf":1.7320508075688772}},"df":9}}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4}}},"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}}}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"/about/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":8}}}},"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":7}}}},"p":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1,";":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}}}}}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951}},"df":1}}}},"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":2}}}}},"d":{"docs":{},"df":0,"/":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":2}}}},"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"y":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}}}},"o":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.6457513110645907},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":13}}},"t":{"docs":{},"df":0,"i":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}},"y":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"h":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":3}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":4}}}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}},"i":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}},"n":{"docs":{},"df":0,"d":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}},"l":{"docs":{},"df":0,"i":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":2,"c":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}}},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.449489742783178},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":3}}},"x":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}}}}}},"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"4":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}}}}},"h":{"docs":{"/about/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":7,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.7320508075688772},"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":7}}}}}},"v":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4,"e":{"docs":{},"df":0,"/":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"y":{"docs":{},"df":0,"/":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}},"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}},"g":{"docs":{"/news/website-redesign/":{"tf":2.0}},"df":1,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"(":{"docs":{},"df":0,")":{"docs":{},"df":0,".":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,")":{"docs":{},"df":0,".":{"docs":{},"df":0,"s":{"docs":{},"df":0,"k":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"(":{"docs":{},"df":0,"i":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}},"[":{"docs":{},"df":0,"1":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":2}}}}}},"i":{"docs":{},"df":0,"s":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}},"m":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":2.23606797749979},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":6,"v":{"docs":{},"df":0,"7":{"docs":{},"df":0,"l":{"docs":{"/about/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951}},"df":3}}}},"o":{"docs":{},"df":0,"s":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":6}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}},"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"i":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951}},"df":1}}}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"m":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0}},"df":4,"p":{"docs":{},"df":0,"t":{"docs":{"/about/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0}},"df":2}}}}}},"t":{"docs":{},"df":0,"&":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,";":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951}},"df":1}}}}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"g":{"docs":{},"df":0,"a":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"d":{"docs":{},"df":0,"5":{"docs":{},"df":0,"1":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951}},"df":4}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}},"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951}},"df":1}}}}}}},"u":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5}}},"o":{"docs":{},"df":0,"m":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":2.23606797749979},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":8,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"k":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}}}}}}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.7320508075688772},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.7320508075688772}},"df":12}}},"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":2}}}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1},"y":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":3}},"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}},"k":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}},"b":{"docs":{},"df":0,"2":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}},"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":7,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2}}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}}},"d":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1},"k":{"docs":{},"df":0,"e":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}},"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951}},"df":1}}}},"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1,"e":{"docs":{"/about/":{"tf":1.0}},"df":1},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"e":{"docs":{"/about/":{"tf":1.7320508075688772},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":2.23606797749979},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.8284271247461903},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":2.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":14,"3":{"docs":{},"df":0,"2":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772}},"df":1}},"6":{"docs":{},"df":0,"4":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"(":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"g":{"docs":{},"df":0,"v":{"docs":{},"df":0,"[":{"docs":{},"df":0,"0":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}}}}}}},"c":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"i":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2,"c":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":8}}}},"d":{"docs":{},"df":0,"b":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}},"e":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":11,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"v":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}},"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"m":{"docs":{"/about/":{"tf":1.0},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5}}},"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}},"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":7}}},"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":6}},"u":{"docs":{},"df":0,"n":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.23606797749979},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4}}}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"v":{"docs":{"/about/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":4}}},"o":{"docs":{},"df":0,"w":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":2}}},"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":7}}}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}}}},"r":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"y":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}},"t":{"docs":{"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2}},"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5}}},"w":{"docs":{},"df":0,"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":4}}}}},"y":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{},"df":0,"g":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}},"i":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}},"l":{"docs":{},"df":0,"l":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951}},"df":1}},"n":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2,"/":{"docs":{},"df":0,"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"s":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"h":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}},"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":2.23606797749979},"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.8284271247461903}},"df":8}}},"f":{"docs":{},"df":0,"m":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}},"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":2,"s":{"docs":{},"df":0,"3":{"docs":{},"df":0,"2":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}}}}}},"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}},"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"2":{"docs":{},"df":0,"1":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.0},"/news/some-more-home-cooking/":{"tf":2.0},"/news/website-redesign/":{"tf":2.0}},"df":8}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"2":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"m":{"docs":{},"df":0,"e":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"k":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":3}},"c":{"docs":{},"df":0,"k":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0}},"df":3}},"g":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.0}},"df":1}}},"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}}},"o":{"docs":{},"df":0,"k":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/website-redesign/":{"tf":1.7320508075688772}},"df":3},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":4}}}}}}},"r":{"docs":{},"df":0,"n":{"docs":{"/about/":{"tf":1.4142135623730951}},"df":1},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"h":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":2.23606797749979},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772},"/news/website-redesign/":{"tf":1.0}},"df":10,"e":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951}},"df":1}}},"x":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":1}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":3}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"h":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"w":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2}},"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":3}},"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}}}},"n":{"docs":{},"df":0,"g":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":3}}},"o":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":3}}},"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}}},"w":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}},"s":{"docs":{},"df":0,"d":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":2.8284271247461903},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.23606797749979},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":3.3166247903554},"/news/improved-porting-with-libbsd/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":3.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.23606797749979},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":3.605551275463989}},"df":11,".":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"k":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"k":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772}},"df":1}}}}}}}}}},"u":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}},"g":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5},"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":2.23606797749979},"/news/cross-build-progress/":{"tf":5.196152422706632},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.8284271247461903},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":3.605551275463989},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":3.1622776601683795},"/news/improved-porting-with-libbsd/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":4.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":3.3166247903554},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":3.4641016151377544},"/news/reconfiguring-the-build-process/":{"tf":3.1622776601683795},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":4.898979485566356},"/news/some-more-home-cooking/":{"tf":1.7320508075688772},"/news/website-redesign/":{"tf":1.0}},"df":13,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}},"w":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":1}}}}}},"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":9,"i":{"docs":{},"df":0,"n":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}},"l":{"docs":{},"df":0,"k":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"p":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"n":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}},"s":{"docs":{},"df":0,"y":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"x":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":2,"1":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}}}}}}}},"y":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{"/news/some-more-home-cooking/":{"tf":2.23606797749979}},"df":1}}},"z":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"2":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951}},"df":1,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"v":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}},"c":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":3.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.6457513110645907},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.6457513110645907},"/news/improved-porting-with-libbsd/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":3.4641016151377544},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":2.6457513110645907}},"df":9,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}},"l":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":4}},"m":{"docs":{},"df":0,"e":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1},"p":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772}},"df":3}}},"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"e":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1},"g":{"docs":{},"df":0,"o":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2,"_":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":2.23606797749979},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":12},"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/about/":{"tf":1.0}},"df":1}}}},"t":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1,"c":{"docs":{},"df":0,"h":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":1}},"e":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}},"s":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":6}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":4}}}}},"d":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":6}}}}}},"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772}},"df":2}}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0}},"df":3}}}}},"n":{"docs":{},"df":0,"c":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2},"g":{"docs":{"/about/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":6}},"r":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":3.4641016151377544}},"df":2}}},"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}}},"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951}},"df":1}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0}},"df":4,"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772}},"df":1}}}}}},"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{"/news/more-pkgsrc/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}},"p":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":4}},"r":{"docs":{},"df":0,"e":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}},"w":{"docs":{},"df":0,"n":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":2.0},"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":2.0}},"df":4}}}},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}},"m":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"z":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2}}}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"g":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":4,"/":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"v":{"docs":{},"df":0,"m":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951}},"df":1}}}}}}},"p":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":1},"s":{"docs":{},"df":0,"s":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"r":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"i":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}},"u":{"docs":{},"df":0,"p":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"y":{"docs":{},"df":0,":":{"docs":{},"df":0,":":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}}}}}}}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{"/news/editors-glibc-232/":{"tf":1.7320508075688772},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2}},"s":{"docs":{},"df":0,"e":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":4,"r":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}},"m":{"docs":{"/news/website-redesign/":{"tf":1.4142135623730951}},"df":1,"a":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"k":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}}},"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{"/about/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":2.449489742783178},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.23606797749979},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.0},"/news/some-more-home-cooking/":{"tf":3.1622776601683795},"/news/website-redesign/":{"tf":1.0}},"df":11,"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}},"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":3}}}},"o":{"docs":{},"df":0,"r":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0}},"df":1}}},"m":{"docs":{},"df":0,"b":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"e":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":6},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.23606797749979},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":6}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0}},"df":2,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"t":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}},"o":{"docs":{},"df":0,"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4,"l":{"docs":{},"df":0,"i":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}},"u":{"docs":{},"df":0,"n":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"i":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}},"r":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":3,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951}},"df":1}}}}},"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":5,".":{"docs":{},"df":0,"h":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0}},"df":1}}}},"e":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}},"i":{"docs":{},"df":0,"l":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":2.6457513110645907},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":3.1622776601683795},"/news/editors-glibc-232/":{"tf":2.23606797749979},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.449489742783178},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.6457513110645907},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":2.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/reconfiguring-the-build-process/":{"tf":3.3166247903554},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":1.0}},"df":13}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"t":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.23606797749979},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":8},"x":{"docs":{"/about/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951}},"df":3}},"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}},"c":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"s":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}},"u":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"v":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}},"p":{"docs":{},"df":0,"t":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}},"i":{"docs":{},"df":0,"s":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}}},"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772}},"df":2}}},"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951}},"df":1,".":{"docs":{},"df":0,"h":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951}},"df":2},"m":{"docs":{},"df":0,"k":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}},"u":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":2.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":7,"e":{"docs":{},"df":0,"_":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"g":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}}}}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}}},"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772}},"df":1}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":9,"e":{"docs":{},"df":0,"r":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"s":{"docs":{},"df":0,"t":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"l":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0}},"df":2}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}}},"u":{"docs":{},"df":0,"m":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":6}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/website-redesign/":{"tf":1.0}},"df":2}},"x":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"u":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":4}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"l":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951}},"df":1}}},"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}}},"o":{"docs":{},"df":0,"k":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"p":{"docs":{},"df":0,"i":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":3},"y":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":3,"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.449489742783178},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.23606797749979},"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":5}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{},"df":0,"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}},"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}}}}}},"p":{"docs":{},"df":0,"l":{"docs":{"/news/more-pkgsrc/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":4}},"r":{"docs":{},"df":0,"s":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.7320508075688772},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":5}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}}},"p":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":2.23606797749979}},"df":1,"p":{"docs":{},"df":0,"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2}}}}},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}},"u":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1},"t":{"docs":{},"df":0,"e":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}},"z":{"docs":{},"df":0,"i":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.449489742783178},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":9}},"e":{"docs":{},"df":0,"p":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951}},"df":1}}}},"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":2.6457513110645907},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":2.449489742783178}},"df":4}}},"u":{"docs":{},"df":0,"f":{"docs":{},"df":0,"t":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}},"y":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}}}}}}}}},"s":{"docs":{},"df":0,"s":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.23606797749979},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":10}}}},"v":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951}},"df":1}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":3}}}},"t":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0}},"df":2}}},"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}},"t":{"docs":{},"df":0,"a":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":5,"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":1}}}},"e":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":3}},"y":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951}},"df":4}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1},"l":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":3,"b":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0}},"df":1}}}}},"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}},"b":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2}}},"u":{"docs":{},"df":0,"g":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":7}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":1}}}},"e":{"docs":{},"df":0,"p":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}},"f":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":10,"_":{"docs":{},"df":0,"g":{"docs":{},"df":0,"o":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}},"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":3,"i":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":5}}}}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}},"i":{"docs":{},"df":0,"v":{"docs":{"/about/":{"tf":1.0}},"df":1}}},"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":3.3166247903554},"/news/some-more-home-cooking/":{"tf":2.0},"/news/website-redesign/":{"tf":1.0}},"df":11}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"y":{"docs":{"/about/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"h":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"v":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}},"r":{"docs":{"/about/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":3}},"k":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772}},"df":2}}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"r":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}},"i":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":2}}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":3}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}},"v":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1,"/":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}}}}}},"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"/":{"docs":{},"df":0,"g":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"/":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"k":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}},"o":{"docs":{},"df":0,"p":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":8}}}},"i":{"docs":{},"df":0,"c":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}},"h":{"docs":{},"df":0,"c":{"docs":{},"df":0,"p":{"docs":{},"df":0,"c":{"docs":{},"df":0,"d":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}},"f":{"docs":{},"df":0,"f":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"r":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":10,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":3,"i":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}}},"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"s":{"docs":{},"df":0,"2":{"docs":{},"df":0,"1":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}}}}}}},"p":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1},"r":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772}},"df":1,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951}},"df":1}}}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2,"l":{"docs":{},"df":0,"i":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":7}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":2.23606797749979},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.23606797749979},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":9}}}}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951}},"df":3}}},"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0}},"df":2}}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"/about/":{"tf":1.4142135623730951}},"df":1}}}},"v":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772}},"df":2,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}},"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2}}}},"k":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1},"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0}},"df":2}}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"/about/":{"tf":2.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5}}}},"o":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":6}}}},"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}},"v":{"docs":{},"df":0,"e":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}},"y":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}},"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"o":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":6,"a":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1},"c":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951}},"df":1,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":4}}}}}},"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}}}},"g":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/about/":{"tf":1.0}},"df":1}}},"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.0}},"df":7,"/":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"/about/":{"tf":1.0}},"df":1}}}}}},"e":{"docs":{"/about/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":8}},"w":{"docs":{},"df":0,"n":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":3,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":2}}}}}},"z":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"k":{"docs":{},"df":0,"g":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"w":{"docs":{},"df":0,"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":2}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":1}}},"i":{"docs":{},"df":0,"v":{"docs":{},"df":0,"e":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"p":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}},"e":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":7},"m":{"docs":{},"df":0,"p":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}},"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"e":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":5}}},"y":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":2.449489742783178}},"df":4}},"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":3,"e":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":2}}}}},"s":{"docs":{"/about/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.4142135623730951}},"df":2,"i":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":4,"e":{"docs":{},"df":0,"r":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":6}},"l":{"docs":{},"df":0,"i":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":5}}}}},"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"y":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2}}}}}}}},"d":{"docs":{"/news/editors-glibc-232/":{"tf":1.7320508075688772},"/news/improved-porting-with-libbsd/":{"tf":1.0}},"df":2,"g":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1},"i":{"docs":{},"df":0,"t":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0}},"df":1,"o":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":3.1622776601683795},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.0}},"df":4}}}}},"e":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0}},"df":3},"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":4}}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{"/news/more-pkgsrc/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":2}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951}},"df":5}}}}},"g":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}}},"g":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2},"p":{"docs":{},"df":0,"h":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"f":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/about/":{"tf":1.0},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4}}}},"v":{"docs":{},"df":0,"i":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2}},"b":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}},"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"y":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":2}}}},"u":{"docs":{},"df":0,"l":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951}},"df":3}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2}}},"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951}},"df":1},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5}}}},"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"b":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}},"d":{"docs":{"/about/":{"tf":1.7320508075688772},"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772},"/news/website-redesign/":{"tf":1.0}},"df":7,"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}},"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}},"j":{"docs":{},"df":0,"o":{"docs":{},"df":0,"y":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0}},"df":2}}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":4}}}},"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":2}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":7,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2}}}}}},"v":{"docs":{},"df":0,":":{"docs":{},"df":0,":":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"g":{"docs":{},"df":0,"s":{"docs":{},"df":0,"(":{"docs":{},"df":0,")":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}},"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":5}}}}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"f":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":4}}}}}},"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.0}},"df":5}}}},"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}},"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{"/about/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0}},"df":2}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1},"t":{"docs":{},"df":0,"i":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}}}},"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1,"c":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":2}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"n":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":10,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1,"u":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":3}}},"r":{"docs":{},"df":0,"y":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"n":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":3}},"t":{"docs":{},"df":0,"h":{"docs":{"/about/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":8}},"w":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}}}}},"x":{"docs":{},"df":0,"/":{"docs":{},"df":0,"v":{"docs":{},"df":0,"i":{"docs":{"/news/editors-glibc-232/":{"tf":1.7320508075688772}},"df":1}}},"a":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}},"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1,"l":{"docs":{},"df":0,"i":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951}},"df":4}}}},"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":7}}}},"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}}}},"l":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":1},"p":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":5,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}}},"i":{"docs":{},"df":0,"s":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1},"t":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"d":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}},"e":{"docs":{},"df":0,"c":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1,"u":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951}},"df":4}}},"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4}}}}},"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.23606797749979},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":7}},"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951}},"df":2}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/about/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.7320508075688772},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":9}},"n":{"docs":{},"df":0,"s":{"docs":{"/about/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2}},"r":{"docs":{},"df":0,"i":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":4,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"/about/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0}},"df":2}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}}}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}},"o":{"docs":{},"df":0,"r":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"t":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":3},"s":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":2},"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}},"r":{"docs":{},"df":0,"a":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":6},"e":{"docs":{},"df":0,"m":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":4}}}}}},"f":{"docs":{},"df":0,"%":{"docs":{},"df":0,"$":{"docs":{},"df":0,"k":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}}}}},"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":9,"o":{"docs":{},"df":0,"r":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2}}}},"d":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1},"i":{"docs":{},"df":0,"l":{"docs":{"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":6,"u":{"docs":{},"df":0,"r":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951}},"df":3}}},"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":4,"l":{"docs":{},"df":0,"i":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":4}}}},"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"s":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951}},"df":1}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}}}},"n":{"docs":{"/news/more-pkgsrc/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/website-redesign/":{"tf":1.0}},"df":4},"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}},"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":3,"e":{"docs":{},"df":0,"r":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":6}}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2}}},"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2,"i":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}}}},"d":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.23606797749979},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.449489742783178},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":8}}}},"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1,"/":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}}}}}}}},"e":{"docs":{},"df":0,"l":{"docs":{"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":3}},"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"w":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":2.0},"/news/editors-glibc-232/":{"tf":2.449489742783178},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.7320508075688772},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772},"/news/website-redesign/":{"tf":1.7320508075688772}},"df":14}},"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"n":{"docs":{"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":1}}}}},"i":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1,"l":{"docs":{},"df":0,"e":{"docs":{"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":3.4641016151377544},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":3.3166247903554},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":4.69041575982343},"/news/some-more-home-cooking/":{"tf":1.0}},"df":11,"'":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1},".":{"docs":{},"df":0,"c":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"s":{"docs":{},"df":0,"y":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951}},"df":4}}}}}}},"l":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":4}},"d":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.7320508075688772},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":8,"e":{"docs":{},"df":0,"r":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}},"e":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":6},"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951}},"df":1}}},"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/website-redesign/":{"tf":1.0}},"df":5}}}},"r":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"x":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":10}}},"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}},"t":{"docs":{"/about/":{"tf":1.0}},"df":1},"x":{"docs":{"/about/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":2.449489742783178},"/news/editors-glibc-232/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":7,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":4},"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951}},"df":1}}}}},"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"g":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}},"s":{"docs":{},"df":0,"h":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}},"x":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"/news/more-pkgsrc/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":4}}}}},"o":{"docs":{},"df":0,"w":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":3}}},"n":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1},"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{"/about/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"/about/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":9}}}},"n":{"docs":{},"df":0,"d":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}}},"m":{"docs":{"/news/editors-glibc-232/":{"tf":2.6457513110645907},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":3,"a":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":2.0}},"df":5}},"e":{"docs":{},"df":0,"r":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}},"u":{"docs":{},"df":0,"n":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0}},"df":1}}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}}},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":6,"a":{"docs":{},"df":0,"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"r":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"f":{"docs":{},"df":0,"(":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}}}}}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"k":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951}},"df":1}}}}}},"n":{"docs":{},"df":0,"k":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}},"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}},"e":{"docs":{},"df":0,"e":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951}},"df":1,"b":{"docs":{},"df":0,"s":{"docs":{},"df":0,"d":{"docs":{"/about/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.7320508075688772},"/news/more-pkgsrc/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":9}}},"l":{"docs":{},"df":0,"i":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"h":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}},"z":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}},"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"/about/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":4}}}}}}},"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}},"l":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":8,"i":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4}}},"n":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0}},"df":1,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":2.449489742783178},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.23606797749979},"/news/improved-porting-with-libbsd/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":3.605551275463989},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.449489742783178},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":3.7416573867739413}},"df":13}}}}}},"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":3,"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}}}}}},"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":6}}},"z":{"docs":{},"df":0,"z":{"docs":{},"df":0,"i":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}}}},"g":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951}},"df":1,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}},"v":{"docs":{},"df":0,"e":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}},"w":{"docs":{},"df":0,"k":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}},"c":{"docs":{},"df":0,"c":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":6,"3":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"m":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1},"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.7320508075688772}},"df":11}}},"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":8,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":1}}},"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":1}}},"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":1}}}}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.7320508075688772}},"df":1,"2":{"docs":{},"df":0,"1":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}}}}}},"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}}}}},"g":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1},"m":{"docs":{},"df":0,"p":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}},"t":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2},"v":{"docs":{},"df":0,"e":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":9,"n":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0}},"df":1}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"e":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"b":{"docs":{"/news/cross-build-progress/":{"tf":1.7320508075688772}},"df":1,"c":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":7,"2":{"docs":{},"df":0,"1":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}},"m":{"docs":{},"df":0,"p":{"docs":{"/news/more-pkgsrc/":{"tf":1.7320508075688772}},"df":1}},"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{"/about/":{"tf":1.0}},"df":1}}},"u":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":3.4641016151377544},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":3.872983346207417},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":3.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.7320508075688772},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.6457513110645907},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":3.0}},"df":12,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":3.1622776601683795},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":3.4641016151377544},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":3.0}},"df":13,"a":{"docs":{},"df":0,"l":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":3}},"o":{"docs":{},"df":0,"d":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":2.0}},"df":7,"b":{"docs":{},"df":0,"y":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1},"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"n":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":6,"e":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":2}},"l":{"docs":{},"df":0,"i":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}},"p":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951}},"df":3}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"p":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}},"w":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1,"n":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.4142135623730951}},"df":2}}},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"t":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1},"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1},"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"d":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":3}},"l":{"docs":{},"df":0,"f":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}}}},"n":{"docs":{},"df":0,"d":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"k":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}},"l":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772}},"df":1,"e":{"docs":{},"df":0,"r":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}},"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}},"i":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}},"r":{"docs":{"/about/":{"tf":1.0}},"df":1,"d":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":5,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951}},"df":1}}}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.0},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":2.0},"/news/cross-build-progress/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":4}}}}},"v":{"docs":{},"df":0,"e":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":5,"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":3.1622776601683795},"/news/editors-glibc-232/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772},"/news/improved-porting-with-libbsd/":{"tf":1.4142135623730951}},"df":4,"s":{"docs":{},"df":0,"2":{"docs":{},"df":0,"1":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}}}},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}}},"i":{"docs":{},"df":0,"r":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772}},"df":1}}}}}},"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}},"p":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":4}},"n":{"docs":{},"df":0,"c":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"e":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5,"'":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":3}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}},"y":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}},"h":{"docs":{},"df":0,"l":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":4,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"k":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":3}}}}}}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"k":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}}}}}},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"k":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.0}},"df":1}}}}}}}},"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"k":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"p":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}},"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951}},"df":1}}}}}}},"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}}}}}}},"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2,"'":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":3,"i":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/about/":{"tf":1.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":2,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"k":{"docs":{"/about/":{"tf":1.0},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":2.449489742783178},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.449489742783178},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.7320508075688772},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":3.0},"/news/some-more-home-cooking/":{"tf":2.449489742783178},"/news/website-redesign/":{"tf":1.0}},"df":17,"e":{"docs":{},"df":0,"r":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0}},"df":2,"'":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2}}}}}}}}}},"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"g":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}}},"l":{"docs":{},"df":0,"d":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1},"e":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"e":{"docs":{"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":3,"b":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0}},"df":2}}}},"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"n":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}}}}},"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0}},"df":2,"l":{"docs":{},"df":0,"i":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}}},"p":{"docs":{},"df":0,"e":{"docs":{"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":3}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"z":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":2.23606797749979},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":6,"i":{"docs":{},"df":0,"d":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}},"u":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0}},"df":2},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}}}}},"t":{"docs":{},"df":0,"m":{"docs":{},"df":0,"l":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}}},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":2}}},"g":{"docs":{},"df":0,"e":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":2},"o":{"docs":{"/news/website-redesign/":{"tf":2.0}},"df":1}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":2}}},"r":{"docs":{},"df":0,"d":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"'":{"docs":{},"df":0,"d":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1},"l":{"docs":{},"df":0,"l":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":5}},"m":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":2.23606797749979}},"df":11},"v":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":10}},"4":{"docs":{},"df":0,"8":{"docs":{},"df":0,"6":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}},"d":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"a":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":4},"n":{"docs":{},"df":0,"t":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}},"e":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1},"f":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2}}},"e":{"docs":{},"df":0,"q":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"q":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}},"g":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":3}}}},"l":{"docs":{},"df":0,"l":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1,"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2}}}}}},"m":{"docs":{},"df":0,"o":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":4.58257569495584},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.8284271247461903},"/news/some-more-home-cooking/":{"tf":3.1622776601683795},"/news/website-redesign/":{"tf":1.0}},"df":10}}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/editors-glibc-232/":{"tf":2.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.23606797749979},"/news/improved-porting-with-libbsd/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":1.0}},"df":11}},"s":{"docs":{},"df":0,"s":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":1}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":2}}},"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":4}}},"o":{"docs":{},"df":0,"v":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772}},"df":4}}}}},"n":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1,"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"l":{"docs":{},"df":0,"u":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1,"d":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.7320508075688772},"/news/cross-build-progress/":{"tf":2.0},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":3.3166247903554},"/news/improved-porting-with-libbsd/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":2.449489742783178},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":3.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":16},"s":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":1}}},"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}}},"r":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":4}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":5,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/about/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2}}}}}}}}},"u":{"docs":{},"df":0,"r":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}},"d":{"docs":{},"df":0,"e":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0}},"df":2,"n":{"docs":{},"df":0,"t":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}},"x":{"docs":{"/news/website-redesign/":{"tf":1.4142135623730951}},"df":1}}},"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}}},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}},"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951}},"df":1}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":5}}}}}}}}},"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}}}}}}}}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}}},"k":{"docs":{},"df":0,"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"p":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2}},"p":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.23606797749979},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.449489742783178},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":4.123105625617661},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":10,"l":{"docs":{},"df":0,"_":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"x":{"docs":{},"df":0,"}":{"docs":{},"df":0,"/":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"1":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"df":0,"c":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":3}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.23606797749979}},"df":6}}},"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2}}}}}},"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2,"e":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":3}},"l":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951}},"df":1},"n":{"docs":{},"df":0,"d":{"docs":{"/about/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":3},"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":3,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":3}}}}}}}},"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2}},"e":{"docs":{},"df":0,"r":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}},"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"n":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":3,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}}}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2,"o":{"docs":{},"df":0,"r":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":3}}}}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"u":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":3}}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":2}}}}},"o":{"docs":{},"df":0,"k":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1},"l":{"docs":{},"df":0,"v":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":1.0}},"df":6}}}}},"o":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"2":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}}}}},"s":{"docs":{},"df":0,"a":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1},"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"f":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":5}}},"s":{"docs":{},"df":0,"u":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":10}}},"t":{"docs":{},"df":0,"'":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/cross-build-progress/":{"tf":2.449489742783178},"/news/editors-glibc-232/":{"tf":2.23606797749979},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":2.6457513110645907},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":2.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.0},"/news/some-more-home-cooking/":{"tf":2.0},"/news/website-redesign/":{"tf":1.0}},"df":11},"e":{"docs":{},"df":0,"r":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"f":{"docs":{"/about/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":7}}}}}},"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"k":{"docs":{},"df":0,"y":{"docs":{},"df":0,"l":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"b":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1},"y":{"docs":{},"df":0,"'":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951}},"df":1}}},"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":2}}}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{"/about/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2}}}}}}},"k":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1},"p":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":4}},"p":{"docs":{},"df":0,"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":5}}}},"y":{"docs":{},"df":0,"w":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951}},"df":1}}}}}},"i":{"docs":{},"df":0,"d":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1},"n":{"docs":{},"df":0,"d":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4}}},"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.23606797749979},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":4,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"g":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"n":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":3}}}}},"l":{"docs":{},"df":0,"a":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1,"b":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"c":{"docs":{},"df":0,"k":{"docs":{"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":3}},"g":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1},"n":{"docs":{},"df":0,"d":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1},"g":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.8284271247461903},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772},"/news/website-redesign/":{"tf":1.0}},"df":5}}}}},"p":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":2}}}},"r":{"docs":{},"df":0,"g":{"docs":{"/news/editors-glibc-232/":{"tf":1.7320508075688772},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":7,"e":{"docs":{},"df":0,"r":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}},"s":{"docs":{},"df":0,"t":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1,"l":{"docs":{},"df":0,"i":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"e":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":2,"r":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0}},"df":3}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":3}}}},"y":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":2}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":2}}}}},"d":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1,"d":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1},"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1},"n":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1},"r":{"docs":{},"df":0,"n":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":6}},"v":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2}},"d":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0}},"df":1},"f":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":2}},"g":{"docs":{},"df":0,"w":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"k":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}}}},"n":{"docs":{"/news/website-redesign/":{"tf":1.7320508075688772}},"df":1,"g":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":2}}}},"s":{"docs":{},"df":0,"s":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5,"e":{"docs":{},"df":0,"n":{"docs":{"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":1}}}},"t":{"docs":{},"df":0,"'":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":3}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.449489742783178},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2}}}}}},"i":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1,"b":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951}},"df":2,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}},"b":{"docs":{},"df":0,"s":{"docs":{},"df":0,"d":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":2.0}},"df":2}},"z":{"docs":{},"df":0,"2":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}},"c":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.6457513110645907},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":5},"d":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951}},"df":1}}},"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}},"g":{"docs":{},"df":0,"c":{"docs":{},"df":0,"c":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/cross-build-progress/":{"tf":2.23606797749979},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.449489742783178},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":3.1622776601683795},"/news/website-redesign/":{"tf":1.0}},"df":12}}},"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"l":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":2.449489742783178}},"df":1}}}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"d":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951}},"df":2,"c":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":3}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"y":{"docs":{},"df":0,"l":{"docs":{"/news/cross-build-progress/":{"tf":1.7320508075688772}},"df":1}}}}}}},"i":{"docs":{},"df":0,"r":{"docs":{},"df":0,"p":{"docs":{},"df":0,"c":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}},"u":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}},"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4}}}},"f":{"docs":{},"df":0,"e":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,"w":{"docs":{},"df":0,"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}}}}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":4}}},"n":{"docs":{},"df":0,"e":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.6457513110645907},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":2.8284271247461903}},"df":8},"k":{"docs":{"/news/cross-build-progress/":{"tf":2.23606797749979},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.23606797749979},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":7,"e":{"docs":{},"df":0,"r":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"x":{"docs":{"/about/":{"tf":2.23606797749979},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":2.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.7320508075688772},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.23606797749979},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.449489742783178},"/news/some-more-home-cooking/":{"tf":2.449489742783178},"/news/website-redesign/":{"tf":1.0}},"df":15}}},"s":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5,"e":{"docs":{},"df":0,"r":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"e":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2}},"t":{"docs":{},"df":0,"l":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":8}}}},"k":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}},"l":{"docs":{},"df":0,"d":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1},"v":{"docs":{},"df":0,"m":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":2,"/":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951}},"df":1}}}}}}}}},"n":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1},"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}},"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":3}}},"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":4},"t":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772}},"df":1}}},"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.23606797749979}},"df":2},"n":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"n":{"docs":{},"df":0,"g":{"docs":{"/about/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.7320508075688772}},"df":8,"a":{"docs":{},"df":0,"n":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}},"e":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2}}}},"o":{"docs":{},"df":0,"k":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":2.0},"/news/website-redesign/":{"tf":2.449489742783178}},"df":8,"u":{"docs":{},"df":0,"p":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"p":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":2}},"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.7320508075688772}},"df":9},"v":{"docs":{},"df":0,"e":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}},"w":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":3,"e":{"docs":{},"df":0,"r":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1},"s":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.6457513110645907}},"df":2},"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2,";":{"docs":{},"df":0,"n":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,".":{"docs":{},"df":0,"s":{"docs":{},"df":0,"r":{"docs":{},"df":0,"@":{"docs":{},"df":0,"g":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,".":{"docs":{},"df":0,"h":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}}}}}}}}},"u":{"docs":{},"df":0,"d":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}}},"x":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}},"m":{"docs":{},"df":0,"4":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2,"2":{"docs":{},"df":0,"1":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}},"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.7320508075688772},"/news/website-redesign/":{"tf":1.0}},"df":5}}},"r":{"docs":{},"df":0,"o":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951}},"df":3}}},"d":{"docs":{},"df":0,"e":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5}},"g":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"d":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":2}}}}}},"i":{"docs":{},"df":0,"l":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0}},"df":2},"n":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":5,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/about/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":7}}},"e":{"docs":{},"df":0,"n":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}},"j":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":5}}},"k":{"docs":{},"df":0,"e":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.6457513110645907},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":4.795831523312719},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.449489742783178},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":3.1622776601683795},"/news/some-more-home-cooking/":{"tf":2.23606797749979},"/news/website-redesign/":{"tf":1.0}},"df":13,"2":{"docs":{},"df":0,"1":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}},"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":2.449489742783178},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":3.0},"/news/more-pkgsrc/":{"tf":2.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":6}}}}},"n":{"docs":{"/about/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":5,"/":{"docs":{},"df":0,"r":{"docs":{},"df":0,"p":{"docs":{},"df":0,"c":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,".":{"docs":{},"df":0,"1":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}}}}},"1":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1},"8":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1},"a":{"docs":{},"df":0,"g":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.449489742783178}},"df":4}},"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}},"i":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":6,"p":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":1}}}},"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772}},"df":3}}}},"r":{"docs":{},"df":0,"k":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"n":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}}},"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}}}},"s":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2}},"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2}},"e":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1,"r":{"docs":{},"df":0,"i":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0}},"df":2}}},"y":{"docs":{},"df":0,"b":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}},"c":{"docs":{},"df":0,"u":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}},"d":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"k":{"docs":{"/news/website-redesign/":{"tf":2.8284271247461903}},"df":1}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":6,"t":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2,"i":{"docs":{},"df":0,"m":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":3}}}},"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0}},"df":1}}}},"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951}},"df":5}}}},"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":2}}}},"u":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"g":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}},"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772}},"df":1}}}},"o":{"docs":{},"df":0,"n":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0}},"df":2}},"s":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"g":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":3}},"i":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951}},"df":3}}}},"z":{"docs":{},"df":0,"z":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/website-redesign/":{"tf":2.0}},"df":1}}}}}}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}},"d":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}},"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"/about/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}}}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}},"e":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1},"i":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1,"m":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":2,"u":{"docs":{},"df":0,"m":{"docs":{"/about/":{"tf":1.0}},"df":1}}},"s":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"r":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}},"u":{"docs":{},"df":0,"t":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"o":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}},"s":{"docs":{},"df":0,"c":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951}},"df":1}}}}}}},"s":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.23606797749979},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}},"u":{"docs":{},"df":0,"s":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}},"x":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}},"k":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.23606797749979},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"/news/some-more-home-cooking/":{"tf":2.23606797749979}},"df":1}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":1}}}}},"s":{"docs":{},"df":0,"h":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":4},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":1}}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772}},"df":1}}}}},"o":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1,"d":{"docs":{},"df":0,"e":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4,"r":{"docs":{},"df":0,"n":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":2}},"s":{"docs":{},"df":0,"t":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"f":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1,"i":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"l":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":2,"a":{"docs":{},"df":0,"r":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}},"r":{"docs":{},"df":0,"e":{"docs":{"/about/":{"tf":1.0},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":2.23606797749979},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":2.449489742783178},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.23606797749979},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":2.23606797749979},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":2.6457513110645907},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":16},"n":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":5}}}},"v":{"docs":{},"df":0,"e":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":6}}},"s":{"docs":{},"df":0,"g":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1,"f":{"docs":{},"df":0,"m":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}},"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":14},"k":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}},"d":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}},"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"y":{"docs":{},"df":0,"t":{"docs":{"/news/some-more-home-cooking/":{"tf":2.0}},"df":1}}},"p":{"docs":{},"df":0,"l":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5}}}}},"s":{"docs":{},"df":0,"l":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":2}}},"y":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"f":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4}}}}}},"n":{"docs":{"/news/website-redesign/":{"tf":2.0}},"df":1,"a":{"docs":{},"df":0,"d":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1},"m":{"docs":{},"df":0,"e":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":3}},"n":{"docs":{},"df":0,"o":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":2}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"v":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":2.0}},"df":3}},"u":{"docs":{},"df":0,"r":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}}},"w":{"docs":{},"df":0,"k":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}},"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"2":{"docs":{},"df":0,"1":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":4,"l":{"docs":{},"df":0,"i":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}},"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}},"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951}},"df":1,"l":{"docs":{},"df":0,"i":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}}}}},"e":{"docs":{},"df":0,"d":{"docs":{"/about/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.23606797749979},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.7320508075688772}},"df":11}},"s":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2}},"t":{"docs":{},"df":0,"b":{"docs":{},"df":0,"s":{"docs":{},"df":0,"d":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":6}}},"w":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"k":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":1}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":6,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2}}}}}}}}}},"w":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.23606797749979},"/news/some-more-home-cooking/":{"tf":1.0}},"df":8,"e":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.7320508075688772},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772}},"df":4},"s":{"docs":{},"df":0,"t":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951}},"df":1}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":1}}}},"x":{"docs":{},"df":0,"t":{"docs":{"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":3}}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}},"g":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772}},"df":1}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}}}}},"n":{"docs":{},"df":0,"j":{"docs":{},"df":0,"a":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0}},"df":2}}}},"l":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1},"o":{"docs":{},"df":0,"_":{"docs":{},"df":0,"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"j":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}}}},"n":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.449489742783178},"/news/some-more-home-cooking/":{"tf":1.0}},"df":3,"e":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":3}},"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":2}}},"e":{"docs":{"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":4},"h":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":3},"i":{"docs":{},"df":0,"c":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":2}}},"w":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":2.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.23606797749979},"/news/improved-porting-with-libbsd/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":2.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.23606797749979},"/news/some-more-home-cooking/":{"tf":2.449489742783178},"/news/website-redesign/":{"tf":2.0}},"df":15,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}},"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":10}}},"e":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":3}},"f":{"docs":{},"df":0,"m":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2}}}}}},"v":{"docs":{},"df":0,"i":{"docs":{"/news/editors-glibc-232/":{"tf":2.23606797749979}},"df":1}}},"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"j":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{},"df":0,"}":{"docs":{},"df":0,"/":{"docs":{},"df":0,".":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}}}}},"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}}}}}}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951}},"df":2}}}},"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}}}},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}}},"c":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":2}}}},"d":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772}},"df":1},"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}},"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":2}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":3}}}}},"k":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1},"l":{"docs":{},"df":0,"d":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":5,")":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}}},"e":{"docs":{},"df":0,"r":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":3}},"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}},"n":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":2.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":2.0},"/news/cross-build-progress/":{"tf":2.23606797749979},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.7320508075688772},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.8284271247461903},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":3.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":3.1622776601683795},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.7320508075688772}},"df":13,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":4,"b":{"docs":{},"df":0,"s":{"docs":{},"df":0,"d":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":5}}},"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"l":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772}},"df":1}}}},"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":3}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}},"s":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"n":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":2.6457513110645907},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.8284271247461903},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":2.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":10}}}}},"r":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":5}}},"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/about/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":2.23606797749979},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":8}}}}},"s":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2,"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}}}},"u":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.449489742783178},"/news/website-redesign/":{"tf":2.0}},"df":9,"a":{"docs":{},"df":0,"g":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951}},"df":1}}},"p":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":1.7320508075688772},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":8,"a":{"docs":{},"df":0,"l":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0}},"df":2}},"d":{"docs":{},"df":0,"u":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}},"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":3}}}},"k":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}},"w":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}}}},"w":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}}}}}}}},"p":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"g":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":2.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.23606797749979},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":3.4641016151377544},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.8284271247461903},"/news/reconfiguring-the-build-process/":{"tf":2.6457513110645907},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":5.656854249492381},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":15,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}}}}}}},"g":{"docs":{},"df":0,"e":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":2.0}},"df":3,"r":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"n":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}}}}}}}}},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"r":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}},"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.7320508075688772},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5,"i":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2,"a":{"docs":{},"df":0,"l":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}},"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2,"l":{"docs":{},"df":0,"i":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":3}}}}}}}}}},"s":{"docs":{},"df":0,"s":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":5,"3":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}},"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":4}},"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/about/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":7,"2":{"docs":{},"df":0,"1":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}},"h":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":5},"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}},"u":{"docs":{},"df":0,"s":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}},"x":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772}},"df":4},"y":{"docs":{"/about/":{"tf":1.0}},"df":1}},"c":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"2":{"docs":{"/news/cross-build-progress/":{"tf":1.7320508075688772}},"df":1}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1},"s":{"docs":{},"df":0,"i":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":4}}},"r":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":3,"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2,"l":{"docs":{},"df":0,"i":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951}},"df":2}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2}}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"l":{"docs":{"/news/cross-build-progress/":{"tf":2.23606797749979},"/news/reconfiguring-the-build-process/":{"tf":1.7320508075688772}},"df":2,"2":{"docs":{},"df":0,"1":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":2}}},"u":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}},"s":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}},"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}}},"g":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951}},"df":1},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":3}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}}},"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}}}}}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"y":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2,"c":{"docs":{},"df":0,"k":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1},"o":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"e":{"docs":{},"df":0,"c":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":4}},"n":{"docs":{},"df":0,"k":{"docs":{},"df":0,"i":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951}},"df":1}}},"p":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1,"e":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}},"s":{"docs":{},"df":0,"s":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}},"k":{"docs":{},"df":0,"g":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.23606797749979},"/news/more-pkgsrc/":{"tf":2.449489742783178},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":2.6457513110645907},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772}},"df":4}}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":8}},"i":{"docs":{},"df":0,"n":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}},"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":3},"t":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}},"y":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":3}},"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":1}}},"u":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.23606797749979},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":3.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":10}}},"k":{"docs":{},"df":0,"e":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"r":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":2.0},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.23606797749979},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":2.23606797749979},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.23606797749979},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.6457513110645907},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":3.0},"/news/some-more-home-cooking/":{"tf":2.6457513110645907}},"df":11,"'":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1},"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":6}}}}},"s":{"docs":{},"df":0,"e":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1},"i":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1},"x":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.23606797749979},"/news/more-pkgsrc/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":10}}}},"t":{"docs":{"/news/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":5}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.23606797749979}},"df":3}}}}},"w":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951}},"df":2}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":4}}}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"d":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}},"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2}}}}},"f":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":4}},"i":{"docs":{},"df":0,"x":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":3}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2}},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":2.0}},"df":8}},"r":{"docs":{},"df":0,"v":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":2.0}},"df":1}}}},"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":4}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":3,"s":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":4}}}}}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}},"e":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{"/about/":{"tf":1.0}},"df":1}}}},"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":4,"l":{"docs":{},"df":0,"n":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951}},"df":1}}}}}},"o":{"docs":{},"df":0,"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":4}}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772}},"df":4,"a":{"docs":{},"df":0,"t":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4}}}}}},"c":{"docs":{},"df":0,"e":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1,"s":{"docs":{},"df":0,"s":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":2.0},"/news/website-redesign/":{"tf":1.0}},"df":9,"o":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.0},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":5}}}}}},"d":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0}},"df":1}}},"g":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.0},"/news/improved-porting-with-libbsd/":{"tf":1.7320508075688772},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":3.1622776601683795},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.23606797749979},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":2.449489742783178}},"df":13,"'":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1},"m":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772}},"df":1}}},"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2,"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}}}}},"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}}},"j":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":2.23606797749979},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":10,"'":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1},"s":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2}}},"n":{"docs":{},"df":0,"e":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":1}},"t":{"docs":{},"df":0,"o":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1,".":{"docs":{},"df":0,"h":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}},"v":{"docs":{},"df":0,"e":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":3,"n":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}},"i":{"docs":{},"df":0,"d":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":7},"s":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"u":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":1}}}}},"t":{"docs":{},"df":0,"x":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951}},"df":1}}}},"l":{"docs":{},"df":0,"l":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.7320508075688772},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":7}},"r":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":3}}}},"s":{"docs":{},"df":0,"h":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":5}},"t":{"docs":{"/about/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4}},"y":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":2.6457513110645907}},"df":3,"2":{"docs":{},"df":0,"1":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}}}}}},"q":{"docs":{},"df":0,"3":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1},"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"u":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":2.449489742783178},"/news/cross-build-progress/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":3}}},"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"i":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":2,"l":{"docs":{},"df":0,"i":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":3}}}},"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":2.6457513110645907},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":2.0},"/news/website-redesign/":{"tf":1.0}},"df":12}},"o":{"docs":{},"df":0,"t":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0}},"df":1}}}},"r":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"b":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"c":{"docs":{},"df":0,"e":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}},"n":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772}},"df":2,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.0}},"df":4,"l":{"docs":{},"df":0,"i":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}},"g":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"s":{"docs":{},"df":0,"p":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}}}}},"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}},"e":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}},"d":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":2.449489742783178}},"df":4,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}},"m":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}},"l":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"z":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":2}},"l":{"docs":{},"df":0,"i":{"docs":{"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/website-redesign/":{"tf":1.7320508075688772}},"df":6}}},"s":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":6}}}},"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"/about/":{"tf":1.0}},"df":1}}}}},"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/":{"tf":1.0},"/news/cross-build-progress/":{"tf":2.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772}},"df":4}},"p":{"docs":{},"df":0,"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":2}}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}}},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"/about/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"c":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1,"t":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951}},"df":1}},"n":{"docs":{},"df":0,"d":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}},"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}},"e":{"docs":{},"df":0,"r":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}},"i":{"docs":{},"df":0,"n":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}}},"u":{"docs":{},"df":0,"s":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":2}}},"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"/about/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":5}}},"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1,"l":{"docs":{},"df":0,"i":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}}}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}},"l":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772}},"df":3,"a":{"docs":{},"df":0,"t":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"/about/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":2.23606797749979},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":7}}},"i":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}},"b":{"docs":{},"df":0,"c":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.7320508075688772}},"df":1}}},"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":1}}},"o":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1},"v":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":2.0}},"df":5}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/website-redesign/":{"tf":1.4142135623730951}},"df":1}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.23606797749979},"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":9}}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":2.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":2.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.8284271247461903}},"df":9}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}}},"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}},"i":{"docs":{},"df":0,"d":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":2}}}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/about/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":3}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}}},"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":4,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"/news/more-pkgsrc/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772}},"df":2}}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":6}},"m":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2}}}},"v":{"docs":{"/news/some-more-home-cooking/":{"tf":2.23606797749979}},"df":1,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":2.0}},"df":3}}},"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}},"w":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"k":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":2}},"o":{"docs":{},"df":0,"t":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0}},"df":2}}}}},"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":2.23606797749979}},"df":4}}},"o":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1},"s":{"docs":{},"df":0,"c":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.23606797749979}},"df":2,"v":{"docs":{},"df":0,"6":{"docs":{},"df":0,"4":{"docs":{"/about/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951}},"df":3}}}},"k":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"m":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"/about/":{"tf":1.0}},"df":1}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}}},"l":{"docs":{},"df":0,"l":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951}},"df":2}},"o":{"docs":{},"df":0,"m":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1},"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951}},"df":3,"f":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}},"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951}},"df":1}}}},"t":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"n":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}}},"p":{"docs":{},"df":0,"c":{"docs":{},"df":0,"_":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}}}}}},"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.0},"/news/more-pkgsrc/":{"tf":2.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951}},"df":3,".":{"docs":{},"df":0,"1":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"v":{"docs":{},"df":0,"c":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}}},"i":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":3,"4":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}},"m":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":1}},"t":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"i":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}},"n":{"docs":{"/about/":{"tf":1.0},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":2.6457513110645907},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.7320508075688772},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":2.0}},"df":14,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":3}}}},"s":{"docs":{},"df":0,"t":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":3.872983346207417},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":4.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":2.6457513110645907},"/news/website-redesign/":{"tf":2.0}},"df":4,"/":{"docs":{},"df":0,"b":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}}},"c":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951}},"df":3},"u":{"docs":{},"df":0,"p":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951}},"df":1,"_":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}}}}}}}}},"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"f":{"docs":{},"df":0,"e":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2,"t":{"docs":{},"df":0,"i":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2}}}},"m":{"docs":{},"df":0,"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"4":{"docs":{"/news/more-pkgsrc/":{"tf":2.6457513110645907}},"df":1}}},"e":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":10}},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"x":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}}}}},"v":{"docs":{},"df":0,"e":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":2}}},"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":1.0}},"df":3}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"/":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}}}}}}}},"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":2}},"r":{"docs":{},"df":0,"c":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":1}}}}}},"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"n":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1},"p":{"docs":{},"df":0,"e":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":2.0}},"df":4}}}},"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/more-pkgsrc/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.23606797749979},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":6}}}}},"d":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":3}}}},"c":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":4}}},"u":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5}}},"d":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":3.4641016151377544}},"df":2},"e":{"docs":{"/about/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772},"/news/website-redesign/":{"tf":1.0}},"df":10,"e":{"docs":{},"df":0,"d":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}},"m":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":4,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}},"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951}},"df":1}},"g":{"docs":{},"df":0,"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951}},"df":1}}}}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}},"f":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":3},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"u":{"docs":{},"df":0,"x":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772}},"df":1}}}},"l":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"d":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1},"s":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":3}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":4}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"i":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1},"v":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":2,"e":{"docs":{},"df":0,"r":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":2}}}},"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.7320508075688772}},"df":11,"m":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":1}}}}}}},"t":{"docs":{},"df":0,"l":{"docs":{"/news/website-redesign/":{"tf":1.4142135623730951}},"df":1}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":5}}}},"h":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2}},"r":{"docs":{},"df":0,"e":{"docs":{"/news/cross-build-progress/":{"tf":2.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4}}},"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":2}},"l":{"docs":{},"df":0,"l":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.23606797749979}},"df":5}}},"i":{"docs":{},"df":0,"p":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1},"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":4,"a":{"docs":{},"df":0,"g":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}},"w":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951}},"df":1}}},"u":{"docs":{},"df":0,"f":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1,"f":{"docs":{},"df":0,"l":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}},"g":{"docs":{},"df":0,"n":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1,"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":3,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}}}}}}}}}},"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":5,"l":{"docs":{},"df":0,"i":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"l":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":9,"e":{"docs":{},"df":0,"r":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":4}},"i":{"docs":{"/news/more-pkgsrc/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":4,"c":{"docs":{"/about/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2},"f":{"docs":{},"df":0,"i":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}}},"n":{"docs":{},"df":0,"e":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1},"g":{"docs":{},"df":0,"l":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4}}},"p":{"docs":{},"df":0,"e":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"e":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/website-redesign/":{"tf":2.6457513110645907}},"df":2},"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4}}}},"x":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":1},"z":{"docs":{},"df":0,"e":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":3}}},"k":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1},"p":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":5}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{},"df":0,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}}}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2}}}}},"m":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"w":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":3,"e":{"docs":{},"df":0,"r":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":7,"e":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":4}}}}},"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2}}}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":1}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"p":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}}},"o":{"docs":{},"df":0,"c":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1},"f":{"docs":{},"df":0,"t":{"docs":{},"df":0,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":2.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":10}}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951}},"df":1}}},"d":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1},"e":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1},"i":{"docs":{},"df":0,"d":{"docs":{"/about/":{"tf":1.4142135623730951}},"df":1}},"u":{"docs":{},"df":0,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":3}},"v":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"h":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":7},"i":{"docs":{},"df":0,"m":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}},"w":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":2.23606797749979},"/news/website-redesign/":{"tf":1.0}},"df":5}}}}}},"o":{"docs":{},"df":0,"n":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":3}},"r":{"docs":{},"df":0,"t":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"r":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1,"c":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":2.23606797749979},"/news/editors-glibc-232/":{"tf":3.605551275463989},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.449489742783178},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.8284271247461903},"/news/improved-porting-with-libbsd/":{"tf":2.0},"/news/more-pkgsrc/":{"tf":2.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.449489742783178},"/news/some-more-home-cooking/":{"tf":2.0}},"df":13}}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"'":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1},"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":3}},"f":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":4,"i":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.449489742783178},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":4}}}},"e":{"docs":{},"df":0,"d":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":2}},"n":{"docs":{},"df":0,"d":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1},"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{},"df":0,"l":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2}}}},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}}}},"q":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"c":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951}},"df":1}},"s":{"docs":{},"df":0,"g":{"docs":{},"df":0,"'":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"/about/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951}},"df":2}},"c":{"docs":{},"df":0,"k":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":4}},"g":{"docs":{},"df":0,"e":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"p":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}}},"r":{"docs":{},"df":0,"d":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":9}}},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}}}},"r":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":7,"e":{"docs":{},"df":0,"r":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"e":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1},"i":{"docs":{},"df":0,"c":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":2.0}},"df":8}}}},"d":{"docs":{},"df":0,":":{"docs":{},"df":0,":":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"v":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}},"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,".":{"docs":{},"df":0,"h":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}}},"u":{"docs":{},"df":0,"f":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951}},"df":1}}},"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"r":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"n":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}},"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951}},"df":1}},"p":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.23606797749979},"/news/website-redesign/":{"tf":1.0}},"df":4}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":3}},"l":{"docs":{},"df":0,"l":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.7320508075688772},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":9}}},"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"p":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":2},"r":{"docs":{},"df":0,"i":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}}}}}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}}},"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}}}}},"i":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"g":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"p":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951}},"df":3}},"l":{"docs":{},"df":0,"c":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951}},"df":1}}},"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"k":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2}}}}}},"u":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"m":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}},"y":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":3}}}},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.0}},"df":3}}}}}}}}},"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951}},"df":1}}}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}}}}},"c":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951}},"df":1,"f":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.4142135623730951}},"df":4}}}}}}}}},"h":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":2.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":6},"k":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/some-more-home-cooking/":{"tf":2.449489742783178}},"df":1,".":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"g":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}}}}}}},"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1},"x":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.23606797749979}},"df":1}}}},"i":{"docs":{},"df":0,"t":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.7320508075688772}},"df":3}}}}},"m":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}}}},"n":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0}},"df":3,"r":{"docs":{},"df":0,"p":{"docs":{},"df":0,"c":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2}}}}},"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"/about/":{"tf":1.0},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":2.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":10}},"s":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2,"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":2},"g":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}}}}}}}}}},"w":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":5}}}}},"y":{"docs":{},"df":0,"m":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":1}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":3}}}}},"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"x":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":5}}}},"s":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":2.23606797749979},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951}},"df":2,"/":{"docs":{},"df":0,"c":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":2}}}}}}}}}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{"/about/":{"tf":1.7320508075688772},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":3.3166247903554},"/news/editors-glibc-232/":{"tf":2.23606797749979},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":3.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":3.0},"/news/improved-porting-with-libbsd/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":2.6457513110645907},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.8284271247461903},"/news/reconfiguring-the-build-process/":{"tf":2.6457513110645907},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":4.242640687119285},"/news/some-more-home-cooking/":{"tf":3.0},"/news/website-redesign/":{"tf":1.7320508075688772}},"df":17,"d":{"docs":{"/about/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":2}}}}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1,"l":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":5}},"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}},"k":{"docs":{},"df":0,"e":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":8,"n":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":4}}},"l":{"docs":{},"df":0,"k":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}},"r":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951}},"df":1,"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772}},"df":2}}},"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":3.3166247903554}},"df":3,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"k":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":1}}}}}}}},"s":{"docs":{},"df":0,"k":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}},"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"q":{"docs":{},"df":0,"u":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}}}}},"l":{"docs":{},"df":0,"l":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":2}},"m":{"docs":{},"df":0,"p":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":2}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.7320508075688772},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.7320508075688772}},"df":3,"l":{"docs":{},"df":0,"i":{"docs":{"/news/more-pkgsrc/":{"tf":1.4142135623730951}},"df":1}}}}}}}}},"n":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2,"d":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":6}},"x":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"2":{"docs":{},"df":0,"1":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}}}},"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951}},"df":3,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"y":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"h":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}}}}}}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"'":{"docs":{"/news/more-pkgsrc/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}}},"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{"/news/website-redesign/":{"tf":2.449489742783178}},"df":1},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"v":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"'":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2},"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":3}}}}},"y":{"docs":{},"df":0,"'":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":2}}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":2.0}},"df":9},"k":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5}},"r":{"docs":{},"df":0,"d":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":3}}},"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{"/about/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.0}},"df":8}},"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0}},"df":3,"t":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":4}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"e":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":4,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}},"w":{"docs":{},"df":0,"n":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}},"u":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":1,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/more-pkgsrc/":{"tf":1.4142135623730951}},"df":1}}}}},"i":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1,"d":{"docs":{},"df":0,"i":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}},"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}},"m":{"docs":{},"df":0,"e":{"docs":{"/about/":{"tf":1.0},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":2.0},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/editors-glibc-232/":{"tf":2.6457513110645907},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.23606797749979},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.23606797749979},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":3.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772},"/news/website-redesign/":{"tf":1.7320508075688772}},"df":16,"f":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772}},"df":1}}}}}}},"n":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0}},"df":2}}}},"t":{"docs":{},"df":0,"l":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2}}},"o":{"docs":{},"df":0,"e":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1},"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}},"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"k":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":3},"l":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":2.0},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.0},"/news/reconfiguring-the-build-process/":{"tf":2.8284271247461903}},"df":3}}},"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}}}},"p":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951}},"df":1}}},"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":3}}}},"y":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}},"r":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"/news/more-pkgsrc/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2},"k":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772}},"df":2}},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"o":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"t":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}}},"i":{"docs":{},"df":0,"n":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":3}}}}}},"e":{"docs":{},"df":0,"e":{"docs":{"/news/cross-build-progress/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.6457513110645907},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.0},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":3.1622776601683795}},"df":8},"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"d":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}},"i":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/website-redesign/":{"tf":1.7320508075688772}},"df":8,"a":{"docs":{},"df":0,"l":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}},"c":{"docs":{},"df":0,"k":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":2}},"p":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1},"v":{"docs":{},"df":0,"i":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.6457513110645907},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":6}}}}},"u":{"docs":{},"df":0,"e":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5,".":{"docs":{},"df":0,"c":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}},"l":{"docs":{},"df":0,"i":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":4}},"t":{"docs":{},"df":0,"h":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{"/about/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":5,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"y":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}}},"w":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772}},"df":5}}},"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.7320508075688772}},"df":2}}},"o":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":4}},"y":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{"/about/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}},"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"v":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}},"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"v":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}},"r":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":4,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":6}}},"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}}}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"m":{"docs":{},"df":0,"b":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}}}},"f":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}},"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{"/news/some-more-home-cooking/":{"tf":1.4142135623730951}},"df":1}}}},"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}},"q":{"docs":{},"df":0,"u":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":2}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}},"x":{"docs":{"/about/":{"tf":1.7320508075688772},"/news/editors-glibc-232/":{"tf":1.7320508075688772},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":7}},"k":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"n":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0}},"df":2}}}}},"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":3}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951}},"df":1}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}}}}},"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}}}}},"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}},"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":4}}}},"p":{"docs":{"/about/":{"tf":1.0},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.7320508075688772},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":2.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.23606797749979},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":11,"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":6}}},"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}}},"o":{"docs":{},"df":0,"n":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"/about/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":5}}}}}}},"s":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":2.6457513110645907},"/news/editors-glibc-232/":{"tf":3.7416573867739413},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":4.69041575982343},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":2.23606797749979},"/news/more-pkgsrc/":{"tf":2.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.8284271247461903},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":2.6457513110645907},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.0},"/news/reconfiguring-the-build-process/":{"tf":3.1622776601683795},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":3.1622776601683795},"/news/some-more-home-cooking/":{"tf":3.605551275463989},"/news/website-redesign/":{"tf":3.3166247903554}},"df":16,"a":{"docs":{},"df":0,"g":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2}},"e":{"docs":{},"df":0,"_":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}}}}}},"r":{"docs":{"/about/":{"tf":2.0},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":9,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.7320508075688772},"/news/editors-glibc-232/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.23606797749979},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":6}}}}}},"r":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":2.0}},"df":1,".":{"docs":{},"df":0,"b":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}},"/":{"docs":{},"df":0,"b":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1,"/":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"r":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}}}}}}},"g":{"docs":{},"df":0,"n":{"docs":{},"df":0,"u":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1,"/":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"d":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772}},"df":1}}}}}}}}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"d":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2,"e":{"docs":{},"df":0,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"k":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2}},"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"/":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"d":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"k":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"/":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}},"m":{"docs":{},"df":0,"k":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}}},"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"/":{"docs":{},"df":0,"w":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{},"df":0,"/":{"docs":{},"df":0,"r":{"docs":{},"df":0,"p":{"docs":{},"df":0,"c":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}},"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2}}}},"t":{"docs":{},"df":0,"f":{"docs":{},"df":0,"8":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"i":{"docs":{},"df":0,"l":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":3.0},"/news/cross-build-progress/":{"tf":3.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":4.69041575982343},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772},"/news/improved-porting-with-libbsd/":{"tf":1.7320508075688772},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":4.123105625617661},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":4.47213595499958}},"df":12}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}}}}},"v":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.23606797749979}},"df":4,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"d":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}},"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}}}},"r":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1,"i":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.449489742783178}},"df":6}},"n":{"docs":{},"df":0,"t":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"u":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":2.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":5,"s":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{},"df":0,"t":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":3}}},"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"r":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"&":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,";":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"&":{"docs":{},"df":0,"g":{"docs":{},"df":0,"t":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}}}}}}}}}},"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0}},"df":2}}},"r":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}},"i":{"docs":{"/about/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":2.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":8,"f":{"docs":{},"df":0,"i":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":2}}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":2.8284271247461903},"/news/editors-glibc-232/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.7320508075688772},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.7320508075688772},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.449489742783178},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":2.449489742783178},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":2.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":13}}}}},"t":{"docs":{"/about/":{"tf":1.0}},"df":1,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{"/about/":{"tf":1.0}},"df":1}}}}}},"i":{"docs":{"/news/editors-glibc-232/":{"tf":3.4641016151377544},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":2,"a":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772}},"df":6,"b":{"docs":{},"df":0,"l":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"m":{"docs":{"/news/editors-glibc-232/":{"tf":3.4641016151377544},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":2},"r":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":2.23606797749979},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"v":{"docs":{"/news/website-redesign/":{"tf":1.4142135623730951}},"df":1}}}}}}}},"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}}},"s":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.4142135623730951}},"df":1}}}}}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"f":{"docs":{"/news/more-pkgsrc/":{"tf":2.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2,".":{"docs":{},"df":0,"m":{"docs":{},"df":0,"k":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":1}}}},"i":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2}},"l":{"docs":{},"df":0,"l":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":2.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":8}},"r":{"docs":{},"df":0,"n":{"docs":{},"df":0,"(":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"y":{"docs":{},"df":0,":":{"docs":{},"df":0,":":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}}}}}}}}}},"s":{"docs":{},"df":0,"n":{"docs":{},"df":0,"'":{"docs":{},"df":0,"t":{"docs":{"/news/more-pkgsrc/":{"tf":1.0}},"df":1}}}},"y":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.7320508075688772}},"df":11}},"e":{"docs":{},"df":0,"'":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}},"r":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772},"/news/more-pkgsrc/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.7320508075688772},"/news/website-redesign/":{"tf":1.0}},"df":10}},"b":{"docs":{"/news/website-redesign/":{"tf":1.7320508075688772}},"df":1,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/website-redesign/":{"tf":1.4142135623730951}},"df":1}}}},"e":{"docs":{},"df":0,"k":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.0}},"df":4}},"l":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}},"l":{"docs":{"/about/":{"tf":1.4142135623730951},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.4142135623730951},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.7320508075688772},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":1.7320508075688772}},"df":13,".":{"docs":{},"df":0,".":{"docs":{},"df":0,".":{"docs":{},"df":0,".":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}}}}},"n":{"docs":{},"df":0,"t":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"'":{"docs":{"/news/more-pkgsrc/":{"tf":1.4142135623730951}},"df":1},"e":{"docs":{},"df":0,"v":{"docs":{"/about/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":3}}}},"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}}},"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{"/news/more-pkgsrc/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2}},"p":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1},"s":{"docs":{},"df":0,"e":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":5,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}}}}}},"k":{"docs":{},"df":0,"i":{"docs":{"/news/website-redesign/":{"tf":1.4142135623730951}},"df":1}},"p":{"docs":{},"df":0,"e":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1,"s":{"docs":{},"df":0,"y":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":1,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.7320508075688772}},"df":1}}}}}},"s":{"docs":{},"df":0,"h":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":1.0},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/more-pkgsrc/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":1.4142135623730951}},"df":10}}}}}},"o":{"docs":{},"df":0,"e":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1},"n":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/website-redesign/":{"tf":1.0}},"df":2}}}},"r":{"docs":{},"df":0,"k":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.7320508075688772},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.4142135623730951},"/news/cross-build-progress/":{"tf":2.449489742783178},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.4142135623730951},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.7320508075688772},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":2.0},"/news/reconfiguring-the-build-process/":{"tf":1.4142135623730951},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.23606797749979},"/news/some-more-home-cooking/":{"tf":1.4142135623730951},"/news/website-redesign/":{"tf":2.0}},"df":13,"/":{"docs":{},"df":0,".":{"docs":{},"df":0,"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{},"df":0,"/":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}},"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}}},"l":{"docs":{},"df":0,"d":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}},"r":{"docs":{},"df":0,"i":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}},"s":{"docs":{},"df":0,"t":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"_":{"docs":{},"df":0,"s":{"docs":{},"df":0,"u":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.4142135623730951},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.7320508075688772},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.4142135623730951}},"df":5},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.7320508075688772},"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0},"/news/website-redesign/":{"tf":2.0}},"df":5}}}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{"/news/editors-glibc-232/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":3}},"t":{"docs":{},"df":0,"e":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}}}},"x":{"docs":{},"df":0,"8":{"docs":{},"df":0,"6":{"docs":{"/about/":{"tf":1.0}},"df":1,"_":{"docs":{},"df":0,"6":{"docs":{},"df":0,"4":{"docs":{"/about/":{"tf":1.0},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.7320508075688772},"/news/reconfiguring-the-build-process/":{"tf":1.7320508075688772}},"df":6}}}}},"f":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}},"m":{"docs":{},"df":0,"l":{"docs":{},"df":0,":":{"docs":{},"df":0,":":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"g":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}}},"y":{"docs":{},"df":0,"e":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.0},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":2.23606797749979},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.4142135623730951},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":2.23606797749979}},"df":6}},"l":{"docs":{},"df":0,"l":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}},"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"'":{"docs":{},"df":0,"r":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/editors-glibc-232/":{"tf":2.0}},"df":2}}}}},"z":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}},"f":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1},"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{"/news/website-redesign/":{"tf":2.23606797749979}},"df":1}}},"s":{"docs":{},"df":0,"h":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.4142135623730951}},"df":1},"t":{"docs":{},"df":0,"d":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}}}},"title":{"root":{"docs":{},"df":0,"2":{"docs":{},"df":0,".":{"docs":{},"df":0,"3":{"docs":{},"df":0,"2":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}},"a":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"6":{"docs":{},"df":0,"4":{"docs":{},"df":0,"/":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"v":{"docs":{},"df":0,"6":{"docs":{},"df":0,"4":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}}}}}}}}}}}}},"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}}}}},"r":{"docs":{},"df":0,"m":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":2}}},"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}},"s":{"docs":{},"df":0,"d":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}},"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"/news/cross-build-progress/":{"tf":1.0},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0},"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":4,"w":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}}}}}},"c":{"docs":{},"df":0,"h":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"/":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"v":{"docs":{},"df":0,"m":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}}}}}}},"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"u":{"docs":{},"df":0,"p":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}},"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"u":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"k":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}}}},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}}},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}}},"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}}},"x":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}}}}}}}}},"g":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"c":{"docs":{"/news/editors-glibc-232/":{"tf":1.0}},"df":1}}}},"n":{"docs":{},"df":0,"u":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}},"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"b":{"docs":{},"df":0,"y":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1}}}}}},"h":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}}}}},"i":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/about/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/about/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{"/news/some-more-home-cooking/":{"tf":1.0}},"df":1}},"s":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":2}}},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"v":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2}}}}},"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"u":{"docs":{},"df":0,"d":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}},"f":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}}}}}}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"b":{"docs":{},"df":0,"s":{"docs":{},"df":0,"d":{"docs":{"/news/improved-porting-with-libbsd/":{"tf":1.0}},"df":1}}},"c":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}},"n":{"docs":{},"df":0,"u":{"docs":{},"df":0,"x":{"docs":{"/about/":{"tf":1.0}},"df":1}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":2}}},"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"e":{"docs":{"/news/more-pkgsrc/":{"tf":1.0},"/news/some-more-home-cooking/":{"tf":1.0}},"df":2}}}},"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"b":{"docs":{},"df":0,"s":{"docs":{},"df":0,"d":{"docs":{"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0}},"df":1}}}}}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"h":{"docs":{"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":1}}}},"k":{"docs":{},"df":0,"g":{"docs":{},"df":0,"s":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0},"/news/more-pkgsrc/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":3}}}}},"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/improved-porting-with-libbsd/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":3}},"s":{"docs":{},"df":0,"t":{"docs":{"/news/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}},"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"/news/cross-build-progress/":{"tf":1.0}},"df":1}}}}}}}},"q":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"u":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"/news/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{"/news/reconfiguring-the-build-process/":{"tf":1.0}},"df":1}}}}}}}},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}}},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}}},"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"c":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"tf":1.0},"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"tf":1.0}},"df":3}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"d":{"docs":{"/news/goodbye-gnu-coreutils-importing-sed/":{"tf":1.0}},"df":1},"l":{"docs":{},"df":0,"f":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"f":{"docs":{},"df":0,"t":{"docs":{},"df":0,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"/news/restarting-make-buildworld-cleanup-default-software/":{"tf":1.0}},"df":1}}}}},"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"c":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}},"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"tf":1.0}},"df":1,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"d":{"docs":{"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"tf":1.0},"/news/porting-netbsd-userland-infrastructure-improvements/":{"tf":1.0}},"df":2}}}}}}}},"v":{"docs":{"/news/on-libc-rust-experiments-and-risc-v/":{"tf":1.0}},"df":1},"w":{"docs":{},"df":0,"e":{"docs":{},"df":0,"b":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"/news/website-redesign/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"e":{"docs":{"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"tf":1.0}},"df":1}}}}}},"documentStore":{"save":true,"docs":{"/":{"body":"","id":"/","title":""},"/about/":{"body":"#!/don't/panic\nman 42\n\nHitchHiker Linux is a very Unix-like distribution of Linux with a focus on\nsimplicity, elegance and providing a solid base that the end user can turn into\nwhatever they see fit.\nCore Principles:\n\nThe default installation should include the bare minimum required software to provide a solid base.\nComplexity should be discouraged in favor of code elegance, security and maintainability.\nEnd users should not be discouraged from tinkering with their system.\nThe distribution should make as few assumptions as possible regarding end use.\nWhile newer releases of software often eliminate bugs and vulnerabilities, newer software packages are not by default more secure than stable, mature packages (newer is not always better).\nAny changes to the core system functionality, especially those which change expected functionality, must be well justified and well vetted before deployment.\nThe base installation should include everything required to rebuild itself from source.\nThe distribution should make as few changes to the upstream software as possible, delivering it as intended by the original author.\nPatching of sources should only be done to fix bugs or vulnerabilities.\n\nHHL was born of a desire to harness the greater hardware support of Linux while\npaying respect to the Unix systems from which Linux was born. The author was a\nlong time user of FreeBSD who migrated to Arch for several years, but has become\nincreasingly frustrated with Systemd, Gnome, RedHat and Ubuntu dominance. It is\nbelieved that there is a need for a distribution that does not pander to ease of\nuse for casual users at the expense of putting up roadblocks for experienced Unix\nveterans.\nArchitectures\nHHL is running on the following processor architectures:\n\nx86\nx86_64\narmv7l\naarch64\nriscv64\n\n","id":"/about/","title":"About Hitch Hiker Linux"},"/news/":{"body":"","id":"/news/","title":"Recent posts"},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"body":"This is a novel approach that I've been experimenting with lately, to do some\nlegwork towards supporting architectures for which I either don't have physical\nhardware or else the hardware is limited in capability so much as to make native\ncompilation impractical.\n\nQemu, in addition to running full virtual machines, also has what is known as\n\"user mode emulation\". In a nutshell, when using qemu in this way one is able to\nrun binaries for another architecture without creating virtual hardware or a\nvirtual kernel. In this case, qemu just acts as a translation layer, translating\ninstructions designed for one ISA to instructions that can be executed on the\nhost processor. By not running a virtual kernel on virtual hardware, there is\nactually a huge savings of system resources.\nSetting this up, while not trivial, is surprisingly straightforward. First, a\nsuitable root filesystem must be created. Qemu must be compiled statically, and\nthe static binary copied into the chroot filesystem. Then, by using binfmt-misc,\none can register this qemu executable as the program interpreter for binaries of\nthe guest architecture. In this way it is actually possible to set up a functional\nchroot on a well spec'ed X86_64 machine running Risc-V binaries. There is a bit\nmore to getting this to work, but suffice to say that it does in fact work,\nwithin the normal limitations of a chroot.\nWhile running foreign binaries does incur some performance penalty, this method\nis actually proving to be a significant improvement over, say, compiling for\naarch64 on a Raspberry Pi 4, as I have four times the memory and a significantly\nfaster processor with twice the number of cores available. And it has the benefit\nof not requiring a cross compiler. Instead, one is running a native compiler via\nan emulation layer. But this eliminates many of the pain points of cross compiling.\nIt's a neat trick.\nSo what does this mean for HitchHiker? It means that work is now well underway\ntowards running HitchHiker on a BeagleV when they become widely available later\nthis year. I have been eagerly waiting to dip toes into Risc-V as soon as an\naffordable option was available, and it looks like said option is now on the\nhorizon.\n","id":"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/","title":"Compiling for aarch64/riscv64 from qemu user mode chroot"},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"body":"At this juncture we're well over the halfway point in regards to providing a predominately BSD userland in HitchHiker, with over 90 console utilities ported against a total of 59 remaining programs brought in from GNU coreutils. That total includes, of course, some programs that are not included in GNU coreutils. Some of the utilities replace standalone GNU packages, such as grep and diff, while some are utilities that may not be present on most Linux distributions, such as pax or leave. In general, the BSD utilities have compatible functionality, as both GNU and BSD have mostly embraced the POSIX standard, but with a few caveats where there are extensions made to the standard. The biggest differences reflect a difference in philosophy, as the BSD utils are quite small and include only what they must, while the GNU versions are all (yes all) larger and accept more options. GNU particularly accept long options and in general have better internationalization. The GNU utilities also accept the --help option, giving a brief summary of their function. BSD utilities specifically omit this functionality, as each command comes with a man page, which would duplicate functionality.\nOne of the dangers in just blindly replacing the usual GNU userland on Linux is that when the accepted options differ slightly, some scripts may not run as expected. This also can affect building packages from source if care is not taken to stick with only POSIX specified options when writing Makefiles. To some extent I have been working to minimize the effects here by taking the time to verify each utility works as expected and in some cases implementing options that most users expect, such as the -v switch (verbose) for the ln and rmdir utilities. In other cases, such as the much abused -a or --preserve-attributes options of GNU cp, implementing equivalent functionality in the BSD port is definitely non-trivial, and many people are just trying to copy directories recursively while preserving symlinks when they use 'cp -a', and not actually wanting to preserve ownership or modification times. Those cases can be served by using BSD cp as 'cp -R'. If preserving attributes is the desired behavior, then this is one of the tradeoffs being made and extra steps will have to be taken with chown and touch.\nIn order to ensure that HitchHiker always remains self-hosting I have been running bootstrapping the system from itself multiple times during the porting effort. A few issues have been found and fixed along the way, but it has been an overall smooth transition. In one case, I had actually misused 'cp -a' myself in the busybox build (busybox is only built as part of the temporary toolchain).\nOne particularly special case is glibc, which has a hard dependency on GNU awk during build time. As I have a preference for the historical (yet still maintained) Nawk, this requires building a statically compiled Gawk early in the bootstrap process as part of the temporary tools in /toolchain, which is discarded along with the rest of the temporary tools after the bootstrap phase and does not become part of the base system. Another example of the \"Sheer F%$king Hubris\" of much GNU software, which often will only build with other GNU tools, even though other tools exist with equivalent (and sometimes superior) functionality.\n","id":"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/","title":"Continued porting of BSD userland against remaining self-hosting"},"/news/cross-build-progress/":{"body":"The sysroot/cross-compile build tree is nearly able to build all of HitchHiker\nnow, with only a few packages left to tweak.\n\n\npkg-config: This is messy in general. There is a circular dependency with Glib,\nsatisfied by the pkg-config maintainers incorporating a recent version of Glib\ndirectly into the distribution. However, Glib requires extra work to cross\ncompile. I've looked into it but not yet implemented the fixes.\nXML::Parser: Perl was actually able to cross compile successfully to both\naarch64 and riscv64 using perl-cross. XML::Parser is a perl module, uses perl\nduring it's build and perl modules in general have their own home baked build\nsystem which does not play well with cross compiling. I'm investigating whether\nit really needs to be in the base system or can be moved to ports.\nNinja and Meson: may not actually be needed in the base system?\nzstd: Uses a Makefile or Meson for it's build system. I've already dealt with\na few projects that built with a plain Makefile and was just putting this off to\nbe honest, as a few of the others required significant reworking to get a\nfunctional build.\niproute2: Another one using it's own home grown configure script which will\nlikely require much manual intervention.\nmandoc: This builds after a fair amount of manual intervention. However, it\nsegfaults on riscv64. Unknown whether this is due to qemu or if it will segfault\non real hardware, but not a great sign. I'm looking at porting an earlier man\nutility from 4.4BSD-lite. Man should be a simple program.\nfile: Our file utility, descended from the relatively recent OpenBSD sandboxed\nfile, built fine on intel and Arm architectures, but the original author pulled\nin some SECCOMP defs that are architecture dependent and failed to account for\nany architectures besides Intel and Arm. I've hacked the source so that it\ncompiles on Riscv64. However, there appears to be more work to be done to get it\nfully working on that arch.\nThere were, of course, numerous hiccups along the way. I'll elaborate on a few.\n\nBzip2 has it's own Makefile based build. It also has a separate Makefile to build the shared version of the library, and even when you do build the shared version it uses the static version for bzip2recover. In true hitchhiker fashion after mucking about with what was already there for a while I wound up just discarding it and imported the source directly into the build tree, substitution our own infrastructure. This required creating hhl.sharedlib.mk, which was overdue anyway. At the moment we're building both shared and static versions of libbz2, and linking the bzip2 and bzip2recover binaries against the shared library.\nRecent versions of util-linux include a new utility, hardlink, which links against pcre2 if available. However, the build system detects pcre2 on the host system, not in the sysroot, and there is no provision to manually disable linking against pcre2. Interestingly, there are two competing implementations of the hardlink program, and the one currently in util-linux is potentially going to be replaced as it is not the more fully featured one. There is some interesting discussion of the issue on the mailing list. In the meantime, since it is a potentially useful utility, I just imported the source of the preferred version and am building it using our build infrustructure.\nAnd now, gettext. This one really pissed me off. Recent versions of gettext include libtextstyle, a library for formatting text for display. The included gettext utilities link against libtextstyle. However, the headers don't yet exist at the time the utilities are built, so the only reason the build is not failing for everyone is that they are building against the headers already present on the host system. The libtextstyle subdirectory is not even in the library search path on the command line.\nNow, this is just bad practice. It means that if those headers are updated for a new release, then distro packagers will be building against the old headers, potentially causing undefined behavior and random bugs. I only caught it because the build utterly fails in a sysroot environment.\nFurthermore, one of the missing headers, included by textstyle.h, is stdbool.h, because for some reason they're worried about building on systems that don't have a working boolean implementation. This is just crazy at this point. It's no wonder GNU projects get bloated.\nIn the end, I pulled the headers out of the host system, put them in the appropriate directory inside the source directory, compiled, then did a chroot into the sysroot and did a native compile just to be sure that the headers matched. Those headers are now imported into the build tree and are placed into the source directory after running configure, and the Makefile is patched to search the build directory before the system header directory. It's not a full fix that I would push upstream but it works. A full fix would build the headers first, before building the utilities, then link against them. I didn't feel like going that in depth fixing their build.\nIn a general sense, even though I feel that autotools based builds are often extremely bloated and inefficient, based on the mistakes that I keep fixing in other project's home brewed Makefiles to enable cross compilation (as well as simple things like installing into a DESTDIR) I can really see some of the strengths of autotools. Most of the time, all that is needed to cross compile is setting --host and either passing --sysroot in the CFLAGS or, if supported the the specific package, passing --with-sysroot to configure. That isn't to say that autotools is perfect. Frequently the package maintainers compile tests against the host system or check for library support by looking in /usr/include. After a while you begin to realize that you're literally fixing the same mistake repeatedly, and start to feel despair for the human race. And then it works, and everything is all right again.\n","id":"/news/cross-build-progress/","title":"Cross Build Progress"},"/news/editors-glibc-232/":{"body":"Most people who use any form of Unix have a favorite editor. Most of them also think that everyone else is wrong (but in truth, you're all wrong...). And most Linux distros over the years have gradually catered more and more to the lowest denominator.\nIn the beginning, of course, there was only ed (The STANDARD editor!) and then at some point in time came Bill Joy's vi. Most people have, of course, never used the original vi. If you are on Linux, chances are good that you have encountered vim. If you are running BSD in any form then you have vi, except that you don't actually have vi, you have nvi. When 4.4BSDlite was released as the first large scale open source project, the major caveat was that much of the source was patent encumbered by AT&T, including the venerable vi editor. All of this source was therefore replaced, painstakingly, a piece at a time. The selling point of nvi at the time was that it was a \"bug for bug compatible\" rewrite of vi, which started with the original elvis (a vi clone) source.\nFor most of it's existence so far (including it's original, never released to the public form from roughly ten years ago) HitchHiker had vim. I've used vim a lot and over the years have only grown more fond of it. Sticking with it over the rather steep learning curve has been quite helpful in situations where the only editor available is some form of vi or vi clone. However, vim is not without it's issues. All forms of vi or clones of vi have a rather steep learning curve for new users. The vim source code is a rats nest of conditionals and attempts to maintain compatibility with ancient systems that only a masochist or Luddite would use. And for a console based editor it is rather slow (though nowhere near the beast that Emacs has become, a story for another time).\nFor ease of use and welcoming less experienced users we follow the same path as FreeBSD by offering the ee editor. It's extremely small (the entire source is a single c file) and has great ease of use due to the integrated menu bar. It isn't an especially powerful editor, but it gets the job done.\nAs for vim, I decided a while back that it was going to be replaced with something more lightweight and with a more \"correct\" code base. I tried a few times to port nvi to HitchHiker, both from the \"official\" nvi source distribution and also from BSD sources. The main stumbling block has been that the code assumes headers and C library routines which no longer exist in Linux.\nFor the solution, let's back up again by a few years. AT&T Unix is the direct ancestor to Solaris. A number of years ago Sun bequeathed the source code for the Solaris operating system to the public in the form of a CDDL licensed source distribution, giving birth to the OpenSolaris operating system in it's many forms, allowing FreeBSD to import the zfs filesystem, and effectively unencumbering historical Unix source code to the benefit of all.\nTherefore, after a few days tinkering, we now have version 3.7 of Bill Joy's original ex/vi editor, which is the version that was current as of the 4.4BSDlite release, ported to and running on HitchHiker Linux. This has been a very gratifying experience overall. Some (probably many if I'm being honest) will miss certain features that they have grown used to in vim, such as syntax highlighting and visual mode. There is no plugin system (which I've never bothered to use in vim anyway...) and you're basically expected to know what you're doing. But the program is SMALL (roughly half the size of nvi, with no dependency on BDB, and orders of magnitude smaller than vim) and noticeably faster than vim when loading large files or pasting large chunks of text. You probably thought vim was fast. But you only -thought- it was fast.\nYou are, of course, free to install and use vim if you feel that original vi is too \"limiting\" for your use. Feel free to use ed for that matter, and to yell out that you're using \"THE STANDARD EDITOR\" while doing so. We imported ed from FreeBSD a week ago.\nIn other news, GNU libc (glibc) released version 2.32 this week. I'm running it already on my Arch systems but for the time being holding off on updating HitchHiker. There were a few notable deprecations in this release for functions, macros, and even a few array definitions that are considered too ancient to support. However, they actually do affect HitchHiker in a few places as we have some rather \"historical\" code imported into the userland tools. I spent an hour this morning fixing compilation errors when compiling mksh and ex/vi against the new library, in preparation for eventually merging it in. I'll have to check all of the other imported sources against it another day.\nInterestingly, I also had to start using clang to compile these tools in Arch, as the gcc 10 series encountered an \"internal compiler error\", which was actually a segmentation fault, when compiling the ex/vi sources. In HitchHiker we use gcc-9.30 and these problems don't exist. Good reason to not upgrade for the time being.\n","id":"/news/editors-glibc-232/","title":"Editors, glibc-2.32"},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"body":"Ok, so this little side track has been on a slow burn for a while now, but I've currently got a rootfs that I can chroot into with the following features:\n\nBuilt almost entirely with llvm/clang (see caveats below)\nRust nightly compiler installed early in the build, accessible for all users\n\n\n\nDirectory hierarchy flattened, directories in /usr are symlinks to directories in /\nlibc++ standard C++ library from the llvm project instead of libstdc++ from gcc\nBoth GNU binutils and the lld linker installed (default is still binutils ld for now)\nx86_64 only at this time, but should be portable to Arm\nSome caveats:\nllvm/clang wants to build against libstdc++, so not self hosting unless we go back to libstdc++\nThere were issues building the compiler-rt module, so llvm and clang link against libgcc\nThe GNU m4 package will not build with clang, so it had to be built with the gcc compiler from the temporary toolchain. I'm sure this is fixable, but I haven't researched it much yet.\nThe biggie: glibc refuses to try to build with any compiler except gcc. The. Sheer. Fucking. Hubris. ...again...\nNevertheless, this is all quite promising and brings up a number of possibilities going forward. As llvm by default supports multiple backends for code generation, a huge benefit is that HitchHiker would come out of the box with cross compilation ability. Also, including rust by default gives us the ability to use Rust code in the base system, with numerous potential benefits that I will explain below.\n\nThe directory hierarchy is simple to understand, but is reversed in implementation from what the \"big\" distros have done. Basically most \"modern\" distros have ditched the /usr split by making /bin and /lib into symlinks to /usr/bin and /usr/lib. In this build we instead just give all programs a blank install prefix. Our root directory now takes not only all of our binaries and libraries but also has program data under /share, and we only have /usr because it is expected. everything in /usr is, in fact, just symlinks.\nRust is installed in a novel way using rustup. As root, we set the RUSTUP_HOME and CARGO_HOME environment variables to /rust, and make /rust/bin a symlink to /bin. That way, we can track a nightly toolchain system-wide and it will install binaries into /bin, for all users to access. We could, of course, build rustc from source, and I have in fact done so previously. However, apart from the ridiculous compilation time that it takes, this is not a great option until the language is truly stable, as a lot of the interesting bits if the Rust ecosystem need something newer than the stable branch. By using rustup and the binary toolchains, we always have access to the most up to date toolchain, and the ability to easily switch from one to another.\nSo what are the benefits of having rust available early on? For starters Rust can access C functions and export functions to C, making it relatively easy to replace parts of the software stack previously written in C with Rust code that enjoys the memory and concurrency safety checks which are not present in C. As an example, relibc is a complete C standard library written in Rust. This alternative C library is a potential future path of investigation. But on a smaller scale, there are a number of interesting cli utilities and programs written in Rust.\n\nsd is a stream editor similar to sed, but much faster and with a much easier syntax and reduced scope.\nfd is a file finding utility which is orders of magnitude faster than find, and has interesting features like skipping .git folders by default.\nexa is a file lister with some unique features over ls\nThe amp editor, while somewhat vi-like, has interesting extra features fuzzy file finder and a token based jump which make moving around even faster than vim.\nI have also begun, partially as a learning exercise, writing my own Rust implementations of various small Unix utilities. In the future some may find their way into HitchHiker if we retain Rust in the base system.\n\nWhile this is still in an early evaluation phase, I think it likely that at the very least we will make the switch from gcc to clang/llvm at some future point, with the possibility of bringing some of the other features along as well. What may not make the cut is libstdc++, as replacing the C++ standard library is almost as problematic as replacing the C standard library, leading to the need to port a large amount of third party software in the future. However, I will likely be going further with Rust, and with the flattened filesystem, as I want HItchHiker to be a cutting edge distro while still adhering to traditional Unix practices. Basically, we're going to push the envelope when it makes sense to do so, but not follow fads and trends in the Linux community that might very well be dead ends (like I believe Systemd in particular to be).\n","id":"/news/experimental-clangllvm-based-build-with-nightly-rust/","title":"Experimental clang/llvm based build with nightly rust"},"/news/goodbye-gnu-coreutils-importing-sed/":{"body":"The porting effort has reached the point where it is now safe to remove GNU\ncoreutils. At this point, there are now only 16 utilities provided by the\ncoreutils package that are not implemented in another way in HitchHiker, and none of the missing\nutilities are dealbreakers. As follows, here is what is missing and why it isn't\na problem, or what the roadmap is for replacement.\n\nb2sum - computes BLAKE2 checksums - there are quite a number of checksum utilities already, and this one is currently not a dealbreaker. If a reason for replacement is discovered it will be implemented from scratch in c.\nbase32 - encodes file or stdin using base32 - we already have base64 imported from OpenBSD.\nbasenc - encodes file or stdin using various algorithms - see base32.\nchcon - changes SELinux security context - SELinux is a largely Fedora/RedHat backed API which we don't implement currently in HitchHiker. Standard Unix file permissions are not fine-grained enough for just about any use case.\ndir - displays directory contents - despite what GNU say about dir, it is basically ls but with a different default behavior. The same behavior can be emulated by using the appropriate flags with ls.\ndircolors - sets the colors for eg ls --color - We have BSD ls in HitchHiker, which does not implement the --color option. I have considered re-implementing ls and including the --color option, in which case dircolors would be useful. However, this is non-trivial and no timeframe is given.\nhostid - displays the unique numeric id for the current host - not currently a dealbreaker, but potentially useful. Fairly trivial to implement in C.\nnproc - gets the number of processors currently available - also potentially useful and fairly trivial to implement in C.\nnumfmt - format numbers in human-readable form - potentially useful, not a dealbreaker. Non-POSIX utility which accepts mostly GNU style long options. If implemented would be done in a different way, ignoring the behavior of the GNU utility, which is frankly too GNU-centric (long options should have short option equivalents).\npinky - a mini finger implementation - all information available via pinky can be optained with other included utilities. If there is a need for accessing information on remote hosts an actual finger implementation is required anyway.\nptx - honestly the manpage for this utility reads like gibberish. Anyway I've never used it and don't think it's needed, not available on BSD systems anyway and not POSIX.\nruncon - run a command with a different SELinux security context - see chcon.\nshuf - shuffles file contents randomly - not particularly useful.\nstdbuf - run command with modified IO buffering - exists in FreeBSD but not NetBSD or OpenBSD. Non-POSIX. Potentially useful, not considered a priority. Porting from FreeBSD is non-trivial if memory serves from my 1st attempt.\ntimeout - run a command with a time limit - Not available on BSD systems, Non-POSIX. Potentially useful but not a priority.\nvdir - another permutation of ls (see dir) - again just use ls, why have another binary?\n\nNone of the missing utilities are POSIX specified and are not likely to be called from any kind of portable shell script. With the exception of stdbuf, I could not find alternative implementations for any of the missing utilities. This was a long process fraught with a fair bit of trial and error, and continual testing to ensure that the system could still bootstrap iself as utilities were replaced a few at a time. My first tries removing the coreutils package entirely resulted in various failures, as either a utility had incompatible behavior with one or more packages build systems, or a missing utility was actually required.\nA good example of a surprise was with the 'od' utility, which creates an 'octal dump' of file contents. I did not assume this to be a utility that would see much use. However, the build system for busybox assumes it's existence and fails without it. On looking for a replacement I turned to the Heirloom Toolchest, a collection of utilities derived from ancient Unix sources released by Caldera and Sun. This utility has the dubious distinction of influencing one of the more glaring inconsistencies in bourne shell syntax. For most control flow structures in sh, the closing keyword is the opening keyword reversed, IE if-else-fi or case-esac. However, od was already in existence before the original bourne shell was written, precluding the use of do-od for looping and giving history instead do-done.\nWhile in there poking around in the heirloom sources I also ported over pg (an early pager), sum (yet another checksum utility) and factor (prints all prime factors of the given number). The sources have been variously tweaked to be more inline with my own coding style, making future maintenance easier. All but pg were commands which are present in coreutils, giving us greater coverage.\nDuring the porting effort, there were various utilities which were either not present in BSD, sbase or heirloom or else so trivial as to pose no barrier to implementing them from scratch. Here is that list.\n\n/bin/true - just return true and exit - implemented as a single line shell script.\n/bin/false - the reverse of true.\n/sbin/nologin - used for disabled logins, displays a message that the account is disabled and exits with a failure code - implemented in C.\n/usr/bin/link - creates hard links - implemented in C.\n/usr/bin/unlink - calls the unlink function to remove files - implemented in C.\n/usr/bin/shred\n\nThe shred utility was a special case, as it existed only in GNU coreutils until my own implementation. I've always thought that this was a tremendously useful utility and wanted it in HitchHiker. What it does is overwrites the given file with random data to make recovery exceedingly difficult, optionally doing a final pass with zeros and unlinking the file. It can be used on an entire block device to wipe a hard drive clean. I've been working on dogfooding myself in C lately and this was a good opportunity to code something a little but less trivial. Anyway, this version of the shred command is implemented cleanly from scratch but follows fairly closely the behavior of the GNU version. It differs in not accepting long options, much like the rest of our collection of utilities, and does not implement a few switches that are considered unnecessary in use. At some point I intend to go in and implement file-renaming before deletion, akin to the GNU versions \"wipesync\" method, but the program is otherwise feature complete. In order to give myself another challenge, I also implemented a progressbar that is displayed with the -v option.\nOn to sed\nI have tried in vain to get away from using GNU sed in HitchHiker. After porting BSD sed, sbase sed and GNU minised, all of them proved unsuitable and caused build failures at some point or another. Or rather, non-portable sed usage by the authors of the various build systems caused failure when our sed did not support the input that it was given. The final deal-breaker was the Linux kernel itself, which requires sed to understand some GNU specific regular expressions during the build.\nWhat I have done is import the GNU sed source code directly into the HitchHiker source tree and made it work with our build system. This is only the second GNU licensed program I have done so with (the first being less) and only the third time that I have successfully stripped a program of it's autotooled build system. It was, to say the least, not trivial. However, the results are rather impressive, as on my 8-core laptop sed now builds in 3.22 seconds, compared with 31.75 seconds for the autotooled build. I'll take a 10x speed increase any day, and it's a great example of how much there is to gain by just using make compared with an autotools build. Indeed, for a smaller program like sed, most of the time is taken by the configure script, and by installing files after compilation. With our \"compile in place\" method we're skipping entirely the installation phase.\nAs GNU sed is fully localized into multiple languages, I took the time to extend the build infrastructure with hhl.locale.mk, which takes any .po files in a program's locale subdirectory (if they exist) and \"compiles\" them into .mo files in /usr/share/locale using the msgfmt utility. With that in place the infrastructure for building directly from source, rather than just wrapping another build system in make, is pretty much complete, even if there are still things to optimise.\n","id":"/news/goodbye-gnu-coreutils-importing-sed/","title":"Goodbye GNU coreutils, importing sed"},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"body":"I think we'll start this post discussing some of the differences and misconceptions of same between BSD make and GNU make. In the case of BSD make we're primarily referring to NetBSD make, which is a greatly improved version of the historical Unix make utility, and has also been imported into FreeBSD. Among the BSD camp, GNU make is seen as a second citizen. Their version of make is leveraged for building the entire system, without using autotools except in the case of imported external source which has been autotooled by it's authors. It is also the utility that wraps all of the functionality of FreeBSD ports and NetBSD pkgsrc - downloading, patching, compiling and packaging third party software. The complete infrastructure is quite impressive.\nMuch of this functionality lies in leveraging included Makefiles, much in the way that C headers can be included to pull in function definitions, and also similar to the concept of shared libraries. These included .mk files, usually located in /usr/share/mk on a BSD system, allow for extremely concise Makefiles throughout the source tree to just specify a few variables and then pull in all of the targets from an inclued file. The most prominent are probably bsd.prog.mk and bsd.lib.mk, which tell make how to build C programs and C libraries respectively.\nIt is a common misconception that this functionality only exists in BSD make. GNU make does have this capability as well and I leverage it quite heavily in HitchHiker. Admittedly, it is more developed in BSD make, but the limitations of GNU make in comparison are fairly trivial and easy to work around. One of the sillier things is the default search path that GNU make uses the look for included Makefiles. By default this path starts in the current directory and proceeds through /usr/local/include, /usr/include and finally /usr/gnu/include. Leveraging this would sprinkle .mk files through what are by convention the location of C header files, or alternatively using /usr/gnu/include. I have yet to see a system that has a /usr/gnu directory (maybe it was planned for Hurd?) and I'm not keen on it. As of the last commit, HitchHiker now patches make to no longer search /usr/gnu/include and to now search instead /usr/local/include/mk and /usr/include/mk, the latter being our new default directory. This allows us to include a .mk file by name, without specifying a full or relative path, and at the same time keeps all of our .mk files separated from the system C headers.\nSo what exactly does BSD make have over GNU make?\n\nSlightly more powerful conditionals. In addition to ifdef, ifndef, ifeq and ifneq BSD make also has a simple if, and allows chaining conditionals with the && and || operators much like shell syntax. By comparison GNU make must nest conditionals for similar functionality.\nIncluded Makefiles can be relative to the install or source prefix. This is quite powerful for building large projects in custom site locations.\nPossibly others I have not discovered yet, however in practice GNU make can do -everything- that BSD make does if you take the time to learn how to use it.\n\nAs part of creating a more integrated build framework, my most recent commit contains a basic analog for bsd.prog.mk, hhl.cprog.mk (cprog due to my not assuming that all programs are written in C!) which now allows extremely concise Makefiles for source code that has been imported into the base system. In the case of rpcgen the following Makefile is all that is needed:\n# Makefile - hhl - /usr/src/world/rpcgen\n# Copyright 2020 Nathan Fisher <nfisher.sr@gmail.com>\n#\nprogname = rpcgen\ncflags += -g\ninclude hhl.cprog.mk\n\nAs can be seen, there are really only three lines. Lines 1-3 are comments, line 4 specifies the program name, line 5 adds -g to the compiler flags, and line 6 includes hhl.cprog.mk. If you look inside the rpcgen subdirectory of the build tree you will see the following structure:\n.\n ├── Makefile\n ├── man\n │ └── rpcgen.1\n ├── README\n └── src\n ├── config.h\n ├── proto.h\n ├── rpc_clntout.c\n ├──***snip\n\nOur included Makefile will generate object files for any .c files in the src/ subdirectory, link those objects into an executable and install man/rpcgen.1 in ${install_prefix}/share/man/man1. It has logic to differentiate man1 from man8 and also installs html and text docs in the doc/ subdirectory. If we needed to specify additional cppflags, cflags, ldflags or libs to link with we would just append them to those vars (by convention I use lower case so as to not interfere with any CFLAGS etc. specified on the command line or in an external build system). If we want to create links to our executable they just need to be specified in the binlinks variable. Defining the variable finish and writing a finish target allows us to do anything else additional that might need done, like installing configuration files or runtime data. In short, while being a fairly tidy 102 lines (some of which is whitespace and comments) hhl.cprog.mk successfully works as an analog for bsd.prog.mk.\nThe short list of programs leveraging this framework now include the ee text editor, rpcgen, mksh and lksh shells and the pax archive/copy/link utility. At some later date the source tree will be reorganized to move these directories into bin or usr.bin much like is done in the BSD source trees, as well as importing other sources directly into the tree and \"HitchHikerizing\" their build systems.\nThe title promised some pkgsrc updates relating to arm challenges. In a nutshell pkgsrc seems to be broken in several places for arm on Linux. Perhaps most annoyingly is the buildlink system, which is supposed to make it simpler for packages to find the libs that they are to link against by moving everything into work/.buildlink/lib (relative to the subdirectory that bmake was run from). So far I've discovered that libuuid, libexpat, libstdc++, libacl and libattr libtool archives are skipped every time on arm for reasons that I have not yet discovered. I can work around it by manually linking the .la files in from /usr/lib, but this requires an annoying level of manual intervention. Nevertheless I have managed to build the full LXDE, XFCE and Mate desktops, several shells, emacs, nano and pico editors, Inkscape and am on to building Gimp presently on my RPI. On x86_64 I have all of that plus a fairly complete server stack, Abiword, Gnumeric and the Firefox browser built.\nIn short, when q3 releases (and it really is coming soon) there will be a fairly comprehensive selection of software available on both architectures via pkgsrc. However, in the long run we're going to revisit the idea of creating our own ports tree which leverages GNU make and the infrastructure of .mk files that now reside in /usr/include/mk, adding funcionality for creating binary package tarballs and downloading and installing them. This will most likely involve a simple homebrewed package format that takes some inspiration from BSD tarballs, Slackware tarballs and Arch Linux tarballs. A sneak peak in the current build tree at how we register the installation of the base system will give you an idea. We're going to keep things purposely simple and avoid writing a full fledged package manager. More details to come.\n","id":"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/","title":"Imported source, pkgsrc on Arm woes, and make includes"},"/news/improved-porting-with-libbsd/":{"body":"The libbsd project was begun originally by the developers of the Debian K-FreeBSD project as a means of addressing differences in the available functions, headers and c macros between BSD libc and GNU libc. I have imported the source directly into HitchHiker and \"hitchhikerized\" the build process. Only the static library archives are built at this time. With a few tweaks and an additional \"compat.h\" header to address a few omissions, this has led to an improvement in my process of porting BSD utilities, and the vast majority of the imported utilities now link with libbsd functions. There is little measurable overhead in the resulting binaries.\nFor those utilities that are more difficult to port I have begun porting the work already done to create lobase, a portable package of OpenBSD userland, to the hitchhiker build system. I am also pulling in sources from FreeBSD now. The first program ported from FreeBSD to HHL is the ed editor, which in this case was easier to get going than the version from the NetBSD sources.\nI have always enjoyed the venerable Unix fortune program, and always include a call to it in my shell profile. While I did consider the idea of including it by default in the HitchHiker base system, I decided to go another route and just implement something simpler from scratch. Hence, the small C program 42, which by just prints a random quote from the HitchHiker's guide universe. It accepts no options and can only be extended by editing the source. Just a bit of fun.\n\n","id":"/news/improved-porting-with-libbsd/","title":"Improved porting with libbsd"},"/news/more-pkgsrc/":{"body":"While attempting to build the Thunar file manager (via pkgsrc) I encountered a\ncouple of other errors when it pulled in Samba4 as a dependency. Samba4 has\nswitched from using GNU autotools to it's own internal version of waf, a Python\nbased tool for configuring software. Waf takes most options that one\nmight pass to a GNU configure script. The difference is that an autotools\nconfigure script will generally either ignore an option that it doesn't recognize\nor else complain about it but still continue running. In the case of waf, an\nunknown option causes an error, which aborts the build. In the case of samba4\nthis was --gmp-include.\nAbout an hour later after failing to find where that option was being included from, in desperation I just did a grep through every Makefile in pkgsrc for \"gmp-include\" and found a few candidates. After temporarily commenting out the CONFIGURE_ARGS+= lines in devel/gmp/builtin.mk the samba4 build was up and running again. Note that I'm still unsure where it's getting pulled in, as I traced the Makefile includes through a few levels before giving up.\nSo, samba4 was building, then it wasn't again. This time the build failed due to the lack of the rpcgen utility, which is included in NetBSD (and indeed FreeBSD and OpenBSD and pretty much every BSD variant) but not in Linux. Linux has libtirpc and rpcgen is widely considered obsolete, and in fact was abandoned by it's chief developers, Sun, some time ago. However since we're building using pkgsrc it's assumed to be on our system. What's more frustrating is that there is no package for it in pkgsrc. This has already been noted on the mailing list as it causes more than one package build failure on Linux.\nAs it looks like going with pkgsrc is going to expect us to have rpcgen in several places, I set about trying to find a portable version of the source code. This turned out to be quite more of a chore than expected, but I did find an older version that had been pulled into a more or less portable state. I've imported that source into the HitchHiker build tree and rewrote the Makefile to suit our purposes. After adding it to our system and restarting the samba4 build (with \"--gmp-include\" still temporarily excised) samba4 builds successfully, and Thunar was able to build successfully as well.\nThis whole exercise is a good illustration of the challenges in making any software project truly portable, and why a more efficient build can be achieved by ignoring other systems and targeting the build only to the system actually in use. It's why I've imported the sources for ee, mksh and now rpcgen directly into the source tree and we're building them without any configure checks, as it's already known exactly what's on our running system.\nAnother thing this illustrates is some of the problems that arise due to projects switching their build system to one of the dozens of projects that have sprung up to \"replace\" GNU autotools. The fact is that very few, if any, of the replacements have achieved anything close to the flexibility and maturity of autotools and most probably never will. I'm not a fan of autotools by any means. It's a quagmire that most people don't understand; a lot of devs simply cut and paste from other projects and hope for the best. The Makefiles it generates are of a complexity and length that are ridiculous. However, the fragmentation that is currently occuring as some projects use cmake, waf, ninja, meson, jigdo, scons or whatever the next kid on the block is named is a true nightmare for anyone trying to build and maintain a full distro. That's not even accounting for the various homebrewed shell scripts that I encounter which have varying levels of POSIX compliance and make their own assumptions about the utilities present on your system.\n","id":"/news/more-pkgsrc/","title":"More Pkgsrc"},"/news/on-libc-rust-experiments-and-risc-v/":{"body":"LibC\nRecently I have continued the exercise of re-implementing certain base system utilities in C, uncovering more and more differences between BSD and GNU libc implementations. At this point it's really easy to say that I have a strong preference for the BSD extensions to the libc standard as opposed to the GNU extensions. The Berkeley programmers, when they added features, added truly useful features.\nTake random number generation as an example. It is fairly common when programming on Linux to open and read from /dev/urandom. BSD, in the meantime, offers a group of functions in libc (arc4random) that combine pseudo-random number generation with cryptography to produce pseudo-random data that is truly difficult to guess, with a low CPU overhead.\nAnother small place where I found the BSD libc to offer superior functionality was when I was writing my own version of the mktemp utility. The BSD versions of the mkstemp and mkdtemp functions allow one to give a template with a variable-length suffix, to give a choice between quick (with a smaller suffix) or as secure as you want to be. By increasing the suffix length, one can exponentially increase the number of possible filenames, making temp files a more difficult vector of attack.\nThe GNU (and musl actually) versions of these functions only allow a six character random suffix, period. In fact, my earlier port of mktemp from BSD did not function as expected in this regard, and the GNU coreutils programmers had to roll their own functions to get equivalent functionality to the BSD counterparts. I have elected to not abstract this deficiency away in my code, and the HHL version of the mktemp utility uses the available versions of mkstemp and mkdtemp, with a six character suffix. I would rather maintain the simplicity of the program than to take a risk of introducing bugs by writing my own functions here.\nIn any event, the work that I have been doing here makes a strong case for a future port of musl, with the additions of some BSD functions ported to work with musl, as our base C library. As attractive as BSD libc is, a direct port is unrealistic as so much of it is tied to kernel interfaces that differ on Linux. I just find it a shame that Linux users are mostly saddled with such a piece of crap (bloated while still being less functional) in such an important position in the software stack.\nRust\nThere are a lot of programming languages, and they tend to come and go regularly. As programming languages go, it's a safe bet that C, C++, Java and Python will be sticking around. Of the less pervasive languages Go and Rust seem to be well ahead of the pack as pertaining to mass adoption. Go is interesting, largely because of what it leaves out. Go is simple. Go avoids the feature creep that seems to be inevitable in all modern software. However, Go achieves memory safety by using garbage collection. I want to like Go, but that one anti-feature prevents me from even trying it.\nRust, on the other hand, has feature upon feature to the point where I really am hoping that they ever finish the language someday. That said, I'm intrigued by Rust for a number of reasons. I have been toying with learning the language for a while, doing some simple learning exercises and reading the Rust Book. I recently decided to just dive in and start writing my own programs using Rust, as that seems to be the only way to truly learn a language. My first full Rust program is a clone of a C program that I wrote for generating sine lookup tables, useful in DSP applications. The C version is perfectly fine, but I basically wanted to try porting a known working program and see how well the control flow translated.\nThe process was not completely smooth, and it took quite a few iterations to get to the point where the program compiled and actually functioned. However, the documentation is excellent and provided solutions to most of my issues. The other thing that really impressed me was the compiler messages. Often, the compiler will tell you literally the exact change needed to make your program compile. Coming from C, this is a breath of fresh air. And when we're talking about Rust, chances are that if it compiles it's also going to function exactly as expected.\nRust is also elegant in a way that C never will be. Consider the following C code:\nfor ( i = 0; i < 10, i++) {\n // some code\n}\n\nAnd the equivalent Rust:\nfor i in 1..10 {\n // some code\n}\n\nOne thing that requires a different mindset when one moves from an old-school language like C, to a modern language like Rust, is that in C et al, the standard library tries to be all inclusive. Programmers (at least the good ones) try to avoid adding dependencies to anything other than the standard library. Rust, however, has Cargo. Cargo is, in effect, a built in package manager. This is not unheard of; Python has pip and has for years. In Rust, however, the standard library is quite small and everyone pretty much freely uses cargo to access functionality that is not included in libstd. In my case I used cargo to pull in the excellent clap crate, which parses command line arguments and also provides built in documentation. Compared to getopt in C, clap both does more and does it with little effort.\nAt this point int time, however, Rust is not going to be landing in the HitchHiker base system, as the only viable Rust compiler uses llvm as a backend. At some point in the future this may well change anyway, as I have been growing increasingly frustrated with both Glibc and gcc (a brief skim of some earlier blog posts will quickly turn up examples). The obvious replacements are musl and the clang compiler, which, being based on llvm, would make the further inclusion of rustc trivial.\nRisc-V\nI do a fair amount of electronics experimenting and often employ various microcontrollers in my projects. Some are Atmega based, while I have more recently fallen in love with the ATSAMD51 Arm Cortex M4 processor based boards from Adafruit. Just this week I have acquired something new to me: a Risc-V based MCU from Seeed Studio, the Sipeed Longan Nano. It's a brilliant chip, although quite lacking in documentation and example code. I'll be playing with it a lot.\nThe Nano, however, is a microcontroller, not a full SOC that is capable of running Linux. Right now there are few options for developers wanting to experiment with Risc-V with a full operating system, and the best ones are all prohibitively expensive for their capability. Due out next year, however, is the PicoRio board from Rios labs that is described as close in form factor and capabilities to most Arm boards based around the RPI format. Provided this board is not vaporware and actually does materialize at a reasonable cost, I intend for HItchHiker Linux to be running on it as soon as feasible. I intend to make HitchHiker one of the very first options independent of distros such as Debian and Fedora, and to make Risc-V a first class citizen. It is my hope that in doing so HitchHiker might help to push along the adoption of truly open hardware on which to run open software.\n","id":"/news/on-libc-rust-experiments-and-risc-v/","title":"On Libc, rust experiments, and Risc-V"},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"body":"Having been working with pkgsrc for a couple weeks now there's a bit of a flow\ndeveloping, and quite a bit of progress, with a big caveat. The issues I'm\nrunning into are that there are quite a few more build failures for Arm than\nthere are for x86_64.\nInterestingly, both libdrm and MesaLib fail with similar messages about assembly\ncode that isn't supported on the current architecture (armv7l). In situations\nlike this it's hard to blame pkgsrc, as the fault is upstream from there. I'm\ngetting quite used to adding packages to my local tree and tweaking BSD style\nMakefiles. I'm making every attempt to send fixes upstream; however, waiting for\na response each and every time is just not really going to be an option here, so\nin the meantime I've decided to import the entirety of pkgsrc into git and use\nthat tree as the \"official\" branch for HitchHiker. This will enable our project\nto build up a substantial package collection even if upsteam pkgsrc begins to\nlag behind.\nOne of the problematic packages that is now often being pulled in as a dependency is rustc, the rust compiler. It's problematic on two fronts. First, unless your system has substantial amounts of memory a parallel build will fail as the memory fills up (mine has 8 gig and still fails). Second, and quite frustrating, is that rustc is only compatible with certain versions of either openssl or libressl, and our version of libressl was too new. After seeing if we could use either libressl or openssl from pkgsrc and encountering repeated failures, I just rolled back libressl to the newest version that rust supports.\nLet me pause here for a brief commentary on rust as a programming language. There is a lot to like about rust, and it seems that the language may be with us for quite some time, as it seems to see more usage every day and has achieved a critical mass of developers. I've played around with it myself a little bit and the documentation is very good, it's probably one of the easier to learn languages, and the ecosystem as a whole is very nice when you look at all of the features that cargo brings to the table. However, I am not a fan of the fact that the rust standard library, libstd, is compiled in statically by default. This results in a simple \"Hello, world!\" executable compiling into a 7.1m binary on my machine before stripping, which comes down to 220k after stripping. When compiling the same program dynamically it comes all the way down to 16k after stripping, so we have approximately a 204k overhead per binary for the static libstd.\nI am also not happy about rolling back libressl, as I would much rather have the newest possible version of what is a security critical piece of software. However, it is I believe still a better and more secure option than openssl, which most distros are still using. It's a shame that a major piece of software like rust, that is a dependency of quite a number of other packages now, has not updated to use the newer abi presented by newer versions of libressl.\nAfter a couple weeks of building packages on both x86_64 and armv7l, using an identical set of packages in the base system, it is very apparent just how much more development x86_64 gets than arm. Two packages in particular illustrate this quite well - libdrm and MesaLib - both of which are major dependencies of modular Xorg. In both cases assembly code is generated by gcc that contains instructions not supported by the processor, and the only fix is to disable features in the Arm build. In the case of MesaLib this involves patching the source code. Thanks to the Arch Linux Arm team for showing the way, as my patches are adapted from their PKGBUILD.\nThere have been just a few more tweaks to the base system as I attempt to fully\nfinalize the build in preparation for release. The rpcgen utility that I had\nincorporated proved to not fully support all features needed for building certain\npackages in pkgsrc. After some search I found a newer version that had been\nautotooled in the rpcsvc-proto package, which was originally a compatibility\npackage during the time that SunRPC was being removed from Glibc. I've imported\nthe source for just the rpcgen utility from that package into hitchhiker's build\ntree, removed all of the autotools material, moved all C-preprocessor flags into\na config.h file, disabled NLS and made a very lean, mean Makefile for it. While\nI was at it I used similar techniques to update the builds for mksh and pax.\nBoth of those packages now include their CPPFLAGS as defines in config.h, and I\nhave even begun eliminating ifdefs out of the C files to make for a cleaner and\nfaster build.\n","id":"/news/patching-pkgsrc-building-rust-and-arm-headaches/","title":"Patching pkgsrc, building rust and Arm headaches"},"/news/porting-netbsd-userland-infrastructure-improvements/":{"body":"As noted previously, I have some issues with the complexity of GNU autotools and the bloat that it introduces into building what should be very simple programs. I pointed out coreutils as one of the worst offenders at that time, and have been exploring ways to either port coreutils to a simpler build system or outright replace the package.\nIn context, there is nothing particularly wrong with the utilities themselves and functionally they work as expected. One benefit that coreutils provide over almost every other implementation is improved localization. However, there is complexity that is at times not really justified. Let's take the utility program \"true\" as an example, whose sole purpose is to do nothing and exit with success. A simple C program can be constructed to perform this function perfectly well with the following code:\n#include <stdio.h>\nint main() { return 0; }\n\nThis simple code compiles to a 16k executable (stripped) and does everything that we need it to do. But we can do even better actually, with a single line shell script:\n#!/bin/sh\nexit 0\n\nThis little gem reads as a whopping 4k on disk on my machine and also fulfills exactly what we expect the program to do. So why exactly is the file true.c in coreutils 80 lines that compiles to a 40k executable after stripping?\nI had at one point tried replacing coreutils and util-linux completely with the sbase and ubase packages from suckless.org. The main issue with doing this is that not all of the utilities are feature complete yet. They are fine for day to day use navigating around in a shell environment, but begin to fail when running scripts that are meant to be portable or building software, when an unsupported flag causes the utility call to fail with an error. I do have a branch containing the entirety of sbase and ubase with the source reconfigured to match our build tree layout of one program per directory, and building using hhl.cprog.mk.\nI have always had a lot of admiration for BSD systems and ran FreeBSD as my main OS on several machines for a number of years. Too much is actually made of the differences between a BSD userland nad a GNU userland, as the vast majority of the time they are functionally equivalent. As mentioned previously, the GNU utilities have better localization. They also accept GNU long options. I have never found the lack of long options to be an issue; on the contrary short options are faster to type and are generally the go to choice for those familiar with the shell interface. Therefore I decided to start working on porting BSD userland to Linux with Glibc, using our HitchHiker build system. As there are a great many small utilities this is a process that isn't going to happen overnight, but has already yielded a surprising amount of success with modest effort.\nThere are a few projects already in place that do something similar, such as lobase, that approach the issues of missing functions and macros by creating a compatibility library and then linking the utilities to it. While this is a perfectly valid approach, it has the drawback of increasing code size somewhat. I have also found so far that simply removing macros that don't exist on a Glibc system is enough to get the code to compile with a simple gcc -Wall file.c. At other times one can simply translate from one function to another, for instance from strlcpy to strncpy, the latter which is available with Glibc and does very near the same thing.\nWithout getting too further involved in the details, so far I have working copies of the utilities apply, banner, basename, cat, dirname, grep and tr taken from NetBSD. Grep was previously a separate package that has been removed. We previously already had the awesome pax utility imported from MirOS, and have now removed GNU tar in favor of a simlink to pax, which functions very well as a tar replacement. Additionally, the utilities true, false, and which have been replaced with one line shell scripts (which is a zsh builtin, which we can call from another shell with a one line zsh script).\nThe result so far is a mixed userland that is predominately composed of GNU utilities with a sprinkling of BSD licensed utilities thrown in. The endgame is to replace the bulk of the GNU utilities with ports of the BSD versions, including many utilities such as apply, banner and pax that do not traditionally even exist on a Linux system. I may supplement this over time with utilities taken from sbase, ubase, or lobase as difficulties are encountered in porting the NetBSD utils, but would like to do as much straight porting against the actual system libraries as possible, as opposed to linking against compatibility libraries.\nOn to the build tree infrastructure improvements mentioned in the post title. A few posts back I mentioned standardizing the way that we handle packages that need extra steps beyond \"make install\". Similarly, I'm working on simplifying the use of build systems other than autotools. One feature of autotools that we leverage by default is that we can build outside of the source tree in a separate object directory. This is the default, but not all packages support this. There are even a few packages out there that mostly mimic autotools from an end user perspective, having a home-brewed configure script, but generally do not support building in an object directly. So now by simply setting the variable ${no_objdir} we can handle those cases in a unified way, and our build system knows that ${objdir}/.dirstamp is not a dependency of the configuration stage for instance.\nAdditionally, some packages eschew any kind of configuration step entirely and build just by running make. We now handle this in a more unified manner as well, rather than on a per-package basis, by setting ${use_configure} to false.\nThese changes are minor, but are going to go a long way towards implementing a ports tree with a more concise and understandable codebase.\n","id":"/news/porting-netbsd-userland-infrastructure-improvements/","title":"Porting NetBSD userland, infrastructure improvements"},"/news/reconfiguring-the-build-process/":{"body":"Up until now HitchHiker has used a build process that closely followed that used\nby the Linux From Scratch book. There was a temporary toolchain, hacked to use a\ndifferent library directory and prefix\n\nso as not to conflict with the host system or with the libraries and tools being installed as the finished system. This temporary toolchain was in itself a complete development environment that included everything required to bootstrap a full system. To build to final system, is was necessary to chroot into a new directory containing the temporary tools and root filesystem.\nThis method had some advantages, but also involved compiling most packages at least twice. It also required quite a lot of extra work to do any kind of cross compiling. In fact, I had set up an RPI4 specifically as a compilation machine for Armv7l, as it was basically impractical to use my x86_64 laptop to develop for Arm.\nIn an effort to increase the flexibility of the HitchHiker build tree, support more architectures, and to streamline the build I am experimenting with using a sysroot compiler for the majority of the build. In testing, with minimal effort I was able to set up cross toolchains for armv7l, aarch64, riscv64, and i486 as well as a native x86_64 toolchain using the same build tree and only adjusting the ${arch} variable in config.mk. In testing I was able to compile almost the complete userland for x86_64, aarch64 and riscv64 without resorting to a chroot, and all on my main machine. My current plan is to compile most of the base system using a sysroot toolchain, either native or cross, including the build of the native toolchain, and then to chroot into the near complete root filesystem to finish up any packages that cannot be easily cross compiled. At this juncture I believe the only package in the base system that will be truly problematic for cross-compilation is Perl, which uses an ill conceived homegrown configure script instead of autotools. However this is not quite verified for all packages just yet.\nIn the case of a package refusing to cross-compile, I can then use the method outlined in the previous post and compile with the native toolchain using qemu user-mode emulation.\nIn addition to the vast reduction of packages being compiled twice or more, this also has the advantage of running on a fast machine. Additionally, with most of the work not requiring the chroot trick, there is no emulation layer to slow the process down. A future goal will be to fix the issues with Perl and push patches upstream if possible, as Perl is a hard build dependency of the kernel and therefore must be considered an essential part of the base system.\nTo give some idea of the resource savings this brings about, here's a quick table outlining the number of passes required for certain packages under the old layout vs the new. Note that it is still necessary to make multiple passes at Binutils and Gcc, as we have to build our sysroot/cross toolchain, but there is a rather significant reduction in the amount of other software being built twice.\nPackagePasses (old)Passes (new)\nBinutils32\nGcc3 + separate libstdc++ pass3\nLinux Headers21\nGlibc21\nM421\nNcurses21\nBison21\nDiffutils21\nGettext21\nMake21\nPerl21\nPython21\nTexinfo21\nPatch21\nBusybox1Not Built\n\n","id":"/news/reconfiguring-the-build-process/","title":"Reconfiguring the build process"},"/news/restarting-make-buildworld-cleanup-default-software/":{"body":"One of the deficiencies in the HitchHiker build tree up to this point has been dealing with packages that require some manual intervention after the \"make install\" step. Originally there was no unified infrastructure to deal with this scenario. Very quickly during testing I realized that this was an omission that was going to cause problems, as the scenario was much more common than I at first realized and implementing solutions on a per-package basis is both quite error prone and likely to introduce bugs into the build process. Up until the workarounds have involved redefining the .DEFAULT_GOAL variable and creating custom targets to finish the installation, while making the basic installation a dependency of said targets.\nA common problem that arose out of this hodgepodge approach is that if the new targets were \".PHONY\" targets (a target that is not an actual file) or the targets were symlinks then if the build was stopped it would error out on resuming, due to the timestamps of dependencies being the same or newer than their targets, or else a target could not actually be run because it involved moving some file that we already moved the first time it ran. This made testing new features a laborious process, as often any errors required removing the entire rootfs and restarting buildworld from the beginning.\nWhen I implemented hhl.cprog.mk, I took steps to remedy this situation. If one defines the variable \"finish\" then the system will know that there are steps to be taken after \"make install\". Then any additional steps can be added to the new target {objdir}/.finished, which is the second dependency of the \"finish\" target after \"install\". This worked well in practice, so I have implemented the same functionality in targets.mk which is used by all \"external\" source packages (those packages for which the source is not included in the HitchHiker build tree but downloaded as tarballs during the build).\nAs a result of this, after considerable tweaking, the build can now be restarted from any point after stopping and will run to completion. I consider this to be an important milestone, as it makes future development much less arduous.\nAn important goal of HitchHiker is that the base system includes everything needed to bootstrap a full system. As such, it is unfortunately required to include certain packages that will not necessarily be required under all circumstances. A good example of this is the networking stack, as it is next to impossible to bootstrap a full system without a network connection, but we don't know if that connection is going to be wired, wireless, secured wireless, static or dynamic, etc. The first test builds of the complete system ignored this completely and only included what is needed to manually set up a static, wired connection.\nThis situation is also now remedied, as the officially distributed builds will include the dhcpcd, wireless-tools and wpa_supplicant packages. However, it is entirely possible to exclude any or all of these packages by setting appropriate variables in the file config.mk in the top level of the source tree.\nThere are now a number of things that can be tweaked when building the system from source. One can specify a list of locales to compile for glibc rather than the default of compiling all supported locales. By setting the variable rpi to true, you get the Raspberry Pi foundation kernel instead of linux mainline. And a custom kernel configuration file can be substituted for the default HitchHiker one. None of these tweaks should change the essence of the system being HitchHiker, but just allow the user some extra choice and the ability to slim the system down a fair bit, as well as speeding up the build somewhat.\nLastly, I want to talk about the roadmap for HitchHiker a little bit. Regarding the build tree itself, at the moment we currently have the .mk file targets.mk which includes most of the logic to build all of the packages that are downloaded and compiled as part of the base system. This file's internal logic defaults to using GNU autotools, but is flexible enough to build packages in other ways by resetting appropriate variables. This approach does work, but requires some deep knowledge of how it all is put together. As eventually I would love to see my work finding a larger audience I would like to make the infrastructure a little bit easier to understand, so for example when we graduate from pkgsrc to our own ports tree there could be some community involvement in fleshing out a complete ports tree.\nTo that end, a future goal is going to be removing the autotools logic into an \"autotools.mk\" file and creating, for instance, \"cmake.mk\" or \"waf.mk\", which will know how to build packages using those build systems. At that point one could set the build system to use \"waf\" via a variable assignment and then include hhl.ports.mk, which would then pull in \"waf.mk\". Doing this cleanly is an important step in the way to creating a ports tree that will be easily debugged and easy to maintain and update.\nThis theoretical \"hhl.ports.mk\" will also need logic for tracking everything to be installed by each and every package, uninstalling packages and upgrading to newer versions. In short it will need much of the logic of a package manager. I have actually implemented most of this previously in the original HitchHiker system of ten years ago. At that point installed files were tracked by creating a timestamp file before \"make install\" and then using the find utility to catch any files with a newer timestamp. This had the attractive benefit of being completely agnostic to build system, but is not without it's drawbacks. Chief among the drawbacks is that it is a rather time consuming approach, but there is also the danger that we will miss a file if it is created with the wrong time stamps, or may capture an incorrect file that has been created by another running process. For those reasons I'm planning to implement it by installing into a DESTDIR. The problems here are that one needs to be familiar with multiple build systems to know how to achieve this, and also that the concept of a DESTDIR is not universally implemented in all pieces of software out there. For the former, the solution is good old fashioned grunt work to learn the ins and outs of each build system as it is encountered. For the latter, the approach is going to be patching the build system and submitting patches upstream, with the hope that the authors will be receptive.\nI'm going to interject at this point to point out that pkgsrc uses an entirely different approach by requiring every package directory to include a PLIST file, thus placing the burden squarely on the shoulders of the maintainer to populate this file with every file the package will install on your system. FreeBSD also uses this approach. Functionality could be included into \"hhl.ports.mk\" to use a PLIST file if it exists, skipping any automatic file discovery.\nThen there is another elephant in the room - dependency tracking. The previous incarnation of HitchHiker kept a flat file database of every file that every package in the ports tree might install, ran \"file\" on every file in the new package to determine it's file type, then ran ldd on every elf file and compared the results to the database. It was quite effective at catching any binary dependencies. It was also slower than shit on large packages and extremely overkill much of the time. Knowing a bit better now I have no intention of going down that rabbit hole again. Instead, dependencies are just going to be manually specified by the developer in each port's Makefile. While this is somewhat error prone, it can be refined over time to be near perfect and has the advantage of speed. In addition, not all dependencies are library dependencies. Some dependencies are of the nature of expecting another program to be available to exec() at runtime, and some dependencies are simply build time requirements.\nNow here's the point where I'm going to get controversial. BSD ports implement all of this using just make and for years had nothing like the traditional Linux package manager, instead relying on simple command line utilities to manipulate packages. I -don't- want a package manager in HitchHiker. I don't want to reinvent the wheel and write a new one, and none of the existing ones are going to be suitable. I think they're generally just complicated, poorly understood by the average user, and since there are already so many implementations it's virtually impossible at this time for one of them to become \"standard\", thus basically making the idea of the Linux desktop an unachievable dream. No company is going to bother supporting dpkg, rpm, Slackware tarballs, Arch tarballs, Flatpack and Ubuntu snaps. It's not happening. At most they're going to release an rpm, a deb or a snap and just ignore everybody else. The ideas of the commercial world embracing desktop Linux, the year of desktop Linux, etc are all basically pipe dreams.\nHere's what I picture instead. If we can manipulate source archives into binary packages and then install those packages all using make, we can frankly do the same with binary packages. BSD port trees and pkgsrc had already proven that would work years ago. In fact, in FreeBSD you can install binary packages that are dependencies of the port that you are building rather than building them from source, or build ports that don't have a binary package available when installing binary packages. This system functioned just fine for a long time. Their mistake a few years ago was jumping on the Linux bandwagon and writing yet another package manager, pkg. Since that time I've noticed quite a lot more issues keeping FreeBSD packages up to date, to the point where I even abandoned an installation at one point. So we're skipping it entirely, and instead I'm going to provide a \"binary-install\" target in \"hhl.ports.mk\" that will fetch and install binary packages. Easy peasy, no package manager required, unless you consider the ports tree itself to be a package manager.\n","id":"/news/restarting-make-buildworld-cleanup-default-software/","title":"Restarting make, buildworld cleanup, default software"},"/news/some-more-home-cooking/":{"body":"After removing GNU coreutils and taking closer stock of what we have as a\n\"base system\", I am mostly happy with the selection but now wish to spend some\ntime making behaviors, documentation and source code itself more uniform. I have\nalso done some work towards correcting a couple of omissions that are present\ndue to the previous surgury. The commit that I pushed this morning has a few\nnotable changes.\n\n\nhostid - This is a non-POSIX utility of GNU origin that is present on systems with GNU coreutils but not on BSD based systems. I have written a replacement from scratch in C, which was a fairly trivial task as mentioned previously. The new utility, much like the rest of our userland, behaves like the GNU counterpart with the exception of not accepting long options and not having a help option (help is available via the man-pages, so '--help' is always redundant IMO).\nnproc - Another scratch implementation of a utility with a GNU orgin.\nrev - A scratch rewrite for HitchHiker, should be functionally identical to the BSD and/or Suckless versions. Notably, my version, the BSD version (which we had previously) and the suckless version are all quite a bit faster than the rev utility provided by the util-linux package due to architectural differences which I'll explain below.\nmkdir - Another scratch rewrite. These are being done patially as an exercise in C programming and partially to lessen our dependence on the portability libraries used to port BSD utilities to Linux. However, this utility is currently a special case in that regard (see below).\nbase64 - This one had been ported from NetBSD but is actually broken on every platform in regards to being able to process it's data from a file rather than stdin. It's now fixed at least in HitchHiker.\nI have also begun a process of formatting the source code imported from other sources using clang-format to enforce more uniform standards, and to go through the man-pages a few at a time to do some similar housekeeping. It's a small niggle, but both BSD and Suckless use tabs for indentation where I prefer two spaces for compactness. There are also some inconsistencies in brace styles and function declarations. I prefer the function declaration to be on one line followed by the opening brace on the same line, and for things like loops to include the opening brace on the same line as the loop initialization. Basically, the defaults provided by clang-format make for nice, readable and consistent code.\n\nNow, as mentioned above, let's get into some detail with the implementations of\nrev and mkdir. Let's begin with rev, which is a simple utility which just reverses the characters in each line. Now, a simple implementation of rev, and basically where I started, would just read each line using getline (or fgetln on a BSD system) and reverse the bytes, excluding the newline, which is replaced back at the end of the output. This works fine for ascii characters, which all by definition fir into a single byte of data. However, utf8 is a fact of life, and we quickly run into a situation where we have reversed the byte order of a multibyte character, printing gibberish to the terminal. The Util-Linux utility solves this by reading each line into an array as a sequence of widechars, essentially reading character by character, and then doing the reversal.\nThe BSD, Suckless, and now HitchHiker utilities all use a similar, and more efficient approach. The line is read as described above, then, starting with the charcter preceding the newline, each byte is tested to see whether it is the beginning of a character or the middle of a multibyte character. If we run into a multibyte character, we find the beginning of it and then read forward again to the end of the character, before skipping backwards again past the multibyte character. While sounding convoluted, this is quite a bit faster when processing large amounts of data, as we're only looking at the first few bits of each byte rather than reading each line in character by character.\nNow on to mkdir. Most of this was straightforward to implement, including the -p option, as we just have to construct a path directory by directory by processing the path as a string, using, in our case, the strtok function. However, mkdir is also expected to be able to set the Unix permissions of directories that it creates, and accept the mode arguments in either octal or symbolic format. It is trivial to implement the octal permissions, but implementing symbolic permissions entails coding a parser which must accept a fairly wide range of possible permutations. After looking at how the functionality has been implemented in BSD, GNU, and Suckless utilities, it quickly became apparent that the BSD implementation makes the most sense from the efficient use of code standpoint, as the BSD C-library already contains the getmode and setmode functions. As this has already been ported to Linux via libbsd, and as such is already present in HitchHiker as it has been used to port much code from both NetBSD and FreeBSD, I decided to just go ahead and use it. On a side note, it would be fantastic to see some of these functions present in the GNU C-library. The getmode function is quite useful, and fgetln is quite a bit more, let's say graceful, to use than getline.\nIt should be noted that static linking libbsd into a Beerware licensed utility is somewhat problematic. I have been considering extending the build system somewhat, to also build shared libraries alongside the static archives. I am somewhat hesitant, as I feel that low level base utilities such as this should only depend on the system C library at runtime. Alternatively, if at some point in the future HItchHiker does make the switch to Musl libc (which is still on the table) then it might be possible to patch musl to incorporate the functions right into the system C library for HitchHiker, allowing for their removal from libbsd and lessening our reliance on it for porting utilities. I rather like this train of thought...\nThe end goal is, of course, the kind of tightly integrated userland that BSD\nsystems are noted for. When looking at the various base utility implementations,\nit is striking that commonly there is a library of common functions built and\nlinked into the utilities. This tactic is employed by sbase, ubase, GNU coreutils,\nUtil-Linux, and lobase (the port of OpenBSD userland to Linux, from which I have\nborrowed heavily). I'm employing it myself by using libbsd to port NetBSD and\nFreeBSD utilities. In the long run, I want to eliminate this trend and fully\nintegrate everything to where we're only depending on the C library both at build\nand run times. My own implementations, with the exception of mkdir, currently do\nthis. As an example, on BSD systems a program is aware of the name under which it\nwas invoked via the getprogname and setprogname functions. As GNU libc does not\nhave these functions, we have a global constant char __progname, which is set to\nthe program name by calling basename(argv[0]) in the main function. While\nthis results in some additional boilerplate code, it's actually scarcely more\nthan what BSD already has due to the need to call getprogname and/or setprogname.\nSimilarly, Suckless abstracts away certain things like printing to stderr (their\neprintf function) and getting program arguments, which are easily done just using\nfprintf(stderr, \"msg\") and getopt, respectively.\nA possible eventuality might involve refactoring much of this code somewhat to remove the dependencies on their respective utility libraries and replacing it with more \"generic\" programming. While this might increase source code size somewhat, it would not likely impact compiled size or efficiency, as we're just removing the abstractions and putting them back into the programs. This has the benefit of making the code easier to understand without having to look at the library and what it does.\n","id":"/news/some-more-home-cooking/","title":"Some More Home Cooking"},"/news/website-redesign/":{"body":"I know a little bit about a lot of things, and one of the things that I know\nonly in passing is web development. I am by no means qualified at\nor excited about web design. However, in the spirit of DIY I have always muddled\nthrough all of my own projects. This has in the past meant using a CMS of some\nsort, and a rather long time ago I settled on Mezzanine, a Django-based CMS\nwritten in Python.\nThis worked out all right in most ways. However, a few weeks back I had a server\noutage that I traced back to the update from Python 3.8 to Python 3.9. The\nvirtualenv that I had set up simply stopped working, causing the web server to be\nunable to start as the default handler was DOA. Now, a Python virtualenv is a\nsupposedly complete standalone environment containing the Python interpretor and\nlibraries frozen to be version compatible with your application. It is supposed\nto be self contained and not dependent upon the system-wide Python installation.\nThe fact that bumping a minor version number caused it to fail is distressing\nand has soured my already low opinion of Python somewhat.\nAdditionally, I have long desired to incorporate a full handbook into the website\nand do so in a way that looks seemless with the rest of the site. HitchHiker is\nnot going to be a turnkey system for most people and will need good documentation.\nI have tried a few things that were available online, including Mezzanine Wiki,\nbut nothing is really suitable and many packages are broken and/or unmaintained\n(including Mezzanine Wiki at the time I tried it).\nBeing impressed with the quality of the documentation for Rust I looked into what\nthey use. The Rust Book is built using mdbook,\nwhich is a wonderful static markdown to html generator that does exaclt what it\nclaims to do and does it exceptionally well. After messing with it for all of two\nminutes I was sold - it's just plain phenominal in use.\nHaving settled on mdbook for the forthcoming \"Hitch Hiker's Guide to Hitch Hiker\nLinux\" I decided that if we're going static pages there, it would be a good\ntime to go static pages everywhere. I set about looking for a static site generator\nthat would give me enough flexibility for my needs and still be simple to use.\nWhile there is no shortage of SSG's available right now, there were several popular\nones that I never really considered based on implementation. Jekyll, for one, is\nwritten in Ruby and I'm not looking to pollute my machine with more interpreted\nlanguage cruft.\nI gave Hugo a long, hard look and went so far as to install\nit and do some testing. Hugo is written in Go, seems to work well, and is definitely\nfast. However, none of the available themes were going to be suitable without a\ngood deal of hacking.\nAt first glance, Zola appeared to have the same\nstrengths and the same issues as Hugo for my use case. I really couldn't see\napplying any of the themes that I found directly without a lot of customization,\nand there were a couple that I tried that were flat out broken. On top of whatever\ncustomization I was going to have to do to whatever theme I picked, I was also\ngoing to have to adapt to an mdbook theme as well....or was there another way?\nIt turns out that the default set of themes that ship with mdbook are pretty much\nalready great, and would look great adapted to an entire site. Now, mdbook itself\nis pretty much not suitable for generating the entire site, as I need a front\npage, I want to keep my blog, and I'd like to be able to incorporate other pages\nas well that aren't going into the table of contents for the book. But what I\nthought I could do is to create my own Zola template using the css from the mdbook\nthemes.\nSo in the end that's what I did. Zola, written in Rust, is actually quite a bit\nsimpler than Hugo and after a few initial trip ups getting started I'm finding\nthe template system to be something I can navigate all right. I'm left with a two\nstep rendering process to build the full site, as I'm rendering most of the site\nusing Zola and the book using mdbook. But hey, I've already proven that I can do\na good bit of automation using make, right?\nWhile there's a bit more work left to finish migrating the old site, I have to\nsay that I'm completely satisfied with my choices as of now. Both Zola and mdbook\ndo things for me that were not going to be easily achievable in Mezzanine and come\nwith a lot of benefits right out of the box. As a for instance, built in syntax\nhighlighting for code snippets! Here's echo in Rust:\n#![warn(clippy::all, clippy::pedantic)]\nuse std::env;\n\nfn main() {\n let args: Vec<String> = env::args().collect();\n let len = args.len();\n let n = len > 1 && args[1] == \"-n\";\n let i = if n { 2 } else { 1 };\n for (index, arg) in args.iter().enumerate().skip(i) {\n if index < len - 1 {\n print!(\"{} \", arg);\n } else {\n print!(\"{}\", arg);\n }\n }\n if !n {\n println!();\n }\n}\n","id":"/news/website-redesign/","title":"Website Redesign"}},"docInfo":{"/":{"body":0,"title":0},"/about/":{"body":168,"title":3},"/news/":{"body":0,"title":2},"/news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/":{"body":203,"title":6},"/news/continued-porting-of-bsd-userland-against-remaining-self-hosting/":{"body":312,"title":8},"/news/cross-build-progress/":{"body":546,"title":3},"/news/editors-glibc-232/":{"body":496,"title":3},"/news/experimental-clangllvm-based-build-with-nightly-rust/":{"body":460,"title":6},"/news/goodbye-gnu-coreutils-importing-sed/":{"body":811,"title":5},"/news/imported-source-pkgsrc-on-arm-woes-and-make-includes/":{"body":682,"title":7},"/news/improved-porting-with-libbsd/":{"body":141,"title":3},"/news/more-pkgsrc/":{"body":355,"title":2},"/news/on-libc-rust-experiments-and-risc-v/":{"body":688,"title":5},"/news/patching-pkgsrc-building-rust-and-arm-headaches/":{"body":438,"title":6},"/news/porting-netbsd-userland-infrastructure-improvements/":{"body":557,"title":5},"/news/reconfiguring-the-build-process/":{"body":301,"title":3},"/news/restarting-make-buildworld-cleanup-default-software/":{"body":917,"title":6},"/news/some-more-home-cooking/":{"body":727,"title":3},"/news/website-redesign/":{"body":468,"title":2}},"length":19},"lang":"English"}; \ No newline at end of file diff --git a/public/sitemap.xml b/public/sitemap.xml new file mode 100644 index 0000000..e47f7e3 --- /dev/null +++ b/public/sitemap.xml @@ -0,0 +1,188 @@ + + + + / + + + /about/ + 2021-02-15 + + + /categories/ + + + /categories/site-news/ + + + /news/ + + + /news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/ + 2021-01-28 + + + /news/continued-porting-of-bsd-userland-against-remaining-self-hosting/ + 2020-09-03 + + + /news/cross-build-progress/ + 2021-02-08 + + + /news/editors-glibc-232/ + 2020-08-28 + + + /news/experimental-clangllvm-based-build-with-nightly-rust/ + 2020-11-24 + + + /news/goodbye-gnu-coreutils-importing-sed/ + 2020-09-22 + + + /news/imported-source-pkgsrc-on-arm-woes-and-make-includes/ + 2020-08-01 + + + /news/improved-porting-with-libbsd/ + 2020-08-24 + + + /news/more-pkgsrc/ + 2020-07-14 + + + /news/on-libc-rust-experiments-and-risc-v/ + 2020-11-15 + + + /news/page/1/ + + + /news/page/2/ + + + /news/page/3/ + + + /news/page/4/ + + + /news/patching-pkgsrc-building-rust-and-arm-headaches/ + 2020-07-20 + + + /news/porting-netbsd-userland-infrastructure-improvements/ + 2020-08-17 + + + /news/reconfiguring-the-build-process/ + 2021-02-01 + + + /news/restarting-make-buildworld-cleanup-default-software/ + 2020-08-03 + + + /news/some-more-home-cooking/ + 2020-10-06 + + + /news/website-redesign/ + 2021-02-18 + + + /tags/ + + + /tags/4-4bsdlite/ + + + /tags/arm/ + + + /tags/c-programming/ + + + /tags/clang/ + + + /tags/cross-compile/ + + + /tags/css/ + + + /tags/deprecation/ + + + /tags/editors/ + + + /tags/glibc/ + + + /tags/gnu-make/ + + + /tags/html/ + + + /tags/libraries/ + + + /tags/llvm/ + + + /tags/mdbook/ + + + /tags/milestones/ + + + /tags/nongnu/ + + + /tags/packages/ + + + /tags/pkgsrc/ + + + /tags/porting/ + + + /tags/programming/ + + + /tags/qemu/ + + + /tags/riscv/ + + + /tags/roadmap/ + + + /tags/rust/ + + + /tags/site-news/ + + + /tags/sysroot/ + + + /tags/systemd/ + + + /tags/utilities/ + + + /tags/web-programming/ + + + /tags/zola/ + + diff --git a/public/tags/4-4bsdlite/atom.xml b/public/tags/4-4bsdlite/atom.xml new file mode 100644 index 0000000..cf8e1b8 --- /dev/null +++ b/public/tags/4-4bsdlite/atom.xml @@ -0,0 +1,27 @@ + + + - 4.4BSDlite + + + Zola + 2020-08-28T00:00:00+00:00 + /tags/4-4bsdlite/atom.xml + + Editors, glibc-2.32 + 2020-08-28T00:00:00+00:00 + 2020-08-28T00:00:00+00:00 + + /news/editors-glibc-232/ + <p>Most people who use any form of Unix have a favorite editor. Most of them also think that everyone else is wrong<span id="continue-reading"></span> (but in truth, you're all wrong...). And most Linux distros over the years have gradually catered more and more to the lowest denominator.</p> +<p>In the beginning, of course, there was only ed (The <strong>STANDARD</strong> editor!) and then at some point in time came Bill Joy's vi. Most people have, of course, never used the original vi. If you are on Linux, chances are good that you have encountered vim. If you are running BSD in any form then you have vi, except that you don't actually have vi, you have nvi. When 4.4BSDlite was released as the first large scale open source project, the major caveat was that much of the source was patent encumbered by AT&amp;T, including the venerable vi editor. All of this source was therefore replaced, painstakingly, a piece at a time. The selling point of nvi at the time was that it was a &quot;bug for bug compatible&quot; rewrite of vi, which started with the original elvis (a vi clone) source.</p> +<p>For most of it's existence so far (including it's original, never released to the public form from roughly ten years ago) HitchHiker had vim. I've used vim a lot and over the years have only grown more fond of it. Sticking with it over the rather steep learning curve has been quite helpful in situations where the only editor available is some form of vi or vi clone. However, vim is not without it's issues. All forms of vi or clones of vi have a rather steep learning curve for new users. The vim source code is a rats nest of conditionals and attempts to maintain compatibility with ancient systems that only a masochist or Luddite would use. And for a console based editor it is rather slow (though nowhere near the beast that Emacs has become, a story for another time).</p> +<p>For ease of use and welcoming less experienced users we follow the same path as FreeBSD by offering the ee editor. It's extremely small (the entire source is a single c file) and has great ease of use due to the integrated menu bar. It isn't an especially powerful editor, but it gets the job done.</p> +<p>As for vim, I decided a while back that it was going to be replaced with something more lightweight and with a more &quot;correct&quot; code base. I tried a few times to port nvi to HitchHiker, both from the &quot;official&quot; nvi source distribution and also from BSD sources. The main stumbling block has been that the code assumes headers and C library routines which no longer exist in Linux.</p> +<p>For the solution, let's back up again by a few years. AT&amp;T Unix is the direct ancestor to Solaris. A number of years ago Sun bequeathed the source code for the Solaris operating system to the public in the form of a CDDL licensed source distribution, giving birth to the OpenSolaris operating system in it's many forms, allowing FreeBSD to import the zfs filesystem, and effectively unencumbering historical Unix source code to the benefit of all.</p> +<p>Therefore, after a few days tinkering, we now have version 3.7 of Bill Joy's original ex/vi editor, which is the version that was current as of the 4.4BSDlite release, ported to and running on HitchHiker Linux. This has been a very gratifying experience overall. Some (probably many if I'm being honest) will miss certain features that they have grown used to in vim, such as syntax highlighting and visual mode. There is no plugin system (which I've never bothered to use in vim anyway...) and you're basically expected to know what you're doing. But the program is SMALL (roughly half the size of nvi, with no dependency on BDB, and orders of magnitude smaller than vim) and noticeably faster than vim when loading large files or pasting large chunks of text. You probably thought vim was fast. But you only -thought- it was fast.</p> +<p>You are, of course, free to install and use vim if you feel that original vi is too &quot;limiting&quot; for your use. Feel free to use ed for that matter, and to yell out that you're using &quot;THE STANDARD EDITOR&quot; while doing so. We imported ed from FreeBSD a week ago.</p> +<p>In other news, GNU libc (glibc) released version 2.32 this week. I'm running it already on my Arch systems but for the time being holding off on updating HitchHiker. There were a few notable deprecations in this release for functions, macros, and even a few array definitions that are considered too ancient to support. However, they actually do affect HitchHiker in a few places as we have some rather &quot;historical&quot; code imported into the userland tools. I spent an hour this morning fixing compilation errors when compiling mksh and ex/vi against the new library, in preparation for eventually merging it in. I'll have to check all of the other imported sources against it another day.</p> +<p>Interestingly, I also had to start using clang to compile these tools in Arch, as the gcc 10 series encountered an &quot;internal compiler error&quot;, which was actually a segmentation fault, when compiling the ex/vi sources. In HitchHiker we use gcc-9.30 and these problems don't exist. Good reason to not upgrade for the time being.</p> + + + diff --git a/public/tags/4-4bsdlite/index.html b/public/tags/4-4bsdlite/index.html new file mode 100644 index 0000000..cfadecd --- /dev/null +++ b/public/tags/4-4bsdlite/index.html @@ -0,0 +1,530 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "4.4BSDlite"

    +
      + +
      + + Editors, glibc-2.32 + +
      2020-08-28
      + +

      Most people who use any form of Unix have a favorite editor. Most of them also think that everyone else is wrong...

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/arm/atom.xml b/public/tags/arm/atom.xml new file mode 100644 index 0000000..99d4520 --- /dev/null +++ b/public/tags/arm/atom.xml @@ -0,0 +1,131 @@ + + + - Arm + + + Zola + 2021-01-28T00:00:00+00:00 + /tags/arm/atom.xml + + Compiling for aarch64/riscv64 from qemu user mode chroot + 2021-01-28T00:00:00+00:00 + 2021-01-28T00:00:00+00:00 + + /news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/ + <p>This is a novel approach that I've been experimenting with lately, to do some +legwork towards supporting architectures for which I either don't have physical +hardware or else the hardware is limited in capability so much as to make native +compilation impractical.</p> +<span id="continue-reading"></span> +<p>Qemu, in addition to running full virtual machines, also has what is known as +&quot;user mode emulation&quot;. In a nutshell, when using qemu in this way one is able to +run binaries for another architecture without creating virtual hardware or a +virtual kernel. In this case, qemu just acts as a translation layer, translating +instructions designed for one ISA to instructions that can be executed on the +host processor. By not running a virtual kernel on virtual hardware, there is +actually a huge savings of system resources.</p> +<p>Setting this up, while not trivial, is surprisingly straightforward. First, a +suitable root filesystem must be created. Qemu must be compiled statically, and +the static binary copied into the chroot filesystem. Then, by using binfmt-misc, +one can register this qemu executable as the program interpreter for binaries of +the guest architecture. In this way it is actually possible to set up a functional +chroot on a well spec'ed X86_64 machine running Risc-V binaries. There is a bit +more to getting this to work, but suffice to say that it does in fact work, +within the normal limitations of a chroot.</p> +<p>While running foreign binaries does incur some performance penalty, this method +is actually proving to be a significant improvement over, say, compiling for +aarch64 on a Raspberry Pi 4, as I have four times the memory and a significantly +faster processor with twice the number of cores available. And it has the benefit +of not requiring a cross compiler. Instead, one is running a native compiler via +an emulation layer. But this eliminates many of the pain points of cross compiling. +It's a neat trick.</p> +<p>So what does this mean for HitchHiker? It means that work is now well underway +towards running HitchHiker on a BeagleV when they become widely available later +this year. I have been eagerly waiting to dip toes into Risc-V as soon as an +affordable option was available, and it looks like said option is now on the +horizon.</p> + + + + Imported source, pkgsrc on Arm woes, and make includes + 2020-08-01T00:00:00+00:00 + 2020-08-01T00:00:00+00:00 + + /news/imported-source-pkgsrc-on-arm-woes-and-make-includes/ + <p>I think we'll start this post discussing some of the differences and misconceptions of same between BSD make and GNU make. In the case of BSD make we're primarily referring to NetBSD make, which is a greatly improved version of the historical Unix make<span id="continue-reading"></span> utility, and has also been imported into FreeBSD. Among the BSD camp, GNU make is seen as a second citizen. Their version of make is leveraged for building the entire system, without using autotools except in the case of imported external source which has been autotooled by it's authors. It is also the utility that wraps all of the functionality of FreeBSD ports and NetBSD pkgsrc - downloading, patching, compiling and packaging third party software. The complete infrastructure is quite impressive.</p> +<p>Much of this functionality lies in leveraging included Makefiles, much in the way that C headers can be included to pull in function definitions, and also similar to the concept of shared libraries. These included .mk files, usually located in /usr/share/mk on a BSD system, allow for extremely concise Makefiles throughout the source tree to just specify a few variables and then pull in all of the targets from an inclued file. The most prominent are probably bsd.prog.mk and bsd.lib.mk, which tell make how to build C programs and C libraries respectively.</p> +<p>It is a common misconception that this functionality only exists in BSD make. GNU make does have this capability as well and I leverage it quite heavily in HitchHiker. Admittedly, it is more developed in BSD make, but the limitations of GNU make in comparison are fairly trivial and easy to work around. One of the sillier things is the default search path that GNU make uses the look for included Makefiles. By default this path starts in the current directory and proceeds through /usr/local/include, /usr/include and finally /usr/gnu/include. Leveraging this would sprinkle .mk files through what are by convention the location of C header files, or alternatively using /usr/gnu/include. I have yet to see a system that has a /usr/gnu directory (maybe it was planned for Hurd?) and I'm not keen on it. As of the last commit, HitchHiker now patches make to no longer search /usr/gnu/include and to now search instead /usr/local/include/mk and /usr/include/mk, the latter being our new default directory. This allows us to include a .mk file by name, without specifying a full or relative path, and at the same time keeps all of our .mk files separated from the system C headers.</p> +<p>So what exactly does BSD make have over GNU make?</p> +<ul> +<li>Slightly more powerful conditionals. In addition to ifdef, ifndef, ifeq and ifneq BSD make also has a simple if, and allows chaining conditionals with the &amp;&amp; and || operators much like shell syntax. By comparison GNU make must nest conditionals for similar functionality.</li> +<li>Included Makefiles can be relative to the install or source prefix. This is quite powerful for building large projects in custom site locations.</li> +<li>Possibly others I have not discovered yet, however in practice GNU make can do -everything- that BSD make does if you take the time to learn how to use it.</li> +</ul> +<p>As part of creating a more integrated build framework, my most recent commit contains a basic analog for bsd.prog.mk, hhl.cprog.mk (cprog due to my not assuming that all programs are written in C!) which now allows extremely concise Makefiles for source code that has been imported into the base system. In the case of rpcgen the following Makefile is all that is needed:</p> +<pre style="background-color:#2b303b;"> +<code class="language-Makefile" data-lang="Makefile"><span style="color:#65737e;"># Makefile - hhl - /usr/src/world/rpcgen +# Copyright 2020 Nathan Fisher &lt;nfisher.sr@gmail.com&gt; +# +</span><span style="color:#bf616a;">progname </span><span style="color:#c0c5ce;">= </span><span style="color:#a3be8c;">rpcgen +</span><span style="color:#bf616a;">cflags </span><span style="color:#c0c5ce;">+= </span><span style="color:#a3be8c;">-g +</span><span style="color:#b48ead;">include </span><span style="color:#a3be8c;">hhl.cprog.mk +</span></code></pre> +<p>As can be seen, there are really only three lines. Lines 1-3 are comments, line 4 specifies the program name, line 5 adds -g to the compiler flags, and line 6 includes hhl.cprog.mk. If you look inside the rpcgen subdirectory of the build tree you will see the following structure:</p> +<pre style="background-color:#2b303b;"> +<code><span style="color:#c0c5ce;">. + ├── Makefile + ├── man + │ └── rpcgen.1 + ├── README + └── src + ├── config.h + ├── proto.h + ├── rpc_clntout.c + ├──***snip +</span></code></pre> +<p>Our included Makefile will generate object files for any .c files in the src/ subdirectory, link those objects into an executable and install man/rpcgen.1 in ${install_prefix}/share/man/man1. It has logic to differentiate man1 from man8 and also installs html and text docs in the doc/ subdirectory. If we needed to specify additional cppflags, cflags, ldflags or libs to link with we would just append them to those vars (by convention I use lower case so as to not interfere with any CFLAGS etc. specified on the command line or in an external build system). If we want to create links to our executable they just need to be specified in the binlinks variable. Defining the variable finish and writing a finish target allows us to do anything else additional that might need done, like installing configuration files or runtime data. In short, while being a fairly tidy 102 lines (some of which is whitespace and comments) hhl.cprog.mk successfully works as an analog for bsd.prog.mk.</p> +<p>The short list of programs leveraging this framework now include the ee text editor, rpcgen, mksh and lksh shells and the pax archive/copy/link utility. At some later date the source tree will be reorganized to move these directories into bin or usr.bin much like is done in the BSD source trees, as well as importing other sources directly into the tree and &quot;HitchHikerizing&quot; their build systems.</p> +<p>The title promised some pkgsrc updates relating to arm challenges. In a nutshell pkgsrc seems to be broken in several places for arm on Linux. Perhaps most annoyingly is the buildlink system, which is supposed to make it simpler for packages to find the libs that they are to link against by moving everything into work/.buildlink/lib (relative to the subdirectory that bmake was run from). So far I've discovered that libuuid, libexpat, libstdc++, libacl and libattr libtool archives are skipped every time on arm for reasons that I have not yet discovered. I can work around it by manually linking the .la files in from /usr/lib, but this requires an annoying level of manual intervention. Nevertheless I have managed to build the full LXDE, XFCE and Mate desktops, several shells, emacs, nano and pico editors, Inkscape and am on to building Gimp presently on my RPI. On x86_64 I have all of that plus a fairly complete server stack, Abiword, Gnumeric and the Firefox browser built.</p> +<p>In short, when q3 releases (and it really is coming soon) there will be a fairly comprehensive selection of software available on both architectures via pkgsrc. However, in the long run we're going to revisit the idea of creating our own ports tree which leverages GNU make and the infrastructure of .mk files that now reside in /usr/include/mk, adding funcionality for creating binary package tarballs and downloading and installing them. This will most likely involve a simple homebrewed package format that takes some inspiration from BSD tarballs, Slackware tarballs and Arch Linux tarballs. A sneak peak in the current build tree at how we register the installation of the base system will give you an idea. We're going to keep things purposely simple and avoid writing a full fledged package manager. More details to come.</p> + + + + Patching pkgsrc, building rust and Arm headaches + 2020-07-20T00:00:00+00:00 + 2020-07-20T00:00:00+00:00 + + /news/patching-pkgsrc-building-rust-and-arm-headaches/ + <p>Having been working with pkgsrc for a couple weeks now there's a bit of a flow +developing, and quite a bit of progress, with a big caveat. The issues I'm +running into are that there are quite a few more build failures for Arm than +there are for x86_64.<span id="continue-reading"></span></p> +<p>Interestingly, both libdrm and MesaLib fail with similar messages about assembly +code that isn't supported on the current architecture (armv7l). In situations +like this it's hard to blame pkgsrc, as the fault is upstream from there. I'm +getting quite used to adding packages to my local tree and tweaking BSD style +Makefiles. I'm making every attempt to send fixes upstream; however, waiting for +a response each and every time is just not really going to be an option here, so +in the meantime I've decided to import the entirety of pkgsrc into git and use +that tree as the &quot;official&quot; branch for HitchHiker. This will enable our project +to build up a substantial package collection even if upsteam pkgsrc begins to +lag behind.</p> +<p>One of the problematic packages that is now often being pulled in as a dependency is rustc, the rust compiler. It's problematic on two fronts. First, unless your system has substantial amounts of memory a parallel build will fail as the memory fills up (mine has 8 gig and still fails). Second, and quite frustrating, is that rustc is only compatible with certain versions of either openssl or libressl, and our version of libressl was too new. After seeing if we could use either libressl or openssl from pkgsrc and encountering repeated failures, I just rolled back libressl to the newest version that rust supports.</p> +<p>Let me pause here for a brief commentary on rust as a programming language. There is a lot to like about rust, and it seems that the language may be with us for quite some time, as it seems to see more usage every day and has achieved a critical mass of developers. I've played around with it myself a little bit and the documentation is very good, it's probably one of the easier to learn languages, and the ecosystem as a whole is very nice when you look at all of the features that cargo brings to the table. However, I am not a fan of the fact that the rust standard library, libstd, is compiled in statically by default. This results in a simple &quot;Hello, world!&quot; executable compiling into a 7.1m binary on my machine before stripping, which comes down to 220k after stripping. When compiling the same program dynamically it comes all the way down to 16k after stripping, so we have approximately a 204k overhead <em>per binary</em> for the static libstd.</p> +<p>I am also not happy about rolling back libressl, as I would much rather have the newest possible version of what is a security critical piece of software. However, it is I believe still a better and more secure option than openssl, which most distros are still using. It's a shame that a major piece of software like rust, that is a dependency of quite a number of other packages now, has not updated to use the newer abi presented by newer versions of libressl.</p> +<p>After a couple weeks of building packages on both x86_64 and armv7l, using an identical set of packages in the base system, it is very apparent just how much more development x86_64 gets than arm. Two packages in particular illustrate this quite well - libdrm and MesaLib - both of which are major dependencies of modular Xorg. In both cases assembly code is generated by gcc that contains instructions not supported by the processor, and the only fix is to disable features in the Arm build. In the case of MesaLib this involves patching the source code. Thanks to the Arch Linux Arm team for showing the way, as my patches are adapted from their PKGBUILD.</p> +<p>There have been just a few more tweaks to the base system as I attempt to fully +finalize the build in preparation for release. The rpcgen utility that I had +incorporated proved to not fully support all features needed for building certain +packages in pkgsrc. After some search I found a newer version that had been +autotooled in the rpcsvc-proto package, which was originally a compatibility +package during the time that SunRPC was being removed from Glibc. I've imported +the source for just the rpcgen utility from that package into hitchhiker's build +tree, removed all of the autotools material, moved all C-preprocessor flags into +a config.h file, disabled NLS and made a very lean, mean Makefile for it. While +I was at it I used similar techniques to update the builds for mksh and pax. +Both of those packages now include their CPPFLAGS as defines in config.h, and I +have even begun eliminating ifdefs out of the C files to make for a cleaner and +faster build.</p> + + + diff --git a/public/tags/arm/index.html b/public/tags/arm/index.html new file mode 100644 index 0000000..7b40b92 --- /dev/null +++ b/public/tags/arm/index.html @@ -0,0 +1,558 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Arm"

    +
      + +
      + + Compiling for aarch64/riscv64 from qemu user mode chroot + +
      2021-01-28
      + +

      This is a novel approach that I've been experimenting with lately, to do some +legwork towards supporting architectures for which I either don't have physical +hardware or else the hardware is limited in capability so much as to make native +compilation impractical....

      + + Read More -> +
      + +
      + + Imported source, pkgsrc on Arm woes, and make includes + +
      2020-08-01
      + +

      I think we'll start this post discussing some of the differences and misconceptions of same between BSD make and GNU make. In the case of BSD make we're primarily referring to NetBSD make, which is a greatly improved version of the historical Unix make...

      + + Read More -> +
      + +
      + + Patching pkgsrc, building rust and Arm headaches + +
      2020-07-20
      + +

      Having been working with pkgsrc for a couple weeks now there's a bit of a flow +developing, and quite a bit of progress, with a big caveat. The issues I'm +running into are that there are quite a few more build failures for Arm than +there are for x86_64....

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/c-programming/atom.xml b/public/tags/c-programming/atom.xml new file mode 100644 index 0000000..70ab347 --- /dev/null +++ b/public/tags/c-programming/atom.xml @@ -0,0 +1,140 @@ + + + - C Programming + + + Zola + 2020-11-24T00:00:00+00:00 + /tags/c-programming/atom.xml + + Experimental clang/llvm based build with nightly rust + 2020-11-24T00:00:00+00:00 + 2020-11-24T00:00:00+00:00 + + /news/experimental-clangllvm-based-build-with-nightly-rust/ + <p>Ok, so this little side track has been on a slow burn for a while now, but I've currently got a rootfs that I can chroot into with the following features:</p> +<ul> +<li>Built almost entirely with llvm/clang (see caveats below)</li> +<li>Rust nightly compiler installed early in the build, accessible for all users</li> +</ul> +<span id="continue-reading"></span> +<ul> +<li>Directory hierarchy flattened, directories in /usr are symlinks to directories in /</li> +<li>libc++ standard C++ library from the llvm project instead of libstdc++ from gcc</li> +<li>Both GNU binutils and the lld linker installed (default is still binutils ld for now)</li> +<li>x86_64 only at this time, but should be portable to Arm +Some caveats:</li> +<li>llvm/clang wants to build against libstdc++, so not self hosting unless we go back to libstdc++</li> +<li>There were issues building the compiler-rt module, so llvm and clang link against libgcc</li> +<li>The GNU m4 package will not build with clang, so it had to be built with the gcc compiler from the temporary toolchain. I'm sure this is fixable, but I haven't researched it much yet.</li> +<li>The biggie: glibc refuses to try to build with any compiler except gcc. The. Sheer. Fucking. Hubris. ...again... +Nevertheless, this is all quite promising and brings up a number of possibilities going forward. As llvm by default supports multiple backends for code generation, a huge benefit is that HitchHiker would come out of the box with cross compilation ability. Also, including rust by default gives us the ability to use Rust code in the base system, with numerous potential benefits that I will explain below.</li> +</ul> +<p>The directory hierarchy is simple to understand, but is reversed in implementation from what the &quot;big&quot; distros have done. Basically most &quot;modern&quot; distros have ditched the /usr split by making /bin and /lib into symlinks to /usr/bin and /usr/lib. In this build we instead just give all programs a blank install prefix. Our root directory now takes not only all of our binaries and libraries but also has program data under /share, and we only have /usr because it is expected. everything in /usr is, in fact, just symlinks.</p> +<p>Rust is installed in a novel way using rustup. As root, we set the RUSTUP_HOME and CARGO_HOME environment variables to /rust, and make /rust/bin a symlink to /bin. That way, we can track a nightly toolchain system-wide and it will install binaries into /bin, for all users to access. We could, of course, build rustc from source, and I have in fact done so previously. However, apart from the ridiculous compilation time that it takes, this is not a great option until the language is truly stable, as a lot of the interesting bits if the Rust ecosystem need something newer than the stable branch. By using rustup and the binary toolchains, we always have access to the most up to date toolchain, and the ability to easily switch from one to another.</p> +<p>So what are the benefits of having rust available early on? For starters Rust can access C functions and export functions to C, making it relatively easy to replace parts of the software stack previously written in C with Rust code that enjoys the memory and concurrency safety checks which are not present in C. As an example, relibc is a complete C standard library written in Rust. This alternative C library is a potential future path of investigation. But on a smaller scale, there are a number of interesting cli utilities and programs written in Rust.</p> +<ul> +<li>sd is a stream editor similar to sed, but much faster and with a much easier syntax and reduced scope.</li> +<li>fd is a file finding utility which is orders of magnitude faster than find, and has interesting features like skipping .git folders by default.</li> +<li>exa is a file lister with some unique features over ls</li> +<li>The amp editor, while somewhat vi-like, has interesting extra features fuzzy file finder and a token based jump which make moving around even faster than vim. +I have also begun, partially as a learning exercise, writing my own Rust implementations of various small Unix utilities. In the future some may find their way into HitchHiker if we retain Rust in the base system.</li> +</ul> +<p>While this is still in an early evaluation phase, I think it likely that at the very least we will make the switch from gcc to clang/llvm at some future point, with the possibility of bringing some of the other features along as well. What may not make the cut is libstdc++, as replacing the C++ standard library is almost as problematic as replacing the C standard library, leading to the need to port a large amount of third party software in the future. However, I will likely be going further with Rust, and with the flattened filesystem, as I want HItchHiker to be a cutting edge distro while still adhering to traditional Unix practices. Basically, we're going to push the envelope when it makes sense to do so, but not follow fads and trends in the Linux community that might very well be dead ends (like I believe Systemd in particular to be).</p> + + + + On Libc, rust experiments, and Risc-V + 2020-11-15T00:00:00+00:00 + 2020-11-15T00:00:00+00:00 + + /news/on-libc-rust-experiments-and-risc-v/ + <h2 id="libc">LibC</h2> +<p>Recently I have continued the exercise of re-implementing certain base system utilities in C, uncovering more and more differences between BSD and GNU libc implementations. At this point it's really easy to say that I have a strong preference for the BSD extensions to the libc standard as opposed to the GNU extensions. The Berkeley programmers, when they added features, added truly useful features.</p> +<p>Take random number generation as an example. It is fairly common when programming on Linux to open and read from /dev/urandom. BSD, in the meantime, offers a group of functions in libc (arc4random) that combine pseudo-random number generation with cryptography to produce pseudo-random data that is truly difficult to guess, with a low CPU overhead.</p> +<p>Another small place where I found the BSD libc to offer superior functionality was when I was writing my own version of the <em>mktemp</em> utility. The BSD versions of the mkstemp and mkdtemp functions allow one to give a template with a variable-length suffix, to give a choice between quick (with a smaller suffix) or as secure as you want to be. By increasing the suffix length, one can exponentially increase the number of possible filenames, making temp files a more difficult vector of attack.</p> +<p>The GNU (and musl actually) versions of these functions only allow a six character random suffix, period. In fact, my earlier port of mktemp from BSD did not function as expected in this regard, and the GNU coreutils programmers had to roll their own functions to get equivalent functionality to the BSD counterparts. I have elected to not abstract this deficiency away in my code, and the HHL version of the mktemp utility uses the available versions of mkstemp and mkdtemp, with a six character suffix. I would rather maintain the simplicity of the program than to take a risk of introducing bugs by writing my own functions here.</p> +<p>In any event, the work that I have been doing here makes a strong case for a future port of musl, with the additions of some BSD functions ported to work with musl, as our base C library. As attractive as BSD libc is, a direct port is unrealistic as so much of it is tied to kernel interfaces that differ on Linux. I just find it a shame that Linux users are mostly saddled with such a piece of crap (bloated while still being less functional) in such an important position in the software stack.</p> +<h2 id="rust">Rust</h2> +<p>There are a lot of programming languages, and they tend to come and go regularly. As programming languages go, it's a safe bet that C, C++, Java and Python will be sticking around. Of the less pervasive languages Go and Rust seem to be well ahead of the pack as pertaining to mass adoption. Go is interesting, largely because of what it leaves out. Go is simple. Go avoids the feature creep that seems to be inevitable in all modern software. However, Go achieves memory safety by using garbage collection. I want to like Go, but that one anti-feature prevents me from even trying it.</p> +<p>Rust, on the other hand, has feature upon feature to the point where I really am hoping that they ever finish the language someday. That said, I'm intrigued by Rust for a number of reasons. I have been toying with learning the language for a while, doing some simple learning exercises and reading the Rust Book. I recently decided to just dive in and start writing my own programs using Rust, as that seems to be the only way to truly learn a language. My first full Rust program is a clone of a C program that I wrote for generating sine lookup tables, useful in DSP applications. The C version is perfectly fine, but I basically wanted to try porting a known working program and see how well the control flow translated.</p> +<p>The process was not completely smooth, and it took quite a few iterations to get to the point where the program compiled and actually functioned. However, the documentation is excellent and provided solutions to most of my issues. The other thing that really impressed me was the compiler messages. Often, the compiler will tell you literally the exact change needed to make your program compile. Coming from C, this is a breath of fresh air. And when we're talking about Rust, chances are that if it compiles it's also going to function exactly as expected.</p> +<p>Rust is also elegant in a way that C never will be. Consider the following C code:</p> +<pre style="background-color:#2b303b;"> +<code class="language-C" data-lang="C"><span style="color:#b48ead;">for </span><span style="color:#c0c5ce;">( i = </span><span style="color:#d08770;">0</span><span style="color:#c0c5ce;">; i &lt; </span><span style="color:#d08770;">10</span><span style="color:#c0c5ce;">, i++) { + </span><span style="color:#65737e;">// some code +</span><span style="color:#c0c5ce;">} +</span></code></pre> +<p>And the equivalent Rust:</p> +<pre style="background-color:#2b303b;"> +<code class="language-Rust" data-lang="Rust"><span style="color:#b48ead;">for</span><span style="color:#c0c5ce;"> i in </span><span style="color:#d08770;">1</span><span style="color:#c0c5ce;">..</span><span style="color:#d08770;">10 </span><span style="color:#c0c5ce;">{ + </span><span style="color:#65737e;">// some code +</span><span style="color:#c0c5ce;">} +</span></code></pre> +<p>One thing that requires a different mindset when one moves from an old-school language like C, to a modern language like Rust, is that in C et al, the standard library tries to be all inclusive. Programmers (at least the good ones) try to avoid adding dependencies to anything other than the standard library. Rust, however, has Cargo. Cargo is, in effect, a built in package manager. This is not unheard of; Python has pip and has for years. In Rust, however, the standard library is quite small and everyone pretty much freely uses cargo to access functionality that is not included in libstd. In my case I used cargo to pull in the excellent clap crate, which parses command line arguments and also provides built in documentation. Compared to getopt in C, clap both does more and does it with little effort.</p> +<p>At this point int time, however, Rust is not going to be landing in the HitchHiker base system, as the only viable Rust compiler uses llvm as a backend. At some point in the future this may well change anyway, as I have been growing increasingly frustrated with both Glibc and gcc (a brief skim of some earlier blog posts will quickly turn up examples). The obvious replacements are musl and the clang compiler, which, being based on llvm, would make the further inclusion of rustc trivial.</p> +<h2 id="risc-v">Risc-V</h2> +<p>I do a fair amount of electronics experimenting and often employ various microcontrollers in my projects. Some are Atmega based, while I have more recently fallen in love with the ATSAMD51 Arm Cortex M4 processor based boards from Adafruit. Just this week I have acquired something new to me: a Risc-V based MCU from Seeed Studio, the Sipeed Longan Nano. It's a brilliant chip, although quite lacking in documentation and example code. I'll be playing with it a lot.</p> +<p>The Nano, however, is a microcontroller, not a full SOC that is capable of running Linux. Right now there are few options for developers wanting to experiment with Risc-V with a full operating system, and the best ones are all prohibitively expensive for their capability. Due out next year, however, is the PicoRio board from Rios labs that is described as close in form factor and capabilities to most Arm boards based around the RPI format. Provided this board is not vaporware and actually does materialize at a reasonable cost, I intend for HItchHiker Linux to be running on it as soon as feasible. I intend to make HitchHiker one of the very first options independent of distros such as Debian and Fedora, and to make Risc-V a first class citizen. It is my hope that in doing so HitchHiker might help to push along the adoption of truly open hardware on which to run open software.</p> + + + + Some More Home Cooking + 2020-10-06T00:00:00+00:00 + 2020-10-06T00:00:00+00:00 + + /news/some-more-home-cooking/ + <p>After removing GNU coreutils and taking closer stock of what we have as a +&quot;base system&quot;, I am mostly happy with the selection but now wish to spend some +time making behaviors, documentation and source code itself more uniform. I have +also done some work towards correcting a couple of omissions that are present +due to the previous surgury. The commit that I pushed this morning has a few +notable changes.</p> +<span id="continue-reading"></span> +<ul> +<li>hostid - This is a non-POSIX utility of GNU origin that is present on systems with GNU coreutils but not on BSD based systems. I have written a replacement from scratch in C, which was a fairly trivial task as mentioned previously. The new utility, much like the rest of our userland, behaves like the GNU counterpart with the exception of not accepting long options and not having a help option (help is available via the man-pages, so '--help' is always redundant IMO).</li> +<li>nproc - Another scratch implementation of a utility with a GNU orgin.</li> +<li>rev - A scratch rewrite for HitchHiker, should be functionally identical to the BSD and/or Suckless versions. Notably, my version, the BSD version (which we had previously) and the suckless version are all quite a bit faster than the rev utility provided by the util-linux package due to architectural differences which I'll explain below.</li> +<li>mkdir - Another scratch rewrite. These are being done patially as an exercise in C programming and partially to lessen our dependence on the portability libraries used to port BSD utilities to Linux. However, this utility is currently a special case in that regard (see below).</li> +<li>base64 - This one had been ported from NetBSD but is actually broken on every platform in regards to being able to process it's data from a file rather than stdin. It's now fixed at least in HitchHiker. +I have also begun a process of formatting the source code imported from other sources using <code>clang-format</code> to enforce more uniform standards, and to go through the man-pages a few at a time to do some similar housekeeping. It's a small niggle, but both BSD and Suckless use tabs for indentation where I prefer two spaces for compactness. There are also some inconsistencies in brace styles and function declarations. I prefer the function declaration to be on one line followed by the opening brace on the same line, and for things like loops to include the opening brace on the same line as the loop initialization. Basically, the defaults provided by clang-format make for nice, readable and consistent code.</li> +</ul> +<p>Now, as mentioned above, let's get into some detail with the implementations of +<strong>rev</strong> and <strong>mkdir</strong>. Let's begin with rev, which is a simple utility which just reverses the characters in each line. Now, a simple implementation of rev, and basically where I started, would just read each line using getline (or fgetln on a BSD system) and reverse the bytes, excluding the newline, which is replaced back at the end of the output. This works fine for ascii characters, which all by definition fir into a single byte of data. However, utf8 is a fact of life, and we quickly run into a situation where we have reversed the byte order of a multibyte character, printing gibberish to the terminal. The Util-Linux utility solves this by reading each line into an array as a sequence of widechars, essentially reading character by character, and then doing the reversal.</p> +<p>The BSD, Suckless, and now HitchHiker utilities all use a similar, and more efficient approach. The line is read as described above, then, starting with the charcter preceding the newline, each byte is tested to see whether it is the beginning of a character or the middle of a multibyte character. If we run into a multibyte character, we find the beginning of it and then read forward again to the end of the character, before skipping backwards again past the multibyte character. While sounding convoluted, this is quite a bit faster when processing large amounts of data, as we're only looking at the first few bits of each byte rather than reading each line in character by character.</p> +<p>Now on to mkdir. Most of this was straightforward to implement, including the -p option, as we just have to construct a path directory by directory by processing the path as a string, using, in our case, the strtok function. However, mkdir is also expected to be able to set the Unix permissions of directories that it creates, and accept the mode arguments in either octal or symbolic format. It is trivial to implement the octal permissions, but implementing symbolic permissions entails coding a parser which must accept a fairly wide range of possible permutations. After looking at how the functionality has been implemented in BSD, GNU, and Suckless utilities, it quickly became apparent that the BSD implementation makes the most sense from the efficient use of code standpoint, as the BSD C-library already contains the getmode and setmode functions. As this has already been ported to Linux via libbsd, and as such is already present in HitchHiker as it has been used to port much code from both NetBSD and FreeBSD, I decided to just go ahead and use it. On a side note, it would be fantastic to see some of these functions present in the GNU C-library. The getmode function is quite useful, and fgetln is quite a bit more, let's say graceful, to use than getline.</p> +<p>It should be noted that static linking libbsd into a Beerware licensed utility is somewhat problematic. I have been considering extending the build system somewhat, to also build shared libraries alongside the static archives. I am somewhat hesitant, as I feel that low level base utilities such as this should only depend on the system C library at runtime. Alternatively, if at some point in the future HItchHiker does make the switch to Musl libc (which is still on the table) then it might be possible to patch musl to incorporate the functions right into the system C library for HitchHiker, allowing for their removal from libbsd and lessening our reliance on it for porting utilities. I rather like this train of thought...</p> +<p>The end goal is, of course, the kind of tightly integrated userland that BSD +systems are noted for. When looking at the various base utility implementations, +it is striking that commonly there is a library of common functions built and +linked into the utilities. This tactic is employed by sbase, ubase, GNU coreutils, +Util-Linux, and lobase (the port of OpenBSD userland to Linux, from which I have +borrowed heavily). I'm employing it myself by using libbsd to port NetBSD and +FreeBSD utilities. In the long run, I want to eliminate this trend and fully +integrate everything to where we're only depending on the C library both at build +and run times. My own implementations, with the exception of mkdir, currently do +this. As an example, on BSD systems a program is aware of the name under which it +was invoked via the getprogname and setprogname functions. As GNU libc does not +have these functions, we have a global constant char __progname, which is set to +the program name by calling <code>basename(argv[0])</code> in the main function. While +this results in some additional boilerplate code, it's actually scarcely more +than what BSD already has due to the need to call getprogname and/or setprogname.</p> +<p>Similarly, Suckless abstracts away certain things like printing to stderr (their +eprintf function) and getting program arguments, which are easily done just using +<code>fprintf(stderr, &quot;msg&quot;)</code> and getopt, respectively.</p> +<p>A possible eventuality might involve refactoring much of this code somewhat to remove the dependencies on their respective utility libraries and replacing it with more &quot;generic&quot; programming. While this might increase source code size somewhat, it would not likely impact compiled size or efficiency, as we're just removing the abstractions and putting them back into the programs. This has the benefit of making the code easier to understand without having to look at the library and what it does.</p> + + + + Improved porting with libbsd + 2020-08-24T00:00:00+00:00 + 2020-08-24T00:00:00+00:00 + + /news/improved-porting-with-libbsd/ + <p>The libbsd project was begun originally by the developers of the Debian K-FreeBSD project as a means of addressing differences in the available functions, headers and c macros between BSD libc and GNU libc. I have imported the source<span id="continue-reading"></span> directly into HitchHiker and &quot;hitchhikerized&quot; the build process. Only the static library archives are built at this time. With a few tweaks and an additional &quot;compat.h&quot; header to address a few omissions, this has led to an improvement in my process of porting BSD utilities, and the vast majority of the imported utilities now link with libbsd functions. There is little measurable overhead in the resulting binaries.</p> +<p>For those utilities that are more difficult to port I have begun porting the work already done to create lobase, a portable package of OpenBSD userland, to the hitchhiker build system. I am also pulling in sources from FreeBSD now. The first program ported from FreeBSD to HHL is the ed editor, which in this case was easier to get going than the version from the NetBSD sources.</p> +<p>I have always enjoyed the venerable Unix fortune program, and always include a call to it in my shell profile. While I did consider the idea of including it by default in the HitchHiker base system, I decided to go another route and just implement something simpler from scratch. Hence, the small C program 42, which by just prints a random quote from the HitchHiker's guide universe. It accepts no options and can only be extended by editing the source. Just a bit of fun. +<img src="../../assets/screenshot_42.png" alt="screenshot_42.png" /></p> + + + diff --git a/public/tags/c-programming/index.html b/public/tags/c-programming/index.html new file mode 100644 index 0000000..92b9b8d --- /dev/null +++ b/public/tags/c-programming/index.html @@ -0,0 +1,571 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "C Programming"

    +
      + +
      + + Experimental clang/llvm based build with nightly rust + +
      2020-11-24
      + +

      Ok, so this little side track has been on a slow burn for a while now, but I've currently got a rootfs that I can chroot into with the following features:

      +
        +
      • Built almost entirely with llvm/clang (see caveats below)
      • +
      • Rust nightly compiler installed early in the build, accessible for all users
      • +
      +...

      + + Read More -> +
      + + + +
      + + Some More Home Cooking + +
      2020-10-06
      + +

      After removing GNU coreutils and taking closer stock of what we have as a +"base system", I am mostly happy with the selection but now wish to spend some +time making behaviors, documentation and source code itself more uniform. I have +also done some work towards correcting a couple of omissions that are present +due to the previous surgury. The commit that I pushed this morning has a few +notable changes....

      + + Read More -> +
      + +
      + + Improved porting with libbsd + +
      2020-08-24
      + +

      The libbsd project was begun originally by the developers of the Debian K-FreeBSD project as a means of addressing differences in the available functions, headers and c macros between BSD libc and GNU libc. I have imported the source...

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/clang/atom.xml b/public/tags/clang/atom.xml new file mode 100644 index 0000000..8b00d21 --- /dev/null +++ b/public/tags/clang/atom.xml @@ -0,0 +1,46 @@ + + + - Clang + + + Zola + 2020-11-24T00:00:00+00:00 + /tags/clang/atom.xml + + Experimental clang/llvm based build with nightly rust + 2020-11-24T00:00:00+00:00 + 2020-11-24T00:00:00+00:00 + + /news/experimental-clangllvm-based-build-with-nightly-rust/ + <p>Ok, so this little side track has been on a slow burn for a while now, but I've currently got a rootfs that I can chroot into with the following features:</p> +<ul> +<li>Built almost entirely with llvm/clang (see caveats below)</li> +<li>Rust nightly compiler installed early in the build, accessible for all users</li> +</ul> +<span id="continue-reading"></span> +<ul> +<li>Directory hierarchy flattened, directories in /usr are symlinks to directories in /</li> +<li>libc++ standard C++ library from the llvm project instead of libstdc++ from gcc</li> +<li>Both GNU binutils and the lld linker installed (default is still binutils ld for now)</li> +<li>x86_64 only at this time, but should be portable to Arm +Some caveats:</li> +<li>llvm/clang wants to build against libstdc++, so not self hosting unless we go back to libstdc++</li> +<li>There were issues building the compiler-rt module, so llvm and clang link against libgcc</li> +<li>The GNU m4 package will not build with clang, so it had to be built with the gcc compiler from the temporary toolchain. I'm sure this is fixable, but I haven't researched it much yet.</li> +<li>The biggie: glibc refuses to try to build with any compiler except gcc. The. Sheer. Fucking. Hubris. ...again... +Nevertheless, this is all quite promising and brings up a number of possibilities going forward. As llvm by default supports multiple backends for code generation, a huge benefit is that HitchHiker would come out of the box with cross compilation ability. Also, including rust by default gives us the ability to use Rust code in the base system, with numerous potential benefits that I will explain below.</li> +</ul> +<p>The directory hierarchy is simple to understand, but is reversed in implementation from what the &quot;big&quot; distros have done. Basically most &quot;modern&quot; distros have ditched the /usr split by making /bin and /lib into symlinks to /usr/bin and /usr/lib. In this build we instead just give all programs a blank install prefix. Our root directory now takes not only all of our binaries and libraries but also has program data under /share, and we only have /usr because it is expected. everything in /usr is, in fact, just symlinks.</p> +<p>Rust is installed in a novel way using rustup. As root, we set the RUSTUP_HOME and CARGO_HOME environment variables to /rust, and make /rust/bin a symlink to /bin. That way, we can track a nightly toolchain system-wide and it will install binaries into /bin, for all users to access. We could, of course, build rustc from source, and I have in fact done so previously. However, apart from the ridiculous compilation time that it takes, this is not a great option until the language is truly stable, as a lot of the interesting bits if the Rust ecosystem need something newer than the stable branch. By using rustup and the binary toolchains, we always have access to the most up to date toolchain, and the ability to easily switch from one to another.</p> +<p>So what are the benefits of having rust available early on? For starters Rust can access C functions and export functions to C, making it relatively easy to replace parts of the software stack previously written in C with Rust code that enjoys the memory and concurrency safety checks which are not present in C. As an example, relibc is a complete C standard library written in Rust. This alternative C library is a potential future path of investigation. But on a smaller scale, there are a number of interesting cli utilities and programs written in Rust.</p> +<ul> +<li>sd is a stream editor similar to sed, but much faster and with a much easier syntax and reduced scope.</li> +<li>fd is a file finding utility which is orders of magnitude faster than find, and has interesting features like skipping .git folders by default.</li> +<li>exa is a file lister with some unique features over ls</li> +<li>The amp editor, while somewhat vi-like, has interesting extra features fuzzy file finder and a token based jump which make moving around even faster than vim. +I have also begun, partially as a learning exercise, writing my own Rust implementations of various small Unix utilities. In the future some may find their way into HitchHiker if we retain Rust in the base system.</li> +</ul> +<p>While this is still in an early evaluation phase, I think it likely that at the very least we will make the switch from gcc to clang/llvm at some future point, with the possibility of bringing some of the other features along as well. What may not make the cut is libstdc++, as replacing the C++ standard library is almost as problematic as replacing the C standard library, leading to the need to port a large amount of third party software in the future. However, I will likely be going further with Rust, and with the flattened filesystem, as I want HItchHiker to be a cutting edge distro while still adhering to traditional Unix practices. Basically, we're going to push the envelope when it makes sense to do so, but not follow fads and trends in the Linux community that might very well be dead ends (like I believe Systemd in particular to be).</p> + + + diff --git a/public/tags/clang/index.html b/public/tags/clang/index.html new file mode 100644 index 0000000..d2ef1f3 --- /dev/null +++ b/public/tags/clang/index.html @@ -0,0 +1,535 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Clang"

    +
      + +
      + + Experimental clang/llvm based build with nightly rust + +
      2020-11-24
      + +

      Ok, so this little side track has been on a slow burn for a while now, but I've currently got a rootfs that I can chroot into with the following features:

      +
        +
      • Built almost entirely with llvm/clang (see caveats below)
      • +
      • Rust nightly compiler installed early in the build, accessible for all users
      • +
      +...

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/cross-compile/atom.xml b/public/tags/cross-compile/atom.xml new file mode 100644 index 0000000..826c454 --- /dev/null +++ b/public/tags/cross-compile/atom.xml @@ -0,0 +1,44 @@ + + + - cross-compile + + + Zola + 2021-02-01T00:00:00+00:00 + /tags/cross-compile/atom.xml + + Reconfiguring the build process + 2021-02-01T00:00:00+00:00 + 2021-02-01T00:00:00+00:00 + + /news/reconfiguring-the-build-process/ + <p>Up until now HitchHiker has used a build process that closely followed that used +by the Linux From Scratch book. There was a temporary toolchain, hacked to use a +different library directory and prefix</p> +<span id="continue-reading"></span> +<p>so as not to conflict with the host system or with the libraries and tools being installed as the finished system. This temporary toolchain was in itself a complete development environment that included everything required to bootstrap a full system. To build to final system, is was necessary to chroot into a new directory containing the temporary tools and root filesystem.</p> +<p>This method had some advantages, but also involved compiling most packages at least twice. It also required quite a lot of extra work to do any kind of cross compiling. In fact, I had set up an RPI4 specifically as a compilation machine for Armv7l, as it was basically impractical to use my x86_64 laptop to develop for Arm.</p> +<p>In an effort to increase the flexibility of the HitchHiker build tree, support more architectures, and to streamline the build I am experimenting with using a sysroot compiler for the majority of the build. In testing, with minimal effort I was able to set up cross toolchains for armv7l, aarch64, riscv64, and i486 as well as a native x86_64 toolchain using the same build tree and only adjusting the ${arch} variable in config.mk. In testing I was able to compile almost the complete userland for x86_64, aarch64 and riscv64 without resorting to a chroot, and all on my main machine. My current plan is to compile most of the base system using a sysroot toolchain, either native or cross, including the build of the native toolchain, and then to chroot into the near complete root filesystem to finish up any packages that cannot be easily cross compiled. At this juncture I believe the only package in the base system that will be truly problematic for cross-compilation is Perl, which uses an ill conceived homegrown configure script instead of autotools. However this is not quite verified for all packages just yet.</p> +<p>In the case of a package refusing to cross-compile, I can then use the method outlined in the previous post and compile with the native toolchain using qemu user-mode emulation.</p> +<p>In addition to the vast reduction of packages being compiled twice or more, this also has the advantage of running on a fast machine. Additionally, with most of the work not requiring the chroot trick, there is no emulation layer to slow the process down. A future goal will be to fix the issues with Perl and push patches upstream if possible, as Perl is a hard build dependency of the kernel and therefore must be considered an essential part of the base system.</p> +<p>To give some idea of the resource savings this brings about, here's a quick table outlining the number of passes required for certain packages under the old layout vs the new. Note that it is still necessary to make multiple passes at Binutils and Gcc, as we have to build our sysroot/cross toolchain, but there is a rather significant reduction in the amount of other software being built twice.</p> +<table><thead><tr><th>Package</th><th>Passes (old)</th><th>Passes (new)</th></tr></thead><tbody> +<tr><td>Binutils</td><td>3</td><td>2</td></tr> +<tr><td>Gcc</td><td>3 + separate libstdc++ pass</td><td>3</td></tr> +<tr><td>Linux Headers</td><td>2</td><td>1</td></tr> +<tr><td>Glibc</td><td>2</td><td>1</td></tr> +<tr><td>M4</td><td>2</td><td>1</td></tr> +<tr><td>Ncurses</td><td>2</td><td>1</td></tr> +<tr><td>Bison</td><td>2</td><td>1</td></tr> +<tr><td>Diffutils</td><td>2</td><td>1</td></tr> +<tr><td>Gettext</td><td>2</td><td>1</td></tr> +<tr><td>Make</td><td>2</td><td>1</td></tr> +<tr><td>Perl</td><td>2</td><td>1</td></tr> +<tr><td>Python</td><td>2</td><td>1</td></tr> +<tr><td>Texinfo</td><td>2</td><td>1</td></tr> +<tr><td>Patch</td><td>2</td><td>1</td></tr> +<tr><td>Busybox</td><td>1</td><td>Not Built</td></tr> +</tbody></table> + + + diff --git a/public/tags/cross-compile/index.html b/public/tags/cross-compile/index.html new file mode 100644 index 0000000..5ee6262 --- /dev/null +++ b/public/tags/cross-compile/index.html @@ -0,0 +1,532 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "cross-compile"

    +
      + +
      + + Reconfiguring the build process + +
      2021-02-01
      + +

      Up until now HitchHiker has used a build process that closely followed that used +by the Linux From Scratch book. There was a temporary toolchain, hacked to use a +different library directory and prefix...

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/css/atom.xml b/public/tags/css/atom.xml new file mode 100644 index 0000000..aeb139a --- /dev/null +++ b/public/tags/css/atom.xml @@ -0,0 +1,99 @@ + + + - css + + + Zola + 2021-02-18T00:00:00+00:00 + /tags/css/atom.xml + + Website Redesign + 2021-02-18T00:00:00+00:00 + 2021-02-18T00:00:00+00:00 + + /news/website-redesign/ + <p>I know a little bit about a lot of things, and one of the things that I know +only in passing is web development.<span id="continue-reading"></span> I am by no means qualified at +or excited about web design. However, in the spirit of DIY I have always muddled +through all of my own projects. This has in the past meant using a CMS of some +sort, and a rather long time ago I settled on Mezzanine, a Django-based CMS +written in Python.</p> +<p>This worked out all right in most ways. However, a few weeks back I had a server +outage that I traced back to the update from Python 3.8 to Python 3.9. The +virtualenv that I had set up simply stopped working, causing the web server to be +unable to start as the default handler was DOA. Now, a Python virtualenv is a +supposedly complete standalone environment containing the Python interpretor and +libraries frozen to be version compatible with your application. It is supposed +to be self contained and not dependent upon the system-wide Python installation. +The fact that bumping a minor version number caused it to fail is distressing +and has soured my already low opinion of Python somewhat.</p> +<p>Additionally, I have long desired to incorporate a full handbook into the website +and do so in a way that looks seemless with the rest of the site. HitchHiker is +not going to be a turnkey system for most people and will need good documentation. +I have tried a few things that were available online, including Mezzanine Wiki, +but nothing is really suitable and many packages are broken and/or unmaintained +(including Mezzanine Wiki at the time I tried it).</p> +<p>Being impressed with the quality of the documentation for Rust I looked into what +they use. The Rust Book is built using <a href="https://github.com/rust-lang/mdBook">mdbook</a>, +which is a wonderful static markdown to html generator that does exaclt what it +claims to do and does it exceptionally well. After messing with it for all of two +minutes I was sold - it's just plain phenominal in use.</p> +<p>Having settled on mdbook for the forthcoming &quot;<strong>Hitch Hiker's Guide to Hitch Hiker +Linux</strong>&quot; I decided that if we're going static pages there, it would be a good +time to go static pages everywhere. I set about looking for a static site generator +that would give me enough flexibility for my needs and still be simple to use.</p> +<p>While there is no shortage of SSG's available right now, there were several popular +ones that I never really considered based on implementation. Jekyll, for one, is +written in Ruby and I'm not looking to pollute my machine with more interpreted +language cruft.</p> +<p>I gave <a href="https://gohugo.io/">Hugo</a> a long, hard look and went so far as to install +it and do some testing. Hugo is written in Go, seems to work well, and is definitely +fast. However, none of the available themes were going to be suitable without a +good deal of hacking.</p> +<p>At first glance, <a href="https://www.getzola.org/">Zola</a> appeared to have the same +strengths and the same issues as Hugo for my use case. I really couldn't see +applying any of the themes that I found directly without a lot of customization, +and there were a couple that I tried that were flat out broken. On top of whatever +customization I was going to have to do to whatever theme I picked, I was also +going to have to adapt to an mdbook theme as well....or was there another way?</p> +<p>It turns out that the default set of themes that ship with mdbook are pretty much +already great, and would look great adapted to an entire site. Now, mdbook itself +is pretty much not suitable for generating the entire site, as I need a front +page, I want to keep my blog, and I'd like to be able to incorporate other pages +as well that aren't going into the table of contents for the book. But what I +thought I could do is to create my own Zola template using the css from the mdbook +themes.</p> +<p>So in the end that's what I did. Zola, written in Rust, is actually quite a bit +simpler than Hugo and after a few initial trip ups getting started I'm finding +the template system to be something I can navigate all right. I'm left with a two +step rendering process to build the full site, as I'm rendering most of the site +using Zola and the book using mdbook. But hey, I've already proven that I can do +a good bit of automation using <code>make</code>, right?</p> +<p>While there's a bit more work left to finish migrating the old site, I have to +say that I'm completely satisfied with my choices as of now. Both Zola and mdbook +do things for me that were not going to be easily achievable in Mezzanine and come +with a lot of benefits right out of the box. As a for instance, built in syntax +highlighting for code snippets! Here's <code>echo</code> in Rust:</p> +<pre style="background-color:#2b303b;"> +<code class="language-Rust" data-lang="Rust"><span style="color:#c0c5ce;">#![</span><span style="color:#bf616a;">warn</span><span style="color:#c0c5ce;">(clippy::all, clippy::pedantic)] +</span><span style="color:#b48ead;">use </span><span style="color:#c0c5ce;">std::env; + +</span><span style="color:#b48ead;">fn </span><span style="color:#8fa1b3;">main</span><span style="color:#c0c5ce;">() { + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> args: Vec&lt;String&gt; = env::args().</span><span style="color:#96b5b4;">collect</span><span style="color:#c0c5ce;">(); + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> len = args.</span><span style="color:#96b5b4;">len</span><span style="color:#c0c5ce;">(); + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> n = len &gt; </span><span style="color:#d08770;">1 </span><span style="color:#c0c5ce;">&amp;&amp; args[</span><span style="color:#d08770;">1</span><span style="color:#c0c5ce;">] == &quot;</span><span style="color:#a3be8c;">-n</span><span style="color:#c0c5ce;">&quot;; + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> i = </span><span style="color:#b48ead;">if</span><span style="color:#c0c5ce;"> n { </span><span style="color:#d08770;">2 </span><span style="color:#c0c5ce;">} </span><span style="color:#b48ead;">else </span><span style="color:#c0c5ce;">{ </span><span style="color:#d08770;">1 </span><span style="color:#c0c5ce;">}; + </span><span style="color:#b48ead;">for </span><span style="color:#c0c5ce;">(index, arg) in args.</span><span style="color:#96b5b4;">iter</span><span style="color:#c0c5ce;">().</span><span style="color:#96b5b4;">enumerate</span><span style="color:#c0c5ce;">().</span><span style="color:#96b5b4;">skip</span><span style="color:#c0c5ce;">(i) { + </span><span style="color:#b48ead;">if</span><span style="color:#c0c5ce;"> index &lt; len - </span><span style="color:#d08770;">1 </span><span style="color:#c0c5ce;">{ + print!(&quot;</span><span style="color:#d08770;">{} </span><span style="color:#c0c5ce;">&quot;, arg); + } </span><span style="color:#b48ead;">else </span><span style="color:#c0c5ce;">{ + print!(&quot;</span><span style="color:#d08770;">{}</span><span style="color:#c0c5ce;">&quot;, arg); + } + } + </span><span style="color:#b48ead;">if </span><span style="color:#c0c5ce;">!n { + println!(); + } +} +</span></code></pre> + + diff --git a/public/tags/css/index.html b/public/tags/css/index.html new file mode 100644 index 0000000..51a692c --- /dev/null +++ b/public/tags/css/index.html @@ -0,0 +1,531 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "css"

    +
      + +
      + + Website Redesign + +
      2021-02-18
      + +

      I know a little bit about a lot of things, and one of the things that I know +only in passing is web development....

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/deprecation/atom.xml b/public/tags/deprecation/atom.xml new file mode 100644 index 0000000..328513d --- /dev/null +++ b/public/tags/deprecation/atom.xml @@ -0,0 +1,27 @@ + + + - Deprecation + + + Zola + 2020-08-28T00:00:00+00:00 + /tags/deprecation/atom.xml + + Editors, glibc-2.32 + 2020-08-28T00:00:00+00:00 + 2020-08-28T00:00:00+00:00 + + /news/editors-glibc-232/ + <p>Most people who use any form of Unix have a favorite editor. Most of them also think that everyone else is wrong<span id="continue-reading"></span> (but in truth, you're all wrong...). And most Linux distros over the years have gradually catered more and more to the lowest denominator.</p> +<p>In the beginning, of course, there was only ed (The <strong>STANDARD</strong> editor!) and then at some point in time came Bill Joy's vi. Most people have, of course, never used the original vi. If you are on Linux, chances are good that you have encountered vim. If you are running BSD in any form then you have vi, except that you don't actually have vi, you have nvi. When 4.4BSDlite was released as the first large scale open source project, the major caveat was that much of the source was patent encumbered by AT&amp;T, including the venerable vi editor. All of this source was therefore replaced, painstakingly, a piece at a time. The selling point of nvi at the time was that it was a &quot;bug for bug compatible&quot; rewrite of vi, which started with the original elvis (a vi clone) source.</p> +<p>For most of it's existence so far (including it's original, never released to the public form from roughly ten years ago) HitchHiker had vim. I've used vim a lot and over the years have only grown more fond of it. Sticking with it over the rather steep learning curve has been quite helpful in situations where the only editor available is some form of vi or vi clone. However, vim is not without it's issues. All forms of vi or clones of vi have a rather steep learning curve for new users. The vim source code is a rats nest of conditionals and attempts to maintain compatibility with ancient systems that only a masochist or Luddite would use. And for a console based editor it is rather slow (though nowhere near the beast that Emacs has become, a story for another time).</p> +<p>For ease of use and welcoming less experienced users we follow the same path as FreeBSD by offering the ee editor. It's extremely small (the entire source is a single c file) and has great ease of use due to the integrated menu bar. It isn't an especially powerful editor, but it gets the job done.</p> +<p>As for vim, I decided a while back that it was going to be replaced with something more lightweight and with a more &quot;correct&quot; code base. I tried a few times to port nvi to HitchHiker, both from the &quot;official&quot; nvi source distribution and also from BSD sources. The main stumbling block has been that the code assumes headers and C library routines which no longer exist in Linux.</p> +<p>For the solution, let's back up again by a few years. AT&amp;T Unix is the direct ancestor to Solaris. A number of years ago Sun bequeathed the source code for the Solaris operating system to the public in the form of a CDDL licensed source distribution, giving birth to the OpenSolaris operating system in it's many forms, allowing FreeBSD to import the zfs filesystem, and effectively unencumbering historical Unix source code to the benefit of all.</p> +<p>Therefore, after a few days tinkering, we now have version 3.7 of Bill Joy's original ex/vi editor, which is the version that was current as of the 4.4BSDlite release, ported to and running on HitchHiker Linux. This has been a very gratifying experience overall. Some (probably many if I'm being honest) will miss certain features that they have grown used to in vim, such as syntax highlighting and visual mode. There is no plugin system (which I've never bothered to use in vim anyway...) and you're basically expected to know what you're doing. But the program is SMALL (roughly half the size of nvi, with no dependency on BDB, and orders of magnitude smaller than vim) and noticeably faster than vim when loading large files or pasting large chunks of text. You probably thought vim was fast. But you only -thought- it was fast.</p> +<p>You are, of course, free to install and use vim if you feel that original vi is too &quot;limiting&quot; for your use. Feel free to use ed for that matter, and to yell out that you're using &quot;THE STANDARD EDITOR&quot; while doing so. We imported ed from FreeBSD a week ago.</p> +<p>In other news, GNU libc (glibc) released version 2.32 this week. I'm running it already on my Arch systems but for the time being holding off on updating HitchHiker. There were a few notable deprecations in this release for functions, macros, and even a few array definitions that are considered too ancient to support. However, they actually do affect HitchHiker in a few places as we have some rather &quot;historical&quot; code imported into the userland tools. I spent an hour this morning fixing compilation errors when compiling mksh and ex/vi against the new library, in preparation for eventually merging it in. I'll have to check all of the other imported sources against it another day.</p> +<p>Interestingly, I also had to start using clang to compile these tools in Arch, as the gcc 10 series encountered an &quot;internal compiler error&quot;, which was actually a segmentation fault, when compiling the ex/vi sources. In HitchHiker we use gcc-9.30 and these problems don't exist. Good reason to not upgrade for the time being.</p> + + + diff --git a/public/tags/deprecation/index.html b/public/tags/deprecation/index.html new file mode 100644 index 0000000..92d883d --- /dev/null +++ b/public/tags/deprecation/index.html @@ -0,0 +1,530 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Deprecation"

    +
      + +
      + + Editors, glibc-2.32 + +
      2020-08-28
      + +

      Most people who use any form of Unix have a favorite editor. Most of them also think that everyone else is wrong...

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/editors/atom.xml b/public/tags/editors/atom.xml new file mode 100644 index 0000000..0c0a42a --- /dev/null +++ b/public/tags/editors/atom.xml @@ -0,0 +1,27 @@ + + + - Editors + + + Zola + 2020-08-28T00:00:00+00:00 + /tags/editors/atom.xml + + Editors, glibc-2.32 + 2020-08-28T00:00:00+00:00 + 2020-08-28T00:00:00+00:00 + + /news/editors-glibc-232/ + <p>Most people who use any form of Unix have a favorite editor. Most of them also think that everyone else is wrong<span id="continue-reading"></span> (but in truth, you're all wrong...). And most Linux distros over the years have gradually catered more and more to the lowest denominator.</p> +<p>In the beginning, of course, there was only ed (The <strong>STANDARD</strong> editor!) and then at some point in time came Bill Joy's vi. Most people have, of course, never used the original vi. If you are on Linux, chances are good that you have encountered vim. If you are running BSD in any form then you have vi, except that you don't actually have vi, you have nvi. When 4.4BSDlite was released as the first large scale open source project, the major caveat was that much of the source was patent encumbered by AT&amp;T, including the venerable vi editor. All of this source was therefore replaced, painstakingly, a piece at a time. The selling point of nvi at the time was that it was a &quot;bug for bug compatible&quot; rewrite of vi, which started with the original elvis (a vi clone) source.</p> +<p>For most of it's existence so far (including it's original, never released to the public form from roughly ten years ago) HitchHiker had vim. I've used vim a lot and over the years have only grown more fond of it. Sticking with it over the rather steep learning curve has been quite helpful in situations where the only editor available is some form of vi or vi clone. However, vim is not without it's issues. All forms of vi or clones of vi have a rather steep learning curve for new users. The vim source code is a rats nest of conditionals and attempts to maintain compatibility with ancient systems that only a masochist or Luddite would use. And for a console based editor it is rather slow (though nowhere near the beast that Emacs has become, a story for another time).</p> +<p>For ease of use and welcoming less experienced users we follow the same path as FreeBSD by offering the ee editor. It's extremely small (the entire source is a single c file) and has great ease of use due to the integrated menu bar. It isn't an especially powerful editor, but it gets the job done.</p> +<p>As for vim, I decided a while back that it was going to be replaced with something more lightweight and with a more &quot;correct&quot; code base. I tried a few times to port nvi to HitchHiker, both from the &quot;official&quot; nvi source distribution and also from BSD sources. The main stumbling block has been that the code assumes headers and C library routines which no longer exist in Linux.</p> +<p>For the solution, let's back up again by a few years. AT&amp;T Unix is the direct ancestor to Solaris. A number of years ago Sun bequeathed the source code for the Solaris operating system to the public in the form of a CDDL licensed source distribution, giving birth to the OpenSolaris operating system in it's many forms, allowing FreeBSD to import the zfs filesystem, and effectively unencumbering historical Unix source code to the benefit of all.</p> +<p>Therefore, after a few days tinkering, we now have version 3.7 of Bill Joy's original ex/vi editor, which is the version that was current as of the 4.4BSDlite release, ported to and running on HitchHiker Linux. This has been a very gratifying experience overall. Some (probably many if I'm being honest) will miss certain features that they have grown used to in vim, such as syntax highlighting and visual mode. There is no plugin system (which I've never bothered to use in vim anyway...) and you're basically expected to know what you're doing. But the program is SMALL (roughly half the size of nvi, with no dependency on BDB, and orders of magnitude smaller than vim) and noticeably faster than vim when loading large files or pasting large chunks of text. You probably thought vim was fast. But you only -thought- it was fast.</p> +<p>You are, of course, free to install and use vim if you feel that original vi is too &quot;limiting&quot; for your use. Feel free to use ed for that matter, and to yell out that you're using &quot;THE STANDARD EDITOR&quot; while doing so. We imported ed from FreeBSD a week ago.</p> +<p>In other news, GNU libc (glibc) released version 2.32 this week. I'm running it already on my Arch systems but for the time being holding off on updating HitchHiker. There were a few notable deprecations in this release for functions, macros, and even a few array definitions that are considered too ancient to support. However, they actually do affect HitchHiker in a few places as we have some rather &quot;historical&quot; code imported into the userland tools. I spent an hour this morning fixing compilation errors when compiling mksh and ex/vi against the new library, in preparation for eventually merging it in. I'll have to check all of the other imported sources against it another day.</p> +<p>Interestingly, I also had to start using clang to compile these tools in Arch, as the gcc 10 series encountered an &quot;internal compiler error&quot;, which was actually a segmentation fault, when compiling the ex/vi sources. In HitchHiker we use gcc-9.30 and these problems don't exist. Good reason to not upgrade for the time being.</p> + + + diff --git a/public/tags/editors/index.html b/public/tags/editors/index.html new file mode 100644 index 0000000..228dd8c --- /dev/null +++ b/public/tags/editors/index.html @@ -0,0 +1,530 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Editors"

    +
      + +
      + + Editors, glibc-2.32 + +
      2020-08-28
      + +

      Most people who use any form of Unix have a favorite editor. Most of them also think that everyone else is wrong...

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/glibc/atom.xml b/public/tags/glibc/atom.xml new file mode 100644 index 0000000..c74baae --- /dev/null +++ b/public/tags/glibc/atom.xml @@ -0,0 +1,62 @@ + + + - Glibc + + + Zola + 2020-11-15T00:00:00+00:00 + /tags/glibc/atom.xml + + On Libc, rust experiments, and Risc-V + 2020-11-15T00:00:00+00:00 + 2020-11-15T00:00:00+00:00 + + /news/on-libc-rust-experiments-and-risc-v/ + <h2 id="libc">LibC</h2> +<p>Recently I have continued the exercise of re-implementing certain base system utilities in C, uncovering more and more differences between BSD and GNU libc implementations. At this point it's really easy to say that I have a strong preference for the BSD extensions to the libc standard as opposed to the GNU extensions. The Berkeley programmers, when they added features, added truly useful features.</p> +<p>Take random number generation as an example. It is fairly common when programming on Linux to open and read from /dev/urandom. BSD, in the meantime, offers a group of functions in libc (arc4random) that combine pseudo-random number generation with cryptography to produce pseudo-random data that is truly difficult to guess, with a low CPU overhead.</p> +<p>Another small place where I found the BSD libc to offer superior functionality was when I was writing my own version of the <em>mktemp</em> utility. The BSD versions of the mkstemp and mkdtemp functions allow one to give a template with a variable-length suffix, to give a choice between quick (with a smaller suffix) or as secure as you want to be. By increasing the suffix length, one can exponentially increase the number of possible filenames, making temp files a more difficult vector of attack.</p> +<p>The GNU (and musl actually) versions of these functions only allow a six character random suffix, period. In fact, my earlier port of mktemp from BSD did not function as expected in this regard, and the GNU coreutils programmers had to roll their own functions to get equivalent functionality to the BSD counterparts. I have elected to not abstract this deficiency away in my code, and the HHL version of the mktemp utility uses the available versions of mkstemp and mkdtemp, with a six character suffix. I would rather maintain the simplicity of the program than to take a risk of introducing bugs by writing my own functions here.</p> +<p>In any event, the work that I have been doing here makes a strong case for a future port of musl, with the additions of some BSD functions ported to work with musl, as our base C library. As attractive as BSD libc is, a direct port is unrealistic as so much of it is tied to kernel interfaces that differ on Linux. I just find it a shame that Linux users are mostly saddled with such a piece of crap (bloated while still being less functional) in such an important position in the software stack.</p> +<h2 id="rust">Rust</h2> +<p>There are a lot of programming languages, and they tend to come and go regularly. As programming languages go, it's a safe bet that C, C++, Java and Python will be sticking around. Of the less pervasive languages Go and Rust seem to be well ahead of the pack as pertaining to mass adoption. Go is interesting, largely because of what it leaves out. Go is simple. Go avoids the feature creep that seems to be inevitable in all modern software. However, Go achieves memory safety by using garbage collection. I want to like Go, but that one anti-feature prevents me from even trying it.</p> +<p>Rust, on the other hand, has feature upon feature to the point where I really am hoping that they ever finish the language someday. That said, I'm intrigued by Rust for a number of reasons. I have been toying with learning the language for a while, doing some simple learning exercises and reading the Rust Book. I recently decided to just dive in and start writing my own programs using Rust, as that seems to be the only way to truly learn a language. My first full Rust program is a clone of a C program that I wrote for generating sine lookup tables, useful in DSP applications. The C version is perfectly fine, but I basically wanted to try porting a known working program and see how well the control flow translated.</p> +<p>The process was not completely smooth, and it took quite a few iterations to get to the point where the program compiled and actually functioned. However, the documentation is excellent and provided solutions to most of my issues. The other thing that really impressed me was the compiler messages. Often, the compiler will tell you literally the exact change needed to make your program compile. Coming from C, this is a breath of fresh air. And when we're talking about Rust, chances are that if it compiles it's also going to function exactly as expected.</p> +<p>Rust is also elegant in a way that C never will be. Consider the following C code:</p> +<pre style="background-color:#2b303b;"> +<code class="language-C" data-lang="C"><span style="color:#b48ead;">for </span><span style="color:#c0c5ce;">( i = </span><span style="color:#d08770;">0</span><span style="color:#c0c5ce;">; i &lt; </span><span style="color:#d08770;">10</span><span style="color:#c0c5ce;">, i++) { + </span><span style="color:#65737e;">// some code +</span><span style="color:#c0c5ce;">} +</span></code></pre> +<p>And the equivalent Rust:</p> +<pre style="background-color:#2b303b;"> +<code class="language-Rust" data-lang="Rust"><span style="color:#b48ead;">for</span><span style="color:#c0c5ce;"> i in </span><span style="color:#d08770;">1</span><span style="color:#c0c5ce;">..</span><span style="color:#d08770;">10 </span><span style="color:#c0c5ce;">{ + </span><span style="color:#65737e;">// some code +</span><span style="color:#c0c5ce;">} +</span></code></pre> +<p>One thing that requires a different mindset when one moves from an old-school language like C, to a modern language like Rust, is that in C et al, the standard library tries to be all inclusive. Programmers (at least the good ones) try to avoid adding dependencies to anything other than the standard library. Rust, however, has Cargo. Cargo is, in effect, a built in package manager. This is not unheard of; Python has pip and has for years. In Rust, however, the standard library is quite small and everyone pretty much freely uses cargo to access functionality that is not included in libstd. In my case I used cargo to pull in the excellent clap crate, which parses command line arguments and also provides built in documentation. Compared to getopt in C, clap both does more and does it with little effort.</p> +<p>At this point int time, however, Rust is not going to be landing in the HitchHiker base system, as the only viable Rust compiler uses llvm as a backend. At some point in the future this may well change anyway, as I have been growing increasingly frustrated with both Glibc and gcc (a brief skim of some earlier blog posts will quickly turn up examples). The obvious replacements are musl and the clang compiler, which, being based on llvm, would make the further inclusion of rustc trivial.</p> +<h2 id="risc-v">Risc-V</h2> +<p>I do a fair amount of electronics experimenting and often employ various microcontrollers in my projects. Some are Atmega based, while I have more recently fallen in love with the ATSAMD51 Arm Cortex M4 processor based boards from Adafruit. Just this week I have acquired something new to me: a Risc-V based MCU from Seeed Studio, the Sipeed Longan Nano. It's a brilliant chip, although quite lacking in documentation and example code. I'll be playing with it a lot.</p> +<p>The Nano, however, is a microcontroller, not a full SOC that is capable of running Linux. Right now there are few options for developers wanting to experiment with Risc-V with a full operating system, and the best ones are all prohibitively expensive for their capability. Due out next year, however, is the PicoRio board from Rios labs that is described as close in form factor and capabilities to most Arm boards based around the RPI format. Provided this board is not vaporware and actually does materialize at a reasonable cost, I intend for HItchHiker Linux to be running on it as soon as feasible. I intend to make HitchHiker one of the very first options independent of distros such as Debian and Fedora, and to make Risc-V a first class citizen. It is my hope that in doing so HitchHiker might help to push along the adoption of truly open hardware on which to run open software.</p> + + + + Editors, glibc-2.32 + 2020-08-28T00:00:00+00:00 + 2020-08-28T00:00:00+00:00 + + /news/editors-glibc-232/ + <p>Most people who use any form of Unix have a favorite editor. Most of them also think that everyone else is wrong<span id="continue-reading"></span> (but in truth, you're all wrong...). And most Linux distros over the years have gradually catered more and more to the lowest denominator.</p> +<p>In the beginning, of course, there was only ed (The <strong>STANDARD</strong> editor!) and then at some point in time came Bill Joy's vi. Most people have, of course, never used the original vi. If you are on Linux, chances are good that you have encountered vim. If you are running BSD in any form then you have vi, except that you don't actually have vi, you have nvi. When 4.4BSDlite was released as the first large scale open source project, the major caveat was that much of the source was patent encumbered by AT&amp;T, including the venerable vi editor. All of this source was therefore replaced, painstakingly, a piece at a time. The selling point of nvi at the time was that it was a &quot;bug for bug compatible&quot; rewrite of vi, which started with the original elvis (a vi clone) source.</p> +<p>For most of it's existence so far (including it's original, never released to the public form from roughly ten years ago) HitchHiker had vim. I've used vim a lot and over the years have only grown more fond of it. Sticking with it over the rather steep learning curve has been quite helpful in situations where the only editor available is some form of vi or vi clone. However, vim is not without it's issues. All forms of vi or clones of vi have a rather steep learning curve for new users. The vim source code is a rats nest of conditionals and attempts to maintain compatibility with ancient systems that only a masochist or Luddite would use. And for a console based editor it is rather slow (though nowhere near the beast that Emacs has become, a story for another time).</p> +<p>For ease of use and welcoming less experienced users we follow the same path as FreeBSD by offering the ee editor. It's extremely small (the entire source is a single c file) and has great ease of use due to the integrated menu bar. It isn't an especially powerful editor, but it gets the job done.</p> +<p>As for vim, I decided a while back that it was going to be replaced with something more lightweight and with a more &quot;correct&quot; code base. I tried a few times to port nvi to HitchHiker, both from the &quot;official&quot; nvi source distribution and also from BSD sources. The main stumbling block has been that the code assumes headers and C library routines which no longer exist in Linux.</p> +<p>For the solution, let's back up again by a few years. AT&amp;T Unix is the direct ancestor to Solaris. A number of years ago Sun bequeathed the source code for the Solaris operating system to the public in the form of a CDDL licensed source distribution, giving birth to the OpenSolaris operating system in it's many forms, allowing FreeBSD to import the zfs filesystem, and effectively unencumbering historical Unix source code to the benefit of all.</p> +<p>Therefore, after a few days tinkering, we now have version 3.7 of Bill Joy's original ex/vi editor, which is the version that was current as of the 4.4BSDlite release, ported to and running on HitchHiker Linux. This has been a very gratifying experience overall. Some (probably many if I'm being honest) will miss certain features that they have grown used to in vim, such as syntax highlighting and visual mode. There is no plugin system (which I've never bothered to use in vim anyway...) and you're basically expected to know what you're doing. But the program is SMALL (roughly half the size of nvi, with no dependency on BDB, and orders of magnitude smaller than vim) and noticeably faster than vim when loading large files or pasting large chunks of text. You probably thought vim was fast. But you only -thought- it was fast.</p> +<p>You are, of course, free to install and use vim if you feel that original vi is too &quot;limiting&quot; for your use. Feel free to use ed for that matter, and to yell out that you're using &quot;THE STANDARD EDITOR&quot; while doing so. We imported ed from FreeBSD a week ago.</p> +<p>In other news, GNU libc (glibc) released version 2.32 this week. I'm running it already on my Arch systems but for the time being holding off on updating HitchHiker. There were a few notable deprecations in this release for functions, macros, and even a few array definitions that are considered too ancient to support. However, they actually do affect HitchHiker in a few places as we have some rather &quot;historical&quot; code imported into the userland tools. I spent an hour this morning fixing compilation errors when compiling mksh and ex/vi against the new library, in preparation for eventually merging it in. I'll have to check all of the other imported sources against it another day.</p> +<p>Interestingly, I also had to start using clang to compile these tools in Arch, as the gcc 10 series encountered an &quot;internal compiler error&quot;, which was actually a segmentation fault, when compiling the ex/vi sources. In HitchHiker we use gcc-9.30 and these problems don't exist. Good reason to not upgrade for the time being.</p> + + + diff --git a/public/tags/glibc/index.html b/public/tags/glibc/index.html new file mode 100644 index 0000000..9e4482b --- /dev/null +++ b/public/tags/glibc/index.html @@ -0,0 +1,539 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Glibc"

    + +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/gnu-make/atom.xml b/public/tags/gnu-make/atom.xml new file mode 100644 index 0000000..759abbf --- /dev/null +++ b/public/tags/gnu-make/atom.xml @@ -0,0 +1,74 @@ + + + - GNU Make + + + Zola + 2020-08-03T00:00:00+00:00 + /tags/gnu-make/atom.xml + + Restarting make, buildworld cleanup, default software + 2020-08-03T00:00:00+00:00 + 2020-08-03T00:00:00+00:00 + + /news/restarting-make-buildworld-cleanup-default-software/ + <p>One of the deficiencies in the HitchHiker build tree up to this point has been dealing with packages that require some manual intervention after the &quot;make install&quot; step. Originally there was no unified infrastructure to deal with this scenario. Very quickly<span id="continue-reading"></span> during testing I realized that this was an omission that was going to cause problems, as the scenario was much more common than I at first realized and implementing solutions on a per-package basis is both quite error prone and likely to introduce bugs into the build process. Up until the workarounds have involved redefining the .DEFAULT_GOAL variable and creating custom targets to finish the installation, while making the basic installation a dependency of said targets.</p> +<p>A common problem that arose out of this hodgepodge approach is that if the new targets were &quot;.PHONY&quot; targets (a target that is not an actual file) or the targets were symlinks then if the build was stopped it would error out on resuming, due to the timestamps of dependencies being the same or newer than their targets, or else a target could not actually be run because it involved moving some file that we already moved the first time it ran. This made testing new features a laborious process, as often any errors required removing the entire rootfs and restarting buildworld from the beginning.</p> +<p>When I implemented hhl.cprog.mk, I took steps to remedy this situation. If one defines the variable &quot;finish&quot; then the system will know that there are steps to be taken after &quot;make install&quot;. Then any additional steps can be added to the new target {objdir}/.finished, which is the second dependency of the &quot;finish&quot; target after &quot;install&quot;. This worked well in practice, so I have implemented the same functionality in targets.mk which is used by all &quot;external&quot; source packages (those packages for which the source is not included in the HitchHiker build tree but downloaded as tarballs during the build).</p> +<p>As a result of this, after considerable tweaking, the build can now be restarted from any point after stopping and will run to completion. I consider this to be an important milestone, as it makes future development much less arduous.</p> +<p>An important goal of HitchHiker is that the base system includes everything needed to bootstrap a full system. As such, it is unfortunately required to include certain packages that will not necessarily be required under all circumstances. A good example of this is the networking stack, as it is next to impossible to bootstrap a full system without a network connection, but we don't know if that connection is going to be wired, wireless, secured wireless, static or dynamic, etc. The first test builds of the complete system ignored this completely and only included what is needed to manually set up a static, wired connection.</p> +<p>This situation is also now remedied, as the officially distributed builds will include the dhcpcd, wireless-tools and wpa_supplicant packages. However, it is entirely possible to exclude any or all of these packages by setting appropriate variables in the file config.mk in the top level of the source tree.</p> +<p>There are now a number of things that can be tweaked when building the system from source. One can specify a list of locales to compile for glibc rather than the default of compiling all supported locales. By setting the variable rpi to true, you get the Raspberry Pi foundation kernel instead of linux mainline. And a custom kernel configuration file can be substituted for the default HitchHiker one. None of these tweaks should change the essence of the system being HitchHiker, but just allow the user some extra choice and the ability to slim the system down a fair bit, as well as speeding up the build somewhat.</p> +<p>Lastly, I want to talk about the roadmap for HitchHiker a little bit. Regarding the build tree itself, at the moment we currently have the .mk file targets.mk which includes most of the logic to build all of the packages that are downloaded and compiled as part of the base system. This file's internal logic defaults to using GNU autotools, but is flexible enough to build packages in other ways by resetting appropriate variables. This approach does work, but requires some deep knowledge of how it all is put together. As eventually I would love to see my work finding a larger audience I would like to make the infrastructure a little bit easier to understand, so for example when we graduate from pkgsrc to our own ports tree there could be some community involvement in fleshing out a complete ports tree.</p> +<p>To that end, a future goal is going to be removing the autotools logic into an &quot;autotools.mk&quot; file and creating, for instance, &quot;cmake.mk&quot; or &quot;waf.mk&quot;, which will know how to build packages using those build systems. At that point one could set the build system to use &quot;waf&quot; via a variable assignment and then include hhl.ports.mk, which would then pull in &quot;waf.mk&quot;. Doing this cleanly is an important step in the way to creating a ports tree that will be easily debugged and easy to maintain and update.</p> +<p>This theoretical &quot;hhl.ports.mk&quot; will also need logic for tracking everything to be installed by each and every package, uninstalling packages and upgrading to newer versions. In short it will need much of the logic of a package manager. I have actually implemented most of this previously in the original HitchHiker system of ten years ago. At that point installed files were tracked by creating a timestamp file before &quot;make install&quot; and then using the find utility to catch any files with a newer timestamp. This had the attractive benefit of being completely agnostic to build system, but is not without it's drawbacks. Chief among the drawbacks is that it is a rather time consuming approach, but there is also the danger that we will miss a file if it is created with the wrong time stamps, or may capture an incorrect file that has been created by another running process. For those reasons I'm planning to implement it by installing into a DESTDIR. The problems here are that one needs to be familiar with multiple build systems to know how to achieve this, and also that the concept of a DESTDIR is not universally implemented in all pieces of software out there. For the former, the solution is good old fashioned grunt work to learn the ins and outs of each build system as it is encountered. For the latter, the approach is going to be patching the build system and submitting patches upstream, with the hope that the authors will be receptive.</p> +<p>I'm going to interject at this point to point out that pkgsrc uses an entirely different approach by requiring every package directory to include a PLIST file, thus placing the burden squarely on the shoulders of the maintainer to populate this file with every file the package will install on your system. FreeBSD also uses this approach. Functionality could be included into &quot;hhl.ports.mk&quot; to use a PLIST file if it exists, skipping any automatic file discovery.</p> +<p>Then there is another elephant in the room - dependency tracking. The previous incarnation of HitchHiker kept a flat file database of every file that every package in the ports tree might install, ran &quot;file&quot; on every file in the new package to determine it's file type, then ran ldd on every elf file and compared the results to the database. It was quite effective at catching any binary dependencies. It was also slower than shit on large packages and extremely overkill much of the time. Knowing a bit better now I have no intention of going down that rabbit hole again. Instead, dependencies are just going to be manually specified by the developer in each port's Makefile. While this is somewhat error prone, it can be refined over time to be near perfect and has the advantage of speed. In addition, not all dependencies are library dependencies. Some dependencies are of the nature of expecting another program to be available to exec() at runtime, and some dependencies are simply build time requirements.</p> +<p>Now here's the point where I'm going to get controversial. BSD ports implement all of this using just make and for years had nothing like the traditional Linux package manager, instead relying on simple command line utilities to manipulate packages. I -don't- want a package manager in HitchHiker. I don't want to reinvent the wheel and write a new one, and none of the existing ones are going to be suitable. I think they're generally just complicated, poorly understood by the average user, and since there are already so many implementations it's virtually impossible at this time for one of them to become &quot;standard&quot;, thus basically making the idea of the Linux desktop an unachievable dream. No company is going to bother supporting dpkg, rpm, Slackware tarballs, Arch tarballs, Flatpack and Ubuntu snaps. It's not happening. At most they're going to release an rpm, a deb or a snap and just ignore everybody else. The ideas of the commercial world embracing desktop Linux, the year of desktop Linux, etc are all basically pipe dreams.</p> +<p>Here's what I picture instead. If we can manipulate source archives into binary packages and then install those packages all using make, we can frankly do the same with binary packages. BSD port trees and pkgsrc had already proven that would work years ago. In fact, in FreeBSD you can install binary packages that are dependencies of the port that you are building rather than building them from source, or build ports that don't have a binary package available when installing binary packages. This system functioned just fine for a long time. Their mistake a few years ago was jumping on the Linux bandwagon and writing yet another package manager, pkg. Since that time I've noticed quite a lot more issues keeping FreeBSD packages up to date, to the point where I even abandoned an installation at one point. So we're skipping it entirely, and instead I'm going to provide a &quot;binary-install&quot; target in &quot;hhl.ports.mk&quot; that will fetch and install binary packages. Easy peasy, no package manager required, unless you consider the ports tree itself to be a package manager.</p> + + + + Imported source, pkgsrc on Arm woes, and make includes + 2020-08-01T00:00:00+00:00 + 2020-08-01T00:00:00+00:00 + + /news/imported-source-pkgsrc-on-arm-woes-and-make-includes/ + <p>I think we'll start this post discussing some of the differences and misconceptions of same between BSD make and GNU make. In the case of BSD make we're primarily referring to NetBSD make, which is a greatly improved version of the historical Unix make<span id="continue-reading"></span> utility, and has also been imported into FreeBSD. Among the BSD camp, GNU make is seen as a second citizen. Their version of make is leveraged for building the entire system, without using autotools except in the case of imported external source which has been autotooled by it's authors. It is also the utility that wraps all of the functionality of FreeBSD ports and NetBSD pkgsrc - downloading, patching, compiling and packaging third party software. The complete infrastructure is quite impressive.</p> +<p>Much of this functionality lies in leveraging included Makefiles, much in the way that C headers can be included to pull in function definitions, and also similar to the concept of shared libraries. These included .mk files, usually located in /usr/share/mk on a BSD system, allow for extremely concise Makefiles throughout the source tree to just specify a few variables and then pull in all of the targets from an inclued file. The most prominent are probably bsd.prog.mk and bsd.lib.mk, which tell make how to build C programs and C libraries respectively.</p> +<p>It is a common misconception that this functionality only exists in BSD make. GNU make does have this capability as well and I leverage it quite heavily in HitchHiker. Admittedly, it is more developed in BSD make, but the limitations of GNU make in comparison are fairly trivial and easy to work around. One of the sillier things is the default search path that GNU make uses the look for included Makefiles. By default this path starts in the current directory and proceeds through /usr/local/include, /usr/include and finally /usr/gnu/include. Leveraging this would sprinkle .mk files through what are by convention the location of C header files, or alternatively using /usr/gnu/include. I have yet to see a system that has a /usr/gnu directory (maybe it was planned for Hurd?) and I'm not keen on it. As of the last commit, HitchHiker now patches make to no longer search /usr/gnu/include and to now search instead /usr/local/include/mk and /usr/include/mk, the latter being our new default directory. This allows us to include a .mk file by name, without specifying a full or relative path, and at the same time keeps all of our .mk files separated from the system C headers.</p> +<p>So what exactly does BSD make have over GNU make?</p> +<ul> +<li>Slightly more powerful conditionals. In addition to ifdef, ifndef, ifeq and ifneq BSD make also has a simple if, and allows chaining conditionals with the &amp;&amp; and || operators much like shell syntax. By comparison GNU make must nest conditionals for similar functionality.</li> +<li>Included Makefiles can be relative to the install or source prefix. This is quite powerful for building large projects in custom site locations.</li> +<li>Possibly others I have not discovered yet, however in practice GNU make can do -everything- that BSD make does if you take the time to learn how to use it.</li> +</ul> +<p>As part of creating a more integrated build framework, my most recent commit contains a basic analog for bsd.prog.mk, hhl.cprog.mk (cprog due to my not assuming that all programs are written in C!) which now allows extremely concise Makefiles for source code that has been imported into the base system. In the case of rpcgen the following Makefile is all that is needed:</p> +<pre style="background-color:#2b303b;"> +<code class="language-Makefile" data-lang="Makefile"><span style="color:#65737e;"># Makefile - hhl - /usr/src/world/rpcgen +# Copyright 2020 Nathan Fisher &lt;nfisher.sr@gmail.com&gt; +# +</span><span style="color:#bf616a;">progname </span><span style="color:#c0c5ce;">= </span><span style="color:#a3be8c;">rpcgen +</span><span style="color:#bf616a;">cflags </span><span style="color:#c0c5ce;">+= </span><span style="color:#a3be8c;">-g +</span><span style="color:#b48ead;">include </span><span style="color:#a3be8c;">hhl.cprog.mk +</span></code></pre> +<p>As can be seen, there are really only three lines. Lines 1-3 are comments, line 4 specifies the program name, line 5 adds -g to the compiler flags, and line 6 includes hhl.cprog.mk. If you look inside the rpcgen subdirectory of the build tree you will see the following structure:</p> +<pre style="background-color:#2b303b;"> +<code><span style="color:#c0c5ce;">. + ├── Makefile + ├── man + │ └── rpcgen.1 + ├── README + └── src + ├── config.h + ├── proto.h + ├── rpc_clntout.c + ├──***snip +</span></code></pre> +<p>Our included Makefile will generate object files for any .c files in the src/ subdirectory, link those objects into an executable and install man/rpcgen.1 in ${install_prefix}/share/man/man1. It has logic to differentiate man1 from man8 and also installs html and text docs in the doc/ subdirectory. If we needed to specify additional cppflags, cflags, ldflags or libs to link with we would just append them to those vars (by convention I use lower case so as to not interfere with any CFLAGS etc. specified on the command line or in an external build system). If we want to create links to our executable they just need to be specified in the binlinks variable. Defining the variable finish and writing a finish target allows us to do anything else additional that might need done, like installing configuration files or runtime data. In short, while being a fairly tidy 102 lines (some of which is whitespace and comments) hhl.cprog.mk successfully works as an analog for bsd.prog.mk.</p> +<p>The short list of programs leveraging this framework now include the ee text editor, rpcgen, mksh and lksh shells and the pax archive/copy/link utility. At some later date the source tree will be reorganized to move these directories into bin or usr.bin much like is done in the BSD source trees, as well as importing other sources directly into the tree and &quot;HitchHikerizing&quot; their build systems.</p> +<p>The title promised some pkgsrc updates relating to arm challenges. In a nutshell pkgsrc seems to be broken in several places for arm on Linux. Perhaps most annoyingly is the buildlink system, which is supposed to make it simpler for packages to find the libs that they are to link against by moving everything into work/.buildlink/lib (relative to the subdirectory that bmake was run from). So far I've discovered that libuuid, libexpat, libstdc++, libacl and libattr libtool archives are skipped every time on arm for reasons that I have not yet discovered. I can work around it by manually linking the .la files in from /usr/lib, but this requires an annoying level of manual intervention. Nevertheless I have managed to build the full LXDE, XFCE and Mate desktops, several shells, emacs, nano and pico editors, Inkscape and am on to building Gimp presently on my RPI. On x86_64 I have all of that plus a fairly complete server stack, Abiword, Gnumeric and the Firefox browser built.</p> +<p>In short, when q3 releases (and it really is coming soon) there will be a fairly comprehensive selection of software available on both architectures via pkgsrc. However, in the long run we're going to revisit the idea of creating our own ports tree which leverages GNU make and the infrastructure of .mk files that now reside in /usr/include/mk, adding funcionality for creating binary package tarballs and downloading and installing them. This will most likely involve a simple homebrewed package format that takes some inspiration from BSD tarballs, Slackware tarballs and Arch Linux tarballs. A sneak peak in the current build tree at how we register the installation of the base system will give you an idea. We're going to keep things purposely simple and avoid writing a full fledged package manager. More details to come.</p> + + + diff --git a/public/tags/gnu-make/index.html b/public/tags/gnu-make/index.html new file mode 100644 index 0000000..a7bde48 --- /dev/null +++ b/public/tags/gnu-make/index.html @@ -0,0 +1,541 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "GNU Make"

    +
      + +
      + + Restarting make, buildworld cleanup, default software + +
      2020-08-03
      + +

      One of the deficiencies in the HitchHiker build tree up to this point has been dealing with packages that require some manual intervention after the "make install" step. Originally there was no unified infrastructure to deal with this scenario. Very quickly...

      + + Read More -> +
      + +
      + + Imported source, pkgsrc on Arm woes, and make includes + +
      2020-08-01
      + +

      I think we'll start this post discussing some of the differences and misconceptions of same between BSD make and GNU make. In the case of BSD make we're primarily referring to NetBSD make, which is a greatly improved version of the historical Unix make...

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/html/atom.xml b/public/tags/html/atom.xml new file mode 100644 index 0000000..e632557 --- /dev/null +++ b/public/tags/html/atom.xml @@ -0,0 +1,99 @@ + + + - html + + + Zola + 2021-02-18T00:00:00+00:00 + /tags/html/atom.xml + + Website Redesign + 2021-02-18T00:00:00+00:00 + 2021-02-18T00:00:00+00:00 + + /news/website-redesign/ + <p>I know a little bit about a lot of things, and one of the things that I know +only in passing is web development.<span id="continue-reading"></span> I am by no means qualified at +or excited about web design. However, in the spirit of DIY I have always muddled +through all of my own projects. This has in the past meant using a CMS of some +sort, and a rather long time ago I settled on Mezzanine, a Django-based CMS +written in Python.</p> +<p>This worked out all right in most ways. However, a few weeks back I had a server +outage that I traced back to the update from Python 3.8 to Python 3.9. The +virtualenv that I had set up simply stopped working, causing the web server to be +unable to start as the default handler was DOA. Now, a Python virtualenv is a +supposedly complete standalone environment containing the Python interpretor and +libraries frozen to be version compatible with your application. It is supposed +to be self contained and not dependent upon the system-wide Python installation. +The fact that bumping a minor version number caused it to fail is distressing +and has soured my already low opinion of Python somewhat.</p> +<p>Additionally, I have long desired to incorporate a full handbook into the website +and do so in a way that looks seemless with the rest of the site. HitchHiker is +not going to be a turnkey system for most people and will need good documentation. +I have tried a few things that were available online, including Mezzanine Wiki, +but nothing is really suitable and many packages are broken and/or unmaintained +(including Mezzanine Wiki at the time I tried it).</p> +<p>Being impressed with the quality of the documentation for Rust I looked into what +they use. The Rust Book is built using <a href="https://github.com/rust-lang/mdBook">mdbook</a>, +which is a wonderful static markdown to html generator that does exaclt what it +claims to do and does it exceptionally well. After messing with it for all of two +minutes I was sold - it's just plain phenominal in use.</p> +<p>Having settled on mdbook for the forthcoming &quot;<strong>Hitch Hiker's Guide to Hitch Hiker +Linux</strong>&quot; I decided that if we're going static pages there, it would be a good +time to go static pages everywhere. I set about looking for a static site generator +that would give me enough flexibility for my needs and still be simple to use.</p> +<p>While there is no shortage of SSG's available right now, there were several popular +ones that I never really considered based on implementation. Jekyll, for one, is +written in Ruby and I'm not looking to pollute my machine with more interpreted +language cruft.</p> +<p>I gave <a href="https://gohugo.io/">Hugo</a> a long, hard look and went so far as to install +it and do some testing. Hugo is written in Go, seems to work well, and is definitely +fast. However, none of the available themes were going to be suitable without a +good deal of hacking.</p> +<p>At first glance, <a href="https://www.getzola.org/">Zola</a> appeared to have the same +strengths and the same issues as Hugo for my use case. I really couldn't see +applying any of the themes that I found directly without a lot of customization, +and there were a couple that I tried that were flat out broken. On top of whatever +customization I was going to have to do to whatever theme I picked, I was also +going to have to adapt to an mdbook theme as well....or was there another way?</p> +<p>It turns out that the default set of themes that ship with mdbook are pretty much +already great, and would look great adapted to an entire site. Now, mdbook itself +is pretty much not suitable for generating the entire site, as I need a front +page, I want to keep my blog, and I'd like to be able to incorporate other pages +as well that aren't going into the table of contents for the book. But what I +thought I could do is to create my own Zola template using the css from the mdbook +themes.</p> +<p>So in the end that's what I did. Zola, written in Rust, is actually quite a bit +simpler than Hugo and after a few initial trip ups getting started I'm finding +the template system to be something I can navigate all right. I'm left with a two +step rendering process to build the full site, as I'm rendering most of the site +using Zola and the book using mdbook. But hey, I've already proven that I can do +a good bit of automation using <code>make</code>, right?</p> +<p>While there's a bit more work left to finish migrating the old site, I have to +say that I'm completely satisfied with my choices as of now. Both Zola and mdbook +do things for me that were not going to be easily achievable in Mezzanine and come +with a lot of benefits right out of the box. As a for instance, built in syntax +highlighting for code snippets! Here's <code>echo</code> in Rust:</p> +<pre style="background-color:#2b303b;"> +<code class="language-Rust" data-lang="Rust"><span style="color:#c0c5ce;">#![</span><span style="color:#bf616a;">warn</span><span style="color:#c0c5ce;">(clippy::all, clippy::pedantic)] +</span><span style="color:#b48ead;">use </span><span style="color:#c0c5ce;">std::env; + +</span><span style="color:#b48ead;">fn </span><span style="color:#8fa1b3;">main</span><span style="color:#c0c5ce;">() { + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> args: Vec&lt;String&gt; = env::args().</span><span style="color:#96b5b4;">collect</span><span style="color:#c0c5ce;">(); + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> len = args.</span><span style="color:#96b5b4;">len</span><span style="color:#c0c5ce;">(); + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> n = len &gt; </span><span style="color:#d08770;">1 </span><span style="color:#c0c5ce;">&amp;&amp; args[</span><span style="color:#d08770;">1</span><span style="color:#c0c5ce;">] == &quot;</span><span style="color:#a3be8c;">-n</span><span style="color:#c0c5ce;">&quot;; + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> i = </span><span style="color:#b48ead;">if</span><span style="color:#c0c5ce;"> n { </span><span style="color:#d08770;">2 </span><span style="color:#c0c5ce;">} </span><span style="color:#b48ead;">else </span><span style="color:#c0c5ce;">{ </span><span style="color:#d08770;">1 </span><span style="color:#c0c5ce;">}; + </span><span style="color:#b48ead;">for </span><span style="color:#c0c5ce;">(index, arg) in args.</span><span style="color:#96b5b4;">iter</span><span style="color:#c0c5ce;">().</span><span style="color:#96b5b4;">enumerate</span><span style="color:#c0c5ce;">().</span><span style="color:#96b5b4;">skip</span><span style="color:#c0c5ce;">(i) { + </span><span style="color:#b48ead;">if</span><span style="color:#c0c5ce;"> index &lt; len - </span><span style="color:#d08770;">1 </span><span style="color:#c0c5ce;">{ + print!(&quot;</span><span style="color:#d08770;">{} </span><span style="color:#c0c5ce;">&quot;, arg); + } </span><span style="color:#b48ead;">else </span><span style="color:#c0c5ce;">{ + print!(&quot;</span><span style="color:#d08770;">{}</span><span style="color:#c0c5ce;">&quot;, arg); + } + } + </span><span style="color:#b48ead;">if </span><span style="color:#c0c5ce;">!n { + println!(); + } +} +</span></code></pre> + + diff --git a/public/tags/html/index.html b/public/tags/html/index.html new file mode 100644 index 0000000..636c8d2 --- /dev/null +++ b/public/tags/html/index.html @@ -0,0 +1,531 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "html"

    +
      + +
      + + Website Redesign + +
      2021-02-18
      + +

      I know a little bit about a lot of things, and one of the things that I know +only in passing is web development....

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/index.html b/public/tags/index.html new file mode 100644 index 0000000..9debcde --- /dev/null +++ b/public/tags/index.html @@ -0,0 +1,480 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + + +
    +News Home + +
    +
    +
    +
    + + + + + diff --git a/public/tags/libraries/atom.xml b/public/tags/libraries/atom.xml new file mode 100644 index 0000000..a13905a --- /dev/null +++ b/public/tags/libraries/atom.xml @@ -0,0 +1,78 @@ + + + - Libraries + + + Zola + 2020-08-28T00:00:00+00:00 + /tags/libraries/atom.xml + + Editors, glibc-2.32 + 2020-08-28T00:00:00+00:00 + 2020-08-28T00:00:00+00:00 + + /news/editors-glibc-232/ + <p>Most people who use any form of Unix have a favorite editor. Most of them also think that everyone else is wrong<span id="continue-reading"></span> (but in truth, you're all wrong...). And most Linux distros over the years have gradually catered more and more to the lowest denominator.</p> +<p>In the beginning, of course, there was only ed (The <strong>STANDARD</strong> editor!) and then at some point in time came Bill Joy's vi. Most people have, of course, never used the original vi. If you are on Linux, chances are good that you have encountered vim. If you are running BSD in any form then you have vi, except that you don't actually have vi, you have nvi. When 4.4BSDlite was released as the first large scale open source project, the major caveat was that much of the source was patent encumbered by AT&amp;T, including the venerable vi editor. All of this source was therefore replaced, painstakingly, a piece at a time. The selling point of nvi at the time was that it was a &quot;bug for bug compatible&quot; rewrite of vi, which started with the original elvis (a vi clone) source.</p> +<p>For most of it's existence so far (including it's original, never released to the public form from roughly ten years ago) HitchHiker had vim. I've used vim a lot and over the years have only grown more fond of it. Sticking with it over the rather steep learning curve has been quite helpful in situations where the only editor available is some form of vi or vi clone. However, vim is not without it's issues. All forms of vi or clones of vi have a rather steep learning curve for new users. The vim source code is a rats nest of conditionals and attempts to maintain compatibility with ancient systems that only a masochist or Luddite would use. And for a console based editor it is rather slow (though nowhere near the beast that Emacs has become, a story for another time).</p> +<p>For ease of use and welcoming less experienced users we follow the same path as FreeBSD by offering the ee editor. It's extremely small (the entire source is a single c file) and has great ease of use due to the integrated menu bar. It isn't an especially powerful editor, but it gets the job done.</p> +<p>As for vim, I decided a while back that it was going to be replaced with something more lightweight and with a more &quot;correct&quot; code base. I tried a few times to port nvi to HitchHiker, both from the &quot;official&quot; nvi source distribution and also from BSD sources. The main stumbling block has been that the code assumes headers and C library routines which no longer exist in Linux.</p> +<p>For the solution, let's back up again by a few years. AT&amp;T Unix is the direct ancestor to Solaris. A number of years ago Sun bequeathed the source code for the Solaris operating system to the public in the form of a CDDL licensed source distribution, giving birth to the OpenSolaris operating system in it's many forms, allowing FreeBSD to import the zfs filesystem, and effectively unencumbering historical Unix source code to the benefit of all.</p> +<p>Therefore, after a few days tinkering, we now have version 3.7 of Bill Joy's original ex/vi editor, which is the version that was current as of the 4.4BSDlite release, ported to and running on HitchHiker Linux. This has been a very gratifying experience overall. Some (probably many if I'm being honest) will miss certain features that they have grown used to in vim, such as syntax highlighting and visual mode. There is no plugin system (which I've never bothered to use in vim anyway...) and you're basically expected to know what you're doing. But the program is SMALL (roughly half the size of nvi, with no dependency on BDB, and orders of magnitude smaller than vim) and noticeably faster than vim when loading large files or pasting large chunks of text. You probably thought vim was fast. But you only -thought- it was fast.</p> +<p>You are, of course, free to install and use vim if you feel that original vi is too &quot;limiting&quot; for your use. Feel free to use ed for that matter, and to yell out that you're using &quot;THE STANDARD EDITOR&quot; while doing so. We imported ed from FreeBSD a week ago.</p> +<p>In other news, GNU libc (glibc) released version 2.32 this week. I'm running it already on my Arch systems but for the time being holding off on updating HitchHiker. There were a few notable deprecations in this release for functions, macros, and even a few array definitions that are considered too ancient to support. However, they actually do affect HitchHiker in a few places as we have some rather &quot;historical&quot; code imported into the userland tools. I spent an hour this morning fixing compilation errors when compiling mksh and ex/vi against the new library, in preparation for eventually merging it in. I'll have to check all of the other imported sources against it another day.</p> +<p>Interestingly, I also had to start using clang to compile these tools in Arch, as the gcc 10 series encountered an &quot;internal compiler error&quot;, which was actually a segmentation fault, when compiling the ex/vi sources. In HitchHiker we use gcc-9.30 and these problems don't exist. Good reason to not upgrade for the time being.</p> + + + + Improved porting with libbsd + 2020-08-24T00:00:00+00:00 + 2020-08-24T00:00:00+00:00 + + /news/improved-porting-with-libbsd/ + <p>The libbsd project was begun originally by the developers of the Debian K-FreeBSD project as a means of addressing differences in the available functions, headers and c macros between BSD libc and GNU libc. I have imported the source<span id="continue-reading"></span> directly into HitchHiker and &quot;hitchhikerized&quot; the build process. Only the static library archives are built at this time. With a few tweaks and an additional &quot;compat.h&quot; header to address a few omissions, this has led to an improvement in my process of porting BSD utilities, and the vast majority of the imported utilities now link with libbsd functions. There is little measurable overhead in the resulting binaries.</p> +<p>For those utilities that are more difficult to port I have begun porting the work already done to create lobase, a portable package of OpenBSD userland, to the hitchhiker build system. I am also pulling in sources from FreeBSD now. The first program ported from FreeBSD to HHL is the ed editor, which in this case was easier to get going than the version from the NetBSD sources.</p> +<p>I have always enjoyed the venerable Unix fortune program, and always include a call to it in my shell profile. While I did consider the idea of including it by default in the HitchHiker base system, I decided to go another route and just implement something simpler from scratch. Hence, the small C program 42, which by just prints a random quote from the HitchHiker's guide universe. It accepts no options and can only be extended by editing the source. Just a bit of fun. +<img src="../../assets/screenshot_42.png" alt="screenshot_42.png" /></p> + + + + Patching pkgsrc, building rust and Arm headaches + 2020-07-20T00:00:00+00:00 + 2020-07-20T00:00:00+00:00 + + /news/patching-pkgsrc-building-rust-and-arm-headaches/ + <p>Having been working with pkgsrc for a couple weeks now there's a bit of a flow +developing, and quite a bit of progress, with a big caveat. The issues I'm +running into are that there are quite a few more build failures for Arm than +there are for x86_64.<span id="continue-reading"></span></p> +<p>Interestingly, both libdrm and MesaLib fail with similar messages about assembly +code that isn't supported on the current architecture (armv7l). In situations +like this it's hard to blame pkgsrc, as the fault is upstream from there. I'm +getting quite used to adding packages to my local tree and tweaking BSD style +Makefiles. I'm making every attempt to send fixes upstream; however, waiting for +a response each and every time is just not really going to be an option here, so +in the meantime I've decided to import the entirety of pkgsrc into git and use +that tree as the &quot;official&quot; branch for HitchHiker. This will enable our project +to build up a substantial package collection even if upsteam pkgsrc begins to +lag behind.</p> +<p>One of the problematic packages that is now often being pulled in as a dependency is rustc, the rust compiler. It's problematic on two fronts. First, unless your system has substantial amounts of memory a parallel build will fail as the memory fills up (mine has 8 gig and still fails). Second, and quite frustrating, is that rustc is only compatible with certain versions of either openssl or libressl, and our version of libressl was too new. After seeing if we could use either libressl or openssl from pkgsrc and encountering repeated failures, I just rolled back libressl to the newest version that rust supports.</p> +<p>Let me pause here for a brief commentary on rust as a programming language. There is a lot to like about rust, and it seems that the language may be with us for quite some time, as it seems to see more usage every day and has achieved a critical mass of developers. I've played around with it myself a little bit and the documentation is very good, it's probably one of the easier to learn languages, and the ecosystem as a whole is very nice when you look at all of the features that cargo brings to the table. However, I am not a fan of the fact that the rust standard library, libstd, is compiled in statically by default. This results in a simple &quot;Hello, world!&quot; executable compiling into a 7.1m binary on my machine before stripping, which comes down to 220k after stripping. When compiling the same program dynamically it comes all the way down to 16k after stripping, so we have approximately a 204k overhead <em>per binary</em> for the static libstd.</p> +<p>I am also not happy about rolling back libressl, as I would much rather have the newest possible version of what is a security critical piece of software. However, it is I believe still a better and more secure option than openssl, which most distros are still using. It's a shame that a major piece of software like rust, that is a dependency of quite a number of other packages now, has not updated to use the newer abi presented by newer versions of libressl.</p> +<p>After a couple weeks of building packages on both x86_64 and armv7l, using an identical set of packages in the base system, it is very apparent just how much more development x86_64 gets than arm. Two packages in particular illustrate this quite well - libdrm and MesaLib - both of which are major dependencies of modular Xorg. In both cases assembly code is generated by gcc that contains instructions not supported by the processor, and the only fix is to disable features in the Arm build. In the case of MesaLib this involves patching the source code. Thanks to the Arch Linux Arm team for showing the way, as my patches are adapted from their PKGBUILD.</p> +<p>There have been just a few more tweaks to the base system as I attempt to fully +finalize the build in preparation for release. The rpcgen utility that I had +incorporated proved to not fully support all features needed for building certain +packages in pkgsrc. After some search I found a newer version that had been +autotooled in the rpcsvc-proto package, which was originally a compatibility +package during the time that SunRPC was being removed from Glibc. I've imported +the source for just the rpcgen utility from that package into hitchhiker's build +tree, removed all of the autotools material, moved all C-preprocessor flags into +a config.h file, disabled NLS and made a very lean, mean Makefile for it. While +I was at it I used similar techniques to update the builds for mksh and pax. +Both of those packages now include their CPPFLAGS as defines in config.h, and I +have even begun eliminating ifdefs out of the C files to make for a cleaner and +faster build.</p> + + + diff --git a/public/tags/libraries/index.html b/public/tags/libraries/index.html new file mode 100644 index 0000000..5c8b8cf --- /dev/null +++ b/public/tags/libraries/index.html @@ -0,0 +1,555 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Libraries"

    +
      + +
      + + Editors, glibc-2.32 + +
      2020-08-28
      + +

      Most people who use any form of Unix have a favorite editor. Most of them also think that everyone else is wrong...

      + + Read More -> +
      + +
      + + Improved porting with libbsd + +
      2020-08-24
      + +

      The libbsd project was begun originally by the developers of the Debian K-FreeBSD project as a means of addressing differences in the available functions, headers and c macros between BSD libc and GNU libc. I have imported the source...

      + + Read More -> +
      + +
      + + Patching pkgsrc, building rust and Arm headaches + +
      2020-07-20
      + +

      Having been working with pkgsrc for a couple weeks now there's a bit of a flow +developing, and quite a bit of progress, with a big caveat. The issues I'm +running into are that there are quite a few more build failures for Arm than +there are for x86_64....

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/llvm/atom.xml b/public/tags/llvm/atom.xml new file mode 100644 index 0000000..6aca960 --- /dev/null +++ b/public/tags/llvm/atom.xml @@ -0,0 +1,46 @@ + + + - llvm + + + Zola + 2020-11-24T00:00:00+00:00 + /tags/llvm/atom.xml + + Experimental clang/llvm based build with nightly rust + 2020-11-24T00:00:00+00:00 + 2020-11-24T00:00:00+00:00 + + /news/experimental-clangllvm-based-build-with-nightly-rust/ + <p>Ok, so this little side track has been on a slow burn for a while now, but I've currently got a rootfs that I can chroot into with the following features:</p> +<ul> +<li>Built almost entirely with llvm/clang (see caveats below)</li> +<li>Rust nightly compiler installed early in the build, accessible for all users</li> +</ul> +<span id="continue-reading"></span> +<ul> +<li>Directory hierarchy flattened, directories in /usr are symlinks to directories in /</li> +<li>libc++ standard C++ library from the llvm project instead of libstdc++ from gcc</li> +<li>Both GNU binutils and the lld linker installed (default is still binutils ld for now)</li> +<li>x86_64 only at this time, but should be portable to Arm +Some caveats:</li> +<li>llvm/clang wants to build against libstdc++, so not self hosting unless we go back to libstdc++</li> +<li>There were issues building the compiler-rt module, so llvm and clang link against libgcc</li> +<li>The GNU m4 package will not build with clang, so it had to be built with the gcc compiler from the temporary toolchain. I'm sure this is fixable, but I haven't researched it much yet.</li> +<li>The biggie: glibc refuses to try to build with any compiler except gcc. The. Sheer. Fucking. Hubris. ...again... +Nevertheless, this is all quite promising and brings up a number of possibilities going forward. As llvm by default supports multiple backends for code generation, a huge benefit is that HitchHiker would come out of the box with cross compilation ability. Also, including rust by default gives us the ability to use Rust code in the base system, with numerous potential benefits that I will explain below.</li> +</ul> +<p>The directory hierarchy is simple to understand, but is reversed in implementation from what the &quot;big&quot; distros have done. Basically most &quot;modern&quot; distros have ditched the /usr split by making /bin and /lib into symlinks to /usr/bin and /usr/lib. In this build we instead just give all programs a blank install prefix. Our root directory now takes not only all of our binaries and libraries but also has program data under /share, and we only have /usr because it is expected. everything in /usr is, in fact, just symlinks.</p> +<p>Rust is installed in a novel way using rustup. As root, we set the RUSTUP_HOME and CARGO_HOME environment variables to /rust, and make /rust/bin a symlink to /bin. That way, we can track a nightly toolchain system-wide and it will install binaries into /bin, for all users to access. We could, of course, build rustc from source, and I have in fact done so previously. However, apart from the ridiculous compilation time that it takes, this is not a great option until the language is truly stable, as a lot of the interesting bits if the Rust ecosystem need something newer than the stable branch. By using rustup and the binary toolchains, we always have access to the most up to date toolchain, and the ability to easily switch from one to another.</p> +<p>So what are the benefits of having rust available early on? For starters Rust can access C functions and export functions to C, making it relatively easy to replace parts of the software stack previously written in C with Rust code that enjoys the memory and concurrency safety checks which are not present in C. As an example, relibc is a complete C standard library written in Rust. This alternative C library is a potential future path of investigation. But on a smaller scale, there are a number of interesting cli utilities and programs written in Rust.</p> +<ul> +<li>sd is a stream editor similar to sed, but much faster and with a much easier syntax and reduced scope.</li> +<li>fd is a file finding utility which is orders of magnitude faster than find, and has interesting features like skipping .git folders by default.</li> +<li>exa is a file lister with some unique features over ls</li> +<li>The amp editor, while somewhat vi-like, has interesting extra features fuzzy file finder and a token based jump which make moving around even faster than vim. +I have also begun, partially as a learning exercise, writing my own Rust implementations of various small Unix utilities. In the future some may find their way into HitchHiker if we retain Rust in the base system.</li> +</ul> +<p>While this is still in an early evaluation phase, I think it likely that at the very least we will make the switch from gcc to clang/llvm at some future point, with the possibility of bringing some of the other features along as well. What may not make the cut is libstdc++, as replacing the C++ standard library is almost as problematic as replacing the C standard library, leading to the need to port a large amount of third party software in the future. However, I will likely be going further with Rust, and with the flattened filesystem, as I want HItchHiker to be a cutting edge distro while still adhering to traditional Unix practices. Basically, we're going to push the envelope when it makes sense to do so, but not follow fads and trends in the Linux community that might very well be dead ends (like I believe Systemd in particular to be).</p> + + + diff --git a/public/tags/llvm/index.html b/public/tags/llvm/index.html new file mode 100644 index 0000000..70307b8 --- /dev/null +++ b/public/tags/llvm/index.html @@ -0,0 +1,535 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "llvm"

    +
      + +
      + + Experimental clang/llvm based build with nightly rust + +
      2020-11-24
      + +

      Ok, so this little side track has been on a slow burn for a while now, but I've currently got a rootfs that I can chroot into with the following features:

      +
        +
      • Built almost entirely with llvm/clang (see caveats below)
      • +
      • Rust nightly compiler installed early in the build, accessible for all users
      • +
      +...

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/mdbook/atom.xml b/public/tags/mdbook/atom.xml new file mode 100644 index 0000000..60ab3bb --- /dev/null +++ b/public/tags/mdbook/atom.xml @@ -0,0 +1,99 @@ + + + - mdbook + + + Zola + 2021-02-18T00:00:00+00:00 + /tags/mdbook/atom.xml + + Website Redesign + 2021-02-18T00:00:00+00:00 + 2021-02-18T00:00:00+00:00 + + /news/website-redesign/ + <p>I know a little bit about a lot of things, and one of the things that I know +only in passing is web development.<span id="continue-reading"></span> I am by no means qualified at +or excited about web design. However, in the spirit of DIY I have always muddled +through all of my own projects. This has in the past meant using a CMS of some +sort, and a rather long time ago I settled on Mezzanine, a Django-based CMS +written in Python.</p> +<p>This worked out all right in most ways. However, a few weeks back I had a server +outage that I traced back to the update from Python 3.8 to Python 3.9. The +virtualenv that I had set up simply stopped working, causing the web server to be +unable to start as the default handler was DOA. Now, a Python virtualenv is a +supposedly complete standalone environment containing the Python interpretor and +libraries frozen to be version compatible with your application. It is supposed +to be self contained and not dependent upon the system-wide Python installation. +The fact that bumping a minor version number caused it to fail is distressing +and has soured my already low opinion of Python somewhat.</p> +<p>Additionally, I have long desired to incorporate a full handbook into the website +and do so in a way that looks seemless with the rest of the site. HitchHiker is +not going to be a turnkey system for most people and will need good documentation. +I have tried a few things that were available online, including Mezzanine Wiki, +but nothing is really suitable and many packages are broken and/or unmaintained +(including Mezzanine Wiki at the time I tried it).</p> +<p>Being impressed with the quality of the documentation for Rust I looked into what +they use. The Rust Book is built using <a href="https://github.com/rust-lang/mdBook">mdbook</a>, +which is a wonderful static markdown to html generator that does exaclt what it +claims to do and does it exceptionally well. After messing with it for all of two +minutes I was sold - it's just plain phenominal in use.</p> +<p>Having settled on mdbook for the forthcoming &quot;<strong>Hitch Hiker's Guide to Hitch Hiker +Linux</strong>&quot; I decided that if we're going static pages there, it would be a good +time to go static pages everywhere. I set about looking for a static site generator +that would give me enough flexibility for my needs and still be simple to use.</p> +<p>While there is no shortage of SSG's available right now, there were several popular +ones that I never really considered based on implementation. Jekyll, for one, is +written in Ruby and I'm not looking to pollute my machine with more interpreted +language cruft.</p> +<p>I gave <a href="https://gohugo.io/">Hugo</a> a long, hard look and went so far as to install +it and do some testing. Hugo is written in Go, seems to work well, and is definitely +fast. However, none of the available themes were going to be suitable without a +good deal of hacking.</p> +<p>At first glance, <a href="https://www.getzola.org/">Zola</a> appeared to have the same +strengths and the same issues as Hugo for my use case. I really couldn't see +applying any of the themes that I found directly without a lot of customization, +and there were a couple that I tried that were flat out broken. On top of whatever +customization I was going to have to do to whatever theme I picked, I was also +going to have to adapt to an mdbook theme as well....or was there another way?</p> +<p>It turns out that the default set of themes that ship with mdbook are pretty much +already great, and would look great adapted to an entire site. Now, mdbook itself +is pretty much not suitable for generating the entire site, as I need a front +page, I want to keep my blog, and I'd like to be able to incorporate other pages +as well that aren't going into the table of contents for the book. But what I +thought I could do is to create my own Zola template using the css from the mdbook +themes.</p> +<p>So in the end that's what I did. Zola, written in Rust, is actually quite a bit +simpler than Hugo and after a few initial trip ups getting started I'm finding +the template system to be something I can navigate all right. I'm left with a two +step rendering process to build the full site, as I'm rendering most of the site +using Zola and the book using mdbook. But hey, I've already proven that I can do +a good bit of automation using <code>make</code>, right?</p> +<p>While there's a bit more work left to finish migrating the old site, I have to +say that I'm completely satisfied with my choices as of now. Both Zola and mdbook +do things for me that were not going to be easily achievable in Mezzanine and come +with a lot of benefits right out of the box. As a for instance, built in syntax +highlighting for code snippets! Here's <code>echo</code> in Rust:</p> +<pre style="background-color:#2b303b;"> +<code class="language-Rust" data-lang="Rust"><span style="color:#c0c5ce;">#![</span><span style="color:#bf616a;">warn</span><span style="color:#c0c5ce;">(clippy::all, clippy::pedantic)] +</span><span style="color:#b48ead;">use </span><span style="color:#c0c5ce;">std::env; + +</span><span style="color:#b48ead;">fn </span><span style="color:#8fa1b3;">main</span><span style="color:#c0c5ce;">() { + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> args: Vec&lt;String&gt; = env::args().</span><span style="color:#96b5b4;">collect</span><span style="color:#c0c5ce;">(); + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> len = args.</span><span style="color:#96b5b4;">len</span><span style="color:#c0c5ce;">(); + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> n = len &gt; </span><span style="color:#d08770;">1 </span><span style="color:#c0c5ce;">&amp;&amp; args[</span><span style="color:#d08770;">1</span><span style="color:#c0c5ce;">] == &quot;</span><span style="color:#a3be8c;">-n</span><span style="color:#c0c5ce;">&quot;; + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> i = </span><span style="color:#b48ead;">if</span><span style="color:#c0c5ce;"> n { </span><span style="color:#d08770;">2 </span><span style="color:#c0c5ce;">} </span><span style="color:#b48ead;">else </span><span style="color:#c0c5ce;">{ </span><span style="color:#d08770;">1 </span><span style="color:#c0c5ce;">}; + </span><span style="color:#b48ead;">for </span><span style="color:#c0c5ce;">(index, arg) in args.</span><span style="color:#96b5b4;">iter</span><span style="color:#c0c5ce;">().</span><span style="color:#96b5b4;">enumerate</span><span style="color:#c0c5ce;">().</span><span style="color:#96b5b4;">skip</span><span style="color:#c0c5ce;">(i) { + </span><span style="color:#b48ead;">if</span><span style="color:#c0c5ce;"> index &lt; len - </span><span style="color:#d08770;">1 </span><span style="color:#c0c5ce;">{ + print!(&quot;</span><span style="color:#d08770;">{} </span><span style="color:#c0c5ce;">&quot;, arg); + } </span><span style="color:#b48ead;">else </span><span style="color:#c0c5ce;">{ + print!(&quot;</span><span style="color:#d08770;">{}</span><span style="color:#c0c5ce;">&quot;, arg); + } + } + </span><span style="color:#b48ead;">if </span><span style="color:#c0c5ce;">!n { + println!(); + } +} +</span></code></pre> + + diff --git a/public/tags/mdbook/index.html b/public/tags/mdbook/index.html new file mode 100644 index 0000000..4fb48c6 --- /dev/null +++ b/public/tags/mdbook/index.html @@ -0,0 +1,531 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "mdbook"

    +
      + +
      + + Website Redesign + +
      2021-02-18
      + +

      I know a little bit about a lot of things, and one of the things that I know +only in passing is web development....

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/milestones/atom.xml b/public/tags/milestones/atom.xml new file mode 100644 index 0000000..01f85a5 --- /dev/null +++ b/public/tags/milestones/atom.xml @@ -0,0 +1,126 @@ + + + - Milestones + + + Zola + 2021-02-08T00:00:00+00:00 + /tags/milestones/atom.xml + + Cross Build Progress + 2021-02-08T00:00:00+00:00 + 2021-02-08T00:00:00+00:00 + + /news/cross-build-progress/ + <p>The sysroot/cross-compile build tree is nearly able to build all of HitchHiker +now, with only a few packages left to tweak.</p> +<span id="continue-reading"></span> +<ul> +<li>pkg-config: This is messy in general. There is a circular dependency with Glib, +satisfied by the pkg-config maintainers incorporating a recent version of Glib +directly into the distribution. However, Glib requires extra work to cross +compile. I've looked into it but not yet implemented the fixes.</li> +<li>XML::Parser: Perl was actually able to cross compile successfully to both +aarch64 and riscv64 using perl-cross. XML::Parser is a perl module, uses perl +during it's build and perl modules in general have their own home baked build +system which does not play well with cross compiling. I'm investigating whether +it really needs to be in the base system or can be moved to ports.</li> +<li>Ninja and Meson: may not actually be needed in the base system?</li> +<li>zstd: Uses a Makefile or Meson for it's build system. I've already dealt with +a few projects that built with a plain Makefile and was just putting this off to +be honest, as a few of the others required significant reworking to get a +functional build.</li> +<li>iproute2: Another one using it's own home grown configure script which will +likely require much manual intervention.</li> +<li>mandoc: This builds after a fair amount of manual intervention. However, it +segfaults on riscv64. Unknown whether this is due to qemu or if it will segfault +on real hardware, but not a great sign. I'm looking at porting an earlier man +utility from 4.4BSD-lite. Man should be a simple program.</li> +<li>file: Our file utility, descended from the relatively recent OpenBSD sandboxed +file, built fine on intel and Arm architectures, but the original author pulled +in some SECCOMP defs that are architecture dependent and failed to account for +any architectures besides Intel and Arm. I've hacked the source so that it +compiles on Riscv64. However, there appears to be more work to be done to get it +fully working on that arch. +There were, of course, numerous hiccups along the way. I'll elaborate on a few.</li> +</ul> +<p>Bzip2 has it's own Makefile based build. It also has a separate Makefile to build the shared version of the library, and even when you do build the shared version it uses the static version for bzip2recover. In true hitchhiker fashion after mucking about with what was already there for a while I wound up just discarding it and imported the source directly into the build tree, substitution our own infrastructure. This required creating hhl.sharedlib.mk, which was overdue anyway. At the moment we're building both shared and static versions of libbz2, and linking the bzip2 and bzip2recover binaries against the shared library.</p> +<p>Recent versions of util-linux include a new utility, hardlink, which links against pcre2 if available. However, the build system detects pcre2 on the host system, not in the sysroot, and there is no provision to manually disable linking against pcre2. Interestingly, there are two competing implementations of the hardlink program, and the one currently in util-linux is potentially going to be replaced as it is not the more fully featured one. There is some interesting discussion of the issue on the mailing list. In the meantime, since it is a potentially useful utility, I just imported the source of the preferred version and am building it using our build infrustructure.</p> +<p>And now, gettext. This one really pissed me off. Recent versions of gettext include libtextstyle, a library for formatting text for display. The included gettext utilities link against libtextstyle. However, the headers don't yet exist at the time the utilities are built, so the only reason the build is not failing for everyone is that they are building against the headers already present on the host system. The libtextstyle subdirectory is not even in the library search path on the command line.</p> +<p>Now, this is just bad practice. It means that if those headers are updated for a new release, then distro packagers will be building against the old headers, potentially causing undefined behavior and random bugs. I only caught it because the build utterly fails in a sysroot environment.</p> +<p>Furthermore, one of the missing headers, included by textstyle.h, is stdbool.h, because for some reason they're worried about building on systems that don't have a working boolean implementation. This is just crazy at this point. It's no wonder GNU projects get bloated.</p> +<p>In the end, I pulled the headers out of the host system, put them in the appropriate directory inside the source directory, compiled, then did a chroot into the sysroot and did a native compile just to be sure that the headers matched. Those headers are now imported into the build tree and are placed into the source directory after running configure, and the Makefile is patched to search the build directory before the system header directory. It's not a full fix that I would push upstream but it works. A full fix would build the headers first, before building the utilities, then link against them. I didn't feel like going that in depth fixing their build.</p> +<p>In a general sense, even though I feel that autotools based builds are often extremely bloated and inefficient, based on the mistakes that I keep fixing in other project's home brewed Makefiles to enable cross compilation (as well as simple things like installing into a DESTDIR) I can really see some of the strengths of autotools. Most of the time, all that is needed to cross compile is setting --host and either passing --sysroot in the CFLAGS or, if supported the the specific package, passing --with-sysroot to configure. That isn't to say that autotools is perfect. Frequently the package maintainers compile tests against the host system or check for library support by looking in /usr/include. After a while you begin to realize that you're literally fixing the same mistake repeatedly, and start to feel despair for the human race. And then it works, and everything is all right again.</p> + + + + Goodbye GNU coreutils, importing sed + 2020-09-22T00:00:00+00:00 + 2020-09-22T00:00:00+00:00 + + /news/goodbye-gnu-coreutils-importing-sed/ + <p>The porting effort has reached the point where it is now safe to remove GNU +coreutils. At this point, there are now only 16 utilities provided by the +coreutils package<span id="continue-reading"></span> that are not implemented in another way in HitchHiker, and none of the missing +utilities are dealbreakers. As follows, here is what is missing and why it isn't +a problem, or what the roadmap is for replacement.</p> +<ul> +<li>b2sum - computes BLAKE2 checksums - there are quite a number of checksum utilities already, and this one is currently not a dealbreaker. If a reason for replacement is discovered it will be implemented from scratch in c.</li> +<li>base32 - encodes file or stdin using base32 - we already have base64 imported from OpenBSD.</li> +<li>basenc - encodes file or stdin using various algorithms - see base32.</li> +<li>chcon - changes SELinux security context - SELinux is a largely Fedora/RedHat backed API which we don't implement currently in HitchHiker. Standard Unix file permissions are not fine-grained enough for just about any use case.</li> +<li>dir - displays directory contents - despite what GNU say about dir, it is basically ls but with a different default behavior. The same behavior can be emulated by using the appropriate flags with ls.</li> +<li>dircolors - sets the colors for eg <code>ls --color</code> - We have BSD ls in HitchHiker, which does not implement the --color option. I have considered re-implementing ls and including the --color option, in which case dircolors would be useful. However, this is non-trivial and no timeframe is given.</li> +<li>hostid - displays the unique numeric id for the current host - not currently a dealbreaker, but potentially useful. Fairly trivial to implement in C.</li> +<li>nproc - gets the number of processors currently available - also potentially useful and fairly trivial to implement in C.</li> +<li>numfmt - format numbers in human-readable form - potentially useful, not a dealbreaker. Non-POSIX utility which accepts mostly GNU style long options. If implemented would be done in a different way, ignoring the behavior of the GNU utility, which is frankly too GNU-centric (long options should have short option equivalents).</li> +<li>pinky - a mini finger implementation - all information available via pinky can be optained with other included utilities. If there is a need for accessing information on remote hosts an actual finger implementation is required anyway.</li> +<li>ptx - honestly the manpage for this utility reads like gibberish. Anyway I've never used it and don't think it's needed, not available on BSD systems anyway and not POSIX.</li> +<li>runcon - run a command with a different SELinux security context - see chcon.</li> +<li>shuf - shuffles file contents randomly - not particularly useful.</li> +<li>stdbuf - run command with modified IO buffering - exists in FreeBSD but not NetBSD or OpenBSD. Non-POSIX. Potentially useful, not considered a priority. Porting from FreeBSD is non-trivial if memory serves from my 1st attempt.</li> +<li>timeout - run a command with a time limit - Not available on BSD systems, Non-POSIX. Potentially useful but not a priority.</li> +<li>vdir - another permutation of ls (see dir) - again just use ls, why have another binary?</li> +</ul> +<p>None of the missing utilities are POSIX specified and are not likely to be called from any kind of portable shell script. With the exception of stdbuf, I could not find alternative implementations for any of the missing utilities. This was a long process fraught with a fair bit of trial and error, and continual testing to ensure that the system could still bootstrap iself as utilities were replaced a few at a time. My first tries removing the coreutils package entirely resulted in various failures, as either a utility had incompatible behavior with one or more packages build systems, or a missing utility was actually required.</p> +<p>A good example of a surprise was with the 'od' utility, which creates an 'octal dump' of file contents. I did not assume this to be a utility that would see much use. However, the build system for busybox assumes it's existence and fails without it. On looking for a replacement I turned to the <a href="http://heirloom.sourceforge.net/tools.html">Heirloom Toolchest</a>, a collection of utilities derived from ancient Unix sources released by Caldera and Sun. This utility has the dubious distinction of influencing one of the more glaring inconsistencies in bourne shell syntax. For most control flow structures in sh, the closing keyword is the opening keyword reversed, IE if-else-fi or case-esac. However, od was already in existence before the original bourne shell was written, precluding the use of do-od for looping and giving history instead do-done.</p> +<p>While in there poking around in the heirloom sources I also ported over pg (an early pager), sum (yet another checksum utility) and factor (prints all prime factors of the given number). The sources have been variously tweaked to be more inline with my own coding style, making future maintenance easier. All but pg were commands which are present in coreutils, giving us greater coverage.</p> +<p>During the porting effort, there were various utilities which were either not present in BSD, sbase or heirloom or else so trivial as to pose no barrier to implementing them from scratch. Here is that list.</p> +<ul> +<li>/bin/true - just return true and exit - implemented as a single line shell script.</li> +<li>/bin/false - the reverse of true.</li> +<li>/sbin/nologin - used for disabled logins, displays a message that the account is disabled and exits with a failure code - implemented in C.</li> +<li>/usr/bin/link - creates hard links - implemented in C.</li> +<li>/usr/bin/unlink - calls the unlink function to remove files - implemented in C.</li> +<li>/usr/bin/shred</li> +</ul> +<p>The shred utility was a special case, as it existed only in GNU coreutils until my own implementation. I've always thought that this was a tremendously useful utility and wanted it in HitchHiker. What it does is overwrites the given file with random data to make recovery exceedingly difficult, optionally doing a final pass with zeros and unlinking the file. It can be used on an entire block device to wipe a hard drive clean. I've been working on dogfooding myself in C lately and this was a good opportunity to code something a little but less trivial. Anyway, this version of the shred command is implemented cleanly from scratch but follows fairly closely the behavior of the GNU version. It differs in not accepting long options, much like the rest of our collection of utilities, and does not implement a few switches that are considered unnecessary in use. At some point I intend to go in and implement file-renaming before deletion, akin to the GNU versions &quot;wipesync&quot; method, but the program is otherwise feature complete. In order to give myself another challenge, I also implemented a progressbar that is displayed with the -v option.</p> +<h2 id="on-to-sed">On to sed</h2> +<p>I have tried in vain to get away from using GNU sed in HitchHiker. After porting BSD sed, sbase sed and GNU minised, all of them proved unsuitable and caused build failures at some point or another. Or rather, non-portable sed usage by the authors of the various build systems caused failure when our sed did not support the input that it was given. The final deal-breaker was the Linux kernel itself, which requires sed to understand some GNU specific regular expressions during the build.</p> +<p>What I have done is import the GNU sed source code directly into the HitchHiker source tree and made it work with our build system. This is only the second GNU licensed program I have done so with (the first being less) and only the third time that I have successfully stripped a program of it's autotooled build system. It was, to say the least, not trivial. However, the results are rather impressive, as on my 8-core laptop sed now builds in 3.22 seconds, compared with 31.75 seconds for the autotooled build. I'll take a 10x speed increase any day, and it's a great example of how much there is to gain by just using make compared with an autotools build. Indeed, for a smaller program like sed, most of the time is taken by the configure script, and by installing files after compilation. With our &quot;compile in place&quot; method we're skipping entirely the installation phase.</p> +<p>As GNU sed is fully localized into multiple languages, I took the time to extend the build infrastructure with hhl.locale.mk, which takes any .po files in a program's locale subdirectory (if they exist) and &quot;compiles&quot; them into .mo files in /usr/share/locale using the msgfmt utility. With that in place the infrastructure for building directly from source, rather than just wrapping another build system in make, is pretty much complete, even if there are still things to optimise.</p> + + + + Restarting make, buildworld cleanup, default software + 2020-08-03T00:00:00+00:00 + 2020-08-03T00:00:00+00:00 + + /news/restarting-make-buildworld-cleanup-default-software/ + <p>One of the deficiencies in the HitchHiker build tree up to this point has been dealing with packages that require some manual intervention after the &quot;make install&quot; step. Originally there was no unified infrastructure to deal with this scenario. Very quickly<span id="continue-reading"></span> during testing I realized that this was an omission that was going to cause problems, as the scenario was much more common than I at first realized and implementing solutions on a per-package basis is both quite error prone and likely to introduce bugs into the build process. Up until the workarounds have involved redefining the .DEFAULT_GOAL variable and creating custom targets to finish the installation, while making the basic installation a dependency of said targets.</p> +<p>A common problem that arose out of this hodgepodge approach is that if the new targets were &quot;.PHONY&quot; targets (a target that is not an actual file) or the targets were symlinks then if the build was stopped it would error out on resuming, due to the timestamps of dependencies being the same or newer than their targets, or else a target could not actually be run because it involved moving some file that we already moved the first time it ran. This made testing new features a laborious process, as often any errors required removing the entire rootfs and restarting buildworld from the beginning.</p> +<p>When I implemented hhl.cprog.mk, I took steps to remedy this situation. If one defines the variable &quot;finish&quot; then the system will know that there are steps to be taken after &quot;make install&quot;. Then any additional steps can be added to the new target {objdir}/.finished, which is the second dependency of the &quot;finish&quot; target after &quot;install&quot;. This worked well in practice, so I have implemented the same functionality in targets.mk which is used by all &quot;external&quot; source packages (those packages for which the source is not included in the HitchHiker build tree but downloaded as tarballs during the build).</p> +<p>As a result of this, after considerable tweaking, the build can now be restarted from any point after stopping and will run to completion. I consider this to be an important milestone, as it makes future development much less arduous.</p> +<p>An important goal of HitchHiker is that the base system includes everything needed to bootstrap a full system. As such, it is unfortunately required to include certain packages that will not necessarily be required under all circumstances. A good example of this is the networking stack, as it is next to impossible to bootstrap a full system without a network connection, but we don't know if that connection is going to be wired, wireless, secured wireless, static or dynamic, etc. The first test builds of the complete system ignored this completely and only included what is needed to manually set up a static, wired connection.</p> +<p>This situation is also now remedied, as the officially distributed builds will include the dhcpcd, wireless-tools and wpa_supplicant packages. However, it is entirely possible to exclude any or all of these packages by setting appropriate variables in the file config.mk in the top level of the source tree.</p> +<p>There are now a number of things that can be tweaked when building the system from source. One can specify a list of locales to compile for glibc rather than the default of compiling all supported locales. By setting the variable rpi to true, you get the Raspberry Pi foundation kernel instead of linux mainline. And a custom kernel configuration file can be substituted for the default HitchHiker one. None of these tweaks should change the essence of the system being HitchHiker, but just allow the user some extra choice and the ability to slim the system down a fair bit, as well as speeding up the build somewhat.</p> +<p>Lastly, I want to talk about the roadmap for HitchHiker a little bit. Regarding the build tree itself, at the moment we currently have the .mk file targets.mk which includes most of the logic to build all of the packages that are downloaded and compiled as part of the base system. This file's internal logic defaults to using GNU autotools, but is flexible enough to build packages in other ways by resetting appropriate variables. This approach does work, but requires some deep knowledge of how it all is put together. As eventually I would love to see my work finding a larger audience I would like to make the infrastructure a little bit easier to understand, so for example when we graduate from pkgsrc to our own ports tree there could be some community involvement in fleshing out a complete ports tree.</p> +<p>To that end, a future goal is going to be removing the autotools logic into an &quot;autotools.mk&quot; file and creating, for instance, &quot;cmake.mk&quot; or &quot;waf.mk&quot;, which will know how to build packages using those build systems. At that point one could set the build system to use &quot;waf&quot; via a variable assignment and then include hhl.ports.mk, which would then pull in &quot;waf.mk&quot;. Doing this cleanly is an important step in the way to creating a ports tree that will be easily debugged and easy to maintain and update.</p> +<p>This theoretical &quot;hhl.ports.mk&quot; will also need logic for tracking everything to be installed by each and every package, uninstalling packages and upgrading to newer versions. In short it will need much of the logic of a package manager. I have actually implemented most of this previously in the original HitchHiker system of ten years ago. At that point installed files were tracked by creating a timestamp file before &quot;make install&quot; and then using the find utility to catch any files with a newer timestamp. This had the attractive benefit of being completely agnostic to build system, but is not without it's drawbacks. Chief among the drawbacks is that it is a rather time consuming approach, but there is also the danger that we will miss a file if it is created with the wrong time stamps, or may capture an incorrect file that has been created by another running process. For those reasons I'm planning to implement it by installing into a DESTDIR. The problems here are that one needs to be familiar with multiple build systems to know how to achieve this, and also that the concept of a DESTDIR is not universally implemented in all pieces of software out there. For the former, the solution is good old fashioned grunt work to learn the ins and outs of each build system as it is encountered. For the latter, the approach is going to be patching the build system and submitting patches upstream, with the hope that the authors will be receptive.</p> +<p>I'm going to interject at this point to point out that pkgsrc uses an entirely different approach by requiring every package directory to include a PLIST file, thus placing the burden squarely on the shoulders of the maintainer to populate this file with every file the package will install on your system. FreeBSD also uses this approach. Functionality could be included into &quot;hhl.ports.mk&quot; to use a PLIST file if it exists, skipping any automatic file discovery.</p> +<p>Then there is another elephant in the room - dependency tracking. The previous incarnation of HitchHiker kept a flat file database of every file that every package in the ports tree might install, ran &quot;file&quot; on every file in the new package to determine it's file type, then ran ldd on every elf file and compared the results to the database. It was quite effective at catching any binary dependencies. It was also slower than shit on large packages and extremely overkill much of the time. Knowing a bit better now I have no intention of going down that rabbit hole again. Instead, dependencies are just going to be manually specified by the developer in each port's Makefile. While this is somewhat error prone, it can be refined over time to be near perfect and has the advantage of speed. In addition, not all dependencies are library dependencies. Some dependencies are of the nature of expecting another program to be available to exec() at runtime, and some dependencies are simply build time requirements.</p> +<p>Now here's the point where I'm going to get controversial. BSD ports implement all of this using just make and for years had nothing like the traditional Linux package manager, instead relying on simple command line utilities to manipulate packages. I -don't- want a package manager in HitchHiker. I don't want to reinvent the wheel and write a new one, and none of the existing ones are going to be suitable. I think they're generally just complicated, poorly understood by the average user, and since there are already so many implementations it's virtually impossible at this time for one of them to become &quot;standard&quot;, thus basically making the idea of the Linux desktop an unachievable dream. No company is going to bother supporting dpkg, rpm, Slackware tarballs, Arch tarballs, Flatpack and Ubuntu snaps. It's not happening. At most they're going to release an rpm, a deb or a snap and just ignore everybody else. The ideas of the commercial world embracing desktop Linux, the year of desktop Linux, etc are all basically pipe dreams.</p> +<p>Here's what I picture instead. If we can manipulate source archives into binary packages and then install those packages all using make, we can frankly do the same with binary packages. BSD port trees and pkgsrc had already proven that would work years ago. In fact, in FreeBSD you can install binary packages that are dependencies of the port that you are building rather than building them from source, or build ports that don't have a binary package available when installing binary packages. This system functioned just fine for a long time. Their mistake a few years ago was jumping on the Linux bandwagon and writing yet another package manager, pkg. Since that time I've noticed quite a lot more issues keeping FreeBSD packages up to date, to the point where I even abandoned an installation at one point. So we're skipping it entirely, and instead I'm going to provide a &quot;binary-install&quot; target in &quot;hhl.ports.mk&quot; that will fetch and install binary packages. Easy peasy, no package manager required, unless you consider the ports tree itself to be a package manager.</p> + + + diff --git a/public/tags/milestones/index.html b/public/tags/milestones/index.html new file mode 100644 index 0000000..17976ca --- /dev/null +++ b/public/tags/milestones/index.html @@ -0,0 +1,555 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Milestones"

    +
      + +
      + + Cross Build Progress + +
      2021-02-08
      + +

      The sysroot/cross-compile build tree is nearly able to build all of HitchHiker +now, with only a few packages left to tweak....

      + + Read More -> +
      + +
      + + Goodbye GNU coreutils, importing sed + +
      2020-09-22
      + +

      The porting effort has reached the point where it is now safe to remove GNU +coreutils. At this point, there are now only 16 utilities provided by the +coreutils package...

      + + Read More -> +
      + +
      + + Restarting make, buildworld cleanup, default software + +
      2020-08-03
      + +

      One of the deficiencies in the HitchHiker build tree up to this point has been dealing with packages that require some manual intervention after the "make install" step. Originally there was no unified infrastructure to deal with this scenario. Very quickly...

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/nongnu/atom.xml b/public/tags/nongnu/atom.xml new file mode 100644 index 0000000..649a9a8 --- /dev/null +++ b/public/tags/nongnu/atom.xml @@ -0,0 +1,268 @@ + + + - NonGNU + + + Zola + 2020-11-24T00:00:00+00:00 + /tags/nongnu/atom.xml + + Experimental clang/llvm based build with nightly rust + 2020-11-24T00:00:00+00:00 + 2020-11-24T00:00:00+00:00 + + /news/experimental-clangllvm-based-build-with-nightly-rust/ + <p>Ok, so this little side track has been on a slow burn for a while now, but I've currently got a rootfs that I can chroot into with the following features:</p> +<ul> +<li>Built almost entirely with llvm/clang (see caveats below)</li> +<li>Rust nightly compiler installed early in the build, accessible for all users</li> +</ul> +<span id="continue-reading"></span> +<ul> +<li>Directory hierarchy flattened, directories in /usr are symlinks to directories in /</li> +<li>libc++ standard C++ library from the llvm project instead of libstdc++ from gcc</li> +<li>Both GNU binutils and the lld linker installed (default is still binutils ld for now)</li> +<li>x86_64 only at this time, but should be portable to Arm +Some caveats:</li> +<li>llvm/clang wants to build against libstdc++, so not self hosting unless we go back to libstdc++</li> +<li>There were issues building the compiler-rt module, so llvm and clang link against libgcc</li> +<li>The GNU m4 package will not build with clang, so it had to be built with the gcc compiler from the temporary toolchain. I'm sure this is fixable, but I haven't researched it much yet.</li> +<li>The biggie: glibc refuses to try to build with any compiler except gcc. The. Sheer. Fucking. Hubris. ...again... +Nevertheless, this is all quite promising and brings up a number of possibilities going forward. As llvm by default supports multiple backends for code generation, a huge benefit is that HitchHiker would come out of the box with cross compilation ability. Also, including rust by default gives us the ability to use Rust code in the base system, with numerous potential benefits that I will explain below.</li> +</ul> +<p>The directory hierarchy is simple to understand, but is reversed in implementation from what the &quot;big&quot; distros have done. Basically most &quot;modern&quot; distros have ditched the /usr split by making /bin and /lib into symlinks to /usr/bin and /usr/lib. In this build we instead just give all programs a blank install prefix. Our root directory now takes not only all of our binaries and libraries but also has program data under /share, and we only have /usr because it is expected. everything in /usr is, in fact, just symlinks.</p> +<p>Rust is installed in a novel way using rustup. As root, we set the RUSTUP_HOME and CARGO_HOME environment variables to /rust, and make /rust/bin a symlink to /bin. That way, we can track a nightly toolchain system-wide and it will install binaries into /bin, for all users to access. We could, of course, build rustc from source, and I have in fact done so previously. However, apart from the ridiculous compilation time that it takes, this is not a great option until the language is truly stable, as a lot of the interesting bits if the Rust ecosystem need something newer than the stable branch. By using rustup and the binary toolchains, we always have access to the most up to date toolchain, and the ability to easily switch from one to another.</p> +<p>So what are the benefits of having rust available early on? For starters Rust can access C functions and export functions to C, making it relatively easy to replace parts of the software stack previously written in C with Rust code that enjoys the memory and concurrency safety checks which are not present in C. As an example, relibc is a complete C standard library written in Rust. This alternative C library is a potential future path of investigation. But on a smaller scale, there are a number of interesting cli utilities and programs written in Rust.</p> +<ul> +<li>sd is a stream editor similar to sed, but much faster and with a much easier syntax and reduced scope.</li> +<li>fd is a file finding utility which is orders of magnitude faster than find, and has interesting features like skipping .git folders by default.</li> +<li>exa is a file lister with some unique features over ls</li> +<li>The amp editor, while somewhat vi-like, has interesting extra features fuzzy file finder and a token based jump which make moving around even faster than vim. +I have also begun, partially as a learning exercise, writing my own Rust implementations of various small Unix utilities. In the future some may find their way into HitchHiker if we retain Rust in the base system.</li> +</ul> +<p>While this is still in an early evaluation phase, I think it likely that at the very least we will make the switch from gcc to clang/llvm at some future point, with the possibility of bringing some of the other features along as well. What may not make the cut is libstdc++, as replacing the C++ standard library is almost as problematic as replacing the C standard library, leading to the need to port a large amount of third party software in the future. However, I will likely be going further with Rust, and with the flattened filesystem, as I want HItchHiker to be a cutting edge distro while still adhering to traditional Unix practices. Basically, we're going to push the envelope when it makes sense to do so, but not follow fads and trends in the Linux community that might very well be dead ends (like I believe Systemd in particular to be).</p> + + + + On Libc, rust experiments, and Risc-V + 2020-11-15T00:00:00+00:00 + 2020-11-15T00:00:00+00:00 + + /news/on-libc-rust-experiments-and-risc-v/ + <h2 id="libc">LibC</h2> +<p>Recently I have continued the exercise of re-implementing certain base system utilities in C, uncovering more and more differences between BSD and GNU libc implementations. At this point it's really easy to say that I have a strong preference for the BSD extensions to the libc standard as opposed to the GNU extensions. The Berkeley programmers, when they added features, added truly useful features.</p> +<p>Take random number generation as an example. It is fairly common when programming on Linux to open and read from /dev/urandom. BSD, in the meantime, offers a group of functions in libc (arc4random) that combine pseudo-random number generation with cryptography to produce pseudo-random data that is truly difficult to guess, with a low CPU overhead.</p> +<p>Another small place where I found the BSD libc to offer superior functionality was when I was writing my own version of the <em>mktemp</em> utility. The BSD versions of the mkstemp and mkdtemp functions allow one to give a template with a variable-length suffix, to give a choice between quick (with a smaller suffix) or as secure as you want to be. By increasing the suffix length, one can exponentially increase the number of possible filenames, making temp files a more difficult vector of attack.</p> +<p>The GNU (and musl actually) versions of these functions only allow a six character random suffix, period. In fact, my earlier port of mktemp from BSD did not function as expected in this regard, and the GNU coreutils programmers had to roll their own functions to get equivalent functionality to the BSD counterparts. I have elected to not abstract this deficiency away in my code, and the HHL version of the mktemp utility uses the available versions of mkstemp and mkdtemp, with a six character suffix. I would rather maintain the simplicity of the program than to take a risk of introducing bugs by writing my own functions here.</p> +<p>In any event, the work that I have been doing here makes a strong case for a future port of musl, with the additions of some BSD functions ported to work with musl, as our base C library. As attractive as BSD libc is, a direct port is unrealistic as so much of it is tied to kernel interfaces that differ on Linux. I just find it a shame that Linux users are mostly saddled with such a piece of crap (bloated while still being less functional) in such an important position in the software stack.</p> +<h2 id="rust">Rust</h2> +<p>There are a lot of programming languages, and they tend to come and go regularly. As programming languages go, it's a safe bet that C, C++, Java and Python will be sticking around. Of the less pervasive languages Go and Rust seem to be well ahead of the pack as pertaining to mass adoption. Go is interesting, largely because of what it leaves out. Go is simple. Go avoids the feature creep that seems to be inevitable in all modern software. However, Go achieves memory safety by using garbage collection. I want to like Go, but that one anti-feature prevents me from even trying it.</p> +<p>Rust, on the other hand, has feature upon feature to the point where I really am hoping that they ever finish the language someday. That said, I'm intrigued by Rust for a number of reasons. I have been toying with learning the language for a while, doing some simple learning exercises and reading the Rust Book. I recently decided to just dive in and start writing my own programs using Rust, as that seems to be the only way to truly learn a language. My first full Rust program is a clone of a C program that I wrote for generating sine lookup tables, useful in DSP applications. The C version is perfectly fine, but I basically wanted to try porting a known working program and see how well the control flow translated.</p> +<p>The process was not completely smooth, and it took quite a few iterations to get to the point where the program compiled and actually functioned. However, the documentation is excellent and provided solutions to most of my issues. The other thing that really impressed me was the compiler messages. Often, the compiler will tell you literally the exact change needed to make your program compile. Coming from C, this is a breath of fresh air. And when we're talking about Rust, chances are that if it compiles it's also going to function exactly as expected.</p> +<p>Rust is also elegant in a way that C never will be. Consider the following C code:</p> +<pre style="background-color:#2b303b;"> +<code class="language-C" data-lang="C"><span style="color:#b48ead;">for </span><span style="color:#c0c5ce;">( i = </span><span style="color:#d08770;">0</span><span style="color:#c0c5ce;">; i &lt; </span><span style="color:#d08770;">10</span><span style="color:#c0c5ce;">, i++) { + </span><span style="color:#65737e;">// some code +</span><span style="color:#c0c5ce;">} +</span></code></pre> +<p>And the equivalent Rust:</p> +<pre style="background-color:#2b303b;"> +<code class="language-Rust" data-lang="Rust"><span style="color:#b48ead;">for</span><span style="color:#c0c5ce;"> i in </span><span style="color:#d08770;">1</span><span style="color:#c0c5ce;">..</span><span style="color:#d08770;">10 </span><span style="color:#c0c5ce;">{ + </span><span style="color:#65737e;">// some code +</span><span style="color:#c0c5ce;">} +</span></code></pre> +<p>One thing that requires a different mindset when one moves from an old-school language like C, to a modern language like Rust, is that in C et al, the standard library tries to be all inclusive. Programmers (at least the good ones) try to avoid adding dependencies to anything other than the standard library. Rust, however, has Cargo. Cargo is, in effect, a built in package manager. This is not unheard of; Python has pip and has for years. In Rust, however, the standard library is quite small and everyone pretty much freely uses cargo to access functionality that is not included in libstd. In my case I used cargo to pull in the excellent clap crate, which parses command line arguments and also provides built in documentation. Compared to getopt in C, clap both does more and does it with little effort.</p> +<p>At this point int time, however, Rust is not going to be landing in the HitchHiker base system, as the only viable Rust compiler uses llvm as a backend. At some point in the future this may well change anyway, as I have been growing increasingly frustrated with both Glibc and gcc (a brief skim of some earlier blog posts will quickly turn up examples). The obvious replacements are musl and the clang compiler, which, being based on llvm, would make the further inclusion of rustc trivial.</p> +<h2 id="risc-v">Risc-V</h2> +<p>I do a fair amount of electronics experimenting and often employ various microcontrollers in my projects. Some are Atmega based, while I have more recently fallen in love with the ATSAMD51 Arm Cortex M4 processor based boards from Adafruit. Just this week I have acquired something new to me: a Risc-V based MCU from Seeed Studio, the Sipeed Longan Nano. It's a brilliant chip, although quite lacking in documentation and example code. I'll be playing with it a lot.</p> +<p>The Nano, however, is a microcontroller, not a full SOC that is capable of running Linux. Right now there are few options for developers wanting to experiment with Risc-V with a full operating system, and the best ones are all prohibitively expensive for their capability. Due out next year, however, is the PicoRio board from Rios labs that is described as close in form factor and capabilities to most Arm boards based around the RPI format. Provided this board is not vaporware and actually does materialize at a reasonable cost, I intend for HItchHiker Linux to be running on it as soon as feasible. I intend to make HitchHiker one of the very first options independent of distros such as Debian and Fedora, and to make Risc-V a first class citizen. It is my hope that in doing so HitchHiker might help to push along the adoption of truly open hardware on which to run open software.</p> + + + + Some More Home Cooking + 2020-10-06T00:00:00+00:00 + 2020-10-06T00:00:00+00:00 + + /news/some-more-home-cooking/ + <p>After removing GNU coreutils and taking closer stock of what we have as a +&quot;base system&quot;, I am mostly happy with the selection but now wish to spend some +time making behaviors, documentation and source code itself more uniform. I have +also done some work towards correcting a couple of omissions that are present +due to the previous surgury. The commit that I pushed this morning has a few +notable changes.</p> +<span id="continue-reading"></span> +<ul> +<li>hostid - This is a non-POSIX utility of GNU origin that is present on systems with GNU coreutils but not on BSD based systems. I have written a replacement from scratch in C, which was a fairly trivial task as mentioned previously. The new utility, much like the rest of our userland, behaves like the GNU counterpart with the exception of not accepting long options and not having a help option (help is available via the man-pages, so '--help' is always redundant IMO).</li> +<li>nproc - Another scratch implementation of a utility with a GNU orgin.</li> +<li>rev - A scratch rewrite for HitchHiker, should be functionally identical to the BSD and/or Suckless versions. Notably, my version, the BSD version (which we had previously) and the suckless version are all quite a bit faster than the rev utility provided by the util-linux package due to architectural differences which I'll explain below.</li> +<li>mkdir - Another scratch rewrite. These are being done patially as an exercise in C programming and partially to lessen our dependence on the portability libraries used to port BSD utilities to Linux. However, this utility is currently a special case in that regard (see below).</li> +<li>base64 - This one had been ported from NetBSD but is actually broken on every platform in regards to being able to process it's data from a file rather than stdin. It's now fixed at least in HitchHiker. +I have also begun a process of formatting the source code imported from other sources using <code>clang-format</code> to enforce more uniform standards, and to go through the man-pages a few at a time to do some similar housekeeping. It's a small niggle, but both BSD and Suckless use tabs for indentation where I prefer two spaces for compactness. There are also some inconsistencies in brace styles and function declarations. I prefer the function declaration to be on one line followed by the opening brace on the same line, and for things like loops to include the opening brace on the same line as the loop initialization. Basically, the defaults provided by clang-format make for nice, readable and consistent code.</li> +</ul> +<p>Now, as mentioned above, let's get into some detail with the implementations of +<strong>rev</strong> and <strong>mkdir</strong>. Let's begin with rev, which is a simple utility which just reverses the characters in each line. Now, a simple implementation of rev, and basically where I started, would just read each line using getline (or fgetln on a BSD system) and reverse the bytes, excluding the newline, which is replaced back at the end of the output. This works fine for ascii characters, which all by definition fir into a single byte of data. However, utf8 is a fact of life, and we quickly run into a situation where we have reversed the byte order of a multibyte character, printing gibberish to the terminal. The Util-Linux utility solves this by reading each line into an array as a sequence of widechars, essentially reading character by character, and then doing the reversal.</p> +<p>The BSD, Suckless, and now HitchHiker utilities all use a similar, and more efficient approach. The line is read as described above, then, starting with the charcter preceding the newline, each byte is tested to see whether it is the beginning of a character or the middle of a multibyte character. If we run into a multibyte character, we find the beginning of it and then read forward again to the end of the character, before skipping backwards again past the multibyte character. While sounding convoluted, this is quite a bit faster when processing large amounts of data, as we're only looking at the first few bits of each byte rather than reading each line in character by character.</p> +<p>Now on to mkdir. Most of this was straightforward to implement, including the -p option, as we just have to construct a path directory by directory by processing the path as a string, using, in our case, the strtok function. However, mkdir is also expected to be able to set the Unix permissions of directories that it creates, and accept the mode arguments in either octal or symbolic format. It is trivial to implement the octal permissions, but implementing symbolic permissions entails coding a parser which must accept a fairly wide range of possible permutations. After looking at how the functionality has been implemented in BSD, GNU, and Suckless utilities, it quickly became apparent that the BSD implementation makes the most sense from the efficient use of code standpoint, as the BSD C-library already contains the getmode and setmode functions. As this has already been ported to Linux via libbsd, and as such is already present in HitchHiker as it has been used to port much code from both NetBSD and FreeBSD, I decided to just go ahead and use it. On a side note, it would be fantastic to see some of these functions present in the GNU C-library. The getmode function is quite useful, and fgetln is quite a bit more, let's say graceful, to use than getline.</p> +<p>It should be noted that static linking libbsd into a Beerware licensed utility is somewhat problematic. I have been considering extending the build system somewhat, to also build shared libraries alongside the static archives. I am somewhat hesitant, as I feel that low level base utilities such as this should only depend on the system C library at runtime. Alternatively, if at some point in the future HItchHiker does make the switch to Musl libc (which is still on the table) then it might be possible to patch musl to incorporate the functions right into the system C library for HitchHiker, allowing for their removal from libbsd and lessening our reliance on it for porting utilities. I rather like this train of thought...</p> +<p>The end goal is, of course, the kind of tightly integrated userland that BSD +systems are noted for. When looking at the various base utility implementations, +it is striking that commonly there is a library of common functions built and +linked into the utilities. This tactic is employed by sbase, ubase, GNU coreutils, +Util-Linux, and lobase (the port of OpenBSD userland to Linux, from which I have +borrowed heavily). I'm employing it myself by using libbsd to port NetBSD and +FreeBSD utilities. In the long run, I want to eliminate this trend and fully +integrate everything to where we're only depending on the C library both at build +and run times. My own implementations, with the exception of mkdir, currently do +this. As an example, on BSD systems a program is aware of the name under which it +was invoked via the getprogname and setprogname functions. As GNU libc does not +have these functions, we have a global constant char __progname, which is set to +the program name by calling <code>basename(argv[0])</code> in the main function. While +this results in some additional boilerplate code, it's actually scarcely more +than what BSD already has due to the need to call getprogname and/or setprogname.</p> +<p>Similarly, Suckless abstracts away certain things like printing to stderr (their +eprintf function) and getting program arguments, which are easily done just using +<code>fprintf(stderr, &quot;msg&quot;)</code> and getopt, respectively.</p> +<p>A possible eventuality might involve refactoring much of this code somewhat to remove the dependencies on their respective utility libraries and replacing it with more &quot;generic&quot; programming. While this might increase source code size somewhat, it would not likely impact compiled size or efficiency, as we're just removing the abstractions and putting them back into the programs. This has the benefit of making the code easier to understand without having to look at the library and what it does.</p> + + + + Goodbye GNU coreutils, importing sed + 2020-09-22T00:00:00+00:00 + 2020-09-22T00:00:00+00:00 + + /news/goodbye-gnu-coreutils-importing-sed/ + <p>The porting effort has reached the point where it is now safe to remove GNU +coreutils. At this point, there are now only 16 utilities provided by the +coreutils package<span id="continue-reading"></span> that are not implemented in another way in HitchHiker, and none of the missing +utilities are dealbreakers. As follows, here is what is missing and why it isn't +a problem, or what the roadmap is for replacement.</p> +<ul> +<li>b2sum - computes BLAKE2 checksums - there are quite a number of checksum utilities already, and this one is currently not a dealbreaker. If a reason for replacement is discovered it will be implemented from scratch in c.</li> +<li>base32 - encodes file or stdin using base32 - we already have base64 imported from OpenBSD.</li> +<li>basenc - encodes file or stdin using various algorithms - see base32.</li> +<li>chcon - changes SELinux security context - SELinux is a largely Fedora/RedHat backed API which we don't implement currently in HitchHiker. Standard Unix file permissions are not fine-grained enough for just about any use case.</li> +<li>dir - displays directory contents - despite what GNU say about dir, it is basically ls but with a different default behavior. The same behavior can be emulated by using the appropriate flags with ls.</li> +<li>dircolors - sets the colors for eg <code>ls --color</code> - We have BSD ls in HitchHiker, which does not implement the --color option. I have considered re-implementing ls and including the --color option, in which case dircolors would be useful. However, this is non-trivial and no timeframe is given.</li> +<li>hostid - displays the unique numeric id for the current host - not currently a dealbreaker, but potentially useful. Fairly trivial to implement in C.</li> +<li>nproc - gets the number of processors currently available - also potentially useful and fairly trivial to implement in C.</li> +<li>numfmt - format numbers in human-readable form - potentially useful, not a dealbreaker. Non-POSIX utility which accepts mostly GNU style long options. If implemented would be done in a different way, ignoring the behavior of the GNU utility, which is frankly too GNU-centric (long options should have short option equivalents).</li> +<li>pinky - a mini finger implementation - all information available via pinky can be optained with other included utilities. If there is a need for accessing information on remote hosts an actual finger implementation is required anyway.</li> +<li>ptx - honestly the manpage for this utility reads like gibberish. Anyway I've never used it and don't think it's needed, not available on BSD systems anyway and not POSIX.</li> +<li>runcon - run a command with a different SELinux security context - see chcon.</li> +<li>shuf - shuffles file contents randomly - not particularly useful.</li> +<li>stdbuf - run command with modified IO buffering - exists in FreeBSD but not NetBSD or OpenBSD. Non-POSIX. Potentially useful, not considered a priority. Porting from FreeBSD is non-trivial if memory serves from my 1st attempt.</li> +<li>timeout - run a command with a time limit - Not available on BSD systems, Non-POSIX. Potentially useful but not a priority.</li> +<li>vdir - another permutation of ls (see dir) - again just use ls, why have another binary?</li> +</ul> +<p>None of the missing utilities are POSIX specified and are not likely to be called from any kind of portable shell script. With the exception of stdbuf, I could not find alternative implementations for any of the missing utilities. This was a long process fraught with a fair bit of trial and error, and continual testing to ensure that the system could still bootstrap iself as utilities were replaced a few at a time. My first tries removing the coreutils package entirely resulted in various failures, as either a utility had incompatible behavior with one or more packages build systems, or a missing utility was actually required.</p> +<p>A good example of a surprise was with the 'od' utility, which creates an 'octal dump' of file contents. I did not assume this to be a utility that would see much use. However, the build system for busybox assumes it's existence and fails without it. On looking for a replacement I turned to the <a href="http://heirloom.sourceforge.net/tools.html">Heirloom Toolchest</a>, a collection of utilities derived from ancient Unix sources released by Caldera and Sun. This utility has the dubious distinction of influencing one of the more glaring inconsistencies in bourne shell syntax. For most control flow structures in sh, the closing keyword is the opening keyword reversed, IE if-else-fi or case-esac. However, od was already in existence before the original bourne shell was written, precluding the use of do-od for looping and giving history instead do-done.</p> +<p>While in there poking around in the heirloom sources I also ported over pg (an early pager), sum (yet another checksum utility) and factor (prints all prime factors of the given number). The sources have been variously tweaked to be more inline with my own coding style, making future maintenance easier. All but pg were commands which are present in coreutils, giving us greater coverage.</p> +<p>During the porting effort, there were various utilities which were either not present in BSD, sbase or heirloom or else so trivial as to pose no barrier to implementing them from scratch. Here is that list.</p> +<ul> +<li>/bin/true - just return true and exit - implemented as a single line shell script.</li> +<li>/bin/false - the reverse of true.</li> +<li>/sbin/nologin - used for disabled logins, displays a message that the account is disabled and exits with a failure code - implemented in C.</li> +<li>/usr/bin/link - creates hard links - implemented in C.</li> +<li>/usr/bin/unlink - calls the unlink function to remove files - implemented in C.</li> +<li>/usr/bin/shred</li> +</ul> +<p>The shred utility was a special case, as it existed only in GNU coreutils until my own implementation. I've always thought that this was a tremendously useful utility and wanted it in HitchHiker. What it does is overwrites the given file with random data to make recovery exceedingly difficult, optionally doing a final pass with zeros and unlinking the file. It can be used on an entire block device to wipe a hard drive clean. I've been working on dogfooding myself in C lately and this was a good opportunity to code something a little but less trivial. Anyway, this version of the shred command is implemented cleanly from scratch but follows fairly closely the behavior of the GNU version. It differs in not accepting long options, much like the rest of our collection of utilities, and does not implement a few switches that are considered unnecessary in use. At some point I intend to go in and implement file-renaming before deletion, akin to the GNU versions &quot;wipesync&quot; method, but the program is otherwise feature complete. In order to give myself another challenge, I also implemented a progressbar that is displayed with the -v option.</p> +<h2 id="on-to-sed">On to sed</h2> +<p>I have tried in vain to get away from using GNU sed in HitchHiker. After porting BSD sed, sbase sed and GNU minised, all of them proved unsuitable and caused build failures at some point or another. Or rather, non-portable sed usage by the authors of the various build systems caused failure when our sed did not support the input that it was given. The final deal-breaker was the Linux kernel itself, which requires sed to understand some GNU specific regular expressions during the build.</p> +<p>What I have done is import the GNU sed source code directly into the HitchHiker source tree and made it work with our build system. This is only the second GNU licensed program I have done so with (the first being less) and only the third time that I have successfully stripped a program of it's autotooled build system. It was, to say the least, not trivial. However, the results are rather impressive, as on my 8-core laptop sed now builds in 3.22 seconds, compared with 31.75 seconds for the autotooled build. I'll take a 10x speed increase any day, and it's a great example of how much there is to gain by just using make compared with an autotools build. Indeed, for a smaller program like sed, most of the time is taken by the configure script, and by installing files after compilation. With our &quot;compile in place&quot; method we're skipping entirely the installation phase.</p> +<p>As GNU sed is fully localized into multiple languages, I took the time to extend the build infrastructure with hhl.locale.mk, which takes any .po files in a program's locale subdirectory (if they exist) and &quot;compiles&quot; them into .mo files in /usr/share/locale using the msgfmt utility. With that in place the infrastructure for building directly from source, rather than just wrapping another build system in make, is pretty much complete, even if there are still things to optimise.</p> + + + + Continued porting of BSD userland against remaining self-hosting + 2020-09-03T00:00:00+00:00 + 2020-09-03T00:00:00+00:00 + + /news/continued-porting-of-bsd-userland-against-remaining-self-hosting/ + <p>At this juncture we're well over the halfway point in regards to providing a predominately BSD userland in HitchHiker, with over 90 console utilities ported against a total of 59 remaining programs brought in from GNU coreutils. That total includes<span id="continue-reading"></span>, of course, some programs that are not included in GNU coreutils. Some of the utilities replace standalone GNU packages, such as grep and diff, while some are utilities that may not be present on most Linux distributions, such as pax or leave. In general, the BSD utilities have compatible functionality, as both GNU and BSD have mostly embraced the POSIX standard, but with a few caveats where there are extensions made to the standard. The biggest differences reflect a difference in philosophy, as the BSD utils are quite small and include only what they must, while the GNU versions are all (yes all) larger and accept more options. GNU particularly accept long options and in general have better internationalization. The GNU utilities also accept the --help option, giving a brief summary of their function. BSD utilities specifically omit this functionality, as each command comes with a man page, which would duplicate functionality.</p> +<p>One of the dangers in just blindly replacing the usual GNU userland on Linux is that when the accepted options differ slightly, some scripts may not run as expected. This also can affect building packages from source if care is not taken to stick with only POSIX specified options when writing Makefiles. To some extent I have been working to minimize the effects here by taking the time to verify each utility works as expected and in some cases implementing options that most users expect, such as the -v switch (verbose) for the ln and rmdir utilities. In other cases, such as the much abused -a or --preserve-attributes options of GNU cp, implementing equivalent functionality in the BSD port is definitely non-trivial, and many people are just trying to copy directories recursively while preserving symlinks when they use 'cp -a', and not actually wanting to preserve ownership or modification times. Those cases can be served by using BSD cp as 'cp -R'. If preserving attributes is the desired behavior, then this is one of the tradeoffs being made and extra steps will have to be taken with chown and touch.</p> +<p>In order to ensure that HitchHiker always remains self-hosting I have been running bootstrapping the system from itself multiple times during the porting effort. A few issues have been found and fixed along the way, but it has been an overall smooth transition. In one case, I had actually misused 'cp -a' myself in the busybox build (busybox is only built as part of the temporary toolchain).</p> +<p>One particularly special case is glibc, which has a hard dependency on GNU awk during build time. As I have a preference for the historical (yet still maintained) Nawk, this requires building a statically compiled Gawk early in the bootstrap process as part of the temporary tools in /toolchain, which is discarded along with the rest of the temporary tools after the bootstrap phase and does not become part of the base system. Another example of the &quot;Sheer F%$king Hubris&quot; of much GNU software, which often will only build with other GNU tools, even though other tools exist with equivalent (and sometimes superior) functionality.</p> + + + + Editors, glibc-2.32 + 2020-08-28T00:00:00+00:00 + 2020-08-28T00:00:00+00:00 + + /news/editors-glibc-232/ + <p>Most people who use any form of Unix have a favorite editor. Most of them also think that everyone else is wrong<span id="continue-reading"></span> (but in truth, you're all wrong...). And most Linux distros over the years have gradually catered more and more to the lowest denominator.</p> +<p>In the beginning, of course, there was only ed (The <strong>STANDARD</strong> editor!) and then at some point in time came Bill Joy's vi. Most people have, of course, never used the original vi. If you are on Linux, chances are good that you have encountered vim. If you are running BSD in any form then you have vi, except that you don't actually have vi, you have nvi. When 4.4BSDlite was released as the first large scale open source project, the major caveat was that much of the source was patent encumbered by AT&amp;T, including the venerable vi editor. All of this source was therefore replaced, painstakingly, a piece at a time. The selling point of nvi at the time was that it was a &quot;bug for bug compatible&quot; rewrite of vi, which started with the original elvis (a vi clone) source.</p> +<p>For most of it's existence so far (including it's original, never released to the public form from roughly ten years ago) HitchHiker had vim. I've used vim a lot and over the years have only grown more fond of it. Sticking with it over the rather steep learning curve has been quite helpful in situations where the only editor available is some form of vi or vi clone. However, vim is not without it's issues. All forms of vi or clones of vi have a rather steep learning curve for new users. The vim source code is a rats nest of conditionals and attempts to maintain compatibility with ancient systems that only a masochist or Luddite would use. And for a console based editor it is rather slow (though nowhere near the beast that Emacs has become, a story for another time).</p> +<p>For ease of use and welcoming less experienced users we follow the same path as FreeBSD by offering the ee editor. It's extremely small (the entire source is a single c file) and has great ease of use due to the integrated menu bar. It isn't an especially powerful editor, but it gets the job done.</p> +<p>As for vim, I decided a while back that it was going to be replaced with something more lightweight and with a more &quot;correct&quot; code base. I tried a few times to port nvi to HitchHiker, both from the &quot;official&quot; nvi source distribution and also from BSD sources. The main stumbling block has been that the code assumes headers and C library routines which no longer exist in Linux.</p> +<p>For the solution, let's back up again by a few years. AT&amp;T Unix is the direct ancestor to Solaris. A number of years ago Sun bequeathed the source code for the Solaris operating system to the public in the form of a CDDL licensed source distribution, giving birth to the OpenSolaris operating system in it's many forms, allowing FreeBSD to import the zfs filesystem, and effectively unencumbering historical Unix source code to the benefit of all.</p> +<p>Therefore, after a few days tinkering, we now have version 3.7 of Bill Joy's original ex/vi editor, which is the version that was current as of the 4.4BSDlite release, ported to and running on HitchHiker Linux. This has been a very gratifying experience overall. Some (probably many if I'm being honest) will miss certain features that they have grown used to in vim, such as syntax highlighting and visual mode. There is no plugin system (which I've never bothered to use in vim anyway...) and you're basically expected to know what you're doing. But the program is SMALL (roughly half the size of nvi, with no dependency on BDB, and orders of magnitude smaller than vim) and noticeably faster than vim when loading large files or pasting large chunks of text. You probably thought vim was fast. But you only -thought- it was fast.</p> +<p>You are, of course, free to install and use vim if you feel that original vi is too &quot;limiting&quot; for your use. Feel free to use ed for that matter, and to yell out that you're using &quot;THE STANDARD EDITOR&quot; while doing so. We imported ed from FreeBSD a week ago.</p> +<p>In other news, GNU libc (glibc) released version 2.32 this week. I'm running it already on my Arch systems but for the time being holding off on updating HitchHiker. There were a few notable deprecations in this release for functions, macros, and even a few array definitions that are considered too ancient to support. However, they actually do affect HitchHiker in a few places as we have some rather &quot;historical&quot; code imported into the userland tools. I spent an hour this morning fixing compilation errors when compiling mksh and ex/vi against the new library, in preparation for eventually merging it in. I'll have to check all of the other imported sources against it another day.</p> +<p>Interestingly, I also had to start using clang to compile these tools in Arch, as the gcc 10 series encountered an &quot;internal compiler error&quot;, which was actually a segmentation fault, when compiling the ex/vi sources. In HitchHiker we use gcc-9.30 and these problems don't exist. Good reason to not upgrade for the time being.</p> + + + + Improved porting with libbsd + 2020-08-24T00:00:00+00:00 + 2020-08-24T00:00:00+00:00 + + /news/improved-porting-with-libbsd/ + <p>The libbsd project was begun originally by the developers of the Debian K-FreeBSD project as a means of addressing differences in the available functions, headers and c macros between BSD libc and GNU libc. I have imported the source<span id="continue-reading"></span> directly into HitchHiker and &quot;hitchhikerized&quot; the build process. Only the static library archives are built at this time. With a few tweaks and an additional &quot;compat.h&quot; header to address a few omissions, this has led to an improvement in my process of porting BSD utilities, and the vast majority of the imported utilities now link with libbsd functions. There is little measurable overhead in the resulting binaries.</p> +<p>For those utilities that are more difficult to port I have begun porting the work already done to create lobase, a portable package of OpenBSD userland, to the hitchhiker build system. I am also pulling in sources from FreeBSD now. The first program ported from FreeBSD to HHL is the ed editor, which in this case was easier to get going than the version from the NetBSD sources.</p> +<p>I have always enjoyed the venerable Unix fortune program, and always include a call to it in my shell profile. While I did consider the idea of including it by default in the HitchHiker base system, I decided to go another route and just implement something simpler from scratch. Hence, the small C program 42, which by just prints a random quote from the HitchHiker's guide universe. It accepts no options and can only be extended by editing the source. Just a bit of fun. +<img src="../../assets/screenshot_42.png" alt="screenshot_42.png" /></p> + + + + Porting NetBSD userland, infrastructure improvements + 2020-08-17T00:00:00+00:00 + 2020-08-17T00:00:00+00:00 + + /news/porting-netbsd-userland-infrastructure-improvements/ + <p>As noted previously, I have some issues with the complexity of GNU autotools and the bloat that it introduces into building what should be very simple programs. I pointed out coreutils as one of the worst offenders at that time, and have been exploring ways to either port coreutils to a simpler build system or outright replace the package.<span id="continue-reading"></span></p> +<p>In context, there is nothing particularly wrong with the utilities themselves and functionally they work as expected. One benefit that coreutils provide over almost every other implementation is improved localization. However, there is complexity that is at times not really justified. Let's take the utility program &quot;true&quot; as an example, whose sole purpose is to do nothing and exit with success. A simple C program can be constructed to perform this function perfectly well with the following code:</p> +<pre style="background-color:#2b303b;"> +<code class="language-C" data-lang="C"><span style="color:#b48ead;">#include </span><span style="color:#c0c5ce;">&lt;</span><span style="color:#a3be8c;">stdio.h</span><span style="color:#c0c5ce;">&gt; +</span><span style="color:#b48ead;">int </span><span style="color:#8fa1b3;">main</span><span style="color:#c0c5ce;">() { </span><span style="color:#b48ead;">return </span><span style="color:#d08770;">0</span><span style="color:#c0c5ce;">; } +</span></code></pre> +<p>This simple code compiles to a 16k executable (stripped) and does everything that we need it to do. But we can do even better actually, with a single line shell script:</p> +<pre style="background-color:#2b303b;"> +<code class="language-Bash" data-lang="Bash"><span style="color:#c0c5ce;">#!/bin/sh +exit 0 +</span></code></pre> +<p>This little gem reads as a whopping 4k on disk on my machine and also fulfills exactly what we expect the program to do. So why exactly is the file true.c in coreutils 80 lines that compiles to a 40k executable after stripping?</p> +<p>I had at one point tried replacing coreutils and util-linux completely with the sbase and ubase packages from <a href="https://suckless.org/">suckless.org</a>. The main issue with doing this is that not all of the utilities are feature complete yet. They are fine for day to day use navigating around in a shell environment, but begin to fail when running scripts that are meant to be portable or building software, when an unsupported flag causes the utility call to fail with an error. I do have a branch containing the entirety of sbase and ubase with the source reconfigured to match our build tree layout of one program per directory, and building using hhl.cprog.mk.</p> +<p>I have always had a lot of admiration for BSD systems and ran FreeBSD as my main OS on several machines for a number of years. Too much is actually made of the differences between a BSD userland nad a GNU userland, as the vast majority of the time they are functionally equivalent. As mentioned previously, the GNU utilities have better localization. They also accept GNU long options. I have never found the lack of long options to be an issue; on the contrary short options are faster to type and are generally the go to choice for those familiar with the shell interface. Therefore I decided to start working on porting BSD userland to Linux with Glibc, using our HitchHiker build system. As there are a great many small utilities this is a process that isn't going to happen overnight, but has already yielded a surprising amount of success with modest effort.</p> +<p>There are a few projects already in place that do something similar, such as <a href="https://github.com/Duncaen/lobase">lobase</a>, that approach the issues of missing functions and macros by creating a compatibility library and then linking the utilities to it. While this is a perfectly valid approach, it has the drawback of increasing code size somewhat. I have also found so far that simply removing macros that don't exist on a Glibc system is enough to get the code to compile with a simple <code>gcc -Wall file.c</code>. At other times one can simply translate from one function to another, for instance from strlcpy to strncpy, the latter which is available with Glibc and does very near the same thing.</p> +<p>Without getting too further involved in the details, so far I have working copies of the utilities apply, banner, basename, cat, dirname, grep and tr taken from NetBSD. Grep was previously a separate package that has been removed. We previously already had the awesome pax utility imported from MirOS, and have now removed GNU tar in favor of a simlink to pax, which functions very well as a tar replacement. Additionally, the utilities true, false, and which have been replaced with one line shell scripts (which is a zsh builtin, which we can call from another shell with a one line zsh script).</p> +<p>The result so far is a mixed userland that is predominately composed of GNU utilities with a sprinkling of BSD licensed utilities thrown in. The endgame is to replace the bulk of the GNU utilities with ports of the BSD versions, including many utilities such as apply, banner and pax that do not traditionally even exist on a Linux system. I may supplement this over time with utilities taken from sbase, ubase, or lobase as difficulties are encountered in porting the NetBSD utils, but would like to do as much straight porting against the actual system libraries as possible, as opposed to linking against compatibility libraries.</p> +<p>On to the build tree infrastructure improvements mentioned in the post title. A few posts back I mentioned standardizing the way that we handle packages that need extra steps beyond &quot;make install&quot;. Similarly, I'm working on simplifying the use of build systems other than autotools. One feature of autotools that we leverage by default is that we can build outside of the source tree in a separate object directory. This is the default, but not all packages support this. There are even a few packages out there that mostly mimic autotools from an end user perspective, having a home-brewed configure script, but generally do not support building in an object directly. So now by simply setting the variable ${no_objdir} we can handle those cases in a unified way, and our build system knows that ${objdir}/.dirstamp is not a dependency of the configuration stage for instance.</p> +<p>Additionally, some packages eschew any kind of configuration step entirely and build just by running make. We now handle this in a more unified manner as well, rather than on a per-package basis, by setting <code>${use_configure}</code> to false.</p> +<p>These changes are minor, but are going to go a long way towards implementing a ports tree with a more concise and understandable codebase.</p> + + + + More Pkgsrc + 2020-07-14T00:00:00+00:00 + 2020-07-14T00:00:00+00:00 + + /news/more-pkgsrc/ + <p>While attempting to build the Thunar file manager (via pkgsrc) I encountered a +couple of other errors when it pulled in Samba4 as a dependency. Samba4 has +switched from using GNU autotools to it's own internal version of waf, a Python +based tool for configuring software.<span id="continue-reading"></span> Waf takes most options that one +might pass to a GNU configure script. The difference is that an autotools +configure script will generally either ignore an option that it doesn't recognize +or else complain about it but still continue running. In the case of waf, an +unknown option causes an error, which aborts the build. In the case of samba4 +this was <code>--gmp-include</code>.</p> +<p>About an hour later after failing to find where that option was being included from, in desperation I just did a grep through every Makefile in pkgsrc for &quot;gmp-include&quot; and found a few candidates. After temporarily commenting out the <code>CONFIGURE_ARGS+=</code> lines in devel/gmp/builtin.mk the samba4 build was up and running again. Note that I'm still unsure where it's getting pulled in, as I traced the Makefile includes through a few levels before giving up.</p> +<p>So, samba4 was building, then it wasn't again. This time the build failed due to the lack of the rpcgen utility, which is included in NetBSD (and indeed FreeBSD and OpenBSD and pretty much every BSD variant) but not in Linux. Linux has libtirpc and rpcgen is widely considered obsolete, and in fact was abandoned by it's chief developers, Sun, some time ago. However since we're building using pkgsrc it's assumed to be on our system. What's more frustrating is that there is no package for it in pkgsrc. This has already been noted on the mailing list as it causes more than one package build failure on Linux.</p> +<p>As it looks like going with pkgsrc is going to expect us to have rpcgen in several places, I set about trying to find a portable version of the source code. This turned out to be quite more of a chore than expected, but I did find an older version that had been pulled into a more or less portable state. I've imported that source into the HitchHiker build tree and rewrote the Makefile to suit our purposes. After adding it to our system and restarting the samba4 build (with &quot;--gmp-include&quot; still temporarily excised) samba4 builds successfully, and Thunar was able to build successfully as well.</p> +<p>This whole exercise is a good illustration of the challenges in making any software project truly portable, and why a more efficient build can be achieved by ignoring other systems and targeting the build only to the system actually in use. It's why I've imported the sources for ee, mksh and now rpcgen directly into the source tree and we're building them without any configure checks, as it's already known exactly what's on our running system.</p> +<p>Another thing this illustrates is some of the problems that arise due to projects switching their build system to one of the dozens of projects that have sprung up to &quot;replace&quot; GNU autotools. The fact is that very few, if any, of the replacements have achieved anything close to the flexibility and maturity of autotools and most probably never will. I'm not a fan of autotools by any means. It's a quagmire that most people don't understand; a lot of devs simply cut and paste from other projects and hope for the best. The Makefiles it generates are of a complexity and length that are ridiculous. However, the fragmentation that is currently occuring as some projects use cmake, waf, ninja, meson, jigdo, scons or whatever the next kid on the block is named is a true nightmare for anyone trying to build and maintain a full distro. That's not even accounting for the various homebrewed shell scripts that I encounter which have varying levels of POSIX compliance and make their own assumptions about the utilities present on your system.</p> + + + diff --git a/public/tags/nongnu/index.html b/public/tags/nongnu/index.html new file mode 100644 index 0000000..20f846f --- /dev/null +++ b/public/tags/nongnu/index.html @@ -0,0 +1,631 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "NonGNU"

    +
      + +
      + + Experimental clang/llvm based build with nightly rust + +
      2020-11-24
      + +

      Ok, so this little side track has been on a slow burn for a while now, but I've currently got a rootfs that I can chroot into with the following features:

      +
        +
      • Built almost entirely with llvm/clang (see caveats below)
      • +
      • Rust nightly compiler installed early in the build, accessible for all users
      • +
      +...

      + + Read More -> +
      + + + +
      + + Some More Home Cooking + +
      2020-10-06
      + +

      After removing GNU coreutils and taking closer stock of what we have as a +"base system", I am mostly happy with the selection but now wish to spend some +time making behaviors, documentation and source code itself more uniform. I have +also done some work towards correcting a couple of omissions that are present +due to the previous surgury. The commit that I pushed this morning has a few +notable changes....

      + + Read More -> +
      + +
      + + Goodbye GNU coreutils, importing sed + +
      2020-09-22
      + +

      The porting effort has reached the point where it is now safe to remove GNU +coreutils. At this point, there are now only 16 utilities provided by the +coreutils package...

      + + Read More -> +
      + +
      + + Continued porting of BSD userland against remaining self-hosting + +
      2020-09-03
      + +

      At this juncture we're well over the halfway point in regards to providing a predominately BSD userland in HitchHiker, with over 90 console utilities ported against a total of 59 remaining programs brought in from GNU coreutils. That total includes...

      + + Read More -> +
      + +
      + + Editors, glibc-2.32 + +
      2020-08-28
      + +

      Most people who use any form of Unix have a favorite editor. Most of them also think that everyone else is wrong...

      + + Read More -> +
      + +
      + + Improved porting with libbsd + +
      2020-08-24
      + +

      The libbsd project was begun originally by the developers of the Debian K-FreeBSD project as a means of addressing differences in the available functions, headers and c macros between BSD libc and GNU libc. I have imported the source...

      + + Read More -> +
      + +
      + + Porting NetBSD userland, infrastructure improvements + +
      2020-08-17
      + +

      As noted previously, I have some issues with the complexity of GNU autotools and the bloat that it introduces into building what should be very simple programs. I pointed out coreutils as one of the worst offenders at that time, and have been exploring ways to either port coreutils to a simpler build system or outright replace the package....

      + + Read More -> +
      + +
      + + More Pkgsrc + +
      2020-07-14
      + +

      While attempting to build the Thunar file manager (via pkgsrc) I encountered a +couple of other errors when it pulled in Samba4 as a dependency. Samba4 has +switched from using GNU autotools to it's own internal version of waf, a Python +based tool for configuring software....

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/packages/atom.xml b/public/tags/packages/atom.xml new file mode 100644 index 0000000..0c7d348 --- /dev/null +++ b/public/tags/packages/atom.xml @@ -0,0 +1,68 @@ + + + - Packages + + + Zola + 2020-11-24T00:00:00+00:00 + /tags/packages/atom.xml + + Experimental clang/llvm based build with nightly rust + 2020-11-24T00:00:00+00:00 + 2020-11-24T00:00:00+00:00 + + /news/experimental-clangllvm-based-build-with-nightly-rust/ + <p>Ok, so this little side track has been on a slow burn for a while now, but I've currently got a rootfs that I can chroot into with the following features:</p> +<ul> +<li>Built almost entirely with llvm/clang (see caveats below)</li> +<li>Rust nightly compiler installed early in the build, accessible for all users</li> +</ul> +<span id="continue-reading"></span> +<ul> +<li>Directory hierarchy flattened, directories in /usr are symlinks to directories in /</li> +<li>libc++ standard C++ library from the llvm project instead of libstdc++ from gcc</li> +<li>Both GNU binutils and the lld linker installed (default is still binutils ld for now)</li> +<li>x86_64 only at this time, but should be portable to Arm +Some caveats:</li> +<li>llvm/clang wants to build against libstdc++, so not self hosting unless we go back to libstdc++</li> +<li>There were issues building the compiler-rt module, so llvm and clang link against libgcc</li> +<li>The GNU m4 package will not build with clang, so it had to be built with the gcc compiler from the temporary toolchain. I'm sure this is fixable, but I haven't researched it much yet.</li> +<li>The biggie: glibc refuses to try to build with any compiler except gcc. The. Sheer. Fucking. Hubris. ...again... +Nevertheless, this is all quite promising and brings up a number of possibilities going forward. As llvm by default supports multiple backends for code generation, a huge benefit is that HitchHiker would come out of the box with cross compilation ability. Also, including rust by default gives us the ability to use Rust code in the base system, with numerous potential benefits that I will explain below.</li> +</ul> +<p>The directory hierarchy is simple to understand, but is reversed in implementation from what the &quot;big&quot; distros have done. Basically most &quot;modern&quot; distros have ditched the /usr split by making /bin and /lib into symlinks to /usr/bin and /usr/lib. In this build we instead just give all programs a blank install prefix. Our root directory now takes not only all of our binaries and libraries but also has program data under /share, and we only have /usr because it is expected. everything in /usr is, in fact, just symlinks.</p> +<p>Rust is installed in a novel way using rustup. As root, we set the RUSTUP_HOME and CARGO_HOME environment variables to /rust, and make /rust/bin a symlink to /bin. That way, we can track a nightly toolchain system-wide and it will install binaries into /bin, for all users to access. We could, of course, build rustc from source, and I have in fact done so previously. However, apart from the ridiculous compilation time that it takes, this is not a great option until the language is truly stable, as a lot of the interesting bits if the Rust ecosystem need something newer than the stable branch. By using rustup and the binary toolchains, we always have access to the most up to date toolchain, and the ability to easily switch from one to another.</p> +<p>So what are the benefits of having rust available early on? For starters Rust can access C functions and export functions to C, making it relatively easy to replace parts of the software stack previously written in C with Rust code that enjoys the memory and concurrency safety checks which are not present in C. As an example, relibc is a complete C standard library written in Rust. This alternative C library is a potential future path of investigation. But on a smaller scale, there are a number of interesting cli utilities and programs written in Rust.</p> +<ul> +<li>sd is a stream editor similar to sed, but much faster and with a much easier syntax and reduced scope.</li> +<li>fd is a file finding utility which is orders of magnitude faster than find, and has interesting features like skipping .git folders by default.</li> +<li>exa is a file lister with some unique features over ls</li> +<li>The amp editor, while somewhat vi-like, has interesting extra features fuzzy file finder and a token based jump which make moving around even faster than vim. +I have also begun, partially as a learning exercise, writing my own Rust implementations of various small Unix utilities. In the future some may find their way into HitchHiker if we retain Rust in the base system.</li> +</ul> +<p>While this is still in an early evaluation phase, I think it likely that at the very least we will make the switch from gcc to clang/llvm at some future point, with the possibility of bringing some of the other features along as well. What may not make the cut is libstdc++, as replacing the C++ standard library is almost as problematic as replacing the C standard library, leading to the need to port a large amount of third party software in the future. However, I will likely be going further with Rust, and with the flattened filesystem, as I want HItchHiker to be a cutting edge distro while still adhering to traditional Unix practices. Basically, we're going to push the envelope when it makes sense to do so, but not follow fads and trends in the Linux community that might very well be dead ends (like I believe Systemd in particular to be).</p> + + + + More Pkgsrc + 2020-07-14T00:00:00+00:00 + 2020-07-14T00:00:00+00:00 + + /news/more-pkgsrc/ + <p>While attempting to build the Thunar file manager (via pkgsrc) I encountered a +couple of other errors when it pulled in Samba4 as a dependency. Samba4 has +switched from using GNU autotools to it's own internal version of waf, a Python +based tool for configuring software.<span id="continue-reading"></span> Waf takes most options that one +might pass to a GNU configure script. The difference is that an autotools +configure script will generally either ignore an option that it doesn't recognize +or else complain about it but still continue running. In the case of waf, an +unknown option causes an error, which aborts the build. In the case of samba4 +this was <code>--gmp-include</code>.</p> +<p>About an hour later after failing to find where that option was being included from, in desperation I just did a grep through every Makefile in pkgsrc for &quot;gmp-include&quot; and found a few candidates. After temporarily commenting out the <code>CONFIGURE_ARGS+=</code> lines in devel/gmp/builtin.mk the samba4 build was up and running again. Note that I'm still unsure where it's getting pulled in, as I traced the Makefile includes through a few levels before giving up.</p> +<p>So, samba4 was building, then it wasn't again. This time the build failed due to the lack of the rpcgen utility, which is included in NetBSD (and indeed FreeBSD and OpenBSD and pretty much every BSD variant) but not in Linux. Linux has libtirpc and rpcgen is widely considered obsolete, and in fact was abandoned by it's chief developers, Sun, some time ago. However since we're building using pkgsrc it's assumed to be on our system. What's more frustrating is that there is no package for it in pkgsrc. This has already been noted on the mailing list as it causes more than one package build failure on Linux.</p> +<p>As it looks like going with pkgsrc is going to expect us to have rpcgen in several places, I set about trying to find a portable version of the source code. This turned out to be quite more of a chore than expected, but I did find an older version that had been pulled into a more or less portable state. I've imported that source into the HitchHiker build tree and rewrote the Makefile to suit our purposes. After adding it to our system and restarting the samba4 build (with &quot;--gmp-include&quot; still temporarily excised) samba4 builds successfully, and Thunar was able to build successfully as well.</p> +<p>This whole exercise is a good illustration of the challenges in making any software project truly portable, and why a more efficient build can be achieved by ignoring other systems and targeting the build only to the system actually in use. It's why I've imported the sources for ee, mksh and now rpcgen directly into the source tree and we're building them without any configure checks, as it's already known exactly what's on our running system.</p> +<p>Another thing this illustrates is some of the problems that arise due to projects switching their build system to one of the dozens of projects that have sprung up to &quot;replace&quot; GNU autotools. The fact is that very few, if any, of the replacements have achieved anything close to the flexibility and maturity of autotools and most probably never will. I'm not a fan of autotools by any means. It's a quagmire that most people don't understand; a lot of devs simply cut and paste from other projects and hope for the best. The Makefiles it generates are of a complexity and length that are ridiculous. However, the fragmentation that is currently occuring as some projects use cmake, waf, ninja, meson, jigdo, scons or whatever the next kid on the block is named is a true nightmare for anyone trying to build and maintain a full distro. That's not even accounting for the various homebrewed shell scripts that I encounter which have varying levels of POSIX compliance and make their own assumptions about the utilities present on your system.</p> + + + diff --git a/public/tags/packages/index.html b/public/tags/packages/index.html new file mode 100644 index 0000000..a155158 --- /dev/null +++ b/public/tags/packages/index.html @@ -0,0 +1,549 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Packages"

    +
      + +
      + + Experimental clang/llvm based build with nightly rust + +
      2020-11-24
      + +

      Ok, so this little side track has been on a slow burn for a while now, but I've currently got a rootfs that I can chroot into with the following features:

      +
        +
      • Built almost entirely with llvm/clang (see caveats below)
      • +
      • Rust nightly compiler installed early in the build, accessible for all users
      • +
      +...

      + + Read More -> +
      + +
      + + More Pkgsrc + +
      2020-07-14
      + +

      While attempting to build the Thunar file manager (via pkgsrc) I encountered a +couple of other errors when it pulled in Samba4 as a dependency. Samba4 has +switched from using GNU autotools to it's own internal version of waf, a Python +based tool for configuring software....

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/pkgsrc/atom.xml b/public/tags/pkgsrc/atom.xml new file mode 100644 index 0000000..5a29b8e --- /dev/null +++ b/public/tags/pkgsrc/atom.xml @@ -0,0 +1,113 @@ + + + - Pkgsrc + + + Zola + 2020-08-01T00:00:00+00:00 + /tags/pkgsrc/atom.xml + + Imported source, pkgsrc on Arm woes, and make includes + 2020-08-01T00:00:00+00:00 + 2020-08-01T00:00:00+00:00 + + /news/imported-source-pkgsrc-on-arm-woes-and-make-includes/ + <p>I think we'll start this post discussing some of the differences and misconceptions of same between BSD make and GNU make. In the case of BSD make we're primarily referring to NetBSD make, which is a greatly improved version of the historical Unix make<span id="continue-reading"></span> utility, and has also been imported into FreeBSD. Among the BSD camp, GNU make is seen as a second citizen. Their version of make is leveraged for building the entire system, without using autotools except in the case of imported external source which has been autotooled by it's authors. It is also the utility that wraps all of the functionality of FreeBSD ports and NetBSD pkgsrc - downloading, patching, compiling and packaging third party software. The complete infrastructure is quite impressive.</p> +<p>Much of this functionality lies in leveraging included Makefiles, much in the way that C headers can be included to pull in function definitions, and also similar to the concept of shared libraries. These included .mk files, usually located in /usr/share/mk on a BSD system, allow for extremely concise Makefiles throughout the source tree to just specify a few variables and then pull in all of the targets from an inclued file. The most prominent are probably bsd.prog.mk and bsd.lib.mk, which tell make how to build C programs and C libraries respectively.</p> +<p>It is a common misconception that this functionality only exists in BSD make. GNU make does have this capability as well and I leverage it quite heavily in HitchHiker. Admittedly, it is more developed in BSD make, but the limitations of GNU make in comparison are fairly trivial and easy to work around. One of the sillier things is the default search path that GNU make uses the look for included Makefiles. By default this path starts in the current directory and proceeds through /usr/local/include, /usr/include and finally /usr/gnu/include. Leveraging this would sprinkle .mk files through what are by convention the location of C header files, or alternatively using /usr/gnu/include. I have yet to see a system that has a /usr/gnu directory (maybe it was planned for Hurd?) and I'm not keen on it. As of the last commit, HitchHiker now patches make to no longer search /usr/gnu/include and to now search instead /usr/local/include/mk and /usr/include/mk, the latter being our new default directory. This allows us to include a .mk file by name, without specifying a full or relative path, and at the same time keeps all of our .mk files separated from the system C headers.</p> +<p>So what exactly does BSD make have over GNU make?</p> +<ul> +<li>Slightly more powerful conditionals. In addition to ifdef, ifndef, ifeq and ifneq BSD make also has a simple if, and allows chaining conditionals with the &amp;&amp; and || operators much like shell syntax. By comparison GNU make must nest conditionals for similar functionality.</li> +<li>Included Makefiles can be relative to the install or source prefix. This is quite powerful for building large projects in custom site locations.</li> +<li>Possibly others I have not discovered yet, however in practice GNU make can do -everything- that BSD make does if you take the time to learn how to use it.</li> +</ul> +<p>As part of creating a more integrated build framework, my most recent commit contains a basic analog for bsd.prog.mk, hhl.cprog.mk (cprog due to my not assuming that all programs are written in C!) which now allows extremely concise Makefiles for source code that has been imported into the base system. In the case of rpcgen the following Makefile is all that is needed:</p> +<pre style="background-color:#2b303b;"> +<code class="language-Makefile" data-lang="Makefile"><span style="color:#65737e;"># Makefile - hhl - /usr/src/world/rpcgen +# Copyright 2020 Nathan Fisher &lt;nfisher.sr@gmail.com&gt; +# +</span><span style="color:#bf616a;">progname </span><span style="color:#c0c5ce;">= </span><span style="color:#a3be8c;">rpcgen +</span><span style="color:#bf616a;">cflags </span><span style="color:#c0c5ce;">+= </span><span style="color:#a3be8c;">-g +</span><span style="color:#b48ead;">include </span><span style="color:#a3be8c;">hhl.cprog.mk +</span></code></pre> +<p>As can be seen, there are really only three lines. Lines 1-3 are comments, line 4 specifies the program name, line 5 adds -g to the compiler flags, and line 6 includes hhl.cprog.mk. If you look inside the rpcgen subdirectory of the build tree you will see the following structure:</p> +<pre style="background-color:#2b303b;"> +<code><span style="color:#c0c5ce;">. + ├── Makefile + ├── man + │ └── rpcgen.1 + ├── README + └── src + ├── config.h + ├── proto.h + ├── rpc_clntout.c + ├──***snip +</span></code></pre> +<p>Our included Makefile will generate object files for any .c files in the src/ subdirectory, link those objects into an executable and install man/rpcgen.1 in ${install_prefix}/share/man/man1. It has logic to differentiate man1 from man8 and also installs html and text docs in the doc/ subdirectory. If we needed to specify additional cppflags, cflags, ldflags or libs to link with we would just append them to those vars (by convention I use lower case so as to not interfere with any CFLAGS etc. specified on the command line or in an external build system). If we want to create links to our executable they just need to be specified in the binlinks variable. Defining the variable finish and writing a finish target allows us to do anything else additional that might need done, like installing configuration files or runtime data. In short, while being a fairly tidy 102 lines (some of which is whitespace and comments) hhl.cprog.mk successfully works as an analog for bsd.prog.mk.</p> +<p>The short list of programs leveraging this framework now include the ee text editor, rpcgen, mksh and lksh shells and the pax archive/copy/link utility. At some later date the source tree will be reorganized to move these directories into bin or usr.bin much like is done in the BSD source trees, as well as importing other sources directly into the tree and &quot;HitchHikerizing&quot; their build systems.</p> +<p>The title promised some pkgsrc updates relating to arm challenges. In a nutshell pkgsrc seems to be broken in several places for arm on Linux. Perhaps most annoyingly is the buildlink system, which is supposed to make it simpler for packages to find the libs that they are to link against by moving everything into work/.buildlink/lib (relative to the subdirectory that bmake was run from). So far I've discovered that libuuid, libexpat, libstdc++, libacl and libattr libtool archives are skipped every time on arm for reasons that I have not yet discovered. I can work around it by manually linking the .la files in from /usr/lib, but this requires an annoying level of manual intervention. Nevertheless I have managed to build the full LXDE, XFCE and Mate desktops, several shells, emacs, nano and pico editors, Inkscape and am on to building Gimp presently on my RPI. On x86_64 I have all of that plus a fairly complete server stack, Abiword, Gnumeric and the Firefox browser built.</p> +<p>In short, when q3 releases (and it really is coming soon) there will be a fairly comprehensive selection of software available on both architectures via pkgsrc. However, in the long run we're going to revisit the idea of creating our own ports tree which leverages GNU make and the infrastructure of .mk files that now reside in /usr/include/mk, adding funcionality for creating binary package tarballs and downloading and installing them. This will most likely involve a simple homebrewed package format that takes some inspiration from BSD tarballs, Slackware tarballs and Arch Linux tarballs. A sneak peak in the current build tree at how we register the installation of the base system will give you an idea. We're going to keep things purposely simple and avoid writing a full fledged package manager. More details to come.</p> + + + + Patching pkgsrc, building rust and Arm headaches + 2020-07-20T00:00:00+00:00 + 2020-07-20T00:00:00+00:00 + + /news/patching-pkgsrc-building-rust-and-arm-headaches/ + <p>Having been working with pkgsrc for a couple weeks now there's a bit of a flow +developing, and quite a bit of progress, with a big caveat. The issues I'm +running into are that there are quite a few more build failures for Arm than +there are for x86_64.<span id="continue-reading"></span></p> +<p>Interestingly, both libdrm and MesaLib fail with similar messages about assembly +code that isn't supported on the current architecture (armv7l). In situations +like this it's hard to blame pkgsrc, as the fault is upstream from there. I'm +getting quite used to adding packages to my local tree and tweaking BSD style +Makefiles. I'm making every attempt to send fixes upstream; however, waiting for +a response each and every time is just not really going to be an option here, so +in the meantime I've decided to import the entirety of pkgsrc into git and use +that tree as the &quot;official&quot; branch for HitchHiker. This will enable our project +to build up a substantial package collection even if upsteam pkgsrc begins to +lag behind.</p> +<p>One of the problematic packages that is now often being pulled in as a dependency is rustc, the rust compiler. It's problematic on two fronts. First, unless your system has substantial amounts of memory a parallel build will fail as the memory fills up (mine has 8 gig and still fails). Second, and quite frustrating, is that rustc is only compatible with certain versions of either openssl or libressl, and our version of libressl was too new. After seeing if we could use either libressl or openssl from pkgsrc and encountering repeated failures, I just rolled back libressl to the newest version that rust supports.</p> +<p>Let me pause here for a brief commentary on rust as a programming language. There is a lot to like about rust, and it seems that the language may be with us for quite some time, as it seems to see more usage every day and has achieved a critical mass of developers. I've played around with it myself a little bit and the documentation is very good, it's probably one of the easier to learn languages, and the ecosystem as a whole is very nice when you look at all of the features that cargo brings to the table. However, I am not a fan of the fact that the rust standard library, libstd, is compiled in statically by default. This results in a simple &quot;Hello, world!&quot; executable compiling into a 7.1m binary on my machine before stripping, which comes down to 220k after stripping. When compiling the same program dynamically it comes all the way down to 16k after stripping, so we have approximately a 204k overhead <em>per binary</em> for the static libstd.</p> +<p>I am also not happy about rolling back libressl, as I would much rather have the newest possible version of what is a security critical piece of software. However, it is I believe still a better and more secure option than openssl, which most distros are still using. It's a shame that a major piece of software like rust, that is a dependency of quite a number of other packages now, has not updated to use the newer abi presented by newer versions of libressl.</p> +<p>After a couple weeks of building packages on both x86_64 and armv7l, using an identical set of packages in the base system, it is very apparent just how much more development x86_64 gets than arm. Two packages in particular illustrate this quite well - libdrm and MesaLib - both of which are major dependencies of modular Xorg. In both cases assembly code is generated by gcc that contains instructions not supported by the processor, and the only fix is to disable features in the Arm build. In the case of MesaLib this involves patching the source code. Thanks to the Arch Linux Arm team for showing the way, as my patches are adapted from their PKGBUILD.</p> +<p>There have been just a few more tweaks to the base system as I attempt to fully +finalize the build in preparation for release. The rpcgen utility that I had +incorporated proved to not fully support all features needed for building certain +packages in pkgsrc. After some search I found a newer version that had been +autotooled in the rpcsvc-proto package, which was originally a compatibility +package during the time that SunRPC was being removed from Glibc. I've imported +the source for just the rpcgen utility from that package into hitchhiker's build +tree, removed all of the autotools material, moved all C-preprocessor flags into +a config.h file, disabled NLS and made a very lean, mean Makefile for it. While +I was at it I used similar techniques to update the builds for mksh and pax. +Both of those packages now include their CPPFLAGS as defines in config.h, and I +have even begun eliminating ifdefs out of the C files to make for a cleaner and +faster build.</p> + + + + More Pkgsrc + 2020-07-14T00:00:00+00:00 + 2020-07-14T00:00:00+00:00 + + /news/more-pkgsrc/ + <p>While attempting to build the Thunar file manager (via pkgsrc) I encountered a +couple of other errors when it pulled in Samba4 as a dependency. Samba4 has +switched from using GNU autotools to it's own internal version of waf, a Python +based tool for configuring software.<span id="continue-reading"></span> Waf takes most options that one +might pass to a GNU configure script. The difference is that an autotools +configure script will generally either ignore an option that it doesn't recognize +or else complain about it but still continue running. In the case of waf, an +unknown option causes an error, which aborts the build. In the case of samba4 +this was <code>--gmp-include</code>.</p> +<p>About an hour later after failing to find where that option was being included from, in desperation I just did a grep through every Makefile in pkgsrc for &quot;gmp-include&quot; and found a few candidates. After temporarily commenting out the <code>CONFIGURE_ARGS+=</code> lines in devel/gmp/builtin.mk the samba4 build was up and running again. Note that I'm still unsure where it's getting pulled in, as I traced the Makefile includes through a few levels before giving up.</p> +<p>So, samba4 was building, then it wasn't again. This time the build failed due to the lack of the rpcgen utility, which is included in NetBSD (and indeed FreeBSD and OpenBSD and pretty much every BSD variant) but not in Linux. Linux has libtirpc and rpcgen is widely considered obsolete, and in fact was abandoned by it's chief developers, Sun, some time ago. However since we're building using pkgsrc it's assumed to be on our system. What's more frustrating is that there is no package for it in pkgsrc. This has already been noted on the mailing list as it causes more than one package build failure on Linux.</p> +<p>As it looks like going with pkgsrc is going to expect us to have rpcgen in several places, I set about trying to find a portable version of the source code. This turned out to be quite more of a chore than expected, but I did find an older version that had been pulled into a more or less portable state. I've imported that source into the HitchHiker build tree and rewrote the Makefile to suit our purposes. After adding it to our system and restarting the samba4 build (with &quot;--gmp-include&quot; still temporarily excised) samba4 builds successfully, and Thunar was able to build successfully as well.</p> +<p>This whole exercise is a good illustration of the challenges in making any software project truly portable, and why a more efficient build can be achieved by ignoring other systems and targeting the build only to the system actually in use. It's why I've imported the sources for ee, mksh and now rpcgen directly into the source tree and we're building them without any configure checks, as it's already known exactly what's on our running system.</p> +<p>Another thing this illustrates is some of the problems that arise due to projects switching their build system to one of the dozens of projects that have sprung up to &quot;replace&quot; GNU autotools. The fact is that very few, if any, of the replacements have achieved anything close to the flexibility and maturity of autotools and most probably never will. I'm not a fan of autotools by any means. It's a quagmire that most people don't understand; a lot of devs simply cut and paste from other projects and hope for the best. The Makefiles it generates are of a complexity and length that are ridiculous. However, the fragmentation that is currently occuring as some projects use cmake, waf, ninja, meson, jigdo, scons or whatever the next kid on the block is named is a true nightmare for anyone trying to build and maintain a full distro. That's not even accounting for the various homebrewed shell scripts that I encounter which have varying levels of POSIX compliance and make their own assumptions about the utilities present on your system.</p> + + + diff --git a/public/tags/pkgsrc/index.html b/public/tags/pkgsrc/index.html new file mode 100644 index 0000000..b0394e9 --- /dev/null +++ b/public/tags/pkgsrc/index.html @@ -0,0 +1,558 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Pkgsrc"

    +
      + +
      + + Imported source, pkgsrc on Arm woes, and make includes + +
      2020-08-01
      + +

      I think we'll start this post discussing some of the differences and misconceptions of same between BSD make and GNU make. In the case of BSD make we're primarily referring to NetBSD make, which is a greatly improved version of the historical Unix make...

      + + Read More -> +
      + +
      + + Patching pkgsrc, building rust and Arm headaches + +
      2020-07-20
      + +

      Having been working with pkgsrc for a couple weeks now there's a bit of a flow +developing, and quite a bit of progress, with a big caveat. The issues I'm +running into are that there are quite a few more build failures for Arm than +there are for x86_64....

      + + Read More -> +
      + +
      + + More Pkgsrc + +
      2020-07-14
      + +

      While attempting to build the Thunar file manager (via pkgsrc) I encountered a +couple of other errors when it pulled in Samba4 as a dependency. Samba4 has +switched from using GNU autotools to it's own internal version of waf, a Python +based tool for configuring software....

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/porting/atom.xml b/public/tags/porting/atom.xml new file mode 100644 index 0000000..2ab8e3c --- /dev/null +++ b/public/tags/porting/atom.xml @@ -0,0 +1,257 @@ + + + - Porting + + + Zola + 2021-02-08T00:00:00+00:00 + /tags/porting/atom.xml + + Cross Build Progress + 2021-02-08T00:00:00+00:00 + 2021-02-08T00:00:00+00:00 + + /news/cross-build-progress/ + <p>The sysroot/cross-compile build tree is nearly able to build all of HitchHiker +now, with only a few packages left to tweak.</p> +<span id="continue-reading"></span> +<ul> +<li>pkg-config: This is messy in general. There is a circular dependency with Glib, +satisfied by the pkg-config maintainers incorporating a recent version of Glib +directly into the distribution. However, Glib requires extra work to cross +compile. I've looked into it but not yet implemented the fixes.</li> +<li>XML::Parser: Perl was actually able to cross compile successfully to both +aarch64 and riscv64 using perl-cross. XML::Parser is a perl module, uses perl +during it's build and perl modules in general have their own home baked build +system which does not play well with cross compiling. I'm investigating whether +it really needs to be in the base system or can be moved to ports.</li> +<li>Ninja and Meson: may not actually be needed in the base system?</li> +<li>zstd: Uses a Makefile or Meson for it's build system. I've already dealt with +a few projects that built with a plain Makefile and was just putting this off to +be honest, as a few of the others required significant reworking to get a +functional build.</li> +<li>iproute2: Another one using it's own home grown configure script which will +likely require much manual intervention.</li> +<li>mandoc: This builds after a fair amount of manual intervention. However, it +segfaults on riscv64. Unknown whether this is due to qemu or if it will segfault +on real hardware, but not a great sign. I'm looking at porting an earlier man +utility from 4.4BSD-lite. Man should be a simple program.</li> +<li>file: Our file utility, descended from the relatively recent OpenBSD sandboxed +file, built fine on intel and Arm architectures, but the original author pulled +in some SECCOMP defs that are architecture dependent and failed to account for +any architectures besides Intel and Arm. I've hacked the source so that it +compiles on Riscv64. However, there appears to be more work to be done to get it +fully working on that arch. +There were, of course, numerous hiccups along the way. I'll elaborate on a few.</li> +</ul> +<p>Bzip2 has it's own Makefile based build. It also has a separate Makefile to build the shared version of the library, and even when you do build the shared version it uses the static version for bzip2recover. In true hitchhiker fashion after mucking about with what was already there for a while I wound up just discarding it and imported the source directly into the build tree, substitution our own infrastructure. This required creating hhl.sharedlib.mk, which was overdue anyway. At the moment we're building both shared and static versions of libbz2, and linking the bzip2 and bzip2recover binaries against the shared library.</p> +<p>Recent versions of util-linux include a new utility, hardlink, which links against pcre2 if available. However, the build system detects pcre2 on the host system, not in the sysroot, and there is no provision to manually disable linking against pcre2. Interestingly, there are two competing implementations of the hardlink program, and the one currently in util-linux is potentially going to be replaced as it is not the more fully featured one. There is some interesting discussion of the issue on the mailing list. In the meantime, since it is a potentially useful utility, I just imported the source of the preferred version and am building it using our build infrustructure.</p> +<p>And now, gettext. This one really pissed me off. Recent versions of gettext include libtextstyle, a library for formatting text for display. The included gettext utilities link against libtextstyle. However, the headers don't yet exist at the time the utilities are built, so the only reason the build is not failing for everyone is that they are building against the headers already present on the host system. The libtextstyle subdirectory is not even in the library search path on the command line.</p> +<p>Now, this is just bad practice. It means that if those headers are updated for a new release, then distro packagers will be building against the old headers, potentially causing undefined behavior and random bugs. I only caught it because the build utterly fails in a sysroot environment.</p> +<p>Furthermore, one of the missing headers, included by textstyle.h, is stdbool.h, because for some reason they're worried about building on systems that don't have a working boolean implementation. This is just crazy at this point. It's no wonder GNU projects get bloated.</p> +<p>In the end, I pulled the headers out of the host system, put them in the appropriate directory inside the source directory, compiled, then did a chroot into the sysroot and did a native compile just to be sure that the headers matched. Those headers are now imported into the build tree and are placed into the source directory after running configure, and the Makefile is patched to search the build directory before the system header directory. It's not a full fix that I would push upstream but it works. A full fix would build the headers first, before building the utilities, then link against them. I didn't feel like going that in depth fixing their build.</p> +<p>In a general sense, even though I feel that autotools based builds are often extremely bloated and inefficient, based on the mistakes that I keep fixing in other project's home brewed Makefiles to enable cross compilation (as well as simple things like installing into a DESTDIR) I can really see some of the strengths of autotools. Most of the time, all that is needed to cross compile is setting --host and either passing --sysroot in the CFLAGS or, if supported the the specific package, passing --with-sysroot to configure. That isn't to say that autotools is perfect. Frequently the package maintainers compile tests against the host system or check for library support by looking in /usr/include. After a while you begin to realize that you're literally fixing the same mistake repeatedly, and start to feel despair for the human race. And then it works, and everything is all right again.</p> + + + + Compiling for aarch64/riscv64 from qemu user mode chroot + 2021-01-28T00:00:00+00:00 + 2021-01-28T00:00:00+00:00 + + /news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/ + <p>This is a novel approach that I've been experimenting with lately, to do some +legwork towards supporting architectures for which I either don't have physical +hardware or else the hardware is limited in capability so much as to make native +compilation impractical.</p> +<span id="continue-reading"></span> +<p>Qemu, in addition to running full virtual machines, also has what is known as +&quot;user mode emulation&quot;. In a nutshell, when using qemu in this way one is able to +run binaries for another architecture without creating virtual hardware or a +virtual kernel. In this case, qemu just acts as a translation layer, translating +instructions designed for one ISA to instructions that can be executed on the +host processor. By not running a virtual kernel on virtual hardware, there is +actually a huge savings of system resources.</p> +<p>Setting this up, while not trivial, is surprisingly straightforward. First, a +suitable root filesystem must be created. Qemu must be compiled statically, and +the static binary copied into the chroot filesystem. Then, by using binfmt-misc, +one can register this qemu executable as the program interpreter for binaries of +the guest architecture. In this way it is actually possible to set up a functional +chroot on a well spec'ed X86_64 machine running Risc-V binaries. There is a bit +more to getting this to work, but suffice to say that it does in fact work, +within the normal limitations of a chroot.</p> +<p>While running foreign binaries does incur some performance penalty, this method +is actually proving to be a significant improvement over, say, compiling for +aarch64 on a Raspberry Pi 4, as I have four times the memory and a significantly +faster processor with twice the number of cores available. And it has the benefit +of not requiring a cross compiler. Instead, one is running a native compiler via +an emulation layer. But this eliminates many of the pain points of cross compiling. +It's a neat trick.</p> +<p>So what does this mean for HitchHiker? It means that work is now well underway +towards running HitchHiker on a BeagleV when they become widely available later +this year. I have been eagerly waiting to dip toes into Risc-V as soon as an +affordable option was available, and it looks like said option is now on the +horizon.</p> + + + + Goodbye GNU coreutils, importing sed + 2020-09-22T00:00:00+00:00 + 2020-09-22T00:00:00+00:00 + + /news/goodbye-gnu-coreutils-importing-sed/ + <p>The porting effort has reached the point where it is now safe to remove GNU +coreutils. At this point, there are now only 16 utilities provided by the +coreutils package<span id="continue-reading"></span> that are not implemented in another way in HitchHiker, and none of the missing +utilities are dealbreakers. As follows, here is what is missing and why it isn't +a problem, or what the roadmap is for replacement.</p> +<ul> +<li>b2sum - computes BLAKE2 checksums - there are quite a number of checksum utilities already, and this one is currently not a dealbreaker. If a reason for replacement is discovered it will be implemented from scratch in c.</li> +<li>base32 - encodes file or stdin using base32 - we already have base64 imported from OpenBSD.</li> +<li>basenc - encodes file or stdin using various algorithms - see base32.</li> +<li>chcon - changes SELinux security context - SELinux is a largely Fedora/RedHat backed API which we don't implement currently in HitchHiker. Standard Unix file permissions are not fine-grained enough for just about any use case.</li> +<li>dir - displays directory contents - despite what GNU say about dir, it is basically ls but with a different default behavior. The same behavior can be emulated by using the appropriate flags with ls.</li> +<li>dircolors - sets the colors for eg <code>ls --color</code> - We have BSD ls in HitchHiker, which does not implement the --color option. I have considered re-implementing ls and including the --color option, in which case dircolors would be useful. However, this is non-trivial and no timeframe is given.</li> +<li>hostid - displays the unique numeric id for the current host - not currently a dealbreaker, but potentially useful. Fairly trivial to implement in C.</li> +<li>nproc - gets the number of processors currently available - also potentially useful and fairly trivial to implement in C.</li> +<li>numfmt - format numbers in human-readable form - potentially useful, not a dealbreaker. Non-POSIX utility which accepts mostly GNU style long options. If implemented would be done in a different way, ignoring the behavior of the GNU utility, which is frankly too GNU-centric (long options should have short option equivalents).</li> +<li>pinky - a mini finger implementation - all information available via pinky can be optained with other included utilities. If there is a need for accessing information on remote hosts an actual finger implementation is required anyway.</li> +<li>ptx - honestly the manpage for this utility reads like gibberish. Anyway I've never used it and don't think it's needed, not available on BSD systems anyway and not POSIX.</li> +<li>runcon - run a command with a different SELinux security context - see chcon.</li> +<li>shuf - shuffles file contents randomly - not particularly useful.</li> +<li>stdbuf - run command with modified IO buffering - exists in FreeBSD but not NetBSD or OpenBSD. Non-POSIX. Potentially useful, not considered a priority. Porting from FreeBSD is non-trivial if memory serves from my 1st attempt.</li> +<li>timeout - run a command with a time limit - Not available on BSD systems, Non-POSIX. Potentially useful but not a priority.</li> +<li>vdir - another permutation of ls (see dir) - again just use ls, why have another binary?</li> +</ul> +<p>None of the missing utilities are POSIX specified and are not likely to be called from any kind of portable shell script. With the exception of stdbuf, I could not find alternative implementations for any of the missing utilities. This was a long process fraught with a fair bit of trial and error, and continual testing to ensure that the system could still bootstrap iself as utilities were replaced a few at a time. My first tries removing the coreutils package entirely resulted in various failures, as either a utility had incompatible behavior with one or more packages build systems, or a missing utility was actually required.</p> +<p>A good example of a surprise was with the 'od' utility, which creates an 'octal dump' of file contents. I did not assume this to be a utility that would see much use. However, the build system for busybox assumes it's existence and fails without it. On looking for a replacement I turned to the <a href="http://heirloom.sourceforge.net/tools.html">Heirloom Toolchest</a>, a collection of utilities derived from ancient Unix sources released by Caldera and Sun. This utility has the dubious distinction of influencing one of the more glaring inconsistencies in bourne shell syntax. For most control flow structures in sh, the closing keyword is the opening keyword reversed, IE if-else-fi or case-esac. However, od was already in existence before the original bourne shell was written, precluding the use of do-od for looping and giving history instead do-done.</p> +<p>While in there poking around in the heirloom sources I also ported over pg (an early pager), sum (yet another checksum utility) and factor (prints all prime factors of the given number). The sources have been variously tweaked to be more inline with my own coding style, making future maintenance easier. All but pg were commands which are present in coreutils, giving us greater coverage.</p> +<p>During the porting effort, there were various utilities which were either not present in BSD, sbase or heirloom or else so trivial as to pose no barrier to implementing them from scratch. Here is that list.</p> +<ul> +<li>/bin/true - just return true and exit - implemented as a single line shell script.</li> +<li>/bin/false - the reverse of true.</li> +<li>/sbin/nologin - used for disabled logins, displays a message that the account is disabled and exits with a failure code - implemented in C.</li> +<li>/usr/bin/link - creates hard links - implemented in C.</li> +<li>/usr/bin/unlink - calls the unlink function to remove files - implemented in C.</li> +<li>/usr/bin/shred</li> +</ul> +<p>The shred utility was a special case, as it existed only in GNU coreutils until my own implementation. I've always thought that this was a tremendously useful utility and wanted it in HitchHiker. What it does is overwrites the given file with random data to make recovery exceedingly difficult, optionally doing a final pass with zeros and unlinking the file. It can be used on an entire block device to wipe a hard drive clean. I've been working on dogfooding myself in C lately and this was a good opportunity to code something a little but less trivial. Anyway, this version of the shred command is implemented cleanly from scratch but follows fairly closely the behavior of the GNU version. It differs in not accepting long options, much like the rest of our collection of utilities, and does not implement a few switches that are considered unnecessary in use. At some point I intend to go in and implement file-renaming before deletion, akin to the GNU versions &quot;wipesync&quot; method, but the program is otherwise feature complete. In order to give myself another challenge, I also implemented a progressbar that is displayed with the -v option.</p> +<h2 id="on-to-sed">On to sed</h2> +<p>I have tried in vain to get away from using GNU sed in HitchHiker. After porting BSD sed, sbase sed and GNU minised, all of them proved unsuitable and caused build failures at some point or another. Or rather, non-portable sed usage by the authors of the various build systems caused failure when our sed did not support the input that it was given. The final deal-breaker was the Linux kernel itself, which requires sed to understand some GNU specific regular expressions during the build.</p> +<p>What I have done is import the GNU sed source code directly into the HitchHiker source tree and made it work with our build system. This is only the second GNU licensed program I have done so with (the first being less) and only the third time that I have successfully stripped a program of it's autotooled build system. It was, to say the least, not trivial. However, the results are rather impressive, as on my 8-core laptop sed now builds in 3.22 seconds, compared with 31.75 seconds for the autotooled build. I'll take a 10x speed increase any day, and it's a great example of how much there is to gain by just using make compared with an autotools build. Indeed, for a smaller program like sed, most of the time is taken by the configure script, and by installing files after compilation. With our &quot;compile in place&quot; method we're skipping entirely the installation phase.</p> +<p>As GNU sed is fully localized into multiple languages, I took the time to extend the build infrastructure with hhl.locale.mk, which takes any .po files in a program's locale subdirectory (if they exist) and &quot;compiles&quot; them into .mo files in /usr/share/locale using the msgfmt utility. With that in place the infrastructure for building directly from source, rather than just wrapping another build system in make, is pretty much complete, even if there are still things to optimise.</p> + + + + Continued porting of BSD userland against remaining self-hosting + 2020-09-03T00:00:00+00:00 + 2020-09-03T00:00:00+00:00 + + /news/continued-porting-of-bsd-userland-against-remaining-self-hosting/ + <p>At this juncture we're well over the halfway point in regards to providing a predominately BSD userland in HitchHiker, with over 90 console utilities ported against a total of 59 remaining programs brought in from GNU coreutils. That total includes<span id="continue-reading"></span>, of course, some programs that are not included in GNU coreutils. Some of the utilities replace standalone GNU packages, such as grep and diff, while some are utilities that may not be present on most Linux distributions, such as pax or leave. In general, the BSD utilities have compatible functionality, as both GNU and BSD have mostly embraced the POSIX standard, but with a few caveats where there are extensions made to the standard. The biggest differences reflect a difference in philosophy, as the BSD utils are quite small and include only what they must, while the GNU versions are all (yes all) larger and accept more options. GNU particularly accept long options and in general have better internationalization. The GNU utilities also accept the --help option, giving a brief summary of their function. BSD utilities specifically omit this functionality, as each command comes with a man page, which would duplicate functionality.</p> +<p>One of the dangers in just blindly replacing the usual GNU userland on Linux is that when the accepted options differ slightly, some scripts may not run as expected. This also can affect building packages from source if care is not taken to stick with only POSIX specified options when writing Makefiles. To some extent I have been working to minimize the effects here by taking the time to verify each utility works as expected and in some cases implementing options that most users expect, such as the -v switch (verbose) for the ln and rmdir utilities. In other cases, such as the much abused -a or --preserve-attributes options of GNU cp, implementing equivalent functionality in the BSD port is definitely non-trivial, and many people are just trying to copy directories recursively while preserving symlinks when they use 'cp -a', and not actually wanting to preserve ownership or modification times. Those cases can be served by using BSD cp as 'cp -R'. If preserving attributes is the desired behavior, then this is one of the tradeoffs being made and extra steps will have to be taken with chown and touch.</p> +<p>In order to ensure that HitchHiker always remains self-hosting I have been running bootstrapping the system from itself multiple times during the porting effort. A few issues have been found and fixed along the way, but it has been an overall smooth transition. In one case, I had actually misused 'cp -a' myself in the busybox build (busybox is only built as part of the temporary toolchain).</p> +<p>One particularly special case is glibc, which has a hard dependency on GNU awk during build time. As I have a preference for the historical (yet still maintained) Nawk, this requires building a statically compiled Gawk early in the bootstrap process as part of the temporary tools in /toolchain, which is discarded along with the rest of the temporary tools after the bootstrap phase and does not become part of the base system. Another example of the &quot;Sheer F%$king Hubris&quot; of much GNU software, which often will only build with other GNU tools, even though other tools exist with equivalent (and sometimes superior) functionality.</p> + + + + Editors, glibc-2.32 + 2020-08-28T00:00:00+00:00 + 2020-08-28T00:00:00+00:00 + + /news/editors-glibc-232/ + <p>Most people who use any form of Unix have a favorite editor. Most of them also think that everyone else is wrong<span id="continue-reading"></span> (but in truth, you're all wrong...). And most Linux distros over the years have gradually catered more and more to the lowest denominator.</p> +<p>In the beginning, of course, there was only ed (The <strong>STANDARD</strong> editor!) and then at some point in time came Bill Joy's vi. Most people have, of course, never used the original vi. If you are on Linux, chances are good that you have encountered vim. If you are running BSD in any form then you have vi, except that you don't actually have vi, you have nvi. When 4.4BSDlite was released as the first large scale open source project, the major caveat was that much of the source was patent encumbered by AT&amp;T, including the venerable vi editor. All of this source was therefore replaced, painstakingly, a piece at a time. The selling point of nvi at the time was that it was a &quot;bug for bug compatible&quot; rewrite of vi, which started with the original elvis (a vi clone) source.</p> +<p>For most of it's existence so far (including it's original, never released to the public form from roughly ten years ago) HitchHiker had vim. I've used vim a lot and over the years have only grown more fond of it. Sticking with it over the rather steep learning curve has been quite helpful in situations where the only editor available is some form of vi or vi clone. However, vim is not without it's issues. All forms of vi or clones of vi have a rather steep learning curve for new users. The vim source code is a rats nest of conditionals and attempts to maintain compatibility with ancient systems that only a masochist or Luddite would use. And for a console based editor it is rather slow (though nowhere near the beast that Emacs has become, a story for another time).</p> +<p>For ease of use and welcoming less experienced users we follow the same path as FreeBSD by offering the ee editor. It's extremely small (the entire source is a single c file) and has great ease of use due to the integrated menu bar. It isn't an especially powerful editor, but it gets the job done.</p> +<p>As for vim, I decided a while back that it was going to be replaced with something more lightweight and with a more &quot;correct&quot; code base. I tried a few times to port nvi to HitchHiker, both from the &quot;official&quot; nvi source distribution and also from BSD sources. The main stumbling block has been that the code assumes headers and C library routines which no longer exist in Linux.</p> +<p>For the solution, let's back up again by a few years. AT&amp;T Unix is the direct ancestor to Solaris. A number of years ago Sun bequeathed the source code for the Solaris operating system to the public in the form of a CDDL licensed source distribution, giving birth to the OpenSolaris operating system in it's many forms, allowing FreeBSD to import the zfs filesystem, and effectively unencumbering historical Unix source code to the benefit of all.</p> +<p>Therefore, after a few days tinkering, we now have version 3.7 of Bill Joy's original ex/vi editor, which is the version that was current as of the 4.4BSDlite release, ported to and running on HitchHiker Linux. This has been a very gratifying experience overall. Some (probably many if I'm being honest) will miss certain features that they have grown used to in vim, such as syntax highlighting and visual mode. There is no plugin system (which I've never bothered to use in vim anyway...) and you're basically expected to know what you're doing. But the program is SMALL (roughly half the size of nvi, with no dependency on BDB, and orders of magnitude smaller than vim) and noticeably faster than vim when loading large files or pasting large chunks of text. You probably thought vim was fast. But you only -thought- it was fast.</p> +<p>You are, of course, free to install and use vim if you feel that original vi is too &quot;limiting&quot; for your use. Feel free to use ed for that matter, and to yell out that you're using &quot;THE STANDARD EDITOR&quot; while doing so. We imported ed from FreeBSD a week ago.</p> +<p>In other news, GNU libc (glibc) released version 2.32 this week. I'm running it already on my Arch systems but for the time being holding off on updating HitchHiker. There were a few notable deprecations in this release for functions, macros, and even a few array definitions that are considered too ancient to support. However, they actually do affect HitchHiker in a few places as we have some rather &quot;historical&quot; code imported into the userland tools. I spent an hour this morning fixing compilation errors when compiling mksh and ex/vi against the new library, in preparation for eventually merging it in. I'll have to check all of the other imported sources against it another day.</p> +<p>Interestingly, I also had to start using clang to compile these tools in Arch, as the gcc 10 series encountered an &quot;internal compiler error&quot;, which was actually a segmentation fault, when compiling the ex/vi sources. In HitchHiker we use gcc-9.30 and these problems don't exist. Good reason to not upgrade for the time being.</p> + + + + Improved porting with libbsd + 2020-08-24T00:00:00+00:00 + 2020-08-24T00:00:00+00:00 + + /news/improved-porting-with-libbsd/ + <p>The libbsd project was begun originally by the developers of the Debian K-FreeBSD project as a means of addressing differences in the available functions, headers and c macros between BSD libc and GNU libc. I have imported the source<span id="continue-reading"></span> directly into HitchHiker and &quot;hitchhikerized&quot; the build process. Only the static library archives are built at this time. With a few tweaks and an additional &quot;compat.h&quot; header to address a few omissions, this has led to an improvement in my process of porting BSD utilities, and the vast majority of the imported utilities now link with libbsd functions. There is little measurable overhead in the resulting binaries.</p> +<p>For those utilities that are more difficult to port I have begun porting the work already done to create lobase, a portable package of OpenBSD userland, to the hitchhiker build system. I am also pulling in sources from FreeBSD now. The first program ported from FreeBSD to HHL is the ed editor, which in this case was easier to get going than the version from the NetBSD sources.</p> +<p>I have always enjoyed the venerable Unix fortune program, and always include a call to it in my shell profile. While I did consider the idea of including it by default in the HitchHiker base system, I decided to go another route and just implement something simpler from scratch. Hence, the small C program 42, which by just prints a random quote from the HitchHiker's guide universe. It accepts no options and can only be extended by editing the source. Just a bit of fun. +<img src="../../assets/screenshot_42.png" alt="screenshot_42.png" /></p> + + + + Porting NetBSD userland, infrastructure improvements + 2020-08-17T00:00:00+00:00 + 2020-08-17T00:00:00+00:00 + + /news/porting-netbsd-userland-infrastructure-improvements/ + <p>As noted previously, I have some issues with the complexity of GNU autotools and the bloat that it introduces into building what should be very simple programs. I pointed out coreutils as one of the worst offenders at that time, and have been exploring ways to either port coreutils to a simpler build system or outright replace the package.<span id="continue-reading"></span></p> +<p>In context, there is nothing particularly wrong with the utilities themselves and functionally they work as expected. One benefit that coreutils provide over almost every other implementation is improved localization. However, there is complexity that is at times not really justified. Let's take the utility program &quot;true&quot; as an example, whose sole purpose is to do nothing and exit with success. A simple C program can be constructed to perform this function perfectly well with the following code:</p> +<pre style="background-color:#2b303b;"> +<code class="language-C" data-lang="C"><span style="color:#b48ead;">#include </span><span style="color:#c0c5ce;">&lt;</span><span style="color:#a3be8c;">stdio.h</span><span style="color:#c0c5ce;">&gt; +</span><span style="color:#b48ead;">int </span><span style="color:#8fa1b3;">main</span><span style="color:#c0c5ce;">() { </span><span style="color:#b48ead;">return </span><span style="color:#d08770;">0</span><span style="color:#c0c5ce;">; } +</span></code></pre> +<p>This simple code compiles to a 16k executable (stripped) and does everything that we need it to do. But we can do even better actually, with a single line shell script:</p> +<pre style="background-color:#2b303b;"> +<code class="language-Bash" data-lang="Bash"><span style="color:#c0c5ce;">#!/bin/sh +exit 0 +</span></code></pre> +<p>This little gem reads as a whopping 4k on disk on my machine and also fulfills exactly what we expect the program to do. So why exactly is the file true.c in coreutils 80 lines that compiles to a 40k executable after stripping?</p> +<p>I had at one point tried replacing coreutils and util-linux completely with the sbase and ubase packages from <a href="https://suckless.org/">suckless.org</a>. The main issue with doing this is that not all of the utilities are feature complete yet. They are fine for day to day use navigating around in a shell environment, but begin to fail when running scripts that are meant to be portable or building software, when an unsupported flag causes the utility call to fail with an error. I do have a branch containing the entirety of sbase and ubase with the source reconfigured to match our build tree layout of one program per directory, and building using hhl.cprog.mk.</p> +<p>I have always had a lot of admiration for BSD systems and ran FreeBSD as my main OS on several machines for a number of years. Too much is actually made of the differences between a BSD userland nad a GNU userland, as the vast majority of the time they are functionally equivalent. As mentioned previously, the GNU utilities have better localization. They also accept GNU long options. I have never found the lack of long options to be an issue; on the contrary short options are faster to type and are generally the go to choice for those familiar with the shell interface. Therefore I decided to start working on porting BSD userland to Linux with Glibc, using our HitchHiker build system. As there are a great many small utilities this is a process that isn't going to happen overnight, but has already yielded a surprising amount of success with modest effort.</p> +<p>There are a few projects already in place that do something similar, such as <a href="https://github.com/Duncaen/lobase">lobase</a>, that approach the issues of missing functions and macros by creating a compatibility library and then linking the utilities to it. While this is a perfectly valid approach, it has the drawback of increasing code size somewhat. I have also found so far that simply removing macros that don't exist on a Glibc system is enough to get the code to compile with a simple <code>gcc -Wall file.c</code>. At other times one can simply translate from one function to another, for instance from strlcpy to strncpy, the latter which is available with Glibc and does very near the same thing.</p> +<p>Without getting too further involved in the details, so far I have working copies of the utilities apply, banner, basename, cat, dirname, grep and tr taken from NetBSD. Grep was previously a separate package that has been removed. We previously already had the awesome pax utility imported from MirOS, and have now removed GNU tar in favor of a simlink to pax, which functions very well as a tar replacement. Additionally, the utilities true, false, and which have been replaced with one line shell scripts (which is a zsh builtin, which we can call from another shell with a one line zsh script).</p> +<p>The result so far is a mixed userland that is predominately composed of GNU utilities with a sprinkling of BSD licensed utilities thrown in. The endgame is to replace the bulk of the GNU utilities with ports of the BSD versions, including many utilities such as apply, banner and pax that do not traditionally even exist on a Linux system. I may supplement this over time with utilities taken from sbase, ubase, or lobase as difficulties are encountered in porting the NetBSD utils, but would like to do as much straight porting against the actual system libraries as possible, as opposed to linking against compatibility libraries.</p> +<p>On to the build tree infrastructure improvements mentioned in the post title. A few posts back I mentioned standardizing the way that we handle packages that need extra steps beyond &quot;make install&quot;. Similarly, I'm working on simplifying the use of build systems other than autotools. One feature of autotools that we leverage by default is that we can build outside of the source tree in a separate object directory. This is the default, but not all packages support this. There are even a few packages out there that mostly mimic autotools from an end user perspective, having a home-brewed configure script, but generally do not support building in an object directly. So now by simply setting the variable ${no_objdir} we can handle those cases in a unified way, and our build system knows that ${objdir}/.dirstamp is not a dependency of the configuration stage for instance.</p> +<p>Additionally, some packages eschew any kind of configuration step entirely and build just by running make. We now handle this in a more unified manner as well, rather than on a per-package basis, by setting <code>${use_configure}</code> to false.</p> +<p>These changes are minor, but are going to go a long way towards implementing a ports tree with a more concise and understandable codebase.</p> + + + + Imported source, pkgsrc on Arm woes, and make includes + 2020-08-01T00:00:00+00:00 + 2020-08-01T00:00:00+00:00 + + /news/imported-source-pkgsrc-on-arm-woes-and-make-includes/ + <p>I think we'll start this post discussing some of the differences and misconceptions of same between BSD make and GNU make. In the case of BSD make we're primarily referring to NetBSD make, which is a greatly improved version of the historical Unix make<span id="continue-reading"></span> utility, and has also been imported into FreeBSD. Among the BSD camp, GNU make is seen as a second citizen. Their version of make is leveraged for building the entire system, without using autotools except in the case of imported external source which has been autotooled by it's authors. It is also the utility that wraps all of the functionality of FreeBSD ports and NetBSD pkgsrc - downloading, patching, compiling and packaging third party software. The complete infrastructure is quite impressive.</p> +<p>Much of this functionality lies in leveraging included Makefiles, much in the way that C headers can be included to pull in function definitions, and also similar to the concept of shared libraries. These included .mk files, usually located in /usr/share/mk on a BSD system, allow for extremely concise Makefiles throughout the source tree to just specify a few variables and then pull in all of the targets from an inclued file. The most prominent are probably bsd.prog.mk and bsd.lib.mk, which tell make how to build C programs and C libraries respectively.</p> +<p>It is a common misconception that this functionality only exists in BSD make. GNU make does have this capability as well and I leverage it quite heavily in HitchHiker. Admittedly, it is more developed in BSD make, but the limitations of GNU make in comparison are fairly trivial and easy to work around. One of the sillier things is the default search path that GNU make uses the look for included Makefiles. By default this path starts in the current directory and proceeds through /usr/local/include, /usr/include and finally /usr/gnu/include. Leveraging this would sprinkle .mk files through what are by convention the location of C header files, or alternatively using /usr/gnu/include. I have yet to see a system that has a /usr/gnu directory (maybe it was planned for Hurd?) and I'm not keen on it. As of the last commit, HitchHiker now patches make to no longer search /usr/gnu/include and to now search instead /usr/local/include/mk and /usr/include/mk, the latter being our new default directory. This allows us to include a .mk file by name, without specifying a full or relative path, and at the same time keeps all of our .mk files separated from the system C headers.</p> +<p>So what exactly does BSD make have over GNU make?</p> +<ul> +<li>Slightly more powerful conditionals. In addition to ifdef, ifndef, ifeq and ifneq BSD make also has a simple if, and allows chaining conditionals with the &amp;&amp; and || operators much like shell syntax. By comparison GNU make must nest conditionals for similar functionality.</li> +<li>Included Makefiles can be relative to the install or source prefix. This is quite powerful for building large projects in custom site locations.</li> +<li>Possibly others I have not discovered yet, however in practice GNU make can do -everything- that BSD make does if you take the time to learn how to use it.</li> +</ul> +<p>As part of creating a more integrated build framework, my most recent commit contains a basic analog for bsd.prog.mk, hhl.cprog.mk (cprog due to my not assuming that all programs are written in C!) which now allows extremely concise Makefiles for source code that has been imported into the base system. In the case of rpcgen the following Makefile is all that is needed:</p> +<pre style="background-color:#2b303b;"> +<code class="language-Makefile" data-lang="Makefile"><span style="color:#65737e;"># Makefile - hhl - /usr/src/world/rpcgen +# Copyright 2020 Nathan Fisher &lt;nfisher.sr@gmail.com&gt; +# +</span><span style="color:#bf616a;">progname </span><span style="color:#c0c5ce;">= </span><span style="color:#a3be8c;">rpcgen +</span><span style="color:#bf616a;">cflags </span><span style="color:#c0c5ce;">+= </span><span style="color:#a3be8c;">-g +</span><span style="color:#b48ead;">include </span><span style="color:#a3be8c;">hhl.cprog.mk +</span></code></pre> +<p>As can be seen, there are really only three lines. Lines 1-3 are comments, line 4 specifies the program name, line 5 adds -g to the compiler flags, and line 6 includes hhl.cprog.mk. If you look inside the rpcgen subdirectory of the build tree you will see the following structure:</p> +<pre style="background-color:#2b303b;"> +<code><span style="color:#c0c5ce;">. + ├── Makefile + ├── man + │ └── rpcgen.1 + ├── README + └── src + ├── config.h + ├── proto.h + ├── rpc_clntout.c + ├──***snip +</span></code></pre> +<p>Our included Makefile will generate object files for any .c files in the src/ subdirectory, link those objects into an executable and install man/rpcgen.1 in ${install_prefix}/share/man/man1. It has logic to differentiate man1 from man8 and also installs html and text docs in the doc/ subdirectory. If we needed to specify additional cppflags, cflags, ldflags or libs to link with we would just append them to those vars (by convention I use lower case so as to not interfere with any CFLAGS etc. specified on the command line or in an external build system). If we want to create links to our executable they just need to be specified in the binlinks variable. Defining the variable finish and writing a finish target allows us to do anything else additional that might need done, like installing configuration files or runtime data. In short, while being a fairly tidy 102 lines (some of which is whitespace and comments) hhl.cprog.mk successfully works as an analog for bsd.prog.mk.</p> +<p>The short list of programs leveraging this framework now include the ee text editor, rpcgen, mksh and lksh shells and the pax archive/copy/link utility. At some later date the source tree will be reorganized to move these directories into bin or usr.bin much like is done in the BSD source trees, as well as importing other sources directly into the tree and &quot;HitchHikerizing&quot; their build systems.</p> +<p>The title promised some pkgsrc updates relating to arm challenges. In a nutshell pkgsrc seems to be broken in several places for arm on Linux. Perhaps most annoyingly is the buildlink system, which is supposed to make it simpler for packages to find the libs that they are to link against by moving everything into work/.buildlink/lib (relative to the subdirectory that bmake was run from). So far I've discovered that libuuid, libexpat, libstdc++, libacl and libattr libtool archives are skipped every time on arm for reasons that I have not yet discovered. I can work around it by manually linking the .la files in from /usr/lib, but this requires an annoying level of manual intervention. Nevertheless I have managed to build the full LXDE, XFCE and Mate desktops, several shells, emacs, nano and pico editors, Inkscape and am on to building Gimp presently on my RPI. On x86_64 I have all of that plus a fairly complete server stack, Abiword, Gnumeric and the Firefox browser built.</p> +<p>In short, when q3 releases (and it really is coming soon) there will be a fairly comprehensive selection of software available on both architectures via pkgsrc. However, in the long run we're going to revisit the idea of creating our own ports tree which leverages GNU make and the infrastructure of .mk files that now reside in /usr/include/mk, adding funcionality for creating binary package tarballs and downloading and installing them. This will most likely involve a simple homebrewed package format that takes some inspiration from BSD tarballs, Slackware tarballs and Arch Linux tarballs. A sneak peak in the current build tree at how we register the installation of the base system will give you an idea. We're going to keep things purposely simple and avoid writing a full fledged package manager. More details to come.</p> + + + diff --git a/public/tags/porting/index.html b/public/tags/porting/index.html new file mode 100644 index 0000000..32718c4 --- /dev/null +++ b/public/tags/porting/index.html @@ -0,0 +1,613 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Porting"

    +
      + +
      + + Cross Build Progress + +
      2021-02-08
      + +

      The sysroot/cross-compile build tree is nearly able to build all of HitchHiker +now, with only a few packages left to tweak....

      + + Read More -> +
      + +
      + + Compiling for aarch64/riscv64 from qemu user mode chroot + +
      2021-01-28
      + +

      This is a novel approach that I've been experimenting with lately, to do some +legwork towards supporting architectures for which I either don't have physical +hardware or else the hardware is limited in capability so much as to make native +compilation impractical....

      + + Read More -> +
      + +
      + + Goodbye GNU coreutils, importing sed + +
      2020-09-22
      + +

      The porting effort has reached the point where it is now safe to remove GNU +coreutils. At this point, there are now only 16 utilities provided by the +coreutils package...

      + + Read More -> +
      + +
      + + Continued porting of BSD userland against remaining self-hosting + +
      2020-09-03
      + +

      At this juncture we're well over the halfway point in regards to providing a predominately BSD userland in HitchHiker, with over 90 console utilities ported against a total of 59 remaining programs brought in from GNU coreutils. That total includes...

      + + Read More -> +
      + +
      + + Editors, glibc-2.32 + +
      2020-08-28
      + +

      Most people who use any form of Unix have a favorite editor. Most of them also think that everyone else is wrong...

      + + Read More -> +
      + +
      + + Improved porting with libbsd + +
      2020-08-24
      + +

      The libbsd project was begun originally by the developers of the Debian K-FreeBSD project as a means of addressing differences in the available functions, headers and c macros between BSD libc and GNU libc. I have imported the source...

      + + Read More -> +
      + +
      + + Porting NetBSD userland, infrastructure improvements + +
      2020-08-17
      + +

      As noted previously, I have some issues with the complexity of GNU autotools and the bloat that it introduces into building what should be very simple programs. I pointed out coreutils as one of the worst offenders at that time, and have been exploring ways to either port coreutils to a simpler build system or outright replace the package....

      + + Read More -> +
      + +
      + + Imported source, pkgsrc on Arm woes, and make includes + +
      2020-08-01
      + +

      I think we'll start this post discussing some of the differences and misconceptions of same between BSD make and GNU make. In the case of BSD make we're primarily referring to NetBSD make, which is a greatly improved version of the historical Unix make...

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/programming/atom.xml b/public/tags/programming/atom.xml new file mode 100644 index 0000000..fdcac50 --- /dev/null +++ b/public/tags/programming/atom.xml @@ -0,0 +1,56 @@ + + + - Programming + + + Zola + 2021-02-08T00:00:00+00:00 + /tags/programming/atom.xml + + Cross Build Progress + 2021-02-08T00:00:00+00:00 + 2021-02-08T00:00:00+00:00 + + /news/cross-build-progress/ + <p>The sysroot/cross-compile build tree is nearly able to build all of HitchHiker +now, with only a few packages left to tweak.</p> +<span id="continue-reading"></span> +<ul> +<li>pkg-config: This is messy in general. There is a circular dependency with Glib, +satisfied by the pkg-config maintainers incorporating a recent version of Glib +directly into the distribution. However, Glib requires extra work to cross +compile. I've looked into it but not yet implemented the fixes.</li> +<li>XML::Parser: Perl was actually able to cross compile successfully to both +aarch64 and riscv64 using perl-cross. XML::Parser is a perl module, uses perl +during it's build and perl modules in general have their own home baked build +system which does not play well with cross compiling. I'm investigating whether +it really needs to be in the base system or can be moved to ports.</li> +<li>Ninja and Meson: may not actually be needed in the base system?</li> +<li>zstd: Uses a Makefile or Meson for it's build system. I've already dealt with +a few projects that built with a plain Makefile and was just putting this off to +be honest, as a few of the others required significant reworking to get a +functional build.</li> +<li>iproute2: Another one using it's own home grown configure script which will +likely require much manual intervention.</li> +<li>mandoc: This builds after a fair amount of manual intervention. However, it +segfaults on riscv64. Unknown whether this is due to qemu or if it will segfault +on real hardware, but not a great sign. I'm looking at porting an earlier man +utility from 4.4BSD-lite. Man should be a simple program.</li> +<li>file: Our file utility, descended from the relatively recent OpenBSD sandboxed +file, built fine on intel and Arm architectures, but the original author pulled +in some SECCOMP defs that are architecture dependent and failed to account for +any architectures besides Intel and Arm. I've hacked the source so that it +compiles on Riscv64. However, there appears to be more work to be done to get it +fully working on that arch. +There were, of course, numerous hiccups along the way. I'll elaborate on a few.</li> +</ul> +<p>Bzip2 has it's own Makefile based build. It also has a separate Makefile to build the shared version of the library, and even when you do build the shared version it uses the static version for bzip2recover. In true hitchhiker fashion after mucking about with what was already there for a while I wound up just discarding it and imported the source directly into the build tree, substitution our own infrastructure. This required creating hhl.sharedlib.mk, which was overdue anyway. At the moment we're building both shared and static versions of libbz2, and linking the bzip2 and bzip2recover binaries against the shared library.</p> +<p>Recent versions of util-linux include a new utility, hardlink, which links against pcre2 if available. However, the build system detects pcre2 on the host system, not in the sysroot, and there is no provision to manually disable linking against pcre2. Interestingly, there are two competing implementations of the hardlink program, and the one currently in util-linux is potentially going to be replaced as it is not the more fully featured one. There is some interesting discussion of the issue on the mailing list. In the meantime, since it is a potentially useful utility, I just imported the source of the preferred version and am building it using our build infrustructure.</p> +<p>And now, gettext. This one really pissed me off. Recent versions of gettext include libtextstyle, a library for formatting text for display. The included gettext utilities link against libtextstyle. However, the headers don't yet exist at the time the utilities are built, so the only reason the build is not failing for everyone is that they are building against the headers already present on the host system. The libtextstyle subdirectory is not even in the library search path on the command line.</p> +<p>Now, this is just bad practice. It means that if those headers are updated for a new release, then distro packagers will be building against the old headers, potentially causing undefined behavior and random bugs. I only caught it because the build utterly fails in a sysroot environment.</p> +<p>Furthermore, one of the missing headers, included by textstyle.h, is stdbool.h, because for some reason they're worried about building on systems that don't have a working boolean implementation. This is just crazy at this point. It's no wonder GNU projects get bloated.</p> +<p>In the end, I pulled the headers out of the host system, put them in the appropriate directory inside the source directory, compiled, then did a chroot into the sysroot and did a native compile just to be sure that the headers matched. Those headers are now imported into the build tree and are placed into the source directory after running configure, and the Makefile is patched to search the build directory before the system header directory. It's not a full fix that I would push upstream but it works. A full fix would build the headers first, before building the utilities, then link against them. I didn't feel like going that in depth fixing their build.</p> +<p>In a general sense, even though I feel that autotools based builds are often extremely bloated and inefficient, based on the mistakes that I keep fixing in other project's home brewed Makefiles to enable cross compilation (as well as simple things like installing into a DESTDIR) I can really see some of the strengths of autotools. Most of the time, all that is needed to cross compile is setting --host and either passing --sysroot in the CFLAGS or, if supported the the specific package, passing --with-sysroot to configure. That isn't to say that autotools is perfect. Frequently the package maintainers compile tests against the host system or check for library support by looking in /usr/include. After a while you begin to realize that you're literally fixing the same mistake repeatedly, and start to feel despair for the human race. And then it works, and everything is all right again.</p> + + + diff --git a/public/tags/programming/index.html b/public/tags/programming/index.html new file mode 100644 index 0000000..1f66a04 --- /dev/null +++ b/public/tags/programming/index.html @@ -0,0 +1,531 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Programming"

    +
      + +
      + + Cross Build Progress + +
      2021-02-08
      + +

      The sysroot/cross-compile build tree is nearly able to build all of HitchHiker +now, with only a few packages left to tweak....

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/qemu/atom.xml b/public/tags/qemu/atom.xml new file mode 100644 index 0000000..a0e9f4a --- /dev/null +++ b/public/tags/qemu/atom.xml @@ -0,0 +1,49 @@ + + + - Qemu + + + Zola + 2021-01-28T00:00:00+00:00 + /tags/qemu/atom.xml + + Compiling for aarch64/riscv64 from qemu user mode chroot + 2021-01-28T00:00:00+00:00 + 2021-01-28T00:00:00+00:00 + + /news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/ + <p>This is a novel approach that I've been experimenting with lately, to do some +legwork towards supporting architectures for which I either don't have physical +hardware or else the hardware is limited in capability so much as to make native +compilation impractical.</p> +<span id="continue-reading"></span> +<p>Qemu, in addition to running full virtual machines, also has what is known as +&quot;user mode emulation&quot;. In a nutshell, when using qemu in this way one is able to +run binaries for another architecture without creating virtual hardware or a +virtual kernel. In this case, qemu just acts as a translation layer, translating +instructions designed for one ISA to instructions that can be executed on the +host processor. By not running a virtual kernel on virtual hardware, there is +actually a huge savings of system resources.</p> +<p>Setting this up, while not trivial, is surprisingly straightforward. First, a +suitable root filesystem must be created. Qemu must be compiled statically, and +the static binary copied into the chroot filesystem. Then, by using binfmt-misc, +one can register this qemu executable as the program interpreter for binaries of +the guest architecture. In this way it is actually possible to set up a functional +chroot on a well spec'ed X86_64 machine running Risc-V binaries. There is a bit +more to getting this to work, but suffice to say that it does in fact work, +within the normal limitations of a chroot.</p> +<p>While running foreign binaries does incur some performance penalty, this method +is actually proving to be a significant improvement over, say, compiling for +aarch64 on a Raspberry Pi 4, as I have four times the memory and a significantly +faster processor with twice the number of cores available. And it has the benefit +of not requiring a cross compiler. Instead, one is running a native compiler via +an emulation layer. But this eliminates many of the pain points of cross compiling. +It's a neat trick.</p> +<p>So what does this mean for HitchHiker? It means that work is now well underway +towards running HitchHiker on a BeagleV when they become widely available later +this year. I have been eagerly waiting to dip toes into Risc-V as soon as an +affordable option was available, and it looks like said option is now on the +horizon.</p> + + + diff --git a/public/tags/qemu/index.html b/public/tags/qemu/index.html new file mode 100644 index 0000000..e9463c5 --- /dev/null +++ b/public/tags/qemu/index.html @@ -0,0 +1,533 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Qemu"

    +
      + +
      + + Compiling for aarch64/riscv64 from qemu user mode chroot + +
      2021-01-28
      + +

      This is a novel approach that I've been experimenting with lately, to do some +legwork towards supporting architectures for which I either don't have physical +hardware or else the hardware is limited in capability so much as to make native +compilation impractical....

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/riscv/atom.xml b/public/tags/riscv/atom.xml new file mode 100644 index 0000000..8db491f --- /dev/null +++ b/public/tags/riscv/atom.xml @@ -0,0 +1,131 @@ + + + - RiscV + + + Zola + 2021-02-08T00:00:00+00:00 + /tags/riscv/atom.xml + + Cross Build Progress + 2021-02-08T00:00:00+00:00 + 2021-02-08T00:00:00+00:00 + + /news/cross-build-progress/ + <p>The sysroot/cross-compile build tree is nearly able to build all of HitchHiker +now, with only a few packages left to tweak.</p> +<span id="continue-reading"></span> +<ul> +<li>pkg-config: This is messy in general. There is a circular dependency with Glib, +satisfied by the pkg-config maintainers incorporating a recent version of Glib +directly into the distribution. However, Glib requires extra work to cross +compile. I've looked into it but not yet implemented the fixes.</li> +<li>XML::Parser: Perl was actually able to cross compile successfully to both +aarch64 and riscv64 using perl-cross. XML::Parser is a perl module, uses perl +during it's build and perl modules in general have their own home baked build +system which does not play well with cross compiling. I'm investigating whether +it really needs to be in the base system or can be moved to ports.</li> +<li>Ninja and Meson: may not actually be needed in the base system?</li> +<li>zstd: Uses a Makefile or Meson for it's build system. I've already dealt with +a few projects that built with a plain Makefile and was just putting this off to +be honest, as a few of the others required significant reworking to get a +functional build.</li> +<li>iproute2: Another one using it's own home grown configure script which will +likely require much manual intervention.</li> +<li>mandoc: This builds after a fair amount of manual intervention. However, it +segfaults on riscv64. Unknown whether this is due to qemu or if it will segfault +on real hardware, but not a great sign. I'm looking at porting an earlier man +utility from 4.4BSD-lite. Man should be a simple program.</li> +<li>file: Our file utility, descended from the relatively recent OpenBSD sandboxed +file, built fine on intel and Arm architectures, but the original author pulled +in some SECCOMP defs that are architecture dependent and failed to account for +any architectures besides Intel and Arm. I've hacked the source so that it +compiles on Riscv64. However, there appears to be more work to be done to get it +fully working on that arch. +There were, of course, numerous hiccups along the way. I'll elaborate on a few.</li> +</ul> +<p>Bzip2 has it's own Makefile based build. It also has a separate Makefile to build the shared version of the library, and even when you do build the shared version it uses the static version for bzip2recover. In true hitchhiker fashion after mucking about with what was already there for a while I wound up just discarding it and imported the source directly into the build tree, substitution our own infrastructure. This required creating hhl.sharedlib.mk, which was overdue anyway. At the moment we're building both shared and static versions of libbz2, and linking the bzip2 and bzip2recover binaries against the shared library.</p> +<p>Recent versions of util-linux include a new utility, hardlink, which links against pcre2 if available. However, the build system detects pcre2 on the host system, not in the sysroot, and there is no provision to manually disable linking against pcre2. Interestingly, there are two competing implementations of the hardlink program, and the one currently in util-linux is potentially going to be replaced as it is not the more fully featured one. There is some interesting discussion of the issue on the mailing list. In the meantime, since it is a potentially useful utility, I just imported the source of the preferred version and am building it using our build infrustructure.</p> +<p>And now, gettext. This one really pissed me off. Recent versions of gettext include libtextstyle, a library for formatting text for display. The included gettext utilities link against libtextstyle. However, the headers don't yet exist at the time the utilities are built, so the only reason the build is not failing for everyone is that they are building against the headers already present on the host system. The libtextstyle subdirectory is not even in the library search path on the command line.</p> +<p>Now, this is just bad practice. It means that if those headers are updated for a new release, then distro packagers will be building against the old headers, potentially causing undefined behavior and random bugs. I only caught it because the build utterly fails in a sysroot environment.</p> +<p>Furthermore, one of the missing headers, included by textstyle.h, is stdbool.h, because for some reason they're worried about building on systems that don't have a working boolean implementation. This is just crazy at this point. It's no wonder GNU projects get bloated.</p> +<p>In the end, I pulled the headers out of the host system, put them in the appropriate directory inside the source directory, compiled, then did a chroot into the sysroot and did a native compile just to be sure that the headers matched. Those headers are now imported into the build tree and are placed into the source directory after running configure, and the Makefile is patched to search the build directory before the system header directory. It's not a full fix that I would push upstream but it works. A full fix would build the headers first, before building the utilities, then link against them. I didn't feel like going that in depth fixing their build.</p> +<p>In a general sense, even though I feel that autotools based builds are often extremely bloated and inefficient, based on the mistakes that I keep fixing in other project's home brewed Makefiles to enable cross compilation (as well as simple things like installing into a DESTDIR) I can really see some of the strengths of autotools. Most of the time, all that is needed to cross compile is setting --host and either passing --sysroot in the CFLAGS or, if supported the the specific package, passing --with-sysroot to configure. That isn't to say that autotools is perfect. Frequently the package maintainers compile tests against the host system or check for library support by looking in /usr/include. After a while you begin to realize that you're literally fixing the same mistake repeatedly, and start to feel despair for the human race. And then it works, and everything is all right again.</p> + + + + Compiling for aarch64/riscv64 from qemu user mode chroot + 2021-01-28T00:00:00+00:00 + 2021-01-28T00:00:00+00:00 + + /news/compiling-for-aarch64riscv64-from-qemu-user-mode-chroot/ + <p>This is a novel approach that I've been experimenting with lately, to do some +legwork towards supporting architectures for which I either don't have physical +hardware or else the hardware is limited in capability so much as to make native +compilation impractical.</p> +<span id="continue-reading"></span> +<p>Qemu, in addition to running full virtual machines, also has what is known as +&quot;user mode emulation&quot;. In a nutshell, when using qemu in this way one is able to +run binaries for another architecture without creating virtual hardware or a +virtual kernel. In this case, qemu just acts as a translation layer, translating +instructions designed for one ISA to instructions that can be executed on the +host processor. By not running a virtual kernel on virtual hardware, there is +actually a huge savings of system resources.</p> +<p>Setting this up, while not trivial, is surprisingly straightforward. First, a +suitable root filesystem must be created. Qemu must be compiled statically, and +the static binary copied into the chroot filesystem. Then, by using binfmt-misc, +one can register this qemu executable as the program interpreter for binaries of +the guest architecture. In this way it is actually possible to set up a functional +chroot on a well spec'ed X86_64 machine running Risc-V binaries. There is a bit +more to getting this to work, but suffice to say that it does in fact work, +within the normal limitations of a chroot.</p> +<p>While running foreign binaries does incur some performance penalty, this method +is actually proving to be a significant improvement over, say, compiling for +aarch64 on a Raspberry Pi 4, as I have four times the memory and a significantly +faster processor with twice the number of cores available. And it has the benefit +of not requiring a cross compiler. Instead, one is running a native compiler via +an emulation layer. But this eliminates many of the pain points of cross compiling. +It's a neat trick.</p> +<p>So what does this mean for HitchHiker? It means that work is now well underway +towards running HitchHiker on a BeagleV when they become widely available later +this year. I have been eagerly waiting to dip toes into Risc-V as soon as an +affordable option was available, and it looks like said option is now on the +horizon.</p> + + + + On Libc, rust experiments, and Risc-V + 2020-11-15T00:00:00+00:00 + 2020-11-15T00:00:00+00:00 + + /news/on-libc-rust-experiments-and-risc-v/ + <h2 id="libc">LibC</h2> +<p>Recently I have continued the exercise of re-implementing certain base system utilities in C, uncovering more and more differences between BSD and GNU libc implementations. At this point it's really easy to say that I have a strong preference for the BSD extensions to the libc standard as opposed to the GNU extensions. The Berkeley programmers, when they added features, added truly useful features.</p> +<p>Take random number generation as an example. It is fairly common when programming on Linux to open and read from /dev/urandom. BSD, in the meantime, offers a group of functions in libc (arc4random) that combine pseudo-random number generation with cryptography to produce pseudo-random data that is truly difficult to guess, with a low CPU overhead.</p> +<p>Another small place where I found the BSD libc to offer superior functionality was when I was writing my own version of the <em>mktemp</em> utility. The BSD versions of the mkstemp and mkdtemp functions allow one to give a template with a variable-length suffix, to give a choice between quick (with a smaller suffix) or as secure as you want to be. By increasing the suffix length, one can exponentially increase the number of possible filenames, making temp files a more difficult vector of attack.</p> +<p>The GNU (and musl actually) versions of these functions only allow a six character random suffix, period. In fact, my earlier port of mktemp from BSD did not function as expected in this regard, and the GNU coreutils programmers had to roll their own functions to get equivalent functionality to the BSD counterparts. I have elected to not abstract this deficiency away in my code, and the HHL version of the mktemp utility uses the available versions of mkstemp and mkdtemp, with a six character suffix. I would rather maintain the simplicity of the program than to take a risk of introducing bugs by writing my own functions here.</p> +<p>In any event, the work that I have been doing here makes a strong case for a future port of musl, with the additions of some BSD functions ported to work with musl, as our base C library. As attractive as BSD libc is, a direct port is unrealistic as so much of it is tied to kernel interfaces that differ on Linux. I just find it a shame that Linux users are mostly saddled with such a piece of crap (bloated while still being less functional) in such an important position in the software stack.</p> +<h2 id="rust">Rust</h2> +<p>There are a lot of programming languages, and they tend to come and go regularly. As programming languages go, it's a safe bet that C, C++, Java and Python will be sticking around. Of the less pervasive languages Go and Rust seem to be well ahead of the pack as pertaining to mass adoption. Go is interesting, largely because of what it leaves out. Go is simple. Go avoids the feature creep that seems to be inevitable in all modern software. However, Go achieves memory safety by using garbage collection. I want to like Go, but that one anti-feature prevents me from even trying it.</p> +<p>Rust, on the other hand, has feature upon feature to the point where I really am hoping that they ever finish the language someday. That said, I'm intrigued by Rust for a number of reasons. I have been toying with learning the language for a while, doing some simple learning exercises and reading the Rust Book. I recently decided to just dive in and start writing my own programs using Rust, as that seems to be the only way to truly learn a language. My first full Rust program is a clone of a C program that I wrote for generating sine lookup tables, useful in DSP applications. The C version is perfectly fine, but I basically wanted to try porting a known working program and see how well the control flow translated.</p> +<p>The process was not completely smooth, and it took quite a few iterations to get to the point where the program compiled and actually functioned. However, the documentation is excellent and provided solutions to most of my issues. The other thing that really impressed me was the compiler messages. Often, the compiler will tell you literally the exact change needed to make your program compile. Coming from C, this is a breath of fresh air. And when we're talking about Rust, chances are that if it compiles it's also going to function exactly as expected.</p> +<p>Rust is also elegant in a way that C never will be. Consider the following C code:</p> +<pre style="background-color:#2b303b;"> +<code class="language-C" data-lang="C"><span style="color:#b48ead;">for </span><span style="color:#c0c5ce;">( i = </span><span style="color:#d08770;">0</span><span style="color:#c0c5ce;">; i &lt; </span><span style="color:#d08770;">10</span><span style="color:#c0c5ce;">, i++) { + </span><span style="color:#65737e;">// some code +</span><span style="color:#c0c5ce;">} +</span></code></pre> +<p>And the equivalent Rust:</p> +<pre style="background-color:#2b303b;"> +<code class="language-Rust" data-lang="Rust"><span style="color:#b48ead;">for</span><span style="color:#c0c5ce;"> i in </span><span style="color:#d08770;">1</span><span style="color:#c0c5ce;">..</span><span style="color:#d08770;">10 </span><span style="color:#c0c5ce;">{ + </span><span style="color:#65737e;">// some code +</span><span style="color:#c0c5ce;">} +</span></code></pre> +<p>One thing that requires a different mindset when one moves from an old-school language like C, to a modern language like Rust, is that in C et al, the standard library tries to be all inclusive. Programmers (at least the good ones) try to avoid adding dependencies to anything other than the standard library. Rust, however, has Cargo. Cargo is, in effect, a built in package manager. This is not unheard of; Python has pip and has for years. In Rust, however, the standard library is quite small and everyone pretty much freely uses cargo to access functionality that is not included in libstd. In my case I used cargo to pull in the excellent clap crate, which parses command line arguments and also provides built in documentation. Compared to getopt in C, clap both does more and does it with little effort.</p> +<p>At this point int time, however, Rust is not going to be landing in the HitchHiker base system, as the only viable Rust compiler uses llvm as a backend. At some point in the future this may well change anyway, as I have been growing increasingly frustrated with both Glibc and gcc (a brief skim of some earlier blog posts will quickly turn up examples). The obvious replacements are musl and the clang compiler, which, being based on llvm, would make the further inclusion of rustc trivial.</p> +<h2 id="risc-v">Risc-V</h2> +<p>I do a fair amount of electronics experimenting and often employ various microcontrollers in my projects. Some are Atmega based, while I have more recently fallen in love with the ATSAMD51 Arm Cortex M4 processor based boards from Adafruit. Just this week I have acquired something new to me: a Risc-V based MCU from Seeed Studio, the Sipeed Longan Nano. It's a brilliant chip, although quite lacking in documentation and example code. I'll be playing with it a lot.</p> +<p>The Nano, however, is a microcontroller, not a full SOC that is capable of running Linux. Right now there are few options for developers wanting to experiment with Risc-V with a full operating system, and the best ones are all prohibitively expensive for their capability. Due out next year, however, is the PicoRio board from Rios labs that is described as close in form factor and capabilities to most Arm boards based around the RPI format. Provided this board is not vaporware and actually does materialize at a reasonable cost, I intend for HItchHiker Linux to be running on it as soon as feasible. I intend to make HitchHiker one of the very first options independent of distros such as Debian and Fedora, and to make Risc-V a first class citizen. It is my hope that in doing so HitchHiker might help to push along the adoption of truly open hardware on which to run open software.</p> + + + diff --git a/public/tags/riscv/index.html b/public/tags/riscv/index.html new file mode 100644 index 0000000..fb41615 --- /dev/null +++ b/public/tags/riscv/index.html @@ -0,0 +1,554 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "RiscV"

    + +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/roadmap/atom.xml b/public/tags/roadmap/atom.xml new file mode 100644 index 0000000..d7aa6dc --- /dev/null +++ b/public/tags/roadmap/atom.xml @@ -0,0 +1,55 @@ + + + - Roadmap + + + Zola + 2020-09-03T00:00:00+00:00 + /tags/roadmap/atom.xml + + Continued porting of BSD userland against remaining self-hosting + 2020-09-03T00:00:00+00:00 + 2020-09-03T00:00:00+00:00 + + /news/continued-porting-of-bsd-userland-against-remaining-self-hosting/ + <p>At this juncture we're well over the halfway point in regards to providing a predominately BSD userland in HitchHiker, with over 90 console utilities ported against a total of 59 remaining programs brought in from GNU coreutils. That total includes<span id="continue-reading"></span>, of course, some programs that are not included in GNU coreutils. Some of the utilities replace standalone GNU packages, such as grep and diff, while some are utilities that may not be present on most Linux distributions, such as pax or leave. In general, the BSD utilities have compatible functionality, as both GNU and BSD have mostly embraced the POSIX standard, but with a few caveats where there are extensions made to the standard. The biggest differences reflect a difference in philosophy, as the BSD utils are quite small and include only what they must, while the GNU versions are all (yes all) larger and accept more options. GNU particularly accept long options and in general have better internationalization. The GNU utilities also accept the --help option, giving a brief summary of their function. BSD utilities specifically omit this functionality, as each command comes with a man page, which would duplicate functionality.</p> +<p>One of the dangers in just blindly replacing the usual GNU userland on Linux is that when the accepted options differ slightly, some scripts may not run as expected. This also can affect building packages from source if care is not taken to stick with only POSIX specified options when writing Makefiles. To some extent I have been working to minimize the effects here by taking the time to verify each utility works as expected and in some cases implementing options that most users expect, such as the -v switch (verbose) for the ln and rmdir utilities. In other cases, such as the much abused -a or --preserve-attributes options of GNU cp, implementing equivalent functionality in the BSD port is definitely non-trivial, and many people are just trying to copy directories recursively while preserving symlinks when they use 'cp -a', and not actually wanting to preserve ownership or modification times. Those cases can be served by using BSD cp as 'cp -R'. If preserving attributes is the desired behavior, then this is one of the tradeoffs being made and extra steps will have to be taken with chown and touch.</p> +<p>In order to ensure that HitchHiker always remains self-hosting I have been running bootstrapping the system from itself multiple times during the porting effort. A few issues have been found and fixed along the way, but it has been an overall smooth transition. In one case, I had actually misused 'cp -a' myself in the busybox build (busybox is only built as part of the temporary toolchain).</p> +<p>One particularly special case is glibc, which has a hard dependency on GNU awk during build time. As I have a preference for the historical (yet still maintained) Nawk, this requires building a statically compiled Gawk early in the bootstrap process as part of the temporary tools in /toolchain, which is discarded along with the rest of the temporary tools after the bootstrap phase and does not become part of the base system. Another example of the &quot;Sheer F%$king Hubris&quot; of much GNU software, which often will only build with other GNU tools, even though other tools exist with equivalent (and sometimes superior) functionality.</p> + + + + Improved porting with libbsd + 2020-08-24T00:00:00+00:00 + 2020-08-24T00:00:00+00:00 + + /news/improved-porting-with-libbsd/ + <p>The libbsd project was begun originally by the developers of the Debian K-FreeBSD project as a means of addressing differences in the available functions, headers and c macros between BSD libc and GNU libc. I have imported the source<span id="continue-reading"></span> directly into HitchHiker and &quot;hitchhikerized&quot; the build process. Only the static library archives are built at this time. With a few tweaks and an additional &quot;compat.h&quot; header to address a few omissions, this has led to an improvement in my process of porting BSD utilities, and the vast majority of the imported utilities now link with libbsd functions. There is little measurable overhead in the resulting binaries.</p> +<p>For those utilities that are more difficult to port I have begun porting the work already done to create lobase, a portable package of OpenBSD userland, to the hitchhiker build system. I am also pulling in sources from FreeBSD now. The first program ported from FreeBSD to HHL is the ed editor, which in this case was easier to get going than the version from the NetBSD sources.</p> +<p>I have always enjoyed the venerable Unix fortune program, and always include a call to it in my shell profile. While I did consider the idea of including it by default in the HitchHiker base system, I decided to go another route and just implement something simpler from scratch. Hence, the small C program 42, which by just prints a random quote from the HitchHiker's guide universe. It accepts no options and can only be extended by editing the source. Just a bit of fun. +<img src="../../assets/screenshot_42.png" alt="screenshot_42.png" /></p> + + + + Restarting make, buildworld cleanup, default software + 2020-08-03T00:00:00+00:00 + 2020-08-03T00:00:00+00:00 + + /news/restarting-make-buildworld-cleanup-default-software/ + <p>One of the deficiencies in the HitchHiker build tree up to this point has been dealing with packages that require some manual intervention after the &quot;make install&quot; step. Originally there was no unified infrastructure to deal with this scenario. Very quickly<span id="continue-reading"></span> during testing I realized that this was an omission that was going to cause problems, as the scenario was much more common than I at first realized and implementing solutions on a per-package basis is both quite error prone and likely to introduce bugs into the build process. Up until the workarounds have involved redefining the .DEFAULT_GOAL variable and creating custom targets to finish the installation, while making the basic installation a dependency of said targets.</p> +<p>A common problem that arose out of this hodgepodge approach is that if the new targets were &quot;.PHONY&quot; targets (a target that is not an actual file) or the targets were symlinks then if the build was stopped it would error out on resuming, due to the timestamps of dependencies being the same or newer than their targets, or else a target could not actually be run because it involved moving some file that we already moved the first time it ran. This made testing new features a laborious process, as often any errors required removing the entire rootfs and restarting buildworld from the beginning.</p> +<p>When I implemented hhl.cprog.mk, I took steps to remedy this situation. If one defines the variable &quot;finish&quot; then the system will know that there are steps to be taken after &quot;make install&quot;. Then any additional steps can be added to the new target {objdir}/.finished, which is the second dependency of the &quot;finish&quot; target after &quot;install&quot;. This worked well in practice, so I have implemented the same functionality in targets.mk which is used by all &quot;external&quot; source packages (those packages for which the source is not included in the HitchHiker build tree but downloaded as tarballs during the build).</p> +<p>As a result of this, after considerable tweaking, the build can now be restarted from any point after stopping and will run to completion. I consider this to be an important milestone, as it makes future development much less arduous.</p> +<p>An important goal of HitchHiker is that the base system includes everything needed to bootstrap a full system. As such, it is unfortunately required to include certain packages that will not necessarily be required under all circumstances. A good example of this is the networking stack, as it is next to impossible to bootstrap a full system without a network connection, but we don't know if that connection is going to be wired, wireless, secured wireless, static or dynamic, etc. The first test builds of the complete system ignored this completely and only included what is needed to manually set up a static, wired connection.</p> +<p>This situation is also now remedied, as the officially distributed builds will include the dhcpcd, wireless-tools and wpa_supplicant packages. However, it is entirely possible to exclude any or all of these packages by setting appropriate variables in the file config.mk in the top level of the source tree.</p> +<p>There are now a number of things that can be tweaked when building the system from source. One can specify a list of locales to compile for glibc rather than the default of compiling all supported locales. By setting the variable rpi to true, you get the Raspberry Pi foundation kernel instead of linux mainline. And a custom kernel configuration file can be substituted for the default HitchHiker one. None of these tweaks should change the essence of the system being HitchHiker, but just allow the user some extra choice and the ability to slim the system down a fair bit, as well as speeding up the build somewhat.</p> +<p>Lastly, I want to talk about the roadmap for HitchHiker a little bit. Regarding the build tree itself, at the moment we currently have the .mk file targets.mk which includes most of the logic to build all of the packages that are downloaded and compiled as part of the base system. This file's internal logic defaults to using GNU autotools, but is flexible enough to build packages in other ways by resetting appropriate variables. This approach does work, but requires some deep knowledge of how it all is put together. As eventually I would love to see my work finding a larger audience I would like to make the infrastructure a little bit easier to understand, so for example when we graduate from pkgsrc to our own ports tree there could be some community involvement in fleshing out a complete ports tree.</p> +<p>To that end, a future goal is going to be removing the autotools logic into an &quot;autotools.mk&quot; file and creating, for instance, &quot;cmake.mk&quot; or &quot;waf.mk&quot;, which will know how to build packages using those build systems. At that point one could set the build system to use &quot;waf&quot; via a variable assignment and then include hhl.ports.mk, which would then pull in &quot;waf.mk&quot;. Doing this cleanly is an important step in the way to creating a ports tree that will be easily debugged and easy to maintain and update.</p> +<p>This theoretical &quot;hhl.ports.mk&quot; will also need logic for tracking everything to be installed by each and every package, uninstalling packages and upgrading to newer versions. In short it will need much of the logic of a package manager. I have actually implemented most of this previously in the original HitchHiker system of ten years ago. At that point installed files were tracked by creating a timestamp file before &quot;make install&quot; and then using the find utility to catch any files with a newer timestamp. This had the attractive benefit of being completely agnostic to build system, but is not without it's drawbacks. Chief among the drawbacks is that it is a rather time consuming approach, but there is also the danger that we will miss a file if it is created with the wrong time stamps, or may capture an incorrect file that has been created by another running process. For those reasons I'm planning to implement it by installing into a DESTDIR. The problems here are that one needs to be familiar with multiple build systems to know how to achieve this, and also that the concept of a DESTDIR is not universally implemented in all pieces of software out there. For the former, the solution is good old fashioned grunt work to learn the ins and outs of each build system as it is encountered. For the latter, the approach is going to be patching the build system and submitting patches upstream, with the hope that the authors will be receptive.</p> +<p>I'm going to interject at this point to point out that pkgsrc uses an entirely different approach by requiring every package directory to include a PLIST file, thus placing the burden squarely on the shoulders of the maintainer to populate this file with every file the package will install on your system. FreeBSD also uses this approach. Functionality could be included into &quot;hhl.ports.mk&quot; to use a PLIST file if it exists, skipping any automatic file discovery.</p> +<p>Then there is another elephant in the room - dependency tracking. The previous incarnation of HitchHiker kept a flat file database of every file that every package in the ports tree might install, ran &quot;file&quot; on every file in the new package to determine it's file type, then ran ldd on every elf file and compared the results to the database. It was quite effective at catching any binary dependencies. It was also slower than shit on large packages and extremely overkill much of the time. Knowing a bit better now I have no intention of going down that rabbit hole again. Instead, dependencies are just going to be manually specified by the developer in each port's Makefile. While this is somewhat error prone, it can be refined over time to be near perfect and has the advantage of speed. In addition, not all dependencies are library dependencies. Some dependencies are of the nature of expecting another program to be available to exec() at runtime, and some dependencies are simply build time requirements.</p> +<p>Now here's the point where I'm going to get controversial. BSD ports implement all of this using just make and for years had nothing like the traditional Linux package manager, instead relying on simple command line utilities to manipulate packages. I -don't- want a package manager in HitchHiker. I don't want to reinvent the wheel and write a new one, and none of the existing ones are going to be suitable. I think they're generally just complicated, poorly understood by the average user, and since there are already so many implementations it's virtually impossible at this time for one of them to become &quot;standard&quot;, thus basically making the idea of the Linux desktop an unachievable dream. No company is going to bother supporting dpkg, rpm, Slackware tarballs, Arch tarballs, Flatpack and Ubuntu snaps. It's not happening. At most they're going to release an rpm, a deb or a snap and just ignore everybody else. The ideas of the commercial world embracing desktop Linux, the year of desktop Linux, etc are all basically pipe dreams.</p> +<p>Here's what I picture instead. If we can manipulate source archives into binary packages and then install those packages all using make, we can frankly do the same with binary packages. BSD port trees and pkgsrc had already proven that would work years ago. In fact, in FreeBSD you can install binary packages that are dependencies of the port that you are building rather than building them from source, or build ports that don't have a binary package available when installing binary packages. This system functioned just fine for a long time. Their mistake a few years ago was jumping on the Linux bandwagon and writing yet another package manager, pkg. Since that time I've noticed quite a lot more issues keeping FreeBSD packages up to date, to the point where I even abandoned an installation at one point. So we're skipping it entirely, and instead I'm going to provide a &quot;binary-install&quot; target in &quot;hhl.ports.mk&quot; that will fetch and install binary packages. Easy peasy, no package manager required, unless you consider the ports tree itself to be a package manager.</p> + + + diff --git a/public/tags/roadmap/index.html b/public/tags/roadmap/index.html new file mode 100644 index 0000000..8c0c296 --- /dev/null +++ b/public/tags/roadmap/index.html @@ -0,0 +1,552 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Roadmap"

    +
      + +
      + + Continued porting of BSD userland against remaining self-hosting + +
      2020-09-03
      + +

      At this juncture we're well over the halfway point in regards to providing a predominately BSD userland in HitchHiker, with over 90 console utilities ported against a total of 59 remaining programs brought in from GNU coreutils. That total includes...

      + + Read More -> +
      + +
      + + Improved porting with libbsd + +
      2020-08-24
      + +

      The libbsd project was begun originally by the developers of the Debian K-FreeBSD project as a means of addressing differences in the available functions, headers and c macros between BSD libc and GNU libc. I have imported the source...

      + + Read More -> +
      + +
      + + Restarting make, buildworld cleanup, default software + +
      2020-08-03
      + +

      One of the deficiencies in the HitchHiker build tree up to this point has been dealing with packages that require some manual intervention after the "make install" step. Originally there was no unified infrastructure to deal with this scenario. Very quickly...

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/rust/atom.xml b/public/tags/rust/atom.xml new file mode 100644 index 0000000..a5388b6 --- /dev/null +++ b/public/tags/rust/atom.xml @@ -0,0 +1,120 @@ + + + - Rust + + + Zola + 2020-11-24T00:00:00+00:00 + /tags/rust/atom.xml + + Experimental clang/llvm based build with nightly rust + 2020-11-24T00:00:00+00:00 + 2020-11-24T00:00:00+00:00 + + /news/experimental-clangllvm-based-build-with-nightly-rust/ + <p>Ok, so this little side track has been on a slow burn for a while now, but I've currently got a rootfs that I can chroot into with the following features:</p> +<ul> +<li>Built almost entirely with llvm/clang (see caveats below)</li> +<li>Rust nightly compiler installed early in the build, accessible for all users</li> +</ul> +<span id="continue-reading"></span> +<ul> +<li>Directory hierarchy flattened, directories in /usr are symlinks to directories in /</li> +<li>libc++ standard C++ library from the llvm project instead of libstdc++ from gcc</li> +<li>Both GNU binutils and the lld linker installed (default is still binutils ld for now)</li> +<li>x86_64 only at this time, but should be portable to Arm +Some caveats:</li> +<li>llvm/clang wants to build against libstdc++, so not self hosting unless we go back to libstdc++</li> +<li>There were issues building the compiler-rt module, so llvm and clang link against libgcc</li> +<li>The GNU m4 package will not build with clang, so it had to be built with the gcc compiler from the temporary toolchain. I'm sure this is fixable, but I haven't researched it much yet.</li> +<li>The biggie: glibc refuses to try to build with any compiler except gcc. The. Sheer. Fucking. Hubris. ...again... +Nevertheless, this is all quite promising and brings up a number of possibilities going forward. As llvm by default supports multiple backends for code generation, a huge benefit is that HitchHiker would come out of the box with cross compilation ability. Also, including rust by default gives us the ability to use Rust code in the base system, with numerous potential benefits that I will explain below.</li> +</ul> +<p>The directory hierarchy is simple to understand, but is reversed in implementation from what the &quot;big&quot; distros have done. Basically most &quot;modern&quot; distros have ditched the /usr split by making /bin and /lib into symlinks to /usr/bin and /usr/lib. In this build we instead just give all programs a blank install prefix. Our root directory now takes not only all of our binaries and libraries but also has program data under /share, and we only have /usr because it is expected. everything in /usr is, in fact, just symlinks.</p> +<p>Rust is installed in a novel way using rustup. As root, we set the RUSTUP_HOME and CARGO_HOME environment variables to /rust, and make /rust/bin a symlink to /bin. That way, we can track a nightly toolchain system-wide and it will install binaries into /bin, for all users to access. We could, of course, build rustc from source, and I have in fact done so previously. However, apart from the ridiculous compilation time that it takes, this is not a great option until the language is truly stable, as a lot of the interesting bits if the Rust ecosystem need something newer than the stable branch. By using rustup and the binary toolchains, we always have access to the most up to date toolchain, and the ability to easily switch from one to another.</p> +<p>So what are the benefits of having rust available early on? For starters Rust can access C functions and export functions to C, making it relatively easy to replace parts of the software stack previously written in C with Rust code that enjoys the memory and concurrency safety checks which are not present in C. As an example, relibc is a complete C standard library written in Rust. This alternative C library is a potential future path of investigation. But on a smaller scale, there are a number of interesting cli utilities and programs written in Rust.</p> +<ul> +<li>sd is a stream editor similar to sed, but much faster and with a much easier syntax and reduced scope.</li> +<li>fd is a file finding utility which is orders of magnitude faster than find, and has interesting features like skipping .git folders by default.</li> +<li>exa is a file lister with some unique features over ls</li> +<li>The amp editor, while somewhat vi-like, has interesting extra features fuzzy file finder and a token based jump which make moving around even faster than vim. +I have also begun, partially as a learning exercise, writing my own Rust implementations of various small Unix utilities. In the future some may find their way into HitchHiker if we retain Rust in the base system.</li> +</ul> +<p>While this is still in an early evaluation phase, I think it likely that at the very least we will make the switch from gcc to clang/llvm at some future point, with the possibility of bringing some of the other features along as well. What may not make the cut is libstdc++, as replacing the C++ standard library is almost as problematic as replacing the C standard library, leading to the need to port a large amount of third party software in the future. However, I will likely be going further with Rust, and with the flattened filesystem, as I want HItchHiker to be a cutting edge distro while still adhering to traditional Unix practices. Basically, we're going to push the envelope when it makes sense to do so, but not follow fads and trends in the Linux community that might very well be dead ends (like I believe Systemd in particular to be).</p> + + + + On Libc, rust experiments, and Risc-V + 2020-11-15T00:00:00+00:00 + 2020-11-15T00:00:00+00:00 + + /news/on-libc-rust-experiments-and-risc-v/ + <h2 id="libc">LibC</h2> +<p>Recently I have continued the exercise of re-implementing certain base system utilities in C, uncovering more and more differences between BSD and GNU libc implementations. At this point it's really easy to say that I have a strong preference for the BSD extensions to the libc standard as opposed to the GNU extensions. The Berkeley programmers, when they added features, added truly useful features.</p> +<p>Take random number generation as an example. It is fairly common when programming on Linux to open and read from /dev/urandom. BSD, in the meantime, offers a group of functions in libc (arc4random) that combine pseudo-random number generation with cryptography to produce pseudo-random data that is truly difficult to guess, with a low CPU overhead.</p> +<p>Another small place where I found the BSD libc to offer superior functionality was when I was writing my own version of the <em>mktemp</em> utility. The BSD versions of the mkstemp and mkdtemp functions allow one to give a template with a variable-length suffix, to give a choice between quick (with a smaller suffix) or as secure as you want to be. By increasing the suffix length, one can exponentially increase the number of possible filenames, making temp files a more difficult vector of attack.</p> +<p>The GNU (and musl actually) versions of these functions only allow a six character random suffix, period. In fact, my earlier port of mktemp from BSD did not function as expected in this regard, and the GNU coreutils programmers had to roll their own functions to get equivalent functionality to the BSD counterparts. I have elected to not abstract this deficiency away in my code, and the HHL version of the mktemp utility uses the available versions of mkstemp and mkdtemp, with a six character suffix. I would rather maintain the simplicity of the program than to take a risk of introducing bugs by writing my own functions here.</p> +<p>In any event, the work that I have been doing here makes a strong case for a future port of musl, with the additions of some BSD functions ported to work with musl, as our base C library. As attractive as BSD libc is, a direct port is unrealistic as so much of it is tied to kernel interfaces that differ on Linux. I just find it a shame that Linux users are mostly saddled with such a piece of crap (bloated while still being less functional) in such an important position in the software stack.</p> +<h2 id="rust">Rust</h2> +<p>There are a lot of programming languages, and they tend to come and go regularly. As programming languages go, it's a safe bet that C, C++, Java and Python will be sticking around. Of the less pervasive languages Go and Rust seem to be well ahead of the pack as pertaining to mass adoption. Go is interesting, largely because of what it leaves out. Go is simple. Go avoids the feature creep that seems to be inevitable in all modern software. However, Go achieves memory safety by using garbage collection. I want to like Go, but that one anti-feature prevents me from even trying it.</p> +<p>Rust, on the other hand, has feature upon feature to the point where I really am hoping that they ever finish the language someday. That said, I'm intrigued by Rust for a number of reasons. I have been toying with learning the language for a while, doing some simple learning exercises and reading the Rust Book. I recently decided to just dive in and start writing my own programs using Rust, as that seems to be the only way to truly learn a language. My first full Rust program is a clone of a C program that I wrote for generating sine lookup tables, useful in DSP applications. The C version is perfectly fine, but I basically wanted to try porting a known working program and see how well the control flow translated.</p> +<p>The process was not completely smooth, and it took quite a few iterations to get to the point where the program compiled and actually functioned. However, the documentation is excellent and provided solutions to most of my issues. The other thing that really impressed me was the compiler messages. Often, the compiler will tell you literally the exact change needed to make your program compile. Coming from C, this is a breath of fresh air. And when we're talking about Rust, chances are that if it compiles it's also going to function exactly as expected.</p> +<p>Rust is also elegant in a way that C never will be. Consider the following C code:</p> +<pre style="background-color:#2b303b;"> +<code class="language-C" data-lang="C"><span style="color:#b48ead;">for </span><span style="color:#c0c5ce;">( i = </span><span style="color:#d08770;">0</span><span style="color:#c0c5ce;">; i &lt; </span><span style="color:#d08770;">10</span><span style="color:#c0c5ce;">, i++) { + </span><span style="color:#65737e;">// some code +</span><span style="color:#c0c5ce;">} +</span></code></pre> +<p>And the equivalent Rust:</p> +<pre style="background-color:#2b303b;"> +<code class="language-Rust" data-lang="Rust"><span style="color:#b48ead;">for</span><span style="color:#c0c5ce;"> i in </span><span style="color:#d08770;">1</span><span style="color:#c0c5ce;">..</span><span style="color:#d08770;">10 </span><span style="color:#c0c5ce;">{ + </span><span style="color:#65737e;">// some code +</span><span style="color:#c0c5ce;">} +</span></code></pre> +<p>One thing that requires a different mindset when one moves from an old-school language like C, to a modern language like Rust, is that in C et al, the standard library tries to be all inclusive. Programmers (at least the good ones) try to avoid adding dependencies to anything other than the standard library. Rust, however, has Cargo. Cargo is, in effect, a built in package manager. This is not unheard of; Python has pip and has for years. In Rust, however, the standard library is quite small and everyone pretty much freely uses cargo to access functionality that is not included in libstd. In my case I used cargo to pull in the excellent clap crate, which parses command line arguments and also provides built in documentation. Compared to getopt in C, clap both does more and does it with little effort.</p> +<p>At this point int time, however, Rust is not going to be landing in the HitchHiker base system, as the only viable Rust compiler uses llvm as a backend. At some point in the future this may well change anyway, as I have been growing increasingly frustrated with both Glibc and gcc (a brief skim of some earlier blog posts will quickly turn up examples). The obvious replacements are musl and the clang compiler, which, being based on llvm, would make the further inclusion of rustc trivial.</p> +<h2 id="risc-v">Risc-V</h2> +<p>I do a fair amount of electronics experimenting and often employ various microcontrollers in my projects. Some are Atmega based, while I have more recently fallen in love with the ATSAMD51 Arm Cortex M4 processor based boards from Adafruit. Just this week I have acquired something new to me: a Risc-V based MCU from Seeed Studio, the Sipeed Longan Nano. It's a brilliant chip, although quite lacking in documentation and example code. I'll be playing with it a lot.</p> +<p>The Nano, however, is a microcontroller, not a full SOC that is capable of running Linux. Right now there are few options for developers wanting to experiment with Risc-V with a full operating system, and the best ones are all prohibitively expensive for their capability. Due out next year, however, is the PicoRio board from Rios labs that is described as close in form factor and capabilities to most Arm boards based around the RPI format. Provided this board is not vaporware and actually does materialize at a reasonable cost, I intend for HItchHiker Linux to be running on it as soon as feasible. I intend to make HitchHiker one of the very first options independent of distros such as Debian and Fedora, and to make Risc-V a first class citizen. It is my hope that in doing so HitchHiker might help to push along the adoption of truly open hardware on which to run open software.</p> + + + + Patching pkgsrc, building rust and Arm headaches + 2020-07-20T00:00:00+00:00 + 2020-07-20T00:00:00+00:00 + + /news/patching-pkgsrc-building-rust-and-arm-headaches/ + <p>Having been working with pkgsrc for a couple weeks now there's a bit of a flow +developing, and quite a bit of progress, with a big caveat. The issues I'm +running into are that there are quite a few more build failures for Arm than +there are for x86_64.<span id="continue-reading"></span></p> +<p>Interestingly, both libdrm and MesaLib fail with similar messages about assembly +code that isn't supported on the current architecture (armv7l). In situations +like this it's hard to blame pkgsrc, as the fault is upstream from there. I'm +getting quite used to adding packages to my local tree and tweaking BSD style +Makefiles. I'm making every attempt to send fixes upstream; however, waiting for +a response each and every time is just not really going to be an option here, so +in the meantime I've decided to import the entirety of pkgsrc into git and use +that tree as the &quot;official&quot; branch for HitchHiker. This will enable our project +to build up a substantial package collection even if upsteam pkgsrc begins to +lag behind.</p> +<p>One of the problematic packages that is now often being pulled in as a dependency is rustc, the rust compiler. It's problematic on two fronts. First, unless your system has substantial amounts of memory a parallel build will fail as the memory fills up (mine has 8 gig and still fails). Second, and quite frustrating, is that rustc is only compatible with certain versions of either openssl or libressl, and our version of libressl was too new. After seeing if we could use either libressl or openssl from pkgsrc and encountering repeated failures, I just rolled back libressl to the newest version that rust supports.</p> +<p>Let me pause here for a brief commentary on rust as a programming language. There is a lot to like about rust, and it seems that the language may be with us for quite some time, as it seems to see more usage every day and has achieved a critical mass of developers. I've played around with it myself a little bit and the documentation is very good, it's probably one of the easier to learn languages, and the ecosystem as a whole is very nice when you look at all of the features that cargo brings to the table. However, I am not a fan of the fact that the rust standard library, libstd, is compiled in statically by default. This results in a simple &quot;Hello, world!&quot; executable compiling into a 7.1m binary on my machine before stripping, which comes down to 220k after stripping. When compiling the same program dynamically it comes all the way down to 16k after stripping, so we have approximately a 204k overhead <em>per binary</em> for the static libstd.</p> +<p>I am also not happy about rolling back libressl, as I would much rather have the newest possible version of what is a security critical piece of software. However, it is I believe still a better and more secure option than openssl, which most distros are still using. It's a shame that a major piece of software like rust, that is a dependency of quite a number of other packages now, has not updated to use the newer abi presented by newer versions of libressl.</p> +<p>After a couple weeks of building packages on both x86_64 and armv7l, using an identical set of packages in the base system, it is very apparent just how much more development x86_64 gets than arm. Two packages in particular illustrate this quite well - libdrm and MesaLib - both of which are major dependencies of modular Xorg. In both cases assembly code is generated by gcc that contains instructions not supported by the processor, and the only fix is to disable features in the Arm build. In the case of MesaLib this involves patching the source code. Thanks to the Arch Linux Arm team for showing the way, as my patches are adapted from their PKGBUILD.</p> +<p>There have been just a few more tweaks to the base system as I attempt to fully +finalize the build in preparation for release. The rpcgen utility that I had +incorporated proved to not fully support all features needed for building certain +packages in pkgsrc. After some search I found a newer version that had been +autotooled in the rpcsvc-proto package, which was originally a compatibility +package during the time that SunRPC was being removed from Glibc. I've imported +the source for just the rpcgen utility from that package into hitchhiker's build +tree, removed all of the autotools material, moved all C-preprocessor flags into +a config.h file, disabled NLS and made a very lean, mean Makefile for it. While +I was at it I used similar techniques to update the builds for mksh and pax. +Both of those packages now include their CPPFLAGS as defines in config.h, and I +have even begun eliminating ifdefs out of the C files to make for a cleaner and +faster build.</p> + + + diff --git a/public/tags/rust/index.html b/public/tags/rust/index.html new file mode 100644 index 0000000..a1f3de5 --- /dev/null +++ b/public/tags/rust/index.html @@ -0,0 +1,558 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Rust"

    + +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/site-news/atom.xml b/public/tags/site-news/atom.xml new file mode 100644 index 0000000..3cb741b --- /dev/null +++ b/public/tags/site-news/atom.xml @@ -0,0 +1,99 @@ + + + - Site News + + + Zola + 2021-02-18T00:00:00+00:00 + /tags/site-news/atom.xml + + Website Redesign + 2021-02-18T00:00:00+00:00 + 2021-02-18T00:00:00+00:00 + + /news/website-redesign/ + <p>I know a little bit about a lot of things, and one of the things that I know +only in passing is web development.<span id="continue-reading"></span> I am by no means qualified at +or excited about web design. However, in the spirit of DIY I have always muddled +through all of my own projects. This has in the past meant using a CMS of some +sort, and a rather long time ago I settled on Mezzanine, a Django-based CMS +written in Python.</p> +<p>This worked out all right in most ways. However, a few weeks back I had a server +outage that I traced back to the update from Python 3.8 to Python 3.9. The +virtualenv that I had set up simply stopped working, causing the web server to be +unable to start as the default handler was DOA. Now, a Python virtualenv is a +supposedly complete standalone environment containing the Python interpretor and +libraries frozen to be version compatible with your application. It is supposed +to be self contained and not dependent upon the system-wide Python installation. +The fact that bumping a minor version number caused it to fail is distressing +and has soured my already low opinion of Python somewhat.</p> +<p>Additionally, I have long desired to incorporate a full handbook into the website +and do so in a way that looks seemless with the rest of the site. HitchHiker is +not going to be a turnkey system for most people and will need good documentation. +I have tried a few things that were available online, including Mezzanine Wiki, +but nothing is really suitable and many packages are broken and/or unmaintained +(including Mezzanine Wiki at the time I tried it).</p> +<p>Being impressed with the quality of the documentation for Rust I looked into what +they use. The Rust Book is built using <a href="https://github.com/rust-lang/mdBook">mdbook</a>, +which is a wonderful static markdown to html generator that does exaclt what it +claims to do and does it exceptionally well. After messing with it for all of two +minutes I was sold - it's just plain phenominal in use.</p> +<p>Having settled on mdbook for the forthcoming &quot;<strong>Hitch Hiker's Guide to Hitch Hiker +Linux</strong>&quot; I decided that if we're going static pages there, it would be a good +time to go static pages everywhere. I set about looking for a static site generator +that would give me enough flexibility for my needs and still be simple to use.</p> +<p>While there is no shortage of SSG's available right now, there were several popular +ones that I never really considered based on implementation. Jekyll, for one, is +written in Ruby and I'm not looking to pollute my machine with more interpreted +language cruft.</p> +<p>I gave <a href="https://gohugo.io/">Hugo</a> a long, hard look and went so far as to install +it and do some testing. Hugo is written in Go, seems to work well, and is definitely +fast. However, none of the available themes were going to be suitable without a +good deal of hacking.</p> +<p>At first glance, <a href="https://www.getzola.org/">Zola</a> appeared to have the same +strengths and the same issues as Hugo for my use case. I really couldn't see +applying any of the themes that I found directly without a lot of customization, +and there were a couple that I tried that were flat out broken. On top of whatever +customization I was going to have to do to whatever theme I picked, I was also +going to have to adapt to an mdbook theme as well....or was there another way?</p> +<p>It turns out that the default set of themes that ship with mdbook are pretty much +already great, and would look great adapted to an entire site. Now, mdbook itself +is pretty much not suitable for generating the entire site, as I need a front +page, I want to keep my blog, and I'd like to be able to incorporate other pages +as well that aren't going into the table of contents for the book. But what I +thought I could do is to create my own Zola template using the css from the mdbook +themes.</p> +<p>So in the end that's what I did. Zola, written in Rust, is actually quite a bit +simpler than Hugo and after a few initial trip ups getting started I'm finding +the template system to be something I can navigate all right. I'm left with a two +step rendering process to build the full site, as I'm rendering most of the site +using Zola and the book using mdbook. But hey, I've already proven that I can do +a good bit of automation using <code>make</code>, right?</p> +<p>While there's a bit more work left to finish migrating the old site, I have to +say that I'm completely satisfied with my choices as of now. Both Zola and mdbook +do things for me that were not going to be easily achievable in Mezzanine and come +with a lot of benefits right out of the box. As a for instance, built in syntax +highlighting for code snippets! Here's <code>echo</code> in Rust:</p> +<pre style="background-color:#2b303b;"> +<code class="language-Rust" data-lang="Rust"><span style="color:#c0c5ce;">#![</span><span style="color:#bf616a;">warn</span><span style="color:#c0c5ce;">(clippy::all, clippy::pedantic)] +</span><span style="color:#b48ead;">use </span><span style="color:#c0c5ce;">std::env; + +</span><span style="color:#b48ead;">fn </span><span style="color:#8fa1b3;">main</span><span style="color:#c0c5ce;">() { + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> args: Vec&lt;String&gt; = env::args().</span><span style="color:#96b5b4;">collect</span><span style="color:#c0c5ce;">(); + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> len = args.</span><span style="color:#96b5b4;">len</span><span style="color:#c0c5ce;">(); + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> n = len &gt; </span><span style="color:#d08770;">1 </span><span style="color:#c0c5ce;">&amp;&amp; args[</span><span style="color:#d08770;">1</span><span style="color:#c0c5ce;">] == &quot;</span><span style="color:#a3be8c;">-n</span><span style="color:#c0c5ce;">&quot;; + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> i = </span><span style="color:#b48ead;">if</span><span style="color:#c0c5ce;"> n { </span><span style="color:#d08770;">2 </span><span style="color:#c0c5ce;">} </span><span style="color:#b48ead;">else </span><span style="color:#c0c5ce;">{ </span><span style="color:#d08770;">1 </span><span style="color:#c0c5ce;">}; + </span><span style="color:#b48ead;">for </span><span style="color:#c0c5ce;">(index, arg) in args.</span><span style="color:#96b5b4;">iter</span><span style="color:#c0c5ce;">().</span><span style="color:#96b5b4;">enumerate</span><span style="color:#c0c5ce;">().</span><span style="color:#96b5b4;">skip</span><span style="color:#c0c5ce;">(i) { + </span><span style="color:#b48ead;">if</span><span style="color:#c0c5ce;"> index &lt; len - </span><span style="color:#d08770;">1 </span><span style="color:#c0c5ce;">{ + print!(&quot;</span><span style="color:#d08770;">{} </span><span style="color:#c0c5ce;">&quot;, arg); + } </span><span style="color:#b48ead;">else </span><span style="color:#c0c5ce;">{ + print!(&quot;</span><span style="color:#d08770;">{}</span><span style="color:#c0c5ce;">&quot;, arg); + } + } + </span><span style="color:#b48ead;">if </span><span style="color:#c0c5ce;">!n { + println!(); + } +} +</span></code></pre> + + diff --git a/public/tags/site-news/index.html b/public/tags/site-news/index.html new file mode 100644 index 0000000..2b677cb --- /dev/null +++ b/public/tags/site-news/index.html @@ -0,0 +1,531 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Site News"

    +
      + +
      + + Website Redesign + +
      2021-02-18
      + +

      I know a little bit about a lot of things, and one of the things that I know +only in passing is web development....

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/sysroot/atom.xml b/public/tags/sysroot/atom.xml new file mode 100644 index 0000000..b76780d --- /dev/null +++ b/public/tags/sysroot/atom.xml @@ -0,0 +1,44 @@ + + + - sysroot + + + Zola + 2021-02-01T00:00:00+00:00 + /tags/sysroot/atom.xml + + Reconfiguring the build process + 2021-02-01T00:00:00+00:00 + 2021-02-01T00:00:00+00:00 + + /news/reconfiguring-the-build-process/ + <p>Up until now HitchHiker has used a build process that closely followed that used +by the Linux From Scratch book. There was a temporary toolchain, hacked to use a +different library directory and prefix</p> +<span id="continue-reading"></span> +<p>so as not to conflict with the host system or with the libraries and tools being installed as the finished system. This temporary toolchain was in itself a complete development environment that included everything required to bootstrap a full system. To build to final system, is was necessary to chroot into a new directory containing the temporary tools and root filesystem.</p> +<p>This method had some advantages, but also involved compiling most packages at least twice. It also required quite a lot of extra work to do any kind of cross compiling. In fact, I had set up an RPI4 specifically as a compilation machine for Armv7l, as it was basically impractical to use my x86_64 laptop to develop for Arm.</p> +<p>In an effort to increase the flexibility of the HitchHiker build tree, support more architectures, and to streamline the build I am experimenting with using a sysroot compiler for the majority of the build. In testing, with minimal effort I was able to set up cross toolchains for armv7l, aarch64, riscv64, and i486 as well as a native x86_64 toolchain using the same build tree and only adjusting the ${arch} variable in config.mk. In testing I was able to compile almost the complete userland for x86_64, aarch64 and riscv64 without resorting to a chroot, and all on my main machine. My current plan is to compile most of the base system using a sysroot toolchain, either native or cross, including the build of the native toolchain, and then to chroot into the near complete root filesystem to finish up any packages that cannot be easily cross compiled. At this juncture I believe the only package in the base system that will be truly problematic for cross-compilation is Perl, which uses an ill conceived homegrown configure script instead of autotools. However this is not quite verified for all packages just yet.</p> +<p>In the case of a package refusing to cross-compile, I can then use the method outlined in the previous post and compile with the native toolchain using qemu user-mode emulation.</p> +<p>In addition to the vast reduction of packages being compiled twice or more, this also has the advantage of running on a fast machine. Additionally, with most of the work not requiring the chroot trick, there is no emulation layer to slow the process down. A future goal will be to fix the issues with Perl and push patches upstream if possible, as Perl is a hard build dependency of the kernel and therefore must be considered an essential part of the base system.</p> +<p>To give some idea of the resource savings this brings about, here's a quick table outlining the number of passes required for certain packages under the old layout vs the new. Note that it is still necessary to make multiple passes at Binutils and Gcc, as we have to build our sysroot/cross toolchain, but there is a rather significant reduction in the amount of other software being built twice.</p> +<table><thead><tr><th>Package</th><th>Passes (old)</th><th>Passes (new)</th></tr></thead><tbody> +<tr><td>Binutils</td><td>3</td><td>2</td></tr> +<tr><td>Gcc</td><td>3 + separate libstdc++ pass</td><td>3</td></tr> +<tr><td>Linux Headers</td><td>2</td><td>1</td></tr> +<tr><td>Glibc</td><td>2</td><td>1</td></tr> +<tr><td>M4</td><td>2</td><td>1</td></tr> +<tr><td>Ncurses</td><td>2</td><td>1</td></tr> +<tr><td>Bison</td><td>2</td><td>1</td></tr> +<tr><td>Diffutils</td><td>2</td><td>1</td></tr> +<tr><td>Gettext</td><td>2</td><td>1</td></tr> +<tr><td>Make</td><td>2</td><td>1</td></tr> +<tr><td>Perl</td><td>2</td><td>1</td></tr> +<tr><td>Python</td><td>2</td><td>1</td></tr> +<tr><td>Texinfo</td><td>2</td><td>1</td></tr> +<tr><td>Patch</td><td>2</td><td>1</td></tr> +<tr><td>Busybox</td><td>1</td><td>Not Built</td></tr> +</tbody></table> + + + diff --git a/public/tags/sysroot/index.html b/public/tags/sysroot/index.html new file mode 100644 index 0000000..fffcd58 --- /dev/null +++ b/public/tags/sysroot/index.html @@ -0,0 +1,532 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "sysroot"

    +
      + +
      + + Reconfiguring the build process + +
      2021-02-01
      + +

      Up until now HitchHiker has used a build process that closely followed that used +by the Linux From Scratch book. There was a temporary toolchain, hacked to use a +different library directory and prefix...

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/systemd/atom.xml b/public/tags/systemd/atom.xml new file mode 100644 index 0000000..651dd13 --- /dev/null +++ b/public/tags/systemd/atom.xml @@ -0,0 +1,48 @@ + + + - Systemd + + + Zola + 2020-07-20T00:00:00+00:00 + /tags/systemd/atom.xml + + Patching pkgsrc, building rust and Arm headaches + 2020-07-20T00:00:00+00:00 + 2020-07-20T00:00:00+00:00 + + /news/patching-pkgsrc-building-rust-and-arm-headaches/ + <p>Having been working with pkgsrc for a couple weeks now there's a bit of a flow +developing, and quite a bit of progress, with a big caveat. The issues I'm +running into are that there are quite a few more build failures for Arm than +there are for x86_64.<span id="continue-reading"></span></p> +<p>Interestingly, both libdrm and MesaLib fail with similar messages about assembly +code that isn't supported on the current architecture (armv7l). In situations +like this it's hard to blame pkgsrc, as the fault is upstream from there. I'm +getting quite used to adding packages to my local tree and tweaking BSD style +Makefiles. I'm making every attempt to send fixes upstream; however, waiting for +a response each and every time is just not really going to be an option here, so +in the meantime I've decided to import the entirety of pkgsrc into git and use +that tree as the &quot;official&quot; branch for HitchHiker. This will enable our project +to build up a substantial package collection even if upsteam pkgsrc begins to +lag behind.</p> +<p>One of the problematic packages that is now often being pulled in as a dependency is rustc, the rust compiler. It's problematic on two fronts. First, unless your system has substantial amounts of memory a parallel build will fail as the memory fills up (mine has 8 gig and still fails). Second, and quite frustrating, is that rustc is only compatible with certain versions of either openssl or libressl, and our version of libressl was too new. After seeing if we could use either libressl or openssl from pkgsrc and encountering repeated failures, I just rolled back libressl to the newest version that rust supports.</p> +<p>Let me pause here for a brief commentary on rust as a programming language. There is a lot to like about rust, and it seems that the language may be with us for quite some time, as it seems to see more usage every day and has achieved a critical mass of developers. I've played around with it myself a little bit and the documentation is very good, it's probably one of the easier to learn languages, and the ecosystem as a whole is very nice when you look at all of the features that cargo brings to the table. However, I am not a fan of the fact that the rust standard library, libstd, is compiled in statically by default. This results in a simple &quot;Hello, world!&quot; executable compiling into a 7.1m binary on my machine before stripping, which comes down to 220k after stripping. When compiling the same program dynamically it comes all the way down to 16k after stripping, so we have approximately a 204k overhead <em>per binary</em> for the static libstd.</p> +<p>I am also not happy about rolling back libressl, as I would much rather have the newest possible version of what is a security critical piece of software. However, it is I believe still a better and more secure option than openssl, which most distros are still using. It's a shame that a major piece of software like rust, that is a dependency of quite a number of other packages now, has not updated to use the newer abi presented by newer versions of libressl.</p> +<p>After a couple weeks of building packages on both x86_64 and armv7l, using an identical set of packages in the base system, it is very apparent just how much more development x86_64 gets than arm. Two packages in particular illustrate this quite well - libdrm and MesaLib - both of which are major dependencies of modular Xorg. In both cases assembly code is generated by gcc that contains instructions not supported by the processor, and the only fix is to disable features in the Arm build. In the case of MesaLib this involves patching the source code. Thanks to the Arch Linux Arm team for showing the way, as my patches are adapted from their PKGBUILD.</p> +<p>There have been just a few more tweaks to the base system as I attempt to fully +finalize the build in preparation for release. The rpcgen utility that I had +incorporated proved to not fully support all features needed for building certain +packages in pkgsrc. After some search I found a newer version that had been +autotooled in the rpcsvc-proto package, which was originally a compatibility +package during the time that SunRPC was being removed from Glibc. I've imported +the source for just the rpcgen utility from that package into hitchhiker's build +tree, removed all of the autotools material, moved all C-preprocessor flags into +a config.h file, disabled NLS and made a very lean, mean Makefile for it. While +I was at it I used similar techniques to update the builds for mksh and pax. +Both of those packages now include their CPPFLAGS as defines in config.h, and I +have even begun eliminating ifdefs out of the C files to make for a cleaner and +faster build.</p> + + + diff --git a/public/tags/systemd/index.html b/public/tags/systemd/index.html new file mode 100644 index 0000000..f617dd1 --- /dev/null +++ b/public/tags/systemd/index.html @@ -0,0 +1,533 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Systemd"

    +
      + +
      + + Patching pkgsrc, building rust and Arm headaches + +
      2020-07-20
      + +

      Having been working with pkgsrc for a couple weeks now there's a bit of a flow +developing, and quite a bit of progress, with a big caveat. The issues I'm +running into are that there are quite a few more build failures for Arm than +there are for x86_64....

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/utilities/atom.xml b/public/tags/utilities/atom.xml new file mode 100644 index 0000000..8d5aacd --- /dev/null +++ b/public/tags/utilities/atom.xml @@ -0,0 +1,139 @@ + + + - Utilities + + + Zola + 2020-11-15T00:00:00+00:00 + /tags/utilities/atom.xml + + On Libc, rust experiments, and Risc-V + 2020-11-15T00:00:00+00:00 + 2020-11-15T00:00:00+00:00 + + /news/on-libc-rust-experiments-and-risc-v/ + <h2 id="libc">LibC</h2> +<p>Recently I have continued the exercise of re-implementing certain base system utilities in C, uncovering more and more differences between BSD and GNU libc implementations. At this point it's really easy to say that I have a strong preference for the BSD extensions to the libc standard as opposed to the GNU extensions. The Berkeley programmers, when they added features, added truly useful features.</p> +<p>Take random number generation as an example. It is fairly common when programming on Linux to open and read from /dev/urandom. BSD, in the meantime, offers a group of functions in libc (arc4random) that combine pseudo-random number generation with cryptography to produce pseudo-random data that is truly difficult to guess, with a low CPU overhead.</p> +<p>Another small place where I found the BSD libc to offer superior functionality was when I was writing my own version of the <em>mktemp</em> utility. The BSD versions of the mkstemp and mkdtemp functions allow one to give a template with a variable-length suffix, to give a choice between quick (with a smaller suffix) or as secure as you want to be. By increasing the suffix length, one can exponentially increase the number of possible filenames, making temp files a more difficult vector of attack.</p> +<p>The GNU (and musl actually) versions of these functions only allow a six character random suffix, period. In fact, my earlier port of mktemp from BSD did not function as expected in this regard, and the GNU coreutils programmers had to roll their own functions to get equivalent functionality to the BSD counterparts. I have elected to not abstract this deficiency away in my code, and the HHL version of the mktemp utility uses the available versions of mkstemp and mkdtemp, with a six character suffix. I would rather maintain the simplicity of the program than to take a risk of introducing bugs by writing my own functions here.</p> +<p>In any event, the work that I have been doing here makes a strong case for a future port of musl, with the additions of some BSD functions ported to work with musl, as our base C library. As attractive as BSD libc is, a direct port is unrealistic as so much of it is tied to kernel interfaces that differ on Linux. I just find it a shame that Linux users are mostly saddled with such a piece of crap (bloated while still being less functional) in such an important position in the software stack.</p> +<h2 id="rust">Rust</h2> +<p>There are a lot of programming languages, and they tend to come and go regularly. As programming languages go, it's a safe bet that C, C++, Java and Python will be sticking around. Of the less pervasive languages Go and Rust seem to be well ahead of the pack as pertaining to mass adoption. Go is interesting, largely because of what it leaves out. Go is simple. Go avoids the feature creep that seems to be inevitable in all modern software. However, Go achieves memory safety by using garbage collection. I want to like Go, but that one anti-feature prevents me from even trying it.</p> +<p>Rust, on the other hand, has feature upon feature to the point where I really am hoping that they ever finish the language someday. That said, I'm intrigued by Rust for a number of reasons. I have been toying with learning the language for a while, doing some simple learning exercises and reading the Rust Book. I recently decided to just dive in and start writing my own programs using Rust, as that seems to be the only way to truly learn a language. My first full Rust program is a clone of a C program that I wrote for generating sine lookup tables, useful in DSP applications. The C version is perfectly fine, but I basically wanted to try porting a known working program and see how well the control flow translated.</p> +<p>The process was not completely smooth, and it took quite a few iterations to get to the point where the program compiled and actually functioned. However, the documentation is excellent and provided solutions to most of my issues. The other thing that really impressed me was the compiler messages. Often, the compiler will tell you literally the exact change needed to make your program compile. Coming from C, this is a breath of fresh air. And when we're talking about Rust, chances are that if it compiles it's also going to function exactly as expected.</p> +<p>Rust is also elegant in a way that C never will be. Consider the following C code:</p> +<pre style="background-color:#2b303b;"> +<code class="language-C" data-lang="C"><span style="color:#b48ead;">for </span><span style="color:#c0c5ce;">( i = </span><span style="color:#d08770;">0</span><span style="color:#c0c5ce;">; i &lt; </span><span style="color:#d08770;">10</span><span style="color:#c0c5ce;">, i++) { + </span><span style="color:#65737e;">// some code +</span><span style="color:#c0c5ce;">} +</span></code></pre> +<p>And the equivalent Rust:</p> +<pre style="background-color:#2b303b;"> +<code class="language-Rust" data-lang="Rust"><span style="color:#b48ead;">for</span><span style="color:#c0c5ce;"> i in </span><span style="color:#d08770;">1</span><span style="color:#c0c5ce;">..</span><span style="color:#d08770;">10 </span><span style="color:#c0c5ce;">{ + </span><span style="color:#65737e;">// some code +</span><span style="color:#c0c5ce;">} +</span></code></pre> +<p>One thing that requires a different mindset when one moves from an old-school language like C, to a modern language like Rust, is that in C et al, the standard library tries to be all inclusive. Programmers (at least the good ones) try to avoid adding dependencies to anything other than the standard library. Rust, however, has Cargo. Cargo is, in effect, a built in package manager. This is not unheard of; Python has pip and has for years. In Rust, however, the standard library is quite small and everyone pretty much freely uses cargo to access functionality that is not included in libstd. In my case I used cargo to pull in the excellent clap crate, which parses command line arguments and also provides built in documentation. Compared to getopt in C, clap both does more and does it with little effort.</p> +<p>At this point int time, however, Rust is not going to be landing in the HitchHiker base system, as the only viable Rust compiler uses llvm as a backend. At some point in the future this may well change anyway, as I have been growing increasingly frustrated with both Glibc and gcc (a brief skim of some earlier blog posts will quickly turn up examples). The obvious replacements are musl and the clang compiler, which, being based on llvm, would make the further inclusion of rustc trivial.</p> +<h2 id="risc-v">Risc-V</h2> +<p>I do a fair amount of electronics experimenting and often employ various microcontrollers in my projects. Some are Atmega based, while I have more recently fallen in love with the ATSAMD51 Arm Cortex M4 processor based boards from Adafruit. Just this week I have acquired something new to me: a Risc-V based MCU from Seeed Studio, the Sipeed Longan Nano. It's a brilliant chip, although quite lacking in documentation and example code. I'll be playing with it a lot.</p> +<p>The Nano, however, is a microcontroller, not a full SOC that is capable of running Linux. Right now there are few options for developers wanting to experiment with Risc-V with a full operating system, and the best ones are all prohibitively expensive for their capability. Due out next year, however, is the PicoRio board from Rios labs that is described as close in form factor and capabilities to most Arm boards based around the RPI format. Provided this board is not vaporware and actually does materialize at a reasonable cost, I intend for HItchHiker Linux to be running on it as soon as feasible. I intend to make HitchHiker one of the very first options independent of distros such as Debian and Fedora, and to make Risc-V a first class citizen. It is my hope that in doing so HitchHiker might help to push along the adoption of truly open hardware on which to run open software.</p> + + + + Some More Home Cooking + 2020-10-06T00:00:00+00:00 + 2020-10-06T00:00:00+00:00 + + /news/some-more-home-cooking/ + <p>After removing GNU coreutils and taking closer stock of what we have as a +&quot;base system&quot;, I am mostly happy with the selection but now wish to spend some +time making behaviors, documentation and source code itself more uniform. I have +also done some work towards correcting a couple of omissions that are present +due to the previous surgury. The commit that I pushed this morning has a few +notable changes.</p> +<span id="continue-reading"></span> +<ul> +<li>hostid - This is a non-POSIX utility of GNU origin that is present on systems with GNU coreutils but not on BSD based systems. I have written a replacement from scratch in C, which was a fairly trivial task as mentioned previously. The new utility, much like the rest of our userland, behaves like the GNU counterpart with the exception of not accepting long options and not having a help option (help is available via the man-pages, so '--help' is always redundant IMO).</li> +<li>nproc - Another scratch implementation of a utility with a GNU orgin.</li> +<li>rev - A scratch rewrite for HitchHiker, should be functionally identical to the BSD and/or Suckless versions. Notably, my version, the BSD version (which we had previously) and the suckless version are all quite a bit faster than the rev utility provided by the util-linux package due to architectural differences which I'll explain below.</li> +<li>mkdir - Another scratch rewrite. These are being done patially as an exercise in C programming and partially to lessen our dependence on the portability libraries used to port BSD utilities to Linux. However, this utility is currently a special case in that regard (see below).</li> +<li>base64 - This one had been ported from NetBSD but is actually broken on every platform in regards to being able to process it's data from a file rather than stdin. It's now fixed at least in HitchHiker. +I have also begun a process of formatting the source code imported from other sources using <code>clang-format</code> to enforce more uniform standards, and to go through the man-pages a few at a time to do some similar housekeeping. It's a small niggle, but both BSD and Suckless use tabs for indentation where I prefer two spaces for compactness. There are also some inconsistencies in brace styles and function declarations. I prefer the function declaration to be on one line followed by the opening brace on the same line, and for things like loops to include the opening brace on the same line as the loop initialization. Basically, the defaults provided by clang-format make for nice, readable and consistent code.</li> +</ul> +<p>Now, as mentioned above, let's get into some detail with the implementations of +<strong>rev</strong> and <strong>mkdir</strong>. Let's begin with rev, which is a simple utility which just reverses the characters in each line. Now, a simple implementation of rev, and basically where I started, would just read each line using getline (or fgetln on a BSD system) and reverse the bytes, excluding the newline, which is replaced back at the end of the output. This works fine for ascii characters, which all by definition fir into a single byte of data. However, utf8 is a fact of life, and we quickly run into a situation where we have reversed the byte order of a multibyte character, printing gibberish to the terminal. The Util-Linux utility solves this by reading each line into an array as a sequence of widechars, essentially reading character by character, and then doing the reversal.</p> +<p>The BSD, Suckless, and now HitchHiker utilities all use a similar, and more efficient approach. The line is read as described above, then, starting with the charcter preceding the newline, each byte is tested to see whether it is the beginning of a character or the middle of a multibyte character. If we run into a multibyte character, we find the beginning of it and then read forward again to the end of the character, before skipping backwards again past the multibyte character. While sounding convoluted, this is quite a bit faster when processing large amounts of data, as we're only looking at the first few bits of each byte rather than reading each line in character by character.</p> +<p>Now on to mkdir. Most of this was straightforward to implement, including the -p option, as we just have to construct a path directory by directory by processing the path as a string, using, in our case, the strtok function. However, mkdir is also expected to be able to set the Unix permissions of directories that it creates, and accept the mode arguments in either octal or symbolic format. It is trivial to implement the octal permissions, but implementing symbolic permissions entails coding a parser which must accept a fairly wide range of possible permutations. After looking at how the functionality has been implemented in BSD, GNU, and Suckless utilities, it quickly became apparent that the BSD implementation makes the most sense from the efficient use of code standpoint, as the BSD C-library already contains the getmode and setmode functions. As this has already been ported to Linux via libbsd, and as such is already present in HitchHiker as it has been used to port much code from both NetBSD and FreeBSD, I decided to just go ahead and use it. On a side note, it would be fantastic to see some of these functions present in the GNU C-library. The getmode function is quite useful, and fgetln is quite a bit more, let's say graceful, to use than getline.</p> +<p>It should be noted that static linking libbsd into a Beerware licensed utility is somewhat problematic. I have been considering extending the build system somewhat, to also build shared libraries alongside the static archives. I am somewhat hesitant, as I feel that low level base utilities such as this should only depend on the system C library at runtime. Alternatively, if at some point in the future HItchHiker does make the switch to Musl libc (which is still on the table) then it might be possible to patch musl to incorporate the functions right into the system C library for HitchHiker, allowing for their removal from libbsd and lessening our reliance on it for porting utilities. I rather like this train of thought...</p> +<p>The end goal is, of course, the kind of tightly integrated userland that BSD +systems are noted for. When looking at the various base utility implementations, +it is striking that commonly there is a library of common functions built and +linked into the utilities. This tactic is employed by sbase, ubase, GNU coreutils, +Util-Linux, and lobase (the port of OpenBSD userland to Linux, from which I have +borrowed heavily). I'm employing it myself by using libbsd to port NetBSD and +FreeBSD utilities. In the long run, I want to eliminate this trend and fully +integrate everything to where we're only depending on the C library both at build +and run times. My own implementations, with the exception of mkdir, currently do +this. As an example, on BSD systems a program is aware of the name under which it +was invoked via the getprogname and setprogname functions. As GNU libc does not +have these functions, we have a global constant char __progname, which is set to +the program name by calling <code>basename(argv[0])</code> in the main function. While +this results in some additional boilerplate code, it's actually scarcely more +than what BSD already has due to the need to call getprogname and/or setprogname.</p> +<p>Similarly, Suckless abstracts away certain things like printing to stderr (their +eprintf function) and getting program arguments, which are easily done just using +<code>fprintf(stderr, &quot;msg&quot;)</code> and getopt, respectively.</p> +<p>A possible eventuality might involve refactoring much of this code somewhat to remove the dependencies on their respective utility libraries and replacing it with more &quot;generic&quot; programming. While this might increase source code size somewhat, it would not likely impact compiled size or efficiency, as we're just removing the abstractions and putting them back into the programs. This has the benefit of making the code easier to understand without having to look at the library and what it does.</p> + + + + Goodbye GNU coreutils, importing sed + 2020-09-22T00:00:00+00:00 + 2020-09-22T00:00:00+00:00 + + /news/goodbye-gnu-coreutils-importing-sed/ + <p>The porting effort has reached the point where it is now safe to remove GNU +coreutils. At this point, there are now only 16 utilities provided by the +coreutils package<span id="continue-reading"></span> that are not implemented in another way in HitchHiker, and none of the missing +utilities are dealbreakers. As follows, here is what is missing and why it isn't +a problem, or what the roadmap is for replacement.</p> +<ul> +<li>b2sum - computes BLAKE2 checksums - there are quite a number of checksum utilities already, and this one is currently not a dealbreaker. If a reason for replacement is discovered it will be implemented from scratch in c.</li> +<li>base32 - encodes file or stdin using base32 - we already have base64 imported from OpenBSD.</li> +<li>basenc - encodes file or stdin using various algorithms - see base32.</li> +<li>chcon - changes SELinux security context - SELinux is a largely Fedora/RedHat backed API which we don't implement currently in HitchHiker. Standard Unix file permissions are not fine-grained enough for just about any use case.</li> +<li>dir - displays directory contents - despite what GNU say about dir, it is basically ls but with a different default behavior. The same behavior can be emulated by using the appropriate flags with ls.</li> +<li>dircolors - sets the colors for eg <code>ls --color</code> - We have BSD ls in HitchHiker, which does not implement the --color option. I have considered re-implementing ls and including the --color option, in which case dircolors would be useful. However, this is non-trivial and no timeframe is given.</li> +<li>hostid - displays the unique numeric id for the current host - not currently a dealbreaker, but potentially useful. Fairly trivial to implement in C.</li> +<li>nproc - gets the number of processors currently available - also potentially useful and fairly trivial to implement in C.</li> +<li>numfmt - format numbers in human-readable form - potentially useful, not a dealbreaker. Non-POSIX utility which accepts mostly GNU style long options. If implemented would be done in a different way, ignoring the behavior of the GNU utility, which is frankly too GNU-centric (long options should have short option equivalents).</li> +<li>pinky - a mini finger implementation - all information available via pinky can be optained with other included utilities. If there is a need for accessing information on remote hosts an actual finger implementation is required anyway.</li> +<li>ptx - honestly the manpage for this utility reads like gibberish. Anyway I've never used it and don't think it's needed, not available on BSD systems anyway and not POSIX.</li> +<li>runcon - run a command with a different SELinux security context - see chcon.</li> +<li>shuf - shuffles file contents randomly - not particularly useful.</li> +<li>stdbuf - run command with modified IO buffering - exists in FreeBSD but not NetBSD or OpenBSD. Non-POSIX. Potentially useful, not considered a priority. Porting from FreeBSD is non-trivial if memory serves from my 1st attempt.</li> +<li>timeout - run a command with a time limit - Not available on BSD systems, Non-POSIX. Potentially useful but not a priority.</li> +<li>vdir - another permutation of ls (see dir) - again just use ls, why have another binary?</li> +</ul> +<p>None of the missing utilities are POSIX specified and are not likely to be called from any kind of portable shell script. With the exception of stdbuf, I could not find alternative implementations for any of the missing utilities. This was a long process fraught with a fair bit of trial and error, and continual testing to ensure that the system could still bootstrap iself as utilities were replaced a few at a time. My first tries removing the coreutils package entirely resulted in various failures, as either a utility had incompatible behavior with one or more packages build systems, or a missing utility was actually required.</p> +<p>A good example of a surprise was with the 'od' utility, which creates an 'octal dump' of file contents. I did not assume this to be a utility that would see much use. However, the build system for busybox assumes it's existence and fails without it. On looking for a replacement I turned to the <a href="http://heirloom.sourceforge.net/tools.html">Heirloom Toolchest</a>, a collection of utilities derived from ancient Unix sources released by Caldera and Sun. This utility has the dubious distinction of influencing one of the more glaring inconsistencies in bourne shell syntax. For most control flow structures in sh, the closing keyword is the opening keyword reversed, IE if-else-fi or case-esac. However, od was already in existence before the original bourne shell was written, precluding the use of do-od for looping and giving history instead do-done.</p> +<p>While in there poking around in the heirloom sources I also ported over pg (an early pager), sum (yet another checksum utility) and factor (prints all prime factors of the given number). The sources have been variously tweaked to be more inline with my own coding style, making future maintenance easier. All but pg were commands which are present in coreutils, giving us greater coverage.</p> +<p>During the porting effort, there were various utilities which were either not present in BSD, sbase or heirloom or else so trivial as to pose no barrier to implementing them from scratch. Here is that list.</p> +<ul> +<li>/bin/true - just return true and exit - implemented as a single line shell script.</li> +<li>/bin/false - the reverse of true.</li> +<li>/sbin/nologin - used for disabled logins, displays a message that the account is disabled and exits with a failure code - implemented in C.</li> +<li>/usr/bin/link - creates hard links - implemented in C.</li> +<li>/usr/bin/unlink - calls the unlink function to remove files - implemented in C.</li> +<li>/usr/bin/shred</li> +</ul> +<p>The shred utility was a special case, as it existed only in GNU coreutils until my own implementation. I've always thought that this was a tremendously useful utility and wanted it in HitchHiker. What it does is overwrites the given file with random data to make recovery exceedingly difficult, optionally doing a final pass with zeros and unlinking the file. It can be used on an entire block device to wipe a hard drive clean. I've been working on dogfooding myself in C lately and this was a good opportunity to code something a little but less trivial. Anyway, this version of the shred command is implemented cleanly from scratch but follows fairly closely the behavior of the GNU version. It differs in not accepting long options, much like the rest of our collection of utilities, and does not implement a few switches that are considered unnecessary in use. At some point I intend to go in and implement file-renaming before deletion, akin to the GNU versions &quot;wipesync&quot; method, but the program is otherwise feature complete. In order to give myself another challenge, I also implemented a progressbar that is displayed with the -v option.</p> +<h2 id="on-to-sed">On to sed</h2> +<p>I have tried in vain to get away from using GNU sed in HitchHiker. After porting BSD sed, sbase sed and GNU minised, all of them proved unsuitable and caused build failures at some point or another. Or rather, non-portable sed usage by the authors of the various build systems caused failure when our sed did not support the input that it was given. The final deal-breaker was the Linux kernel itself, which requires sed to understand some GNU specific regular expressions during the build.</p> +<p>What I have done is import the GNU sed source code directly into the HitchHiker source tree and made it work with our build system. This is only the second GNU licensed program I have done so with (the first being less) and only the third time that I have successfully stripped a program of it's autotooled build system. It was, to say the least, not trivial. However, the results are rather impressive, as on my 8-core laptop sed now builds in 3.22 seconds, compared with 31.75 seconds for the autotooled build. I'll take a 10x speed increase any day, and it's a great example of how much there is to gain by just using make compared with an autotools build. Indeed, for a smaller program like sed, most of the time is taken by the configure script, and by installing files after compilation. With our &quot;compile in place&quot; method we're skipping entirely the installation phase.</p> +<p>As GNU sed is fully localized into multiple languages, I took the time to extend the build infrastructure with hhl.locale.mk, which takes any .po files in a program's locale subdirectory (if they exist) and &quot;compiles&quot; them into .mo files in /usr/share/locale using the msgfmt utility. With that in place the infrastructure for building directly from source, rather than just wrapping another build system in make, is pretty much complete, even if there are still things to optimise.</p> + + + diff --git a/public/tags/utilities/index.html b/public/tags/utilities/index.html new file mode 100644 index 0000000..43ee428 --- /dev/null +++ b/public/tags/utilities/index.html @@ -0,0 +1,557 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Utilities"

    +
      + + + +
      + + Some More Home Cooking + +
      2020-10-06
      + +

      After removing GNU coreutils and taking closer stock of what we have as a +"base system", I am mostly happy with the selection but now wish to spend some +time making behaviors, documentation and source code itself more uniform. I have +also done some work towards correcting a couple of omissions that are present +due to the previous surgury. The commit that I pushed this morning has a few +notable changes....

      + + Read More -> +
      + +
      + + Goodbye GNU coreutils, importing sed + +
      2020-09-22
      + +

      The porting effort has reached the point where it is now safe to remove GNU +coreutils. At this point, there are now only 16 utilities provided by the +coreutils package...

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/web-programming/atom.xml b/public/tags/web-programming/atom.xml new file mode 100644 index 0000000..e07af56 --- /dev/null +++ b/public/tags/web-programming/atom.xml @@ -0,0 +1,99 @@ + + + - Web Programming + + + Zola + 2021-02-18T00:00:00+00:00 + /tags/web-programming/atom.xml + + Website Redesign + 2021-02-18T00:00:00+00:00 + 2021-02-18T00:00:00+00:00 + + /news/website-redesign/ + <p>I know a little bit about a lot of things, and one of the things that I know +only in passing is web development.<span id="continue-reading"></span> I am by no means qualified at +or excited about web design. However, in the spirit of DIY I have always muddled +through all of my own projects. This has in the past meant using a CMS of some +sort, and a rather long time ago I settled on Mezzanine, a Django-based CMS +written in Python.</p> +<p>This worked out all right in most ways. However, a few weeks back I had a server +outage that I traced back to the update from Python 3.8 to Python 3.9. The +virtualenv that I had set up simply stopped working, causing the web server to be +unable to start as the default handler was DOA. Now, a Python virtualenv is a +supposedly complete standalone environment containing the Python interpretor and +libraries frozen to be version compatible with your application. It is supposed +to be self contained and not dependent upon the system-wide Python installation. +The fact that bumping a minor version number caused it to fail is distressing +and has soured my already low opinion of Python somewhat.</p> +<p>Additionally, I have long desired to incorporate a full handbook into the website +and do so in a way that looks seemless with the rest of the site. HitchHiker is +not going to be a turnkey system for most people and will need good documentation. +I have tried a few things that were available online, including Mezzanine Wiki, +but nothing is really suitable and many packages are broken and/or unmaintained +(including Mezzanine Wiki at the time I tried it).</p> +<p>Being impressed with the quality of the documentation for Rust I looked into what +they use. The Rust Book is built using <a href="https://github.com/rust-lang/mdBook">mdbook</a>, +which is a wonderful static markdown to html generator that does exaclt what it +claims to do and does it exceptionally well. After messing with it for all of two +minutes I was sold - it's just plain phenominal in use.</p> +<p>Having settled on mdbook for the forthcoming &quot;<strong>Hitch Hiker's Guide to Hitch Hiker +Linux</strong>&quot; I decided that if we're going static pages there, it would be a good +time to go static pages everywhere. I set about looking for a static site generator +that would give me enough flexibility for my needs and still be simple to use.</p> +<p>While there is no shortage of SSG's available right now, there were several popular +ones that I never really considered based on implementation. Jekyll, for one, is +written in Ruby and I'm not looking to pollute my machine with more interpreted +language cruft.</p> +<p>I gave <a href="https://gohugo.io/">Hugo</a> a long, hard look and went so far as to install +it and do some testing. Hugo is written in Go, seems to work well, and is definitely +fast. However, none of the available themes were going to be suitable without a +good deal of hacking.</p> +<p>At first glance, <a href="https://www.getzola.org/">Zola</a> appeared to have the same +strengths and the same issues as Hugo for my use case. I really couldn't see +applying any of the themes that I found directly without a lot of customization, +and there were a couple that I tried that were flat out broken. On top of whatever +customization I was going to have to do to whatever theme I picked, I was also +going to have to adapt to an mdbook theme as well....or was there another way?</p> +<p>It turns out that the default set of themes that ship with mdbook are pretty much +already great, and would look great adapted to an entire site. Now, mdbook itself +is pretty much not suitable for generating the entire site, as I need a front +page, I want to keep my blog, and I'd like to be able to incorporate other pages +as well that aren't going into the table of contents for the book. But what I +thought I could do is to create my own Zola template using the css from the mdbook +themes.</p> +<p>So in the end that's what I did. Zola, written in Rust, is actually quite a bit +simpler than Hugo and after a few initial trip ups getting started I'm finding +the template system to be something I can navigate all right. I'm left with a two +step rendering process to build the full site, as I'm rendering most of the site +using Zola and the book using mdbook. But hey, I've already proven that I can do +a good bit of automation using <code>make</code>, right?</p> +<p>While there's a bit more work left to finish migrating the old site, I have to +say that I'm completely satisfied with my choices as of now. Both Zola and mdbook +do things for me that were not going to be easily achievable in Mezzanine and come +with a lot of benefits right out of the box. As a for instance, built in syntax +highlighting for code snippets! Here's <code>echo</code> in Rust:</p> +<pre style="background-color:#2b303b;"> +<code class="language-Rust" data-lang="Rust"><span style="color:#c0c5ce;">#![</span><span style="color:#bf616a;">warn</span><span style="color:#c0c5ce;">(clippy::all, clippy::pedantic)] +</span><span style="color:#b48ead;">use </span><span style="color:#c0c5ce;">std::env; + +</span><span style="color:#b48ead;">fn </span><span style="color:#8fa1b3;">main</span><span style="color:#c0c5ce;">() { + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> args: Vec&lt;String&gt; = env::args().</span><span style="color:#96b5b4;">collect</span><span style="color:#c0c5ce;">(); + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> len = args.</span><span style="color:#96b5b4;">len</span><span style="color:#c0c5ce;">(); + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> n = len &gt; </span><span style="color:#d08770;">1 </span><span style="color:#c0c5ce;">&amp;&amp; args[</span><span style="color:#d08770;">1</span><span style="color:#c0c5ce;">] == &quot;</span><span style="color:#a3be8c;">-n</span><span style="color:#c0c5ce;">&quot;; + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> i = </span><span style="color:#b48ead;">if</span><span style="color:#c0c5ce;"> n { </span><span style="color:#d08770;">2 </span><span style="color:#c0c5ce;">} </span><span style="color:#b48ead;">else </span><span style="color:#c0c5ce;">{ </span><span style="color:#d08770;">1 </span><span style="color:#c0c5ce;">}; + </span><span style="color:#b48ead;">for </span><span style="color:#c0c5ce;">(index, arg) in args.</span><span style="color:#96b5b4;">iter</span><span style="color:#c0c5ce;">().</span><span style="color:#96b5b4;">enumerate</span><span style="color:#c0c5ce;">().</span><span style="color:#96b5b4;">skip</span><span style="color:#c0c5ce;">(i) { + </span><span style="color:#b48ead;">if</span><span style="color:#c0c5ce;"> index &lt; len - </span><span style="color:#d08770;">1 </span><span style="color:#c0c5ce;">{ + print!(&quot;</span><span style="color:#d08770;">{} </span><span style="color:#c0c5ce;">&quot;, arg); + } </span><span style="color:#b48ead;">else </span><span style="color:#c0c5ce;">{ + print!(&quot;</span><span style="color:#d08770;">{}</span><span style="color:#c0c5ce;">&quot;, arg); + } + } + </span><span style="color:#b48ead;">if </span><span style="color:#c0c5ce;">!n { + println!(); + } +} +</span></code></pre> + + diff --git a/public/tags/web-programming/index.html b/public/tags/web-programming/index.html new file mode 100644 index 0000000..dd8e2bd --- /dev/null +++ b/public/tags/web-programming/index.html @@ -0,0 +1,531 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Web Programming"

    +
      + +
      + + Website Redesign + +
      2021-02-18
      + +

      I know a little bit about a lot of things, and one of the things that I know +only in passing is web development....

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/public/tags/zola/atom.xml b/public/tags/zola/atom.xml new file mode 100644 index 0000000..0497815 --- /dev/null +++ b/public/tags/zola/atom.xml @@ -0,0 +1,99 @@ + + + - Zola + + + Zola + 2021-02-18T00:00:00+00:00 + /tags/zola/atom.xml + + Website Redesign + 2021-02-18T00:00:00+00:00 + 2021-02-18T00:00:00+00:00 + + /news/website-redesign/ + <p>I know a little bit about a lot of things, and one of the things that I know +only in passing is web development.<span id="continue-reading"></span> I am by no means qualified at +or excited about web design. However, in the spirit of DIY I have always muddled +through all of my own projects. This has in the past meant using a CMS of some +sort, and a rather long time ago I settled on Mezzanine, a Django-based CMS +written in Python.</p> +<p>This worked out all right in most ways. However, a few weeks back I had a server +outage that I traced back to the update from Python 3.8 to Python 3.9. The +virtualenv that I had set up simply stopped working, causing the web server to be +unable to start as the default handler was DOA. Now, a Python virtualenv is a +supposedly complete standalone environment containing the Python interpretor and +libraries frozen to be version compatible with your application. It is supposed +to be self contained and not dependent upon the system-wide Python installation. +The fact that bumping a minor version number caused it to fail is distressing +and has soured my already low opinion of Python somewhat.</p> +<p>Additionally, I have long desired to incorporate a full handbook into the website +and do so in a way that looks seemless with the rest of the site. HitchHiker is +not going to be a turnkey system for most people and will need good documentation. +I have tried a few things that were available online, including Mezzanine Wiki, +but nothing is really suitable and many packages are broken and/or unmaintained +(including Mezzanine Wiki at the time I tried it).</p> +<p>Being impressed with the quality of the documentation for Rust I looked into what +they use. The Rust Book is built using <a href="https://github.com/rust-lang/mdBook">mdbook</a>, +which is a wonderful static markdown to html generator that does exaclt what it +claims to do and does it exceptionally well. After messing with it for all of two +minutes I was sold - it's just plain phenominal in use.</p> +<p>Having settled on mdbook for the forthcoming &quot;<strong>Hitch Hiker's Guide to Hitch Hiker +Linux</strong>&quot; I decided that if we're going static pages there, it would be a good +time to go static pages everywhere. I set about looking for a static site generator +that would give me enough flexibility for my needs and still be simple to use.</p> +<p>While there is no shortage of SSG's available right now, there were several popular +ones that I never really considered based on implementation. Jekyll, for one, is +written in Ruby and I'm not looking to pollute my machine with more interpreted +language cruft.</p> +<p>I gave <a href="https://gohugo.io/">Hugo</a> a long, hard look and went so far as to install +it and do some testing. Hugo is written in Go, seems to work well, and is definitely +fast. However, none of the available themes were going to be suitable without a +good deal of hacking.</p> +<p>At first glance, <a href="https://www.getzola.org/">Zola</a> appeared to have the same +strengths and the same issues as Hugo for my use case. I really couldn't see +applying any of the themes that I found directly without a lot of customization, +and there were a couple that I tried that were flat out broken. On top of whatever +customization I was going to have to do to whatever theme I picked, I was also +going to have to adapt to an mdbook theme as well....or was there another way?</p> +<p>It turns out that the default set of themes that ship with mdbook are pretty much +already great, and would look great adapted to an entire site. Now, mdbook itself +is pretty much not suitable for generating the entire site, as I need a front +page, I want to keep my blog, and I'd like to be able to incorporate other pages +as well that aren't going into the table of contents for the book. But what I +thought I could do is to create my own Zola template using the css from the mdbook +themes.</p> +<p>So in the end that's what I did. Zola, written in Rust, is actually quite a bit +simpler than Hugo and after a few initial trip ups getting started I'm finding +the template system to be something I can navigate all right. I'm left with a two +step rendering process to build the full site, as I'm rendering most of the site +using Zola and the book using mdbook. But hey, I've already proven that I can do +a good bit of automation using <code>make</code>, right?</p> +<p>While there's a bit more work left to finish migrating the old site, I have to +say that I'm completely satisfied with my choices as of now. Both Zola and mdbook +do things for me that were not going to be easily achievable in Mezzanine and come +with a lot of benefits right out of the box. As a for instance, built in syntax +highlighting for code snippets! Here's <code>echo</code> in Rust:</p> +<pre style="background-color:#2b303b;"> +<code class="language-Rust" data-lang="Rust"><span style="color:#c0c5ce;">#![</span><span style="color:#bf616a;">warn</span><span style="color:#c0c5ce;">(clippy::all, clippy::pedantic)] +</span><span style="color:#b48ead;">use </span><span style="color:#c0c5ce;">std::env; + +</span><span style="color:#b48ead;">fn </span><span style="color:#8fa1b3;">main</span><span style="color:#c0c5ce;">() { + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> args: Vec&lt;String&gt; = env::args().</span><span style="color:#96b5b4;">collect</span><span style="color:#c0c5ce;">(); + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> len = args.</span><span style="color:#96b5b4;">len</span><span style="color:#c0c5ce;">(); + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> n = len &gt; </span><span style="color:#d08770;">1 </span><span style="color:#c0c5ce;">&amp;&amp; args[</span><span style="color:#d08770;">1</span><span style="color:#c0c5ce;">] == &quot;</span><span style="color:#a3be8c;">-n</span><span style="color:#c0c5ce;">&quot;; + </span><span style="color:#b48ead;">let</span><span style="color:#c0c5ce;"> i = </span><span style="color:#b48ead;">if</span><span style="color:#c0c5ce;"> n { </span><span style="color:#d08770;">2 </span><span style="color:#c0c5ce;">} </span><span style="color:#b48ead;">else </span><span style="color:#c0c5ce;">{ </span><span style="color:#d08770;">1 </span><span style="color:#c0c5ce;">}; + </span><span style="color:#b48ead;">for </span><span style="color:#c0c5ce;">(index, arg) in args.</span><span style="color:#96b5b4;">iter</span><span style="color:#c0c5ce;">().</span><span style="color:#96b5b4;">enumerate</span><span style="color:#c0c5ce;">().</span><span style="color:#96b5b4;">skip</span><span style="color:#c0c5ce;">(i) { + </span><span style="color:#b48ead;">if</span><span style="color:#c0c5ce;"> index &lt; len - </span><span style="color:#d08770;">1 </span><span style="color:#c0c5ce;">{ + print!(&quot;</span><span style="color:#d08770;">{} </span><span style="color:#c0c5ce;">&quot;, arg); + } </span><span style="color:#b48ead;">else </span><span style="color:#c0c5ce;">{ + print!(&quot;</span><span style="color:#d08770;">{}</span><span style="color:#c0c5ce;">&quot;, arg); + } + } + </span><span style="color:#b48ead;">if </span><span style="color:#c0c5ce;">!n { + println!(); + } +} +</span></code></pre> + + diff --git a/public/tags/zola/index.html b/public/tags/zola/index.html new file mode 100644 index 0000000..1a25cfe --- /dev/null +++ b/public/tags/zola/index.html @@ -0,0 +1,531 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + +

    Posts tagged "Zola"

    +
      + +
      + + Website Redesign + +
      2021-02-18
      + +

      I know a little bit about a lot of things, and one of the things that I know +only in passing is web development....

      + + Read More -> +
      + +
    +
    +News Home | + Tags: + + + + + + 4.4BSDlite + + + Arm + + + C Programming + + + Clang + + + cross-compile + + + css + + + Deprecation + + + Editors + + + Glibc + + + GNU Make + + + html + + + Libraries + + + llvm + + + mdbook + + + Milestones + + + NonGNU + + + Packages + + + Pkgsrc + + + Porting + + + Programming + + + Qemu + + + RiscV + + + Roadmap + + + Rust + + + Site News + + + sysroot + + + Systemd + + + Utilities + + + Web Programming + + + Zola + + + + + + +
    +
    +
    +
    + + + + + diff --git a/static/assets/screenshot_42.png b/static/assets/screenshot_42.png new file mode 100644 index 0000000000000000000000000000000000000000..9ce45f5ff90d6112c6c479b6957e11bccb40897b GIT binary patch literal 134280 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

    Z=s+z)KgP4iybsqHD)O8ee@mfJW?Ve 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 z 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 Rm?i1j6;G)WGUQBd{Xg(cHKYIl literal 0 HcmV?d00001 diff --git a/static/hhl.css b/static/hhl.css new file mode 100644 index 0000000..b7dd656 --- /dev/null +++ b/static/hhl.css @@ -0,0 +1,27 @@ +@import url("handbook/variables.css"); +.tags { + background-color: var(--sidebar-bg); + padding-left: 5px; + padding-right: 5px; + border-radius: 10px; +} + +pre { + padding-left: 15px; + padding-right: 15px; + padding-top: 5px; + padding-bottom: 5px; + border-radius: 5px; +} + +.card { + margin-top: 10px; + margin-bottom: 10px; + padding: 15px; + border-radius: 10px; + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2); +} + +.right { + float: right; +} diff --git a/templates/404.html b/templates/404.html new file mode 100644 index 0000000..eb4d858 --- /dev/null +++ b/templates/404.html @@ -0,0 +1,8 @@ +{% extends "base.html" %} + +{% block content %} +

    Page not found!

    +The requested URL was not found on this server. If you entered the URL manually +please check your spelling and try again. +

    Error 404

    +{% endblock content %} diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000..cd36a71 --- /dev/null +++ b/templates/base.html @@ -0,0 +1,413 @@ + + + + + + Hitch Hiker Linux + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + {% block content %} {% endblock %} +
    +
    +
    +
    + + + + + diff --git a/templates/categories/list.html b/templates/categories/list.html new file mode 100644 index 0000000..9f37329 --- /dev/null +++ b/templates/categories/list.html @@ -0,0 +1,12 @@ +{% extends "base.html" %} + +{% block content %} +
      +

      Categories

      + {% for tag in terms %} +
    • {{ tag.name }}
    • + {% endfor %} +
    +
    +News Home +{% endblock content %} diff --git a/templates/categories/single.html b/templates/categories/single.html new file mode 100644 index 0000000..580b03c --- /dev/null +++ b/templates/categories/single.html @@ -0,0 +1,30 @@ +{% extends "base.html" %} + +{% block content %} +

    Posts tagged "{{ term.name }}"

    +
      + {% for page in term.pages %} +
    • + {% if page.date %} + {{ page.date }} -- + {% endif %} + {{ page.title }} + {% if page.summary %} +
      {{ page.summary | markdown(inline=true) | safe }}... + {% endif %} +
    • + {% endfor %} +
    +
    +News Home | + Tags: + {% for t in config.taxonomies %} + {% if t.name == "tags" %} + {% set tags = get_taxonomy(kind=t.name) %} + {% for item in tags.items %} + {% set url = get_taxonomy_url(kind=tags.kind.name, name=item.name) %} + {{ item.name }} + {% endfor %} + {% endif %} + {% endfor %} +{% endblock content %} diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..ff3ec2a --- /dev/null +++ b/templates/index.html @@ -0,0 +1,32 @@ +{% extends "base.html" %} + +{% block content %} +

    Welcome Travellers!

    +Welcome to HitchHiker Linux, a small distribution that makes few assumptions on +end use and strives to remain faithful to the traditional Unix way. For more +information please visit the About page, or feel free to +check out the Documentation. +
    +

    Site News

    +{% set site_news = get_section(path="news/_index.md") + | get(key="pages") + | sort(attribute="date") + | filter(attribute="taxonomies.categories", value=["Site News"]) + | slice(end=3) + %} +{% for page in site_news %} + +{% endfor %} + +{% endblock content %} diff --git a/templates/news-page.html b/templates/news-page.html new file mode 100644 index 0000000..482de47 --- /dev/null +++ b/templates/news-page.html @@ -0,0 +1,14 @@ +{% extends "base.html" %} + +{% block content %} +

    {{ page.title }}

    +

    {{ page.date }}

    + {{ page.content | safe }} + {% if page.taxonomies %} +
    +

    Tags for this post:

    + {% for tag in page.taxonomies.tags %} + {{ tag }} + {% endfor %} + {% endif %} +{% endblock content %} diff --git a/templates/news.html b/templates/news.html new file mode 100644 index 0000000..bd36230 --- /dev/null +++ b/templates/news.html @@ -0,0 +1,60 @@ +{% extends "base.html" %} + +{% block content %} +
    +
    +

    {{ section.title }}

    +
      + {% for page in paginator.pages %} +
      + + {{ page.title }} + +
      {{ page.date }}
      + {% if page.summary %} +

      {{ page.summary | markdown(inline=true) | safe }}...

      + {% endif %} + Read More -> +
      + {% endfor %} +
    +
    +

    Tags:

    + {% for t in config.taxonomies %} + {% if t.name == "tags" %} + {% set tags = get_taxonomy(kind=t.name) %} + {% for item in tags.items %} + {% set url = get_taxonomy_url(kind=tags.kind.name, name=item.name) %} + {{ item.name }} + {% endfor %} + {% endif %} + {% endfor %} + {% if paginator.previous %} + + + {% endif %} + {% if paginator.next %} + + + {% endif %} +
    +
    +{% endblock content %} diff --git a/templates/page.html b/templates/page.html new file mode 100644 index 0000000..5ee53d5 --- /dev/null +++ b/templates/page.html @@ -0,0 +1,6 @@ +{% extends "base.html" %} + +{% block content %} +

    {{ page.date }}

    + {{ page.content | safe }} +{% endblock content %} diff --git a/templates/tags/list.html b/templates/tags/list.html new file mode 100644 index 0000000..311c448 --- /dev/null +++ b/templates/tags/list.html @@ -0,0 +1,12 @@ +{% extends "base.html" %} + +{% block content %} + +
    +News Home +{% endblock content %} diff --git a/templates/tags/single.html b/templates/tags/single.html new file mode 100644 index 0000000..7b9ffc5 --- /dev/null +++ b/templates/tags/single.html @@ -0,0 +1,31 @@ +{% extends "base.html" %} + +{% block content %} +

    Posts tagged "{{ term.name }}"

    +
      + {% for page in term.pages %} +
      + + {{ page.title }} + +
      {{ page.date }}
      + {% if page.summary %} +

      {{ page.summary | markdown(inline=true) | safe }}...

      + {% endif %} + Read More -> +
      + {% endfor %} +
    +
    +News Home | + Tags: + {% for t in config.taxonomies %} + {% if t.name == "tags" %} + {% set tags = get_taxonomy(kind=t.name) %} + {% for item in tags.items %} + {% set url = get_taxonomy_url(kind=tags.kind.name, name=item.name) %} + {{ item.name }} + {% endfor %} + {% endif %} + {% endfor %} +{% endblock content %}