texlive[72022] Build/source/libs: freetype 2.13.3

commits+kakuto at tug.org commits+kakuto at tug.org
Tue Aug 13 02:41:00 CEST 2024


Revision: 72022
          https://tug.org/svn/texlive?view=revision&revision=72022
Author:   kakuto
Date:     2024-08-13 02:41:00 +0200 (Tue, 13 Aug 2024)
Log Message:
-----------
freetype 2.13.3

Modified Paths:
--------------
    trunk/Build/source/libs/README
    trunk/Build/source/libs/freetype2/ChangeLog
    trunk/Build/source/libs/freetype2/TLpatches/ChangeLog
    trunk/Build/source/libs/freetype2/TLpatches/TL-Changes
    trunk/Build/source/libs/freetype2/configure
    trunk/Build/source/libs/freetype2/freetype-src/CMakeLists.txt
    trunk/Build/source/libs/freetype2/freetype-src/ChangeLog
    trunk/Build/source/libs/freetype2/freetype-src/Makefile
    trunk/Build/source/libs/freetype2/freetype-src/README
    trunk/Build/source/libs/freetype2/freetype-src/README.git
    trunk/Build/source/libs/freetype2/freetype-src/autogen.sh
    trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/README
    trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/include/config/ftconfig.h
    trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/include/config/ftmodule.h
    trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/makefile
    trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/makefile.os4
    trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/smakefile
    trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/src/base/ftdebug.c
    trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/src/base/ftsystem.c
    trunk/Build/source/libs/freetype2/freetype-src/builds/ansi/ansi-def.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/ansi/ansi.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/beos/beos-def.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/beos/beos.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/beos/detect.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/cmake/FindBrotliDec.cmake
    trunk/Build/source/libs/freetype2/freetype-src/builds/cmake/iOS.cmake
    trunk/Build/source/libs/freetype2/freetype-src/builds/cmake/testbuild.sh
    trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/ansi-cc.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/bcc-dev.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/bcc.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/emx.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/gcc-dev.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/gcc.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/intelc.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/unix-lcc.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/visualage.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/visualc.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/watcom.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/win-lcc.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/detect.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/dos/detect.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/dos/dos-def.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/dos/dos-emx.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/dos/dos-gcc.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/dos/dos-wat.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/exports.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/freetype.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/link_dos.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/link_std.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/mac/ftmac.c
    trunk/Build/source/libs/freetype2/freetype-src/builds/meson/extract_freetype_version.py
    trunk/Build/source/libs/freetype2/freetype-src/builds/meson/extract_libtool_version.py
    trunk/Build/source/libs/freetype2/freetype-src/builds/meson/generate_reference_docs.py
    trunk/Build/source/libs/freetype2/freetype-src/builds/meson/parse_modules_cfg.py
    trunk/Build/source/libs/freetype2/freetype-src/builds/meson/process_ftoption_h.py
    trunk/Build/source/libs/freetype2/freetype-src/builds/modules.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/os2/detect.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/os2/os2-def.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/os2/os2-dev.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/os2/os2-gcc.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/symbian/bld.inf
    trunk/Build/source/libs/freetype2/freetype-src/builds/symbian/freetype.mmp
    trunk/Build/source/libs/freetype2/freetype-src/builds/toplevel.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/unix/aclocal.m4
    trunk/Build/source/libs/freetype2/freetype-src/builds/unix/configure
    trunk/Build/source/libs/freetype2/freetype-src/builds/unix/configure.ac
    trunk/Build/source/libs/freetype2/freetype-src/builds/unix/configure.raw
    trunk/Build/source/libs/freetype2/freetype-src/builds/unix/detect.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/unix/freetype-config.in
    trunk/Build/source/libs/freetype2/freetype-src/builds/unix/freetype2.m4
    trunk/Build/source/libs/freetype2/freetype-src/builds/unix/ft-munmap.m4
    trunk/Build/source/libs/freetype2/freetype-src/builds/unix/ftconfig.h.in
    trunk/Build/source/libs/freetype2/freetype-src/builds/unix/ftsystem.c
    trunk/Build/source/libs/freetype2/freetype-src/builds/unix/install-sh
    trunk/Build/source/libs/freetype2/freetype-src/builds/unix/install.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix-cc.in
    trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix-def.in
    trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix-dev.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix-lcc.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unixddef.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/vms/ftconfig.h
    trunk/Build/source/libs/freetype2/freetype-src/builds/vms/ftsystem.c
    trunk/Build/source/libs/freetype2/freetype-src/builds/wince/ftdebug.c
    trunk/Build/source/libs/freetype2/freetype-src/builds/wince/vc2005-ce/index.html
    trunk/Build/source/libs/freetype2/freetype-src/builds/wince/vc2008-ce/index.html
    trunk/Build/source/libs/freetype2/freetype-src/builds/windows/detect.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/windows/ftdebug.c
    trunk/Build/source/libs/freetype2/freetype-src/builds/windows/ftsystem.c
    trunk/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/index.html
    trunk/Build/source/libs/freetype2/freetype-src/builds/windows/visualc/index.html
    trunk/Build/source/libs/freetype2/freetype-src/builds/windows/visualce/index.html
    trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-bcc.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-bccd.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-dev.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-gcc.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-icc.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-intl.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-lcc.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-mingw32.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-vcc.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-wat.mk
    trunk/Build/source/libs/freetype2/freetype-src/builds/windows/win32-def.mk
    trunk/Build/source/libs/freetype2/freetype-src/configure
    trunk/Build/source/libs/freetype2/freetype-src/devel/ft2build.h
    trunk/Build/source/libs/freetype2/freetype-src/devel/ftoption.h
    trunk/Build/source/libs/freetype2/freetype-src/docs/CHANGES
    trunk/Build/source/libs/freetype2/freetype-src/docs/CUSTOMIZE
    trunk/Build/source/libs/freetype2/freetype-src/docs/DEBUG
    trunk/Build/source/libs/freetype2/freetype-src/docs/DOCGUIDE
    trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL
    trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.ANY
    trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.CROSS
    trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.GNU
    trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.UNIX
    trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.VMS
    trunk/Build/source/libs/freetype2/freetype-src/docs/TODO
    trunk/Build/source/libs/freetype2/freetype-src/docs/VERSIONS.TXT
    trunk/Build/source/libs/freetype2/freetype-src/docs/formats.txt
    trunk/Build/source/libs/freetype2/freetype-src/docs/freetype-config.1
    trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.20
    trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.21
    trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.210
    trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.22
    trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.23
    trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.24
    trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.25
    trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.26
    trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.27
    trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.28
    trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.29
    trunk/Build/source/libs/freetype2/freetype-src/docs/raster.txt
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/404.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/lunr/min/lunr.ar.min.js
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/lunr/min/lunr.zh.min.js
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/lunr/wordcut.js
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-auto_hinter.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-basic_types.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-bdf_fonts.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-bitmap_handling.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-bzip2.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-cache_subsystem.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-cff_driver.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-character_mapping.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-cid_fonts.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-color_management.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-computations.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-debugging_apis.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-error_code_values.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-error_enumerations.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-face_creation.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-font_formats.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-font_testing_macros.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-gasp_table.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-glyph_management.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-glyph_retrieval.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-glyph_stroker.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-glyph_variants.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-gx_validation.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-gzip.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-header_file_macros.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-header_inclusion.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-incremental.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-index.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-information_retrieval.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-layer_management.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-lcd_rendering.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-library_setup.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-list_processing.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-lzw.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-mac_specific.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-module_management.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-multiple_masters.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-ot_svg_driver.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-ot_validation.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-other_api_data.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-outline_processing.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-parameter_tags.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-pcf_driver.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-pfr_fonts.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-preamble.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-properties.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-quick_advance.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-raster.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-sfnt_names.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-sizes_management.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-sizing_and_scaling.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-svg_fonts.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-system_interface.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-t1_cid_driver.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-truetype_engine.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-truetype_tables.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-tt_driver.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-type1_tables.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-user_allocation.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/ft2-winfnt_fonts.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/index.html
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/search/search_index.json
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/sitemap.xml
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/sitemap.xml.gz
    trunk/Build/source/libs/freetype2/freetype-src/docs/release
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftconfig.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftheader.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftoption.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftstdlib.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/config/integer-types.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/config/mac-support.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/config/public-macros.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/freetype.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftadvanc.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftbbox.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftbdf.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftbitmap.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftbzip2.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftcache.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftcid.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftcolor.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftdriver.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/fterrdef.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/fterrors.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftfntfmt.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftgasp.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftglyph.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftgxval.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftgzip.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftimage.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftincrem.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftlcdfil.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftlist.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftlogging.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftlzw.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftmac.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftmm.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftmodapi.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftmoderr.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftotval.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftoutln.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftparams.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftpfr.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftrender.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftsizes.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftsnames.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftstroke.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftsynth.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftsystem.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/fttrigon.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/fttypes.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ftwinfnt.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/autohint.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/cffotypes.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/cfftypes.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/compiler-macros.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftcalc.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftdebug.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftdrv.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftgloadr.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftmemory.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftmmtypes.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftobjs.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftpsprop.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftrfork.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftserv.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftstream.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/fttrace.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftvalid.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/psaux.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/pshints.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svbdf.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svcfftl.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svcid.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svfntfmt.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svgldict.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svgxval.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svkern.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svmetric.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svmm.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svotval.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svpfr.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svpostnm.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svprop.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svpscmap.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svpsinfo.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svsfnt.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svttcmap.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svtteng.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svttglyf.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/services/svwinfnt.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/sfnt.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/svginterface.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/t1types.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/tttypes.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/internal/wofftypes.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/otsvg.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/t1tables.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/ttnameid.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/tttables.h
    trunk/Build/source/libs/freetype2/freetype-src/include/freetype/tttags.h
    trunk/Build/source/libs/freetype2/freetype-src/include/ft2build.h
    trunk/Build/source/libs/freetype2/freetype-src/meson.build
    trunk/Build/source/libs/freetype2/freetype-src/meson_options.txt
    trunk/Build/source/libs/freetype2/freetype-src/modules.cfg
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afblue.c
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afblue.cin
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afblue.dat
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afblue.h
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afblue.hin
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afcjk.c
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afcjk.h
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afcover.h
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afdummy.c
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afdummy.h
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/aferrors.h
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afglobal.c
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afglobal.h
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afhints.c
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afhints.h
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afindic.c
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afindic.h
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/aflatin.c
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/aflatin.h
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afloader.c
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afloader.h
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afmodule.c
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afmodule.h
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afranges.c
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afranges.h
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afscript.h
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afshaper.c
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afshaper.h
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afstyles.h
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/aftypes.h
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afws-decl.h
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/afws-iter.h
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/autofit.c
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/module.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/autofit/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftadvanc.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftbase.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftbase.h
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftbbox.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftbdf.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftbitmap.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftcalc.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftcid.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftcolor.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftdbgmem.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftdebug.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/fterrors.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftfntfmt.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftfstype.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftgasp.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftgloadr.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftglyph.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftgxval.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftinit.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftlcdfil.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftmac.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftmm.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftobjs.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftotval.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftoutln.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftpatent.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftpfr.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftpsprop.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftrfork.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftsnames.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftstream.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftstroke.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftsynth.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftsystem.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/fttrigon.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/fttype1.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftutil.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftver.rc
    trunk/Build/source/libs/freetype2/freetype-src/src/base/ftwinfnt.c
    trunk/Build/source/libs/freetype2/freetype-src/src/base/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/bdf/bdfdrivr.c
    trunk/Build/source/libs/freetype2/freetype-src/src/bdf/bdflib.c
    trunk/Build/source/libs/freetype2/freetype-src/src/bzip2/ftbzip2.c
    trunk/Build/source/libs/freetype2/freetype-src/src/bzip2/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/cache/ftcache.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cache/ftcbasic.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cache/ftccache.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cache/ftccache.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cache/ftccback.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cache/ftccmap.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cache/ftcerror.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cache/ftcglyph.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cache/ftcglyph.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cache/ftcimage.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cache/ftcimage.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cache/ftcmanag.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cache/ftcmanag.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cache/ftcmru.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cache/ftcmru.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cache/ftcsbits.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cache/ftcsbits.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cache/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/cff/cff.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cff/cffcmap.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cff/cffcmap.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cff/cffdrivr.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cff/cffdrivr.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cff/cfferrs.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cff/cffgload.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cff/cffgload.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cff/cffload.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cff/cffload.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cff/cffobjs.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cff/cffobjs.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cff/cffparse.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cff/cffparse.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cff/cfftoken.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cff/module.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/cff/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/cid/ciderrs.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cid/cidgload.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cid/cidgload.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cid/cidload.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cid/cidload.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cid/cidobjs.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cid/cidobjs.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cid/cidparse.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cid/cidparse.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cid/cidriver.c
    trunk/Build/source/libs/freetype2/freetype-src/src/cid/cidriver.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cid/cidtoken.h
    trunk/Build/source/libs/freetype2/freetype-src/src/cid/module.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/cid/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/cid/type1cid.c
    trunk/Build/source/libs/freetype2/freetype-src/src/dlg/dlgwrap.c
    trunk/Build/source/libs/freetype2/freetype-src/src/dlg/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/README
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvalid.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvalid.h
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvbsln.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvcommn.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvcommn.h
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxverror.h
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvfeat.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvfeat.h
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvfgen.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvjust.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvkern.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvlcar.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmod.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmod.h
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmort.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmort.h
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmort0.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmort1.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmort2.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmort4.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmort5.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmorx.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmorx.h
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmorx0.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmorx1.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmorx2.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmorx4.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvmorx5.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvopbd.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvprop.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/gxvtrak.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/module.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/gxvalid/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/gzip/README.freetype
    trunk/Build/source/libs/freetype2/freetype-src/src/gzip/adler32.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gzip/crc32.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gzip/ftgzip.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gzip/ftzconf.h
    trunk/Build/source/libs/freetype2/freetype-src/src/gzip/gzguts.h
    trunk/Build/source/libs/freetype2/freetype-src/src/gzip/inffast.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gzip/inffast.h
    trunk/Build/source/libs/freetype2/freetype-src/src/gzip/inflate.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gzip/inflate.h
    trunk/Build/source/libs/freetype2/freetype-src/src/gzip/inftrees.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gzip/inftrees.h
    trunk/Build/source/libs/freetype2/freetype-src/src/gzip/patches/freetype-zlib.diff
    trunk/Build/source/libs/freetype2/freetype-src/src/gzip/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/gzip/zlib.h
    trunk/Build/source/libs/freetype2/freetype-src/src/gzip/zutil.c
    trunk/Build/source/libs/freetype2/freetype-src/src/gzip/zutil.h
    trunk/Build/source/libs/freetype2/freetype-src/src/lzw/ftlzw.c
    trunk/Build/source/libs/freetype2/freetype-src/src/lzw/ftzopen.c
    trunk/Build/source/libs/freetype2/freetype-src/src/lzw/ftzopen.h
    trunk/Build/source/libs/freetype2/freetype-src/src/lzw/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/otvalid/module.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/otvalid/otvalid.c
    trunk/Build/source/libs/freetype2/freetype-src/src/otvalid/otvalid.h
    trunk/Build/source/libs/freetype2/freetype-src/src/otvalid/otvbase.c
    trunk/Build/source/libs/freetype2/freetype-src/src/otvalid/otvcommn.c
    trunk/Build/source/libs/freetype2/freetype-src/src/otvalid/otvcommn.h
    trunk/Build/source/libs/freetype2/freetype-src/src/otvalid/otverror.h
    trunk/Build/source/libs/freetype2/freetype-src/src/otvalid/otvgdef.c
    trunk/Build/source/libs/freetype2/freetype-src/src/otvalid/otvgpos.c
    trunk/Build/source/libs/freetype2/freetype-src/src/otvalid/otvgpos.h
    trunk/Build/source/libs/freetype2/freetype-src/src/otvalid/otvgsub.c
    trunk/Build/source/libs/freetype2/freetype-src/src/otvalid/otvjstf.c
    trunk/Build/source/libs/freetype2/freetype-src/src/otvalid/otvmath.c
    trunk/Build/source/libs/freetype2/freetype-src/src/otvalid/otvmod.c
    trunk/Build/source/libs/freetype2/freetype-src/src/otvalid/otvmod.h
    trunk/Build/source/libs/freetype2/freetype-src/src/otvalid/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/pcf/pcfdrivr.c
    trunk/Build/source/libs/freetype2/freetype-src/src/pcf/pcfutil.c
    trunk/Build/source/libs/freetype2/freetype-src/src/pfr/module.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/pfr/pfr.c
    trunk/Build/source/libs/freetype2/freetype-src/src/pfr/pfrcmap.c
    trunk/Build/source/libs/freetype2/freetype-src/src/pfr/pfrcmap.h
    trunk/Build/source/libs/freetype2/freetype-src/src/pfr/pfrdrivr.c
    trunk/Build/source/libs/freetype2/freetype-src/src/pfr/pfrdrivr.h
    trunk/Build/source/libs/freetype2/freetype-src/src/pfr/pfrerror.h
    trunk/Build/source/libs/freetype2/freetype-src/src/pfr/pfrgload.c
    trunk/Build/source/libs/freetype2/freetype-src/src/pfr/pfrgload.h
    trunk/Build/source/libs/freetype2/freetype-src/src/pfr/pfrload.c
    trunk/Build/source/libs/freetype2/freetype-src/src/pfr/pfrload.h
    trunk/Build/source/libs/freetype2/freetype-src/src/pfr/pfrobjs.c
    trunk/Build/source/libs/freetype2/freetype-src/src/pfr/pfrobjs.h
    trunk/Build/source/libs/freetype2/freetype-src/src/pfr/pfrsbit.c
    trunk/Build/source/libs/freetype2/freetype-src/src/pfr/pfrsbit.h
    trunk/Build/source/libs/freetype2/freetype-src/src/pfr/pfrtypes.h
    trunk/Build/source/libs/freetype2/freetype-src/src/pfr/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/afmparse.c
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/afmparse.h
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/cffdecode.c
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/cffdecode.h
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/module.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/psaux.c
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/psauxerr.h
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/psauxmod.c
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/psauxmod.h
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/psblues.c
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/psconv.c
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/psconv.h
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/psft.c
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/psft.h
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/psintrp.c
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/psobjs.c
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/psobjs.h
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/t1cmap.c
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/t1cmap.h
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/t1decode.c
    trunk/Build/source/libs/freetype2/freetype-src/src/psaux/t1decode.h
    trunk/Build/source/libs/freetype2/freetype-src/src/pshinter/module.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/pshinter/pshalgo.c
    trunk/Build/source/libs/freetype2/freetype-src/src/pshinter/pshalgo.h
    trunk/Build/source/libs/freetype2/freetype-src/src/pshinter/pshglob.c
    trunk/Build/source/libs/freetype2/freetype-src/src/pshinter/pshglob.h
    trunk/Build/source/libs/freetype2/freetype-src/src/pshinter/pshinter.c
    trunk/Build/source/libs/freetype2/freetype-src/src/pshinter/pshmod.c
    trunk/Build/source/libs/freetype2/freetype-src/src/pshinter/pshmod.h
    trunk/Build/source/libs/freetype2/freetype-src/src/pshinter/pshnterr.h
    trunk/Build/source/libs/freetype2/freetype-src/src/pshinter/pshrec.c
    trunk/Build/source/libs/freetype2/freetype-src/src/pshinter/pshrec.h
    trunk/Build/source/libs/freetype2/freetype-src/src/pshinter/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/psnames/module.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/psnames/psmodule.c
    trunk/Build/source/libs/freetype2/freetype-src/src/psnames/psmodule.h
    trunk/Build/source/libs/freetype2/freetype-src/src/psnames/psnamerr.h
    trunk/Build/source/libs/freetype2/freetype-src/src/psnames/psnames.c
    trunk/Build/source/libs/freetype2/freetype-src/src/psnames/pstables.h
    trunk/Build/source/libs/freetype2/freetype-src/src/psnames/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/raster/ftmisc.h
    trunk/Build/source/libs/freetype2/freetype-src/src/raster/ftraster.c
    trunk/Build/source/libs/freetype2/freetype-src/src/raster/ftraster.h
    trunk/Build/source/libs/freetype2/freetype-src/src/raster/ftrend1.c
    trunk/Build/source/libs/freetype2/freetype-src/src/raster/ftrend1.h
    trunk/Build/source/libs/freetype2/freetype-src/src/raster/module.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/raster/raster.c
    trunk/Build/source/libs/freetype2/freetype-src/src/raster/rasterrs.h
    trunk/Build/source/libs/freetype2/freetype-src/src/raster/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/sdf/ftbsdf.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sdf/ftsdf.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sdf/ftsdf.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sdf/ftsdfcommon.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sdf/ftsdfcommon.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sdf/ftsdferrs.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sdf/ftsdfrend.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sdf/ftsdfrend.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sdf/module.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/sdf/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/sdf/sdf.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/module.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/pngshim.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/pngshim.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/sfdriver.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/sfdriver.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/sferrors.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/sfnt.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/sfobjs.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/sfobjs.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff2.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/sfwoff2.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttbdf.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttbdf.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmap.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmap.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcmapc.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcolr.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcolr.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcpal.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttcpal.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttkern.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttkern.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttload.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttload.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttmtx.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttmtx.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttpost.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttsbit.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttsbit.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttsvg.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttsvg.h
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/woff2tags.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/woff2tags.h
    trunk/Build/source/libs/freetype2/freetype-src/src/smooth/ftgrays.c
    trunk/Build/source/libs/freetype2/freetype-src/src/smooth/ftgrays.h
    trunk/Build/source/libs/freetype2/freetype-src/src/smooth/ftsmerrs.h
    trunk/Build/source/libs/freetype2/freetype-src/src/smooth/ftsmooth.c
    trunk/Build/source/libs/freetype2/freetype-src/src/smooth/ftsmooth.h
    trunk/Build/source/libs/freetype2/freetype-src/src/smooth/module.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/smooth/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/smooth/smooth.c
    trunk/Build/source/libs/freetype2/freetype-src/src/svg/ftsvg.c
    trunk/Build/source/libs/freetype2/freetype-src/src/svg/ftsvg.h
    trunk/Build/source/libs/freetype2/freetype-src/src/svg/module.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/svg/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/svg/svg.c
    trunk/Build/source/libs/freetype2/freetype-src/src/svg/svgtypes.h
    trunk/Build/source/libs/freetype2/freetype-src/src/tools/afblue.pl
    trunk/Build/source/libs/freetype2/freetype-src/src/tools/apinames.c
    trunk/Build/source/libs/freetype2/freetype-src/src/tools/glnames.py
    trunk/Build/source/libs/freetype2/freetype-src/src/tools/update-copyright-year
    trunk/Build/source/libs/freetype2/freetype-src/src/truetype/module.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/truetype/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/truetype/truetype.c
    trunk/Build/source/libs/freetype2/freetype-src/src/truetype/ttdriver.c
    trunk/Build/source/libs/freetype2/freetype-src/src/truetype/ttdriver.h
    trunk/Build/source/libs/freetype2/freetype-src/src/truetype/tterrors.h
    trunk/Build/source/libs/freetype2/freetype-src/src/truetype/ttgload.c
    trunk/Build/source/libs/freetype2/freetype-src/src/truetype/ttgload.h
    trunk/Build/source/libs/freetype2/freetype-src/src/truetype/ttgxvar.c
    trunk/Build/source/libs/freetype2/freetype-src/src/truetype/ttgxvar.h
    trunk/Build/source/libs/freetype2/freetype-src/src/truetype/ttinterp.c
    trunk/Build/source/libs/freetype2/freetype-src/src/truetype/ttinterp.h
    trunk/Build/source/libs/freetype2/freetype-src/src/truetype/ttobjs.c
    trunk/Build/source/libs/freetype2/freetype-src/src/truetype/ttobjs.h
    trunk/Build/source/libs/freetype2/freetype-src/src/truetype/ttpload.c
    trunk/Build/source/libs/freetype2/freetype-src/src/truetype/ttpload.h
    trunk/Build/source/libs/freetype2/freetype-src/src/type1/module.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/type1/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/type1/t1afm.c
    trunk/Build/source/libs/freetype2/freetype-src/src/type1/t1afm.h
    trunk/Build/source/libs/freetype2/freetype-src/src/type1/t1driver.c
    trunk/Build/source/libs/freetype2/freetype-src/src/type1/t1driver.h
    trunk/Build/source/libs/freetype2/freetype-src/src/type1/t1errors.h
    trunk/Build/source/libs/freetype2/freetype-src/src/type1/t1gload.c
    trunk/Build/source/libs/freetype2/freetype-src/src/type1/t1gload.h
    trunk/Build/source/libs/freetype2/freetype-src/src/type1/t1load.c
    trunk/Build/source/libs/freetype2/freetype-src/src/type1/t1load.h
    trunk/Build/source/libs/freetype2/freetype-src/src/type1/t1objs.c
    trunk/Build/source/libs/freetype2/freetype-src/src/type1/t1objs.h
    trunk/Build/source/libs/freetype2/freetype-src/src/type1/t1parse.c
    trunk/Build/source/libs/freetype2/freetype-src/src/type1/t1parse.h
    trunk/Build/source/libs/freetype2/freetype-src/src/type1/t1tokens.h
    trunk/Build/source/libs/freetype2/freetype-src/src/type1/type1.c
    trunk/Build/source/libs/freetype2/freetype-src/src/type42/module.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/type42/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/type42/t42drivr.c
    trunk/Build/source/libs/freetype2/freetype-src/src/type42/t42drivr.h
    trunk/Build/source/libs/freetype2/freetype-src/src/type42/t42error.h
    trunk/Build/source/libs/freetype2/freetype-src/src/type42/t42objs.c
    trunk/Build/source/libs/freetype2/freetype-src/src/type42/t42objs.h
    trunk/Build/source/libs/freetype2/freetype-src/src/type42/t42parse.c
    trunk/Build/source/libs/freetype2/freetype-src/src/type42/t42parse.h
    trunk/Build/source/libs/freetype2/freetype-src/src/type42/t42types.h
    trunk/Build/source/libs/freetype2/freetype-src/src/type42/type42.c
    trunk/Build/source/libs/freetype2/freetype-src/src/winfonts/fnterrs.h
    trunk/Build/source/libs/freetype2/freetype-src/src/winfonts/module.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/winfonts/rules.mk
    trunk/Build/source/libs/freetype2/freetype-src/src/winfonts/winfnt.c
    trunk/Build/source/libs/freetype2/freetype-src/src/winfonts/winfnt.h
    trunk/Build/source/libs/freetype2/freetype-src/subprojects/libpng.wrap
    trunk/Build/source/libs/freetype2/freetype-src/subprojects/zlib.wrap
    trunk/Build/source/libs/freetype2/freetype-src/vms_make.com
    trunk/Build/source/libs/freetype2/version.ac

Added Paths:
-----------
    trunk/Build/source/libs/freetype2/freetype-src/MSBuild.rsp
    trunk/Build/source/libs/freetype2/freetype-src/MSBuild.sln
    trunk/Build/source/libs/freetype2/freetype-src/docs/freetype-web.txt
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/bundle.fe8b6f2b.min.js
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/bundle.fe8b6f2b.min.js.map
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/lunr/min/lunr.el.min.js
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/lunr/min/lunr.he.min.js
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/lunr/min/lunr.hy.min.js
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/lunr/min/lunr.kn.min.js
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/lunr/min/lunr.ko.min.js
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/lunr/min/lunr.sa.min.js
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/lunr/min/lunr.ta.min.js
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/lunr/min/lunr.te.min.js
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/workers/search.b8dbb3d2.min.js
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/workers/search.b8dbb3d2.min.js.map
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/stylesheets/main.3cba04c6.min.css
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/stylesheets/main.3cba04c6.min.css.map
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/stylesheets/palette.06af60db.min.css
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/stylesheets/palette.06af60db.min.css.map
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttgpos.c
    trunk/Build/source/libs/freetype2/freetype-src/src/sfnt/ttgpos.h

Removed Paths:
-------------
    trunk/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/freetype.sln
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/bundle.82b56eb2.min.js
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/bundle.82b56eb2.min.js.map
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/workers/search.477d984a.min.js
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/workers/search.477d984a.min.js.map
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/stylesheets/main.ca7ac06f.min.css
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/stylesheets/main.ca7ac06f.min.css.map
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/stylesheets/palette.f1a3b89f.min.css
    trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/stylesheets/palette.f1a3b89f.min.css.map

Modified: trunk/Build/source/libs/README
===================================================================
--- trunk/Build/source/libs/README	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/README	2024-08-13 00:41:00 UTC (rev 72022)
@@ -15,7 +15,7 @@
   Since cairo is only used by MetaPost (for png output), and 1.16.0
   seems fine for that, not taking the time and trouble to update.
 
-freetype2 2.13.2 - checked 26aug23
+freetype2 2.13.3 - checked 13aug24
   https://download.savannah.gnu.org/releases/freetype/
 
 gd 2.3.3 - checked 13sep21

Modified: trunk/Build/source/libs/freetype2/ChangeLog
===================================================================
--- trunk/Build/source/libs/freetype2/ChangeLog	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/ChangeLog	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,3 +1,8 @@
+2024-08-13  Akira Kakuto  <kakuto at jcom.zaq.ne.jp>
+
+	Import freetype-2.13.3.
+	* version.ac: Adjusted.
+
 2023-08-26  Akira Kakuto  <kakuto at jcom.zaq.ne.jp>
 
 	Import freetype-2.13.2.

Modified: trunk/Build/source/libs/freetype2/TLpatches/ChangeLog
===================================================================
--- trunk/Build/source/libs/freetype2/TLpatches/ChangeLog	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/TLpatches/ChangeLog	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,3 +1,8 @@
+2024-08-13  Akira Kakuto  <kakuto at jcom.zaq.ne.jp>
+
+	Import freetype-2.13.3 source tree from:
+	  http://download.savannah.gnu.org/releases/freetype.
+
 2023-08-26  Akira Kakuto  <kakuto at jcom.zaq.ne.jp>
 
 	Import freetype-2.13.2 source tree from:

Modified: trunk/Build/source/libs/freetype2/TLpatches/TL-Changes
===================================================================
--- trunk/Build/source/libs/freetype2/TLpatches/TL-Changes	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/TLpatches/TL-Changes	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,2 +1,2 @@
-Changes applied to the freetype-2.13.2/ tree as obtained from:
+Changes applied to the freetype-2.13.3/ tree as obtained from:
 	http://download.savannah.gnu.org/releases/freetype/.

Modified: trunk/Build/source/libs/freetype2/configure
===================================================================
--- trunk/Build/source/libs/freetype2/configure	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/configure	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72 for FreeType (TeX Live) 2.13.2.
+# Generated by GNU Autoconf 2.72 for FreeType (TeX Live) 2.13.3.
 #
 # Report bugs to <tex-k at tug.org>.
 #
@@ -603,8 +603,8 @@
 # Identity of this package.
 PACKAGE_NAME='FreeType (TeX Live)'
 PACKAGE_TARNAME='freetype--tex-live-'
-PACKAGE_VERSION='2.13.2'
-PACKAGE_STRING='FreeType (TeX Live) 2.13.2'
+PACKAGE_VERSION='2.13.3'
+PACKAGE_STRING='FreeType (TeX Live) 2.13.3'
 PACKAGE_BUGREPORT='tex-k at tug.org'
 PACKAGE_URL=''
 
@@ -1305,7 +1305,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-'configure' configures FreeType (TeX Live) 2.13.2 to adapt to many kinds of systems.
+'configure' configures FreeType (TeX Live) 2.13.3 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1373,7 +1373,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of FreeType (TeX Live) 2.13.2:";;
+     short | recursive ) echo "Configuration of FreeType (TeX Live) 2.13.3:";;
    esac
   cat <<\_ACEOF
 
@@ -1470,7 +1470,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-FreeType (TeX Live) configure 2.13.2
+FreeType (TeX Live) configure 2.13.3
 generated by GNU Autoconf 2.72
 
 Copyright (C) 2023 Free Software Foundation, Inc.
@@ -1630,7 +1630,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by FreeType (TeX Live) $as_me 2.13.2, which was
+It was created by FreeType (TeX Live) $as_me 2.13.3, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -4591,7 +4591,7 @@
 
 # Define the identity of the package.
  PACKAGE='freetype--tex-live-'
- VERSION='2.13.2'
+ VERSION='2.13.3'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -6340,7 +6340,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by FreeType (TeX Live) $as_me 2.13.2, which was
+This file was extended by FreeType (TeX Live) $as_me 2.13.3, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -6399,7 +6399,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-FreeType (TeX Live) config.status 2.13.2
+FreeType (TeX Live) config.status 2.13.3
 configured by $0, generated by GNU Autoconf 2.72,
   with options \\"\$ac_cs_config\\"
 

Modified: trunk/Build/source/libs/freetype2/freetype-src/CMakeLists.txt
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/CMakeLists.txt	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/CMakeLists.txt	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,6 +1,6 @@
 # CMakeLists.txt
 #
-# Copyright (C) 2013-2023 by
+# Copyright (C) 2013-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # Written originally by John Cary <cary at txcorp.com>
@@ -110,7 +110,7 @@
 
 # To minimize the number of cmake_policy() workarounds,
 # CMake >= 3 is requested.
-cmake_minimum_required(VERSION 3.0)
+cmake_minimum_required(VERSION 3.0...3.5)
 
 if (NOT CMAKE_VERSION VERSION_LESS 3.3)
   # Allow symbol visibility settings also on static libraries. CMake < 3.3
@@ -164,7 +164,7 @@
 
 set(VERSION_MAJOR "2")
 set(VERSION_MINOR "13")
-set(VERSION_PATCH "2")
+set(VERSION_PATCH "3")
 
 # Generate LIBRARY_VERSION and LIBRARY_SOVERSION.
 set(LIBTOOL_REGEX "version_info='([0-9]+):([0-9]+):([0-9]+)'")
@@ -265,6 +265,8 @@
   else ()
     find_package(PNG)
   endif ()
+  # FreePNG calls FindZLIB so unset ZLIB_FOUND to respect FT_DISABLE_ZLIB
+  unset(ZLIB_FOUND)
 endif ()
 
 if (NOT FT_DISABLE_ZLIB)
@@ -297,7 +299,7 @@
 endif ()
 
 # Create the configuration file
-if (UNIX)
+if (UNIX AND NOT WIN32)
   check_include_file("unistd.h" HAVE_UNISTD_H)
   check_include_file("fcntl.h" HAVE_FCNTL_H)
 
@@ -423,10 +425,10 @@
   src/winfonts/winfnt.c
 )
 
-if (UNIX)
+if (WIN32)
+  list(APPEND BASE_SRCS "builds/windows/ftsystem.c")
+elseif (UNIX)
   list(APPEND BASE_SRCS "builds/unix/ftsystem.c")
-elseif (WIN32)
-  list(APPEND BASE_SRCS "builds/windows/ftsystem.c")
 else ()
   list(APPEND BASE_SRCS "src/base/ftsystem.c")
 endif ()

Modified: trunk/Build/source/libs/freetype2/freetype-src/ChangeLog
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/ChangeLog	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/ChangeLog	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,5 +1,1444 @@
+2024-08-12  Werner Lemberg  <wl at gnu.org>
+
+	* Version 2.13.3 released.
+	==========================
+
+	Tag sources with `VER-2-13-3'.
+
+	* docs/VERSION.TXT: Add entry for version 2.13.3.
+	* docs/CHANGES: Updated.
+	* docs/release, docs/README, builds/macs/README: Updated.
+
+	* README, src/base/ftver.rc, builds/windows/vc2010/index.html,
+	builds/windows/visualc/index.html, builds/windows/visualce/index.html,
+	builds/wince/vc2005-ce/index.html, builds/wince/vc2008-ce/index.html,
+	docs/freetype-config.1: s/2.13.2/2.13.3/, s/2132/2133/.
+
+	* include/freetype/freetype.h (FREETYPE_PATCH): Set to 3.
+
+	* builds/unix/configure.raw (version_info): Set to 26:2:20.
+	* CMakeLists.txt (VERSION_PATCH): Set to 3.
+
+2024-08-12  Werner Lemberg  <wl at gnu.org>
+
+	* meson.build: Install `freetype2.m4`.
+
+	Fixes #1290.
+
+2024-08-12  Werner Lemberg  <wl at gnu.org>
+
+	* src/*/*: Fix C++ compilation; fix clang warnings.
+
+2024-08-12  Werner Lemberg  <wl at gnu.org>
+
+	* subprojects/*.wrap: Updated.
+
+2024-08-12  Werner Lemberg  <wl at gnu.org>
+
+	Various minor documentation or formatting fixes.
+
+2024-08-07  Werner Lemberg  <wl at gnu.org>
+
+	tttables.h (FT_Get_CMap_Format): Minor documentation improvement.
+
+2024-08-05  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/truetype/ttgxvar.c (ft_var_readpacked*): Minor.
+
+2024-08-05  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/base/ftstream.c (FT_Stream_ReadFields): Switch to `FT_Offset`.
+
+2024-08-02  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/winfonts/winfnt.c (fnt_face_get_dll_font): Unwrap arithmetic.
+
+2024-08-02  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/base/ftstream.c (FT_Stream_ReadFields): Update condition.
+
+2024-08-02  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[truetype/GX] Use more robust conditions.
+
+	* src/truetype/ttgxvar.c (ft_var_readpacked{points,deltas}): Rewrite
+	conditions to avoid undefined behavior.
+
+2024-07-31  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[truetype/GX] Read points and deltas more carefully.
+
+	Hopefully fixes newly introduced buffer overflows:
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=70807
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=70809
+
+	* src/truetype/ttgxvar.c (ft_var_readpacked{points,deltas}): Explicitly
+	check stream frame limits and modify run counting.
+
+2024-07-30  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[truetype/GX] Read stream more aggressively.
+
+	With ample checks against the table size, we should be able to use
+	macros without the limit checks and functional calls.
+
+	* src/truetype/ttgxvar.c (ft_var_readpacked{points,deltas}):
+	Use FT_NEXT_* instead of FT_GET_*.
+
+2024-07-29  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/sfnt/ttload.c (tt_face_load_name): Shorten dereference.
+
+2024-07-29  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/autofit/afmodule.c (af_autofitter_load_glyph): Shorten deref.
+
+2024-07-29  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[bdf,pcf,winfonts,sfnt] Remove barely used marcros.
+
+	* include/freetype/internal/ftobjs.h (FT_FACE_SIZE, FT_SIZE_FACE):
+	Removed.
+	* src/bdf/bdfdrivr.c (BDF_Glyph_Load): Updated.
+	* src/pcf/pcfdrivr.c (PCF_Glyph_Load): Ditto.
+	* src/winfonts/winfnt.c (FNT_Load_Glyph): Ditto
+	* src/sfnt/ttbdf.c (tt_face_find_bdf_prop): Ditto.
+
+2024-07-27  Dan Rosser  <danoli3 at gmail.com>
+
+	* include/freetype/internal/ftcalc.h (FT_MSB)[_M_ARM64EC]: Added.
+
+2024-07-19  Werner Lemberg  <wl at gnu.org>
+
+	* src/truetype/ttobjs.c (tt_size_run_prep): Correct scaling of CVT values.
+
+	This reverts the scaling behaviour introduced in commit 37580053.
+
+	Fixes issue #1005.
+
+2024-06-29  Philip Race  <philip.race at oracle.com>
+
+	* psobjs.c (ps_table_add): Check length before calling `FT_MEM_CPY`.
+
+	Fixes issue #1280.
+
+2024-06-29  Don Olmstead  <don.j.olmstead at gmail.com>
+
+	CMakeLists.txt: Respect FT_DISABLE_ZLIB value
+
+	The CMake build uses `find_package` to look for dependencies. Before calling `find_package` it looks to see if the dependency was disabled. If not the associated `_FOUND` variable will be set. This value is then checked to determine if the dependency is added.
+
+	However `find_package(PNG)` calls `find_package(ZLIB)` within its find module. So in the case of `FT_DISABLE_ZLIB=TRUE` and `FT_DISABLE_PNG=FALSE` the `ZLIB_FOUND` value can be set and even though `FT_DISABLE_ZLIB` is turned on.
+
+	Unset the value of `ZLIB_FOUND` after the call to `find_package(PNG)` so the value is only set when `FT_DISABLE_ZLIB` is turned off.
+
+2024-06-26  Werner Lemberg  <wl at gnu.org>
+
+	Make 'multi' build work again.
+
+	* src/psaux/psobjs.c: Include `psft.h`.
+
+	* src/sfnt/rules.mk (SFNT_DRV_SRC): Add `ttgpos.c`.
+
+	Fixes issue #1284.
+
+2024-06-23  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/truetype/ttgload.c (load_truetype_glyph): Unsigned fix.
+
+2024-06-21  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	Use unsigned tags `FT_Outline`.
+
+	This change comes along with 2a7bb4596f56 ans is only meant to reduce
+	pointer casting in the code.
+
+	* include/freetype/ftimage.h (FT_Outline): Do it.
+	* src/*: Update `FT_Outline` users.
+
+2024-06-21  Ben Wagner  <bungeman at chromum.org>
+
+	[ttgxvar] Avoid "applying zero offset to null pointer"
+
+	In C it is undefined behavior to do arithmetic on a null pointer, including
+	adding zero. When using NotoSansKhmer[wdth,wght].ttf UBSAN produces a report
+	like
+
+	ttgxvar.c:1052:31: runtime error: applying zero offset to null pointer
+
+	when adding zero to `varData->deltaSet` (which is null) to produce `bytes`.
+	Protect against all the potential issues of this kind by returning early if
+	`varData->regionIdxCount == 0`.
+
+	* src/truetype/ttgxvar.c (tt_var_get_item_delta): early return on no regions
+
+2024-06-21  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	Use unsigned point and contour indexing in `FT_Outline`.
+
+	This doubles the number or allowed points, see
+	    https://github.com/harfbuzz/harfbuzz/issues/4752
+
+	Although it is hardly practical to use more than 32767 points,
+	other font engines seem to support it.
+
+	* docs/CHANGES: Announce it.
+	* include/freetype/ftimage.h (FT_Outline): Do it and update limits.
+	* src/*: Update `FT_Outline` users.
+
+2024-06-20  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/pfr/pfrgload.c (pfr_glyph_curve_to): Avoid casting.
+
+2024-06-19  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/base/ftgloadr.c (FT_GlyphLoader_Prepare): Minor refactoring.
+
+2024-06-18  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[base, autofit, psaux] Remove unnecessary casting.
+	
+	* src/autofit/afhints.c (af_glyph_hints_reload): Remove (short) casting.
+	* src/base/ftgloadr.c (FT_GlyphLoader_Add): Ditto.
+	* src/psaux/psobjs.c ({t1,cff,ps}_builder_{add,close}_contour): Ditto.
+
+2024-06-18  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* include/freetype/ftimage.h: Explain standard types.
+
+2024-05-29  Ben Wagner  <bungeman at chromium.org>
+
+	[ttgxvar] Replace tabs with spaces
+
+	Also clarify comments around conversion and clamping.
+
+	* src/truetype/ttgxvar.c (ft_var_to_normalized): doit
+
+2024-05-27  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[truetype/GX] Consolidate memory allocations.
+
+	* src/truetype/ttgxvar.c (tt_face_vary_cvt, TT_Vary_Apply_Glyph_Deltas):
+	Allocate and split bigger memory blocks, avoid unnecessary zeroing,
+	do not copy shared tuples, revise error exit paths.
+
+2024-05-26  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	Whitespace.
+
+2024-05-24  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/truetype/ttgxvar.c (ft_var_apply_tuple): Reduce checks.
+
+2024-05-24  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	Revert "[truetype] Reduce allocation scope."
+
+	This reverts commit 9ff4153cbfd60491f11bb56905ce6e20e94d23c7.
+
+2024-05-23  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[truetype] Reduce allocation scope.
+
+	* src/truetype/ttgxvar.c (TT_Vary_Apply_Glyph_Deltas): Reduce scope
+	of `points_org` and 'points_out`.
+
+2024-05-23  Alexei Podtelezhnikov (Алексей Подтележников)  <apodtele at gmail.com>
+
+	* .gitlab-ci.yml: Disable UWP compilation.
+
+2024-05-23  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* include/freetype/internal/ftmemory.h (FT_MEM_DUP): Fix g++ error.
+
+2024-05-21  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[cff, truetype] Validate variation axes immediately.
+
+	Instead of validating variation axes in every access, OpenType specs
+	suggest that peak = 0 be used to tag invalid ranges.  This implements
+	just that once during loading.
+
+	* src/cff/cffload.c (cff_blend_build_vector): Move the range checks...
+	(cff_vstore_load): ... here.
+	* src/truetype/ttgxvar.c (tt_var_get_item_delta): Ditto...
+	(tt_var_load_item_variation_store): ... ditto.
+
+2024-05-21  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[cff, truetype] Rearrange variation range checks.
+	
+	This should achieve quicker results for common cases.
+	
+	* src/cff/cffload.c (cff_blend_build_vector): Rearrange conditionals.
+	* src/truetype/ttgxvar.c (tt_var_get_item_delta): Ditto.
+
+2024-05-21  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/truetype/ttgxvar.c (tt_var_get_item_delta): Align with specs.
+
+2024-05-21  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/truetype/ttgxvar.c (tt_var_get_item_delta): Minor refactoring.
+
+2024-05-21  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[cff] Optimize the blend vector computations.
+
+	* src/cff/cffload.c (cff_blend_build_vector): Use FT_MulDiv and skip
+	multiplying by 1.
+
+2024-05-20  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[bdf] Use concise macros.
+
+	* src/bdf/bdflib.c (bdf_create_property): Use FT_STRDUP.
+	(bdf_parse_glyphs_, bdf_parse_start_): Use FT_DUP for brevity.
+
+2024-05-20  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[cache] Use FT_DUP to duplicate data.
+
+	* src/cache/ftcsbits.c (ftc_sbit_copy_bitmap): Use concise FT_MEM_DUP.
+
+2024-05-20  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[truetype, type1] Use FT_DUP to duplicate data.
+
+	* src/truetype/ttgload.c (TT_Load_Simple_Glyph): Use concise FT_DUP.
+	* src/truetype/ttgxvar.c (TT_Get_MM_Var): Ditto.
+	* src/type1/t1load.c (parse_subrs): Ditto.
+
+2024-05-18  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* builds/windows/ftsystem.c: Use _WINRT_DLL to check for UWP.
+
+	Fixes compilation using Windows GDK, reported by Erin Melucci.
+
+2024-05-13  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* include/freetype/ftmm.h: Include `freetype.h`.
+
+	Reported by Ben Wagner, see !326.
+
+2024-05-13  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[type1/MM] Safer handle arrays of different types.
+
+	* src/type1/t1load.c (parse_blend_design_map): Separately allocate...
+	(T1_Done_Blend): ... and free `design_points` and `blend_points`.
+
+2024-05-12  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/type1/t1load.c (parse_blend_design_map): Add risky cast.
+
+2024-05-12  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* docs/CHANGES: Mention the last commit.
+
+2024-05-12  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[type1/MM] Tighten headers.
+
+	* include/freetype/internal/t1types.h: Host PS_DesignMap and PS_Blend.
+	* include/freetype/ftmm.h: Host and document TT_MAX_MM_XXX.
+	* include/freetype/t1tables.h: Remove them from here.
+
+2024-05-11  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/pshinter/pshrec.c (ps_hints_stem): Correct argument.
+
+2024-05-08  Ben Wagner  <bungeman at chromium.org>
+
+	[psaux] Fix location and type order in initializer
+
+	`T1_FIELD_ZERO` is used to zero initialize a `T1_FieldRec`.
+	`T1_FIELD_ZERO` is currently initilizing `T1_FieldRec::location` with a
+	`T1_FieldType` and `T1_FieldRec::type` with a `T1_FieldLocation`. This
+	was detected with `-Wenum-conversion`.
+
+	* include/freetype/internal/psaux.h (T1_FIELD_ZERO): correct order of
+	initalizers
+
+2024-05-08  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* include/freetype/internal/psaux.h: Fix g++ warning.
+
+	Reported by Hin-Tak Leung.
+
+2024-05-08  Ben Wagner  <bungeman at chromium.org>
+
+	[colr] Avoid overflow in range checks
+
+	In 32 bit builds `FT_ULong` is 32 bits and can silently overflow when a
+	large number is read into one and then it is summed or multiplied with
+	another number.  Checks for range overflow must be written so that they
+	themselves do not overflow.  Also ensure that the table_size is always the
+	first part of the range check and consistently use `<` or `<=`.
+
+	* src/sfnt/ttcolr.c (tt_face_load_colr): Avoid overflow.
+	(find_base_glyph_v1_record): Remove old work-around.
+
+	Bug: https://issues.chromium.org/issues/41495455
+	Bug: https://issues.chromium.org/issues/40945818
+
+2024-05-06  Werner Lemberg  <wl at gnu.org>
+
+	.mailmap: Fix entry for Ben Wagner.
+
+2024-05-06  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[sdf, bsdf] Use shared FT_SqrtFixed.
+	
+	FT_SqrtFixed (95b0fe2a6dff) is faster and does not overflow.
+	
+	* src/sdf/ftsdfcommin.h (square_root): Replace with a macro.
+	* src/sdf/ftsdfcommin.c (square_root): Remove function.
+
+2024-05-04  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/autofit/aflatin.c (af_latin_metrics_scale_dim): Remove FT_ABS.
+
+	See
+	    https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=68679
+
+2024-05-03  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/sfnt/sfwoff2.c (woff2_open_font): Fix copy-paste typo.
+
+2024-05-03  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[woff,woff2] Limit the number of tables and use FT_MSB.
+	
+	The upper limit of 4095 is implied by the SFNT header format
+	where the multiplication by 16 would overflow without it.
+	
+	* src/sfnt/sfwoff.c (woff_open_font): Updated.
+	* src/sfnt/sfwoff2.c (woff2_open_font): Ditto.
+
+2024-05-02  Ben Wanger  <bungeman at gmail.com>
+
+	[woff2] Disallow zero table font entries
+
+	The existing code already disallows zero table woff2 overall, but still
+	allows for individual CollectionFontEntry to create font instances with
+	zero tables. Such fonts are not useful so error early.
+
+	This also fixes an MSAN discovered issue where if a CollectionFontEntry
+	numTables is zero then the sfnt_header was not fully initialized.
+
+	* src/sfnt/sfwoff2.c (woff2_open_font): error on zero tables, always
+	initalize sfnt_header
+
+	Fixes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=68384
+
+2024-05-02  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[sfnt] Use faster macros in checksums.
+
+	* src/truetype/ttobjs.c (tt_synth_sfnt_checksum): Use FT_NEXT_XXX.
+	* src/sfnt/sfwoff2.c (compute_ULong_sum): Use macros.
+
+2024-05-01  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/sfnt/sfwoff2.c (compute_ULong_sum): Clean up.
+
+2024-04-30  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* docs/CHANGES: Updated.
+
+2024-04-30  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/cache/ftccache.c (FTC_Cache_RemoveFaceID): Remove nodes instantly.
+
+2024-04-29  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[cache] Remove unused `node_reset`.
+
+	* src/cache/ftcmru.h (FTC_MruListClassRec): Remove `node_reset` field.
+	* src/cache/ftcbasic.c (ftc_basic_{image,sbit}_family_class): Ditto.
+	* src/cache/ftcmanag.c (ftc_face_list_class): Ditto.
+	(ftc_size_node_reset): Remove function.
+	* src/cache/ftcglyph.h: Fix comment.
+
+2024-04-29  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/cache/ftcmru.c (FTC_MruList_New): Do not reset nodes.
+
+	Resetting of the size nodes can crash, if a parent face purge happens
+	simultaneously and destroys the node. It is safer to create a new node.
+	Fixes #1270, reopened with a separate issue.
+
+2024-04-28  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/cache/ftcimage.c (ftc_inode_weight): Formatting.
+
+2024-04-28  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	Document the SDF spread further.
+
+2024-04-23  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* include/freetype/ftdriver.h: s/truncated/clamped/.
+
+2024-04-23  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	Improve SDF documentation.
+
+2024-04-21  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[cache] Minor tweaks.
+
+	* src/cache/ftcimage.c (ftc_inode_free): Remove unnecessary check.
+	* src/cache/ftcmanag.c (FTC_Manager_Done): Do not zero before freeing.
+
+2024-04-21  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/cache/ftcbasic.c: Cosmetic harmonization.
+
+2024-04-20  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[cache] Reduce type mismatches.
+
+	* src/cache/ftcbasic.c (FTC_BasicAttrRec): Match type of `load_flags`
+	to its main purpose in `FT_Load_Glyph`.
+	(FTC_ImageCache_Lookup{,Scaler},FTC_SBitCache_Lookup{,Scaler}): Updated.
+
+2024-04-19  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/cache/{ftcbasic.c,ftccmap.c}: Use FTC_INLINE.
+
+2024-04-19  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[cache] Tweak headers.
+
+	* src/cache/ftccback.h: Include less and move `ftc_node_destroy`...
+	* src/cache/ftccache.h: ... to here.
+	* src/cache/ftcmanag.c: Include less.
+
+2024-04-19  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/cache/ftcglyph.c [!FTC_INLINE]: Fix compilation.
+
+2024-04-17  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[cache] Improve MRU list management.
+	
+	* src/cache/ftcmru.c (FTC_MruList_Remove): Cosmetic.
+	(FTC_MruList_New): Accept only valid changes.
+	* src/cache/ftcmanag.c (ftc_size_node_done):  Simplify.
+
+2024-04-17  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[cache] Fix error handling.
+
+	Manipulate the cache after a face is requested or a size is looked up
+	successfully. Fixes #1270.
+
+	* src/cache/ftcmanag.c (ftc_size_node_init, ftc_size_node_reset,
+	ftc_face_node_init): Check for errors before accepting a change.
+	* src/cache/ftcmru.c (FTC_MruList_New): Do nothing if reset fails.
+
+2024-04-14  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[smooth] Switch to vertical bisections.
+
+	With horizontal bisections, the smallest section is a whole single
+	scanline. Almost horizontal lines or other complex scanlines can
+	easily overflow the rendering pool. Switching to vertical bisections
+	splits the scanlines and should rule out the overflows.  Fixes #1269.
+
+	* src/smooth/ftgrays.c (gray_convert_glyph): Bisect vertically.
+
+2024-04-14  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/smooth/ftgrays.c (gray_convert_glyph): Refactor for convenience.
+
+2024-04-14  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[smooth] Store persistent clipping box.
+
+	* src/smooth/ftgrays.c (gray_TWorker, gray_raster_render): Add and set
+	the new structure field.
+	(gray_convert_glyph): Use it.
+
+2024-03-08  Ben Wanger  <bungeman at gmail.com>
+
+	[colr] Ensure enough bytes for PaintColrLayers
+
+	* src/sfnt/ttcolr.c (read_paint): check that there are five additional
+	bytes to be read when reading PaintColrLayers.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66566
+
+2024-03-08  Ben Wagner  <bungeman at gmail.com>
+
+	Avoid n^2 scanning for binary data.
+
+	When creating a CID parser the location of the 'StartData' or '/sfnts'
+	tokens needs to be known.  However, the token parser requires that the
+	entire document be in memory and flattening the entire stream into memory is
+	to be avoided.
+
+	To avoid forcing the entire stream into memory, previously this code would
+	scan through the stream looking for 'StartData' or '/sfnts' as strings.
+	However, these strings could have been in a comment or string token, so the
+	stream would be read into memory up to that point and the parser run to
+	check that these strings were actually tokens.  This forced a parser restart
+	from the beginning each time; as a result, data with many 'StartData'
+	non-tokens would take n^2 time to check.
+
+	* src/cid/cidparse.c (cid_parser_new): Change algorithm to make the initial
+	scan look for the last possible 'StartData' or '/sfnts' string in the
+	stream.  The stream is read forward instead of backward as a typical normal
+	CID font will have one 'StartData' toward the beginning of the data and it
+	it much faster to read the data from beginning to end instead of end to
+	beginning.  For memory-based fonts the limit is set to the end of the stream
+	since the stream is already in memory.  Then the parser is run once to look
+	for 'StartData' or '/sfnts' tokens.  If they are found the parser is re-set
+	to reflect this new information.
+
+	Reported as
+
+	  https://issues.chromium.org/issues/40201695
+
+2024-03-06  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* CMakeLists.txt: Bump required version to 3.5.
+	
+	Fixes #1267.
+
+2024-03-04  Jordan Williams  <jordan at jwillikers.com>
+
+	meson: Use the standard dependency mechanism to find bzip2
+
+	This follows standard conventions in Meson by using the pkg-config file.
+	This change allows Conan to switch to the Meson build system.
+
+2024-02-29  Ben Wanger  <bungeman at gmail.com>
+
+	[cff, truetype] Always set up default variable instance.
+
+	For default variable instances `cff_face_init` did not set the blend.  This
+	mostly worked as later use of the unset blend produced the default
+	variation.  However, if a user called `TT_Get_MM_Var` the blend would be
+	partially set up, but not fully.  In particular the number of axes, the axis
+	definitions, and the instance locations would be set up, but not the current
+	instance location (`coords` and `normalizedcoords`).  This could lead to the
+	default instances of CFF2 fonts erroring on any use of `blend`.
+
+	Ensure the default variable instance is fully set up by always calling
+	`FT_Set_Named_Instance` on a variable face.
+
+	* src/cff/cffobjs.c (cff_face_init): Call `FT_Set_Named_Instance` on
+	default instances.
+	* src/truetype/ttobjs.c (tt_face_init): Ditto.
+
+	Fixes #1268.
+
+2024-02-23  Werner Lemberg  <wl at gnu.org>
+
+	* src/truetype/ttgxvar.c (ft_var_to_normalized): Integer overflow.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66543
+
+2024-01-27  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	Update all copyright notices.
+
+2024-01-27  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/sfnt/ttgpos.c (tt_gpos_get_glyph_class): Fix warning C4018.
+
+2024-01-27  David Saltzman  <davidbsaltzman at gmail.com>
+
+	Add support for kerning from 'GPOS' tables.
+
+	This commit adds support for kerning from 'GPOS' tables, while maintaining
+	support for basic 'kern' tables.  `FT_HAS_KERNING` will be true for a font
+	with either available and `FT_Get_Kerning` will still use the basic 'kern'
+	table data if avilable, otherwise check the GPOS 'kern' feature.
+
+	This feature is disabled by default; it can be enabled with the
+	`TT_CONFIG_OPTION_GPOS_KERNING` flag.
+
+	Only basic kerning (pair positioning with just an x advance) is supported
+	from the GPOS layout features; support for that was added to make the
+	existing `FT_Get_Kerning` API more consistently functional.  FreeType does
+	not intend to extend itself to further GPOS functionality though; a
+	higher-level library like HarfBuzz can be used instead for that.
+
+	* include/freetype/config/ftoption.h, include/devel/ftoption.h
+	(TT_CONFIG_OPTION_GPOS_KERNING): New configuration option.
+
+	* include/freetype/internal/fttrace.h: Add `ttgpos` trace handler.
+
+	* include/freetype/internal/sfnt.h (SFNT_Interface): Add `load_gpos` and
+	`get_gpos_kerning` fields.
+	(FT_DEFINE_SFNT_INTERFACE): Updated.
+
+	* include/freetype/internal/tttypes.h: Include `fttypes.h`.
+	(TT_FaceRec) [TT_CONFIG_OPTION_GPOS_KERNING]: Add `gpos_table` and
+	`gpos_kerning_available` fields.
+
+	* src/sfnt/ttgpos.c, src/sfnt/ttgpos.h: New files.
+
+	* src/sfnt/sfdriver.c [TT_CONFIG_OPTION_GPOS_KERNING]: Include `ttgpos.h`.
+	(sfnt_interface): Updated.
+
+	* src/sfnt/sfnt.c: Include `ttgpos.c`.
+
+	* src/sfnt/sfobjs.c [TT_CONFIG_OPTION_GPOS_KERNING]: Include `ttgpos.h`.
+	(sfnt_load_face) [TT_CONFIG_OPTION_GPOS_KERNING]: Load and free GPOS kerning
+	data; check GPOS kerning availability.
+
+	* src/truetype/ttdriver.c (tt_get_kerning): Use GPOS kerning if there's no
+	'kern' table.
+
+2024-01-14  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[smooth] Remove SSE2.
+
+	As a result of 7b308a29dd10, the regular 64-bit execution is now faster
+	than SSE2. The rendering speed of script fonts at 64 ppem or larger is
+	improved by about 3% without SSE2. See !314 for the testing results.
+
+	* src/smooth/ftgrays.c (gray_render_conic)[FT_INT64]: Remove SSE2 code.
+
+2024-01-14  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* CMakeLists.txt: Accommodate MingGW.
+
+	See https://github.com/StephanTLavavej/mingw-distro/issues/97.
+
+2024-01-08  Ozkan Sezer  <sezeroz at gmail.com>
+
+	* src/sfnt/ttcolr.c (find_base_glyph_v1_record): Fix build in C90 mode.
+
+2024-01-07  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[base] Fix up Mac resource forks and dfonts.
+
+	* src/base/ftobjs.c (IsMacResource): Assign `face_index`.
+	* src/base/ftmac.c (FT_New_Face_From_Suitcase): Ditto after rework.
+
+2024-01-05  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[sfnt] Restrict POST version 1.0.
+
+	A font has surfaced with `post` version 1.0 and fewer than 258 glyphs.
+	Its glyphs did not correspond to their names. We now reject such `post`
+	strictly following specifications.
+
+	* src/sfnt/ttpost.c (tt_face_get_ps_name): Check the number of glyphs
+	for version 1.0.
+
+2024-01-03  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* .gitlab-ci.yml: Use detached CI pipelines.
+	
+	See issue freedesktop/freedesktop#540.
+
+2024-01-02  Werner Lemberg  <wl at gnu.org>
+
+	[sfnt] Guard access in 'COLR' v1 glyph binary search.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/chromium/issues/detail?id=1505216
+
+	* src/sfnt/ttcolr.c (find_base_glyph_v1_record): Guard access of the search
+	pointer during binary search.  The pointer needs to be checked as we go as
+	the test that compares number of v1 glyphs with table size at the time of
+	loading the table is not sufficient on its own.
+
+	A scenario is possible in which the `BaseGlyphRecord` list extends into
+	non-`BaseGlyphRecord` parts of the 'COLR' v1 table (but passed the size
+	comparison check).  Then, at those locations, invalid glyph ID values are
+	read and may provoke an invalid read due to reassigning min and max values
+	during the binary search.
+
+2023-12-18  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[ci] Add support for MSBuild on Windows.
+
+	This adds msbuild job for VS2019 (x64).
+
+	* .gitlab-ci.yml: Added "windows msbuild vs2019 amd64".
+
+2023-12-14  Skef Iterum  <github at skef.org>
+
+	[CFF] Extract `BlueValues` as `Fixed` rather than `Int`.
+
+	This is a follow-up to commit 26a7f047,
+
+	  [cff] Make blend operator work with floats in private dicts.
+
+	which addressed the 'party baseline' bug.  However, the reporting user
+	indicated that the default location and some other points in design space
+	rendered OK, but other points in design space still had problems.  The most
+	obvious issue being that the x-heights of lower-case letters did not align;
+	see
+
+	  https://github.com/adobe-fonts/source-serif/issues/121#issuecomment-1773794136
+
+	After some analysis we determined that this was due to an interaction
+	between `BlueValue` rounding and the zone-based algorithm.  In short, for a
+	point to be considered in a zone it must fall within the bounds of the zone.
+	(There is a slop factor in some cases, but only a very small one.)  In the
+	Adobe-contributed side of the code, point values are not integer-rounded,
+	instead they're kept as (some form of) fixed.  Rounding just the `BlueValues`
+	means that points that need to be considered within a zone will fall outside
+	of it at some points in design space.
+
+	The majority of this patch changes the storage and parsing of `BlueValues`
+	to keep them as `FT_Fixed`.  No significant code changes were needed because
+	the values are converted to `Fixed` anyway when stored in `CF_BlueRec`.  No
+	attempt was made to address problems in the older pshinter code beyond
+	converting the values from `FT_Fixed` to `FT_Short` when copying the private
+	dictionary.  (However, as the point values are also rounded in that code,
+	the problem is much less likely to occur, although inconsistency between
+	rounding and truncation could cause an analogous problem.)
+
+	* include/freetype/internal/cfftypes.h (CFF_PrivateRec): Use `FT_Fixed` for
+	`blue_values`, `other_blues`, `family_blues`, and `family_other_blues`.
+
+	* src/cff/cffload.c (cff_blend_doBlend): Updated.
+
+	* src/cff/cffobjs.c (CFF_fixedToInt): New macro.
+	(cff_make_private_dict): Use it.
+
+	* src/cff/cffparse.h (cff_kind_delta_fixed): New enum value.
+
+	* src/cff/cffparse.c (do_fixed): Updated.
+	(CFF_FIELD_DELTA, CFF_FIELD_DELTA_FIXED, CFF_DELTA_KIND): New set of macros,
+	replacing `CFF_FIELD_DELTA`.
+	(cff_parser_run): Updated to handle fixed-float deltas.
+
+	* src/cff/cfftoken.h: Updated to use `CFF_FIELD_DELTA_FIXED` for blue
+	values.
+
+	* src/psaux/psblues.c (cf2_blueToFixed): Removed, no longer needed.
+	(cf2_blues_init): Updated.
+
+	* src/pxaux/psft.c, src/pxaux/psft.h (cf2_getBlueValues, cf2_getOtherBlues,
+	cf2_getFamilyBlues, cf2_getFamilyOtherBlues): Updated signatures.
+
+	* src/psaux/psobjs.c (t1_make_subfont): Updated.
+
+2023-12-14  Skef Iterum  <github at skef.org>
+
+	[psaux] Improve tracing.
+
+	* src/psaux/psintrp.c (cf2_doBlend, cf2_interpT2CharString [cf2_cmdBLEND]):
+	Show blended values.
+
+2023-12-14  Jouk Jansen  <joukj at hrem.nano.tudelft.nl>
+
+	* vms_make.com: Switch to `clang`.
+
+	Also add proper bzip2 support.
+
+2023-12-14  Werner Lemberg  <wl at gnu.org>
+
+	* src/truetype/ttgxvar.c (ft_var_to_normalized): Fix undefined left-shift.
+
+	Reported as
+
+	  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=63723
+
+2023-12-07  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[msbuild] Streamline the process.
+
+	MSBuild.exe can now be fired from the root folder without options.
+
+	* builds/windows/vc2010/freetype.sln: Relocated to...
+	* MSBuild.sln: ... here with minor changes.
+	* MSBuild.rsp: New file with command line options.
+	* docs/INSTALL: Reference `MSBuild.sln`.
+
+2023-12-02  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c (Draw_Sweep): Swap stub conditions.
+
+2023-12-02  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftmisc.h (FT_MulDiv): Remove unused copy.
+
+2023-11-28  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Speed up Bézier arches with extrema.
+
+	While it is recommended to have an explicit point at each curve
+	extrema, they might be missing or outline could be rotated. This
+	leads to excessive bisections in raster to find them.  This change
+	helps to decrease the number of bisections.  The scanline
+	intersections remain monotonous, of course.
+
+	* src/raster/ftraster.c (Conic_To, Cubic_To): Check that control
+	points cross the scanlines to bisect.
+
+2023-11-25  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* docs/*: Typos.
+
+2023-11-24  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Eliminate intensive flow checking.
+
+	* src/raster/ftraster.c (Draw_Sweep): Pass the flow increment.
+	(Increment): Accept the flow increment.
+
+2023-11-23  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c: Comments, defines, includes, cleanups.
+
+2023-11-21  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c (FT_Outline_Get_CBox ) [STANDALONE_]: Removed.
+
+2023-11-21  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c (Draw_Sweep): No-fault return.
+	(Render_Single_Pass): Updated.
+
+2023-11-21  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Sweep polishing.
+	
+	* src/raster/ftraster.c (*_Sweep_Span): Polish.
+	(*_Sweep_Drop): Restore tracing, polish.
+	(Draw_Sweep): Simplify the dropout processing loop.
+
+2023-11-21  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Rearrange dropout control.
+
+	This reduces the code duplication.
+
+	* src/raster/ftraster.c (Function_Sweep_Span): Change signature.
+	(Vertical_Sweep_Drop, Horizontal_Sweep_Drop): Focus on pixel setting
+	and move duplicated the dropout control logic to...
+	(Draw_Sweep): ... this function and refactor.
+	(Vertical_Sweep_Span, Horizontal_Sweep_Span): Minor.
+
+2023-11-21  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Use bitwise dropout mode interpretation.
+
+	* src/raster/ftraster.c (Vertical_Sweep_Drop, Horizontal_Sweep_Drop,
+	Draw_Sweep, Render_GLyph): Interpret dropout mode using bit masks.
+
+2023-11-16  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* docs/CHANGES: Updated.
+
+2023-11-16  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Keep only bottom y-turns.
+
+	This results in noticeable performance improvement.
+
+	* src/raster/ftraster.c (Insert_Y_Turns): All bottom y-turns are still
+	sorted and stored; only the maximum top y-turn is recorded now. The
+	function is renamed.
+	(End_Profile): Updated accordingly.
+	(Convert_Glyph): Reserve space for the top value.
+
+2023-11-15  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c (End_Profile): Reduce branching.
+	(InsNew): Tweak condition.
+
+2023-11-15  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c (Draw_Sweep): Use more natural loop.
+
+2023-11-15  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Dissolve a loop.
+
+	* src/raster/ftraster.c (End_Profile): Set initial `X` here...
+	(Draw_Sweep): ... instead of here; delay the `start` decrement.
+
+2023-11-15  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c: Comments.
+
+2023-11-14  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Stylistic changes.
+	
+	* src/raster/ftraster.c (Line_To): Code it similar to curves;
+	shortcut the flat lines here...
+	(Line_Up): ... instead of here.
+
+2023-11-14  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Revise overshoot setting.
+	
+	* src/raster/ftraster.c (New_Profile, End_Profile): Deal with overshoots
+	locally.
+	(Line_To, Conic_To, Cubic_To): Update callers.
+
+2023-11-14  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c (Conic_To, Cubic_To): Fix recent regression.
+
+2023-11-14  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* include/freetype/ftimage.h: Fix type and link.
+
+2023-11-14  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c (Increment): Minor tweak.
+
+2023-11-13  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Get rid of the fresh flag.
+
+	* src/raster/ftraster.c (black_TWorker): Remove the fresh flag.
+	(New_Profile): Set the starting scanline here based on the current
+	coordinate and initialize the joint crossing if necessary.
+	(Line_Up, Bezier_Up): Do not deal with fresh and joint starts at all.
+	(Line_Down, Bezier_Down): Simplify.
+	(Conic_To, Cubic_To): Update the current coordinate after each
+	subsection.
+
+2023-11-12  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Get rid of the joint flag.
+
+	* src/raster/ftraster.c (Line_Up, Bezier_Up): Deal with the scanline
+	joints directly based on the initial y-coordinate.
+	(New_Profile, black_TWorker): Remove the boolean flag.
+
+2023-11-11  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c (Line_Up, Bezier_Up): Check "between" earlier.
+
+2023-11-11  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c (Line_Up): Updated and fixed up.
+
+	This largely synchronizes the entries into `Line_Up` and `Bezier_Up`.
+	Minor bugs in the remainder calculations and accumulations are fixed.
+
+2023-11-10  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c (End_Profile, Convert_Glyph): Clean up.
+
+2023-11-10  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c (Bezier_Up): Improve joint and loop.
+
+2023-11-07  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Harmonize target bitmap navigation.
+
+	* src/raster/ftraster.c (black_TWorker): Store signed maximum indexes
+	in both directions instead of unsigned dimensions of the original bitmap.
+	(*_Sweep_*, Render_Glyph, ft_black_render): Updated all users.
+
+2023-11-06  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c (Bezier_Up): Improve flow.
+
+2023-11-06  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Reshuffle code for readability.
+
+	* src/raster/ftraster.c (Render_Glyph): Setup the rendering pool here.
+	(ft_black_render): Setup the target bitmap helpers here.
+
+2023-11-04  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Improve profile accounting during sweeping.
+
+	* src/raster/ftraster.c (TProfile): Get rid of `countL`.
+	(Draw_Sweep): Use `start` for countdown to activation.
+	(Horizontal_Sweep_Drop, Vertical_Sweep_Drop): Rely on `height` and
+	`offset` to verify profile ends for the stub detection.
+
+2023-11-04  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Consolidate profile increment to the next line.
+
+	* src/raster/ftraster.c (s/Sort/Increment): Rename this function to
+	reflect its true purpose, delete exhausted profiles here...
+	(Draw_Sweep): ... instead of here.
+
+2023-11-04  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Instantly remove profiles from linked lists.
+
+	* src/raster/ftraster.c (DelOld): Remove loopy function.
+	(Draw_Sweep): Implement instant profile removal.
+
+2023-11-03  Alexei Podtelezhnikov (Алексей Подтележников)  <apodtele at gmail.com>
+
+	[raster] Modify the split condition.
+
+	While curving close to a pixel center, vertical and horizontal pass
+	might split the curve differently and cause a rare dropout.  This
+	makes the split condition invariant of the sweep direction and more
+	robust.
+
+	* src/raster/ftraster.c (Bezier_Up): Modify the split condition.
+
+2023-11-03  Alexei Podtelezhnikov (Алексей Подтележников)  <apodtele at gmail.com>
+
+	[raster] Remove the jitter exception.
+
+	The jitter exception used to be applied when two neighboring pixels
+	were barely inside the outline. One the left one was turned on then,
+	which contradicts the OpenType specifications.  Intended to remove
+	glitches, it caused disappearing lines and was softened by adding an
+	exception to the exception (#54589).
+
+	* src/raster/ftraster.c (Vertical_Sweep_Span): Drop the jitter exception.
+
+2023-10-31  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Simplify dropout detection.
+	
+	* src/raster/ftrater.c (Draw_Sweep): Use a single dropout condition.
+
+2023-10-31  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Simplify sweeping entry and exit.
+
+	* src/raster/ftraster.c (Draw_Sweep): Use y-turns to set the range,
+	correctly set the initial position, directly loop through y_turns,
+	and remove a 5-gray remnant at exit.
+
+2023-10-26  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Switch to routine Int instead of Short.
+
+	This is mostly cosmetic and removes a few casts, plus Short is
+	promoted to Int in calculations anyway.
+
+	* src/raster/ftraster.c (Vertical_Sweep_Init, Vertical_Sweep_Span,
+	Vertical_Sweep_Drop, Horizontal_Sweep_Init, Horizontal_Sweep_Span,
+	Horizontal_Sweep_Drop, Draw_Sweep): Mostly s/Short/Int/ and remove
+	casting.
+
+2023-10-24  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Increase the raster pool density.
+
+	This only helps to delay the pool overflow and bisections to larger
+	sizes and benefits only very intricate glyphs at reasonable sizes.
+
+	* src/raster/ftraster.c (TProfile): Use Int instead of Long or PLong
+	when it is sufficient.
+	(New_Profile, End_Profuile, Bezier_Up, Sort): Updated accordingly.
+
+2023-10-23  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Slightly improve the pool design.
+
+	* src/raster/ftraster.c (TProfile): Include the variable array member
+	and repackage with pointers first.
+	(New_Profile): Advance the top using the variable array pointer.
+
+2023-10-22  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Clean up sweeping.
+
+	* src/raster/ftraster.c (Draw_Sweep): Zero initialize the working
+	lists directly and remove unnecessary y-turn checks.
+	(Init_Linked): Removed.
+
+2023-10-22  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c (Insert_Y_Turn): Improve flow.
+
+2023-10-22  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/pcf/pcfutil.c (BSWAP16): Limit clang support.
+
+	These ancient builtins have been supported by clang since 2013. We
+	condition it somewhat stricter but still around 2017.  This is more
+	portable than `__has_builtin`. Fixes #1260.
+
+2023-10-19  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Small optimizations.
+
+	* src/raster/ftraster.c (New_Profile): Set important fields only and
+	delay setting `gProfile` until...
+	(End_Profile): ... it is checked to be valid here.
+	(Convert_Glyph): Updated.
+
+2023-10-18  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c (Convert_Glyph): Remove redundant check.
+
+2023-10-18  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Fix linked profiles in contour loops.
+
+	This fixes a subtle bug when the last profile in a contour was not
+	properly short-circuited if it was still empty at `End_Profile`.
+	We finalize all linking in `Finalize_Profile_List` now and do nothing
+	else there.  The turns are added in `End_Profile`.
+
+	* src/raster/ftraster.c (Insert_Y_Turn): Moved up unchanged.
+	(End_Profile): Take care of turns but set only preliminary linking.
+	(Finalize_Profile_Table): Take care of linking and null-termination.
+	(Convert_Glyph): Adjusted accordingly.
+
+2023-10-15  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c: Improve tracing.
+
+2023-10-13  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Improve profile accounting.
+	
+	* src/raster/ftraster.c (End_Profile): Do not initiate next profile.
+	(New_Profile): Fully initiate new profile.
+	(Convert_Glyph): Clean up variables, initialize `fProfile` here.
+
+2023-10-13  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c (Convert_Glyph): Fix null-dereference.
+
+2023-10-13  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Fix pool overflow checking.
+
+	* src/raster/ftraster.c (New_Profile, End_Profile): Check for overflow
+	immediately.
+	(Convert_Glyph, Render_Single_Pass): Fix boundaries.
+
+2023-10-13  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[raster] Miscellaneous clean-ups.
+
+	* src/raster/ftraster.c (New_Profile): Use NULL.
+	(End_Profile): Optimize variables.
+	(Convert_Glyph): Do not initialize `cProfile` yet.
+	(Render_Single_Pass): Tracing.
+
+2023-10-10  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/smooth/ftgrays.c: Move the sweep functions...
+
+	... out of the setjmp/longjmp scope for readability.
+
+2023-10-10  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/raster/ftraster.c: Tracing updates.
+
+2023-10-09  Zachary Zollman  <zacharyzollman at pm.me>
+
+	fix typo in FT_Outline_Decompose note
+
+2023-09-29  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/smooth/ftgrays.c (gray_render_conic) [SSE2]: Improve flow.
+
+2023-09-26  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/gxvalid/gxvcommn.h (GXV_USHORT_TO_SHORT): Removed.
+
+2023-09-25  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	Comment typos.
+
+2023-09-25  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/base/ftcalc.c (FT_MOVE_SIGN): Enclose assignments.
+
+2023-09-21  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* include/freetype/internal/ftcalc.h (FT_MSB): Define for Solaris 11.
+
+2023-09-20  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[psaux] Use `FT_SqrtFixed`.
+
+	* src/psaux/cffdecode.c <cff_op_sqrt>: Call `FT_SqrtFixed`.
+	* src/psaux/psintrp.c <cf2_escSQRT>: Ditto.
+
+2023-09-20  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[base] Reintroduce `FT_SqrtFixed`.
+
+	The general square root calculations are not necessary in FreeType.
+	For vector normalization or length, FreeType uses special functions.
+	It is, however, required in the legacy CFF specifications.
+
+	* src/base/ftcalc.c (FT_SqrtFixed): New function that uses either
+	Babylonian or bit-wise algorithm, whichever is faster for the given
+	situation.
+	* include/freetype/internal/ftcalc.h (FT_SqrtFixed): Declare it.
+
+2023-09-18  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/base/ftcalc.c /* FT_SqrtFixed */: Fix defunct overflow.
+
+2023-09-14  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/tools/apinames.c (read_header_file): Typos.
+
+2023-09-13  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	Update 2 files
+
+	- /src/base/ftcalc.c
+	- /include/freetype/internal/ftcalc.h
+
+2023-09-13  Ben Wagner  <bungeman at chromium.org>
+
+	[base] Fix typo to correct predicate for call
+
+	* src/base/ftobj.c (FT_Get_Color_Glyph_Paint): check
+	`get_colr_glyph_paint` before calling `get_colr_glyph_paint` and not
+	`get_colr_layer`
+
+2023-09-12  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/psaux/cffdecode.c (cff_op_sqrt): Correct upper limit.
+
+2023-09-11  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/psaux/cffdecode.c (cff_op_sqrt): Improve initial guess.
+
+2023-09-11  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	src/psaux/psintrp.c (cf2_escSQRT): Improve initial guess.
+	
+	The worst number of iterations decreased from 11 to 5.
+
+2023-09-11  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/type1/t1afm.c (t1_get_index): Restore `strlen` call.
+
+	This reverts commit 8ed6d97446f2f3e5523da62eefbbf32ef7c1290e
+	and fixes
+	   https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=62246
+
+2023-09-10  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/cff/cffparse.c (CFF_Field_Handler): Some s/0/NULL/.
+
+2023-09-10  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[type1, cid, type42] Post-cleanup.
+
+	* include/freetype/internal/psaux.h (T1_FIELD_ZERO): Terminating macro.
+	* src/cid/cidload.c (cid_parse_dict): Use while-loop.
+	* src/type1/t1load.c (parse_dict): Ditto.
+	* src/type42/t42parse.c (t42_parse_dict): Ditto.
+
+2023-09-09  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	Update forgotten array termini.
+
+	* src/cid/cidload.c (cid_field_records): Account for added `len`.
+	* src/type1/t1load.c (t1_keywords): Ditto.
+	* src/type42/t42parse.c (t42_keywords): Ditto.
+
+2023-09-09  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[type1, cid, type42] Streamline dictionary parsing.
+
+	When matching the keywords, we avoid calculating their lengths by
+	checking the stored values. This itself is a sufficient pre-check
+	before diving into `memcmp`. Therefore, we remove explicit check of
+	the first characters.
+
+	* include/freetype/internal/psaux.h (T1_FieldRec): Store length.
+	* src/cid/cidload.c (cid_parse_dict): Use `memcmp` and stored length.
+	* src/type1/t1load.c (parse_dict): Ditto.
+	* src/type42/t42parse.c (t42_parse_dict): Ditto.
+
+2023-09-09  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/type1/t1afm.c (t1_get_index): Avoid `strlen` call.
+
+	Instead, we check the terminal zero.
+
+2023-09-08  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/type1/t1driver.c (t1_ps_get_font_value): Avoid redundant null.
+
+2023-09-08  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[cff, truetype] Improve prefix and suffix removal.
+
+	* src/cff/cffobjs.c (remove_style): Rewrite using pointers.
+	(remove_subset_prefix): Unwrap loop and use `memmove`.
+	* src/truetype/ttobjs.c (tt_skip_pdffont_random_tag): Unwrap loop
+	and avoid `strlen`.
+
+2023-09-07  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/sfnt/ttpost.c (load_format_20): Micro-optimize.
+
+2023-09-05  Werner Lemberg  <wl at gnu.org>
+
+	[autofit] Fix synchronization mistake between FreeType and ttfautohint.
+
+	Found by Behdad.
+
+	* src/autofit/aflatin.c (af_latin_metrics_init_blues): Fix array size of
+	`blue_sorted`: FreeType doesn't have artificial blue zones.
+
+2023-09-04  Werner Lemberg  <wl at gnu.org>
+
+	[autofit] Fix typos.
+
+	This also reduces the used heap size by a large factor.
+
+	From Behdad.
+
+	* src/autofit/afcjk.h (AF_CJKAxisRec): Use `AF_BLUE_STRINGSET_MAX_LEN`.
+	* src/autofit/aflatin.h (AF_LatinAxisRec): Ditto.
+
+2023-08-31  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/sfnt/ttpost.c (load_format_20): Rework tracing.
+
+2023-08-30  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	[builds] Abbreviate the DLG submodule update.
+
+	* autogen.sh, builds/toplevel.mk: Revise the command options.
+
+2023-08-29  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	Comment added.
+
+2023-08-29  Alexei Podtelezhnikov  <apodtele at gmail.com>
+
+	* src/sfnt/ttpost.c (load_format_20): Permit long names.
+	
+	Fixes #1254.
+
+2023-08-27  Werner Lemberg  <wl at gnu.org>
+
+	[gzip] Update sources to zlib 1.13.
+
 2023-08-25  Werner Lemberg  <wl at gnu.org>
 
+	docs/release: Minor fixes.
+
+2023-08-25  Anurag Thakur  <anuthadev at gmail.com>
+
+	docs/freetype-web.txt: New file.
+
+2023-08-25  Werner Lemberg  <wl at gnu.org>
+
 	* Version 2.13.2 released.
 	==========================
 

Added: trunk/Build/source/libs/freetype2/freetype-src/MSBuild.rsp
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/MSBuild.rsp	                        (rev 0)
+++ trunk/Build/source/libs/freetype2/freetype-src/MSBuild.rsp	2024-08-13 00:41:00 UTC (rev 72022)
@@ -0,0 +1,2 @@
+#/p:WindowsTargetPlatformVersion=10.0.16299.0
+/p:Configuration="Release"

Added: trunk/Build/source/libs/freetype2/freetype-src/MSBuild.sln
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/MSBuild.sln	                        (rev 0)
+++ trunk/Build/source/libs/freetype2/freetype-src/MSBuild.sln	2024-08-13 00:41:00 UTC (rev 72022)
@@ -0,0 +1,66 @@
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio Express 2012 for Windows Desktop
+#
+# You can build FreeType with MSBuild as follows
+#
+#    MSBuild.exe -t:Rebuild
+#                -p:Configuration=Debug
+#                -p:Platform=x64
+#                -p:UserDefines=FT_DEBUG_LOGGING
+#                   MSBuild.sln
+#
+# or with different appropriate switches. The library file
+# freetype.dll and/or freetype.lib should appear in the objs/
+# folder. A copy should be sent to ../freetype-demos/bin/
+# to be used with the demo programs.
+#
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "builds\windows\vc2010\freetype.vcxproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|x64 = Debug|x64
+		Debug|ARM64 = Debug|ARM64
+		Debug|Win32 = Debug|Win32
+		Debug Static|x64 = Debug Static|x64
+		Debug Static|ARM64 = Debug Static|ARM64
+		Debug Static|Win32 = Debug Static|Win32
+		Release|x64 = Release|x64
+		Release|ARM64 = Release|ARM64
+		Release|Win32 = Release|Win32
+		Release Static|x64 = Release Static|x64
+		Release Static|ARM64 = Release Static|ARM64
+		Release Static|Win32 = Release Static|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.ActiveCfg = Debug|x64
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.Build.0 = Debug|x64
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|ARM64.ActiveCfg = Debug|ARM64
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|ARM64.Build.0 = Debug|ARM64
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.Build.0 = Debug|Win32
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|x64.ActiveCfg = Debug Static|x64
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|x64.Build.0 = Debug Static|x64
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|ARM64.ActiveCfg = Debug Static|ARM64
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|ARM64.Build.0 = Debug Static|ARM64
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|Win32.ActiveCfg = Debug Static|Win32
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|Win32.Build.0 = Debug Static|Win32
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.ActiveCfg = Release|x64
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.Build.0 = Release|x64
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|ARM64.ActiveCfg = Release|ARM64
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|ARM64.Build.0 = Release|ARM64
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.ActiveCfg = Release|Win32
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.Build.0 = Release|Win32
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|x64.ActiveCfg = Release Static|x64
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|x64.Build.0 = Release Static|x64
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|ARM64.ActiveCfg = Release Static|ARM64
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|ARM64.Build.0 = Release Static|ARM64
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|Win32.ActiveCfg = Release Static|Win32
+		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|Win32.Build.0 = Release Static|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {90811697-0889-4381-80BC-C3FE8FA4931F}
+	EndGlobalSection
+EndGlobal

Modified: trunk/Build/source/libs/freetype2/freetype-src/Makefile
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/Makefile	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/Makefile	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/README
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/README	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/README	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,4 +1,4 @@
-FreeType 2.13.2
+FreeType 2.13.3
 ===============
 
 Homepage: https://www.freetype.org
@@ -32,9 +32,9 @@
 
 and download one of the following files.
 
-  freetype-doc-2.13.2.tar.xz
-  freetype-doc-2.13.2.tar.gz
-  ftdoc2132.zip
+  freetype-doc-2.13.3.tar.xz
+  freetype-doc-2.13.3.tar.gz
+  ftdoc2133.zip
 
 To view the documentation online, go to
 
@@ -94,7 +94,7 @@
 
 ----------------------------------------------------------------------
 
-Copyright (C) 2006-2023 by
+Copyright (C) 2006-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This  file is  part of  the FreeType  project, and  may only  be used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/README.git
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/README.git	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/README.git	2024-08-13 00:41:00 UTC (rev 72022)
@@ -89,7 +89,7 @@
 
 ----------------------------------------------------------------------
 
-Copyright (C) 2005-2023 by
+Copyright (C) 2005-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This  file is  part of  the FreeType  project, and  may only  be used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/autogen.sh
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/autogen.sh	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/autogen.sh	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-# Copyright (C) 2005-2023 by
+# Copyright (C) 2005-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -190,8 +190,7 @@
     :
   else
     echo "Checking out submodule in \`subprojects/dlg':"
-    git submodule init
-    git submodule update
+    git submodule update --init
   fi
 
   copy_submodule_files

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/README
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/README	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/README	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,7 +1,7 @@
 
 README for the builds/amiga subdirectory.
 
-Copyright (C) 2005-2023 by
+Copyright (C) 2005-2024 by
 Werner Lemberg and Detlef W\xFCrkner.
 
 This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/include/config/ftconfig.h
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/include/config/ftconfig.h	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/include/config/ftconfig.h	2024-08-13 00:41:00 UTC (rev 72022)
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    Amiga-specific configuration file (specification only).              */
 /*                                                                         */
-/*  Copyright (C) 2005-2023 by                                             */
+/*  Copyright (C) 2005-2024 by                                             */
 /*  Werner Lemberg and Detlef W\xFCrkner.                                     */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/include/config/ftmodule.h
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/include/config/ftmodule.h	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/include/config/ftmodule.h	2024-08-13 00:41:00 UTC (rev 72022)
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    Amiga-specific FreeType module selection.                            */
 /*                                                                         */
-/*  Copyright (C) 2005-2023 by                                             */
+/*  Copyright (C) 2005-2024 by                                             */
 /*  Werner Lemberg and Detlef W\xFCrkner.                                     */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/makefile
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/makefile	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/makefile	2024-08-13 00:41:00 UTC (rev 72022)
@@ -5,7 +5,7 @@
 #
 
 
-# Copyright (C) 2005-2023 by
+# Copyright (C) 2005-2024 by
 # Werner Lemberg and Detlef W\xFCrkner.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/makefile.os4
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/makefile.os4	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/makefile.os4	2024-08-13 00:41:00 UTC (rev 72022)
@@ -4,7 +4,7 @@
 #
 
 
-# Copyright (C) 2005-2023 by
+# Copyright (C) 2005-2024 by
 # Werner Lemberg and Detlef W\xFCrkner.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/smakefile
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/smakefile	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/smakefile	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 2005-2023 by
+# Copyright (C) 2005-2024 by
 # Werner Lemberg and Detlef W\xFCrkner.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/src/base/ftdebug.c
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/src/base/ftdebug.c	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/src/base/ftdebug.c	2024-08-13 00:41:00 UTC (rev 72022)
@@ -4,7 +4,7 @@
  *
  *   Debugging and logging component for amiga (body).
  *
- * Copyright (C) 1996-2023 by
+ * Copyright (C) 1996-2024 by
  * David Turner, Robert Wilhelm, Werner Lemberg, and Detlef Wuerkner.
  *
  * This file is part of the FreeType project, and may only be used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/src/base/ftsystem.c
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/src/base/ftsystem.c	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/amiga/src/base/ftsystem.c	2024-08-13 00:41:00 UTC (rev 72022)
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    Amiga-specific FreeType low-level system interface (body).           */
 /*                                                                         */
-/*  Copyright (C) 1996-2023 by                                             */
+/*  Copyright (C) 1996-2024 by                                             */
 /*  David Turner, Robert Wilhelm, Werner Lemberg and Detlef W\xFCrkner.       */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/ansi/ansi-def.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/ansi/ansi-def.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/ansi/ansi-def.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/ansi/ansi.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/ansi/ansi.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/ansi/ansi.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/beos/beos-def.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/beos/beos-def.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/beos/beos-def.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -5,7 +5,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/beos/beos.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/beos/beos.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/beos/beos.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -2,7 +2,7 @@
 # FreeType 2 configuration rules for a BeOS system
 #
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/beos/detect.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/beos/detect.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/beos/detect.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/cmake/FindBrotliDec.cmake
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/cmake/FindBrotliDec.cmake	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/cmake/FindBrotliDec.cmake	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,6 +1,6 @@
 # FindBrotliDec.cmake
 #
-# Copyright (C) 2019-2023 by
+# Copyright (C) 2019-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # Written by Werner Lemberg <wl at gnu.org>

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/cmake/iOS.cmake
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/cmake/iOS.cmake	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/cmake/iOS.cmake	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,6 +1,6 @@
 # iOS.cmake
 #
-# Copyright (C) 2014-2023 by
+# Copyright (C) 2014-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # Written by David Wimsey <david at wimsey.us>

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/cmake/testbuild.sh
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/cmake/testbuild.sh	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/cmake/testbuild.sh	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,6 +1,6 @@
 #!/bin/sh -e
 
-# Copyright (C) 2015-2023 by
+# Copyright (C) 2015-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/ansi-cc.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/ansi-cc.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/ansi-cc.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/bcc-dev.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/bcc-dev.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/bcc-dev.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/bcc.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/bcc.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/bcc.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/emx.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/emx.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/emx.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 2003-2023 by
+# Copyright (C) 2003-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/gcc-dev.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/gcc-dev.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/gcc-dev.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/gcc.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/gcc.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/gcc.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/intelc.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/intelc.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/intelc.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/unix-lcc.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/unix-lcc.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/unix-lcc.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/visualage.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/visualage.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/visualage.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/visualc.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/visualc.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/visualc.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/watcom.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/watcom.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/watcom.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/win-lcc.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/win-lcc.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/compiler/win-lcc.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/detect.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/detect.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/detect.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/dos/detect.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/dos/detect.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/dos/detect.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/dos/dos-def.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/dos/dos-def.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/dos/dos-def.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/dos/dos-emx.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/dos/dos-emx.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/dos/dos-emx.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 2003-2023 by
+# Copyright (C) 2003-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/dos/dos-gcc.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/dos/dos-gcc.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/dos/dos-gcc.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/dos/dos-wat.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/dos/dos-wat.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/dos/dos-wat.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 2003-2023 by
+# Copyright (C) 2003-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/exports.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/exports.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/exports.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 2005-2023 by
+# Copyright (C) 2005-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/freetype.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/freetype.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/freetype.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/link_dos.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/link_dos.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/link_dos.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/link_std.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/link_std.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/link_std.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/mac/ftmac.c
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/mac/ftmac.c	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/mac/ftmac.c	2024-08-13 00:41:00 UTC (rev 72022)
@@ -5,7 +5,7 @@
 /*    Mac FOND support.  Written by just at letterror.com.                    */
 /*  Heavily Fixed by mpsuzuki, George Williams and Sean McBride            */
 /*                                                                         */
-/*  Copyright (C) 1996-2023 by                                             */
+/*  Copyright (C) 1996-2024 by                                             */
 /*  Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.     */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/meson/extract_freetype_version.py
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/meson/extract_freetype_version.py	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/meson/extract_freetype_version.py	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 #
-# Copyright (C) 2020-2023 by
+# Copyright (C) 2020-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/meson/extract_libtool_version.py
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/meson/extract_libtool_version.py	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/meson/extract_libtool_version.py	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 #
-# Copyright (C) 2020-2023 by
+# Copyright (C) 2020-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/meson/generate_reference_docs.py
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/meson/generate_reference_docs.py	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/meson/generate_reference_docs.py	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 #
-# Copyright (C) 2020-2023 by
+# Copyright (C) 2020-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/meson/parse_modules_cfg.py
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/meson/parse_modules_cfg.py	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/meson/parse_modules_cfg.py	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 #
-# Copyright (C) 2020-2023 by
+# Copyright (C) 2020-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/meson/process_ftoption_h.py
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/meson/process_ftoption_h.py	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/meson/process_ftoption_h.py	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 #
-# Copyright (C) 2020-2023 by
+# Copyright (C) 2020-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/modules.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/modules.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/modules.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/os2/detect.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/os2/detect.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/os2/detect.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/os2/os2-def.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/os2/os2-def.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/os2/os2-def.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/os2/os2-dev.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/os2/os2-dev.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/os2/os2-dev.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -5,7 +5,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/os2/os2-gcc.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/os2/os2-gcc.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/os2/os2-gcc.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/symbian/bld.inf
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/symbian/bld.inf	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/symbian/bld.inf	2024-08-13 00:41:00 UTC (rev 72022)
@@ -2,7 +2,7 @@
 // FreeType 2 project for the symbian platform
 //
 
-// Copyright (C) 2008-2023 by
+// Copyright (C) 2008-2024 by
 // David Turner, Robert Wilhelm, and Werner Lemberg.
 //
 // This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/symbian/freetype.mmp
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/symbian/freetype.mmp	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/symbian/freetype.mmp	2024-08-13 00:41:00 UTC (rev 72022)
@@ -2,7 +2,7 @@
 // FreeType 2 makefile for the symbian platform
 //
 
-// Copyright (C) 2008-2023 by
+// Copyright (C) 2008-2024 by
 // David Turner, Robert Wilhelm, and Werner Lemberg.
 //
 // This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/toplevel.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/toplevel.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/toplevel.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -170,8 +170,7 @@
 
 check_out_submodule:
 	$(info Checking out submodule in `subprojects/dlg')
-	git --git-dir=$(TOP_DIR) submodule init
-	git --git-dir=$(TOP_DIR) submodule update
+	git -C $(TOP_DIR) submodule update --init
 
 copy_submodule:
 	$(info Copying files from `subprojects/dlg' to `src/dlg' and `include/dlg')

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/unix/aclocal.m4
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/unix/aclocal.m4	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/unix/aclocal.m4	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.16.5 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.90 -*- Autoconf -*-
 
-# Copyright (C) 1996-2021 Free Software Foundation, Inc.
+# Copyright (C) 1996-2024 Free Software Foundation, Inc.
 
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -738,6 +738,7 @@
     cat <<_LT_EOF >> "$cfgfile"
 #! $SHELL
 # Generated automatically by $as_me ($PACKAGE) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 
 # Provide generalized library-building support services.

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/unix/configure
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/unix/configure	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/unix/configure	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,11 +1,11 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for FreeType 2.13.2.
+# Generated by GNU Autoconf 2.72 for FreeType 2.13.3.
 #
 # Report bugs to <freetype at nongnu.org>.
 #
 #
-# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
+# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation,
 # Inc.
 #
 #
@@ -17,7 +17,6 @@
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-as_nop=:
 if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
 then :
   emulate sh
@@ -26,12 +25,13 @@
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
-else $as_nop
-  case `(set -o) 2>/dev/null` in #(
+else case e in #(
+  e) case `(set -o) 2>/dev/null` in #(
   *posix*) :
     set -o posix ;; #(
   *) :
      ;;
+esac ;;
 esac
 fi
 
@@ -103,7 +103,7 @@
 
      ;;
 esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
+# We did not find ourselves, most probably we were run as 'sh COMMAND'
 # in which case we are not to be found in the path.
 if test "x$as_myself" = x; then
   as_myself=$0
@@ -133,7 +133,7 @@
 esac
 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
 # Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
+# out after a failed 'exec'.
 printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
 exit 255
   fi
@@ -140,8 +140,7 @@
   # We don't want this to propagate to other subprocesses.
           { _as_can_reexec=; unset _as_can_reexec;}
 if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="as_nop=:
-if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+  as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
 then :
   emulate sh
   NULLCMD=:
@@ -149,12 +148,13 @@
   # is contrary to our usage.  Disable this feature.
   alias -g '\${1+\"\$@\"}'='\"\$@\"'
   setopt NO_GLOB_SUBST
-else \$as_nop
-  case \`(set -o) 2>/dev/null\` in #(
+else case e in #(
+  e) case \`(set -o) 2>/dev/null\` in #(
   *posix*) :
     set -o posix ;; #(
   *) :
      ;;
+esac ;;
 esac
 fi
 "
@@ -172,8 +172,9 @@
 if ( set x; as_fn_ret_success y && test x = \"\$1\" )
 then :
 
-else \$as_nop
-  exitcode=1; echo positional parameters were not saved.
+else case e in #(
+  e) exitcode=1; echo positional parameters were not saved. ;;
+esac
 fi
 test x\$exitcode = x0 || exit 1
 blah=\$(echo \$(echo blah))
@@ -195,14 +196,15 @@
   if (eval "$as_required") 2>/dev/null
 then :
   as_have_required=yes
-else $as_nop
-  as_have_required=no
+else case e in #(
+  e) as_have_required=no ;;
+esac
 fi
   if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
 then :
 
-else $as_nop
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+else case e in #(
+  e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 as_found=false
 for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
 do
@@ -235,13 +237,14 @@
 if $as_found
 then :
 
-else $as_nop
-  if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+else case e in #(
+  e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
 	      as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
 then :
   CONFIG_SHELL=$SHELL as_have_required=yes
+fi ;;
+esac
 fi
-fi
 
 
       if test "x$CONFIG_SHELL" != x
@@ -262,7 +265,7 @@
 esac
 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
 # Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
+# out after a failed 'exec'.
 printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
 exit 255
 fi
@@ -282,9 +285,10 @@
 $0: shell if you do have one."
   fi
   exit 1
+fi ;;
+esac
 fi
 fi
-fi
 SHELL=${CONFIG_SHELL-/bin/sh}
 export SHELL
 # Unset more variables known to interfere with behavior of common tools.
@@ -321,14 +325,6 @@
   as_fn_set_status $1
   exit $1
 } # as_fn_exit
-# as_fn_nop
-# ---------
-# Do nothing but, unlike ":", preserve the value of $?.
-as_fn_nop ()
-{
-  return $?
-}
-as_nop=as_fn_nop
 
 # as_fn_mkdir_p
 # -------------
@@ -397,11 +393,12 @@
   {
     eval $1+=\$2
   }'
-else $as_nop
-  as_fn_append ()
+else case e in #(
+  e) as_fn_append ()
   {
     eval $1=\$$1\$2
-  }
+  } ;;
+esac
 fi # as_fn_append
 
 # as_fn_arith ARG...
@@ -415,21 +412,14 @@
   {
     as_val=$(( $* ))
   }'
-else $as_nop
-  as_fn_arith ()
+else case e in #(
+  e) as_fn_arith ()
   {
     as_val=`expr "$@" || test $? -eq 1`
-  }
+  } ;;
+esac
 fi # as_fn_arith
 
-# as_fn_nop
-# ---------
-# Do nothing but, unlike ":", preserve the value of $?.
-as_fn_nop ()
-{
-  return $?
-}
-as_nop=as_fn_nop
 
 # as_fn_error STATUS ERROR [LINENO LOG_FD]
 # ----------------------------------------
@@ -503,6 +493,8 @@
     /[$]LINENO/=
   ' <$as_myself |
     sed '
+      t clear
+      :clear
       s/[$]LINENO.*/&-/
       t lineno
       b
@@ -551,7 +543,6 @@
 as_echo='printf %s\n'
 as_echo_n='printf %s'
 
-
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
@@ -563,9 +554,9 @@
   if ln -s conf$$.file conf$$ 2>/dev/null; then
     as_ln_s='ln -s'
     # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
+    # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable.
+    # In both cases, we have to default to 'cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
       as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
@@ -590,10 +581,12 @@
 as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated
 
 # Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+as_tr_sh="eval sed '$as_sed_sh'" # deprecated
 
 SHELL=${CONFIG_SHELL-/bin/sh}
 
@@ -621,8 +614,8 @@
 # Identity of this package.
 PACKAGE_NAME='FreeType'
 PACKAGE_TARNAME='freetype'
-PACKAGE_VERSION='2.13.2'
-PACKAGE_STRING='FreeType 2.13.2'
+PACKAGE_VERSION='2.13.3'
+PACKAGE_STRING='FreeType 2.13.3'
 PACKAGE_BUGREPORT='freetype at nongnu.org'
 PACKAGE_URL=''
 
@@ -660,6 +653,7 @@
 
 ac_header_c_list=
 ac_func_c_list=
+enable_year2038=no
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
 build_libtool_libs
@@ -821,6 +815,7 @@
 with_quickdraw_toolbox
 with_quickdraw_carbon
 with_ats
+enable_year2038
 '
       ac_precious_vars='build_alias
 host_alias
@@ -955,7 +950,7 @@
     ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: \`$ac_useropt'"
+      as_fn_error $? "invalid feature name: '$ac_useropt'"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -981,7 +976,7 @@
     ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: \`$ac_useropt'"
+      as_fn_error $? "invalid feature name: '$ac_useropt'"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1194,7 +1189,7 @@
     ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: \`$ac_useropt'"
+      as_fn_error $? "invalid package name: '$ac_useropt'"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1210,7 +1205,7 @@
     ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: \`$ac_useropt'"
+      as_fn_error $? "invalid package name: '$ac_useropt'"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1240,8 +1235,8 @@
   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
     x_libraries=$ac_optarg ;;
 
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
+  -*) as_fn_error $? "unrecognized option: '$ac_option'
+Try '$0 --help' for more information"
     ;;
 
   *=*)
@@ -1249,7 +1244,7 @@
     # Reject names that are not valid shell variable names.
     case $ac_envvar in #(
       '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+      as_fn_error $? "invalid variable name: '$ac_envvar'" ;;
     esac
     eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
@@ -1299,7 +1294,7 @@
   as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
 done
 
-# There might be people who depend on the old broken behavior: `$host'
+# There might be people who depend on the old broken behavior: '$host'
 # used to hold the argument of --host etc.
 # FIXME: To remove some day.
 build=$build_alias
@@ -1367,7 +1362,7 @@
   test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
   as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
 fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work"
 ac_abs_confdir=`(
 	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
 	pwd)`
@@ -1395,7 +1390,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures FreeType 2.13.2 to adapt to many kinds of systems.
+'configure' configures FreeType 2.13.3 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1409,11 +1404,11 @@
       --help=short        display options specific to this package
       --help=recursive    display the short help of all the included packages
   -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
+  -q, --quiet, --silent   do not print 'checking ...' messages
       --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -C, --config-cache      alias for '--cache-file=config.cache'
   -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+      --srcdir=DIR        find the sources in DIR [configure dir or '..']
 
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
@@ -1421,10 +1416,10 @@
   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                           [PREFIX]
 
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
+By default, 'make install' will install all the files in
+'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than '$ac_default_prefix' using '--prefix',
+for instance '--prefix=\$HOME'.
 
 For better control, use the options below.
 
@@ -1462,7 +1457,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of FreeType 2.13.2:";;
+     short | recursive ) echo "Configuration of FreeType 2.13.3:";;
    esac
   cat <<\_ACEOF
 
@@ -1479,6 +1474,7 @@
                           install freetype-config
   --disable-largefile     omit support for large files
   --disable-mmap          do not check mmap() and do not use
+  --enable-year2038       support timestamps after 2038
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -1556,7 +1552,7 @@
   LIBRSVG_LIBS
               linker flags for LIBRSVG, overriding pkg-config
 
-Use these variables to override the choices made by `configure' or to help
+Use these variables to override the choices made by 'configure' or to help
 it to find libraries and programs with nonstandard names/locations.
 
 Report bugs to <freetype at nongnu.org>.
@@ -1623,10 +1619,10 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-FreeType configure 2.13.2
-generated by GNU Autoconf 2.71
+FreeType configure 2.13.3
+generated by GNU Autoconf 2.72
 
-Copyright (C) 2021 Free Software Foundation, Inc.
+Copyright (C) 2023 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1665,11 +1661,12 @@
        } && test -s conftest.$ac_objext
 then :
   ac_retval=0
-else $as_nop
-  printf "%s\n" "$as_me: failed program was:" >&5
+else case e in #(
+  e) printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_retval=1
+	ac_retval=1 ;;
+esac
 fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
@@ -1703,11 +1700,12 @@
        }
 then :
   ac_retval=0
-else $as_nop
-  printf "%s\n" "$as_me: failed program was:" >&5
+else case e in #(
+  e) printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-    ac_retval=1
+    ac_retval=1 ;;
+esac
 fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
@@ -1745,11 +1743,12 @@
        }
 then :
   ac_retval=0
-else $as_nop
-  printf "%s\n" "$as_me: failed program was:" >&5
+else case e in #(
+  e) printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-	ac_retval=1
+	ac_retval=1 ;;
+esac
 fi
   # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
   # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
@@ -1773,8 +1772,8 @@
 if eval test \${$3+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
 #include <$2>
@@ -1782,10 +1781,12 @@
 if ac_fn_c_try_compile "$LINENO"
 then :
   eval "$3=yes"
-else $as_nop
-  eval "$3=no"
+else case e in #(
+  e) eval "$3=no" ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 eval ac_res=\$$3
 	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
@@ -1805,8 +1806,8 @@
 if eval test \${$3+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 /* Define $2 to an innocuous variant, in case <limits.h> declares $2.
    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
@@ -1813,7 +1814,7 @@
 #define $2 innocuous_$2
 
 /* System header to define __stub macros and hopefully few prototypes,
-   which can conflict with char $2 (); below.  */
+   which can conflict with char $2 (void); below.  */
 
 #include <limits.h>
 #undef $2
@@ -1824,7 +1825,7 @@
 #ifdef __cplusplus
 extern "C"
 #endif
-char $2 ();
+char $2 (void);
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
@@ -1843,11 +1844,13 @@
 if ac_fn_c_try_link "$LINENO"
 then :
   eval "$3=yes"
-else $as_nop
-  eval "$3=no"
+else case e in #(
+  e) eval "$3=no" ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
+    conftest$ac_exeext conftest.$ac_ext ;;
+esac
 fi
 eval ac_res=\$$3
 	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
@@ -1886,12 +1889,13 @@
   test $ac_status = 0; }; }
 then :
   ac_retval=0
-else $as_nop
-  printf "%s\n" "$as_me: program exited with status $ac_status" >&5
+else case e in #(
+  e) printf "%s\n" "$as_me: program exited with status $ac_status" >&5
        printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_retval=$ac_status
+       ac_retval=$ac_status ;;
+esac
 fi
   rm -rf conftest.dSYM conftest_ipa8_conftest.oo
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
@@ -1912,8 +1916,8 @@
 if eval test \${$3+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+else case e in #(
+  e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
   eval ac_save_FLAGS=\$$6
   as_fn_append $6 " $5"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1937,12 +1941,14 @@
 if ac_fn_c_try_compile "$LINENO"
 then :
   eval "$3=yes"
-else $as_nop
-  eval "$3=no"
+else case e in #(
+  e) eval "$3=no" ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   eval $6=\$ac_save_FLAGS
-
+ ;;
+esac
 fi
 eval ac_res=\$$3
 	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
@@ -1974,8 +1980,8 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by FreeType $as_me 2.13.2, which was
-generated by GNU Autoconf 2.71.  Invocation command line was
+It was created by FreeType $as_me 2.13.3, which was
+generated by GNU Autoconf 2.72.  Invocation command line was
 
   $ $0$ac_configure_args_raw
 
@@ -2221,10 +2227,10 @@
 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
     sed 's/^/| /' "$ac_site_file" >&5
     . "$ac_site_file" \
-      || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+      || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; }
   fi
 done
 
@@ -2260,9 +2266,7 @@
 /* Most of the following tests are stolen from RCS 5.7 src/conf.sh.  */
 struct buf { int x; };
 struct buf * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
+static char *e (char **p, int i)
 {
   return p[i];
 }
@@ -2276,6 +2280,21 @@
   return s;
 }
 
+/* C89 style stringification. */
+#define noexpand_stringify(a) #a
+const char *stringified = noexpand_stringify(arbitrary+token=sequence);
+
+/* C89 style token pasting.  Exercises some of the corner cases that
+   e.g. old MSVC gets wrong, but not very hard. */
+#define noexpand_concat(a,b) a##b
+#define expand_concat(a,b) noexpand_concat(a,b)
+extern int vA;
+extern int vbee;
+#define aye A
+#define bee B
+int *pvA = &expand_concat(v,aye);
+int *pvbee = &noexpand_concat(v,bee);
+
 /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
    function prototypes and stuff, but not \xHH hex character constants.
    These do not provoke an error unfortunately, instead are silently treated
@@ -2303,16 +2322,19 @@
 
 # Test code for whether the C compiler supports C99 (global declarations)
 ac_c_conftest_c99_globals='
-// Does the compiler advertise C99 conformance?
+/* Does the compiler advertise C99 conformance? */
 #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
 # error "Compiler does not advertise C99 conformance"
 #endif
 
+// See if C++-style comments work.
+
 #include <stdbool.h>
 extern int puts (const char *);
 extern int printf (const char *, ...);
 extern int dprintf (int, const char *, ...);
 extern void *malloc (size_t);
+extern void free (void *);
 
 // Check varargs macros.  These examples are taken from C99 6.10.3.5.
 // dprintf is used instead of fprintf to avoid needing to declare
@@ -2362,7 +2384,6 @@
 static inline int
 test_restrict (ccp restrict text)
 {
-  // See if C++-style comments work.
   // Iterate through items via the restricted pointer.
   // Also check for declarations in for loops.
   for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i)
@@ -2428,6 +2449,8 @@
   ia->datasize = 10;
   for (int i = 0; i < ia->datasize; ++i)
     ia->data[i] = i * 1.234;
+  // Work around memory leak warnings.
+  free (ia);
 
   // Check named initializers.
   struct named_init ni = {
@@ -2449,7 +2472,7 @@
 
 # Test code for whether the C compiler supports C11 (global declarations)
 ac_c_conftest_c11_globals='
-// Does the compiler advertise C11 conformance?
+/* Does the compiler advertise C11 conformance? */
 #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
 # error "Compiler does not advertise C11 conformance"
 #endif
@@ -2643,8 +2666,9 @@
 if $as_found
 then :
 
-else $as_nop
-  as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5
+else case e in #(
+  e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;;
+esac
 fi
 
 
@@ -2672,12 +2696,12 @@
   eval ac_new_val=\$ac_env_${ac_var}_value
   case $ac_old_set,$ac_new_set in
     set,)
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5
+printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,set)
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5
+printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,);;
     *)
@@ -2686,18 +2710,18 @@
 	ac_old_val_w=`echo x $ac_old_val`
 	ac_new_val_w=`echo x $ac_new_val`
 	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5
+printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;}
 	  ac_cache_corrupted=:
 	else
-	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5
+printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;}
 	  eval $ac_var=\$ac_old_val
 	fi
-	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-printf "%s\n" "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-printf "%s\n" "$as_me:   current value: \`$ac_new_val'" >&2;}
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}:   former value:  '$ac_old_val'" >&5
+printf "%s\n" "$as_me:   former value:  '$ac_old_val'" >&2;}
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}:   current value: '$ac_new_val'" >&5
+printf "%s\n" "$as_me:   current value: '$ac_new_val'" >&2;}
       fi;;
   esac
   # Pass precious variables to config.status.
@@ -2713,11 +2737,11 @@
   fi
 done
 if $ac_cache_corrupted; then
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file'
+  as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file'
 	    and start over" "$LINENO" 5
 fi
 ## -------------------- ##
@@ -2736,7 +2760,7 @@
 
 # Don't forget to update `docs/VERSIONS.TXT'!
 
-version_info='26:1:20'
+version_info='26:2:20'
 
 ft_version=`echo $version_info | tr : .`
 
@@ -2756,8 +2780,8 @@
 if test ${ac_cv_build+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_build_alias=$build_alias
+else case e in #(
+  e) ac_build_alias=$build_alias
 test "x$ac_build_alias" = x &&
   ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"`
 test "x$ac_build_alias" = x &&
@@ -2764,7 +2788,8 @@
   as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` ||
   as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
 printf "%s\n" "$ac_cv_build" >&6; }
@@ -2791,14 +2816,15 @@
 if test ${ac_cv_host+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test "x$host_alias" = x; then
+else case e in #(
+  e) if test "x$host_alias" = x; then
   ac_cv_host=$ac_cv_build
 else
   ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` ||
     as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5
 fi
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
 printf "%s\n" "$ac_cv_host" >&6; }
@@ -2846,8 +2872,8 @@
 if test ${ac_cv_prog_CC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$CC"; then
+else case e in #(
+  e) if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -2869,8 +2895,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
@@ -2891,8 +2918,8 @@
 if test ${ac_cv_prog_ac_ct_CC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_CC"; then
+else case e in #(
+  e) if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -2914,8 +2941,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
@@ -2949,8 +2977,8 @@
 if test ${ac_cv_prog_CC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$CC"; then
+else case e in #(
+  e) if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -2972,8 +3000,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
@@ -2994,8 +3023,8 @@
 if test ${ac_cv_prog_CC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$CC"; then
+else case e in #(
+  e) if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
   ac_prog_rejected=no
@@ -3034,8 +3063,9 @@
     ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@"
   fi
 fi
+fi ;;
+esac
 fi
-fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
@@ -3058,8 +3088,8 @@
 if test ${ac_cv_prog_CC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$CC"; then
+else case e in #(
+  e) if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -3081,8 +3111,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
@@ -3107,8 +3138,8 @@
 if test ${ac_cv_prog_ac_ct_CC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_CC"; then
+else case e in #(
+  e) if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -3130,8 +3161,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
@@ -3168,8 +3200,8 @@
 if test ${ac_cv_prog_CC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$CC"; then
+else case e in #(
+  e) if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -3191,8 +3223,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
@@ -3213,8 +3246,8 @@
 if test ${ac_cv_prog_ac_ct_CC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_CC"; then
+else case e in #(
+  e) if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -3236,8 +3269,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
@@ -3265,10 +3299,10 @@
 fi
 
 
-test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; }
 
 # Provide some information about the compiler.
 printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
@@ -3340,8 +3374,8 @@
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }
 then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+  # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'.
+# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no'
 # in a Makefile.  We should not override ac_cv_exeext if it was cached,
 # so that the user can short-circuit this test for compilers unknown to
 # Autoconf.
@@ -3361,7 +3395,7 @@
 	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
 	fi
 	# We set ac_cv_exeext here because the later test for it is not
-	# safe: cross compilers may not add the suffix if given an `-o'
+	# safe: cross compilers may not add the suffix if given an '-o'
 	# argument, so we may need to know it at that point already.
 	# Even if this section looks crufty: it has the advantage of
 	# actually working.
@@ -3372,8 +3406,9 @@
 done
 test "$ac_cv_exeext" = no && ac_cv_exeext=
 
-else $as_nop
-  ac_file=''
+else case e in #(
+  e) ac_file='' ;;
+esac
 fi
 if test -z "$ac_file"
 then :
@@ -3382,13 +3417,14 @@
 printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
+See 'config.log' for more details" "$LINENO" 5; }
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; } ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
 printf %s "checking for C compiler default output file name... " >&6; }
@@ -3412,10 +3448,10 @@
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }
 then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
+  # If both 'conftest.exe' and 'conftest' are 'present' (well, observable)
+# catch 'conftest.exe'.  For instance with Cygwin, 'ls conftest' will
+# work properly (i.e., refer to 'conftest.exe'), while it won't with
+# 'rm'.
 for ac_file in conftest.exe conftest conftest.*; do
   test -f "$ac_file" || continue
   case $ac_file in
@@ -3425,11 +3461,12 @@
     * ) break;;
   esac
 done
-else $as_nop
-  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+else case e in #(
+  e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; } ;;
+esac
 fi
 rm -f conftest conftest$ac_cv_exeext
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
@@ -3445,6 +3482,8 @@
 main (void)
 {
 FILE *f = fopen ("conftest.out", "w");
+ if (!f)
+  return 1;
  return ferror (f) || fclose (f) != 0;
 
   ;
@@ -3484,11 +3523,11 @@
     if test "$cross_compiling" = maybe; then
 	cross_compiling=yes
     else
-	{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+	{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error 77 "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
+If you meant to cross compile, use '--host'.
+See 'config.log' for more details" "$LINENO" 5; }
     fi
   fi
 fi
@@ -3495,7 +3534,8 @@
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
 printf "%s\n" "$cross_compiling" >&6; }
 
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+rm -f conftest.$ac_ext conftest$ac_cv_exeext \
+  conftest.o conftest.obj conftest.out
 ac_clean_files=$ac_clean_files_save
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
 printf %s "checking for suffix of object files... " >&6; }
@@ -3502,8 +3542,8 @@
 if test ${ac_cv_objext+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3535,16 +3575,18 @@
        break;;
   esac
 done
-else $as_nop
-  printf "%s\n" "$as_me: failed program was:" >&5
+else case e in #(
+  e) printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; } ;;
+esac
 fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
+rm -f conftest.$ac_cv_objext conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
 printf "%s\n" "$ac_cv_objext" >&6; }
@@ -3555,8 +3597,8 @@
 if test ${ac_cv_c_compiler_gnu+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3573,12 +3615,14 @@
 if ac_fn_c_try_compile "$LINENO"
 then :
   ac_compiler_gnu=yes
-else $as_nop
-  ac_compiler_gnu=no
+else case e in #(
+  e) ac_compiler_gnu=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }
@@ -3596,8 +3640,8 @@
 if test ${ac_cv_prog_cc_g+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_save_c_werror_flag=$ac_c_werror_flag
+else case e in #(
+  e) ac_save_c_werror_flag=$ac_c_werror_flag
    ac_c_werror_flag=yes
    ac_cv_prog_cc_g=no
    CFLAGS="-g"
@@ -3615,8 +3659,8 @@
 if ac_fn_c_try_compile "$LINENO"
 then :
   ac_cv_prog_cc_g=yes
-else $as_nop
-  CFLAGS=""
+else case e in #(
+  e) CFLAGS=""
       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -3631,8 +3675,8 @@
 if ac_fn_c_try_compile "$LINENO"
 then :
 
-else $as_nop
-  ac_c_werror_flag=$ac_save_c_werror_flag
+else case e in #(
+  e) ac_c_werror_flag=$ac_save_c_werror_flag
 	 CFLAGS="-g"
 	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -3649,12 +3693,15 @@
 then :
   ac_cv_prog_cc_g=yes
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
+   ac_c_werror_flag=$ac_save_c_werror_flag ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
 printf "%s\n" "$ac_cv_prog_cc_g" >&6; }
@@ -3681,8 +3728,8 @@
 if test ${ac_cv_prog_cc_c11+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_cv_prog_cc_c11=no
+else case e in #(
+  e) ac_cv_prog_cc_c11=no
 ac_save_CC=$CC
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -3699,7 +3746,8 @@
   test "x$ac_cv_prog_cc_c11" != "xno" && break
 done
 rm -f conftest.$ac_ext
-CC=$ac_save_CC
+CC=$ac_save_CC ;;
+esac
 fi
 
 if test "x$ac_cv_prog_cc_c11" = xno
@@ -3706,18 +3754,20 @@
 then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
 printf "%s\n" "unsupported" >&6; }
-else $as_nop
-  if test "x$ac_cv_prog_cc_c11" = x
+else case e in #(
+  e) if test "x$ac_cv_prog_cc_c11" = x
 then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
 printf "%s\n" "none needed" >&6; }
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }
-     CC="$CC $ac_cv_prog_cc_c11"
+     CC="$CC $ac_cv_prog_cc_c11" ;;
+esac
 fi
   ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11
-  ac_prog_cc_stdc=c11
+  ac_prog_cc_stdc=c11 ;;
+esac
 fi
 fi
 if test x$ac_prog_cc_stdc = xno
@@ -3727,8 +3777,8 @@
 if test ${ac_cv_prog_cc_c99+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_cv_prog_cc_c99=no
+else case e in #(
+  e) ac_cv_prog_cc_c99=no
 ac_save_CC=$CC
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -3745,7 +3795,8 @@
   test "x$ac_cv_prog_cc_c99" != "xno" && break
 done
 rm -f conftest.$ac_ext
-CC=$ac_save_CC
+CC=$ac_save_CC ;;
+esac
 fi
 
 if test "x$ac_cv_prog_cc_c99" = xno
@@ -3752,18 +3803,20 @@
 then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
 printf "%s\n" "unsupported" >&6; }
-else $as_nop
-  if test "x$ac_cv_prog_cc_c99" = x
+else case e in #(
+  e) if test "x$ac_cv_prog_cc_c99" = x
 then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
 printf "%s\n" "none needed" >&6; }
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }
-     CC="$CC $ac_cv_prog_cc_c99"
+     CC="$CC $ac_cv_prog_cc_c99" ;;
+esac
 fi
   ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
-  ac_prog_cc_stdc=c99
+  ac_prog_cc_stdc=c99 ;;
+esac
 fi
 fi
 if test x$ac_prog_cc_stdc = xno
@@ -3773,8 +3826,8 @@
 if test ${ac_cv_prog_cc_c89+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_cv_prog_cc_c89=no
+else case e in #(
+  e) ac_cv_prog_cc_c89=no
 ac_save_CC=$CC
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -3791,7 +3844,8 @@
   test "x$ac_cv_prog_cc_c89" != "xno" && break
 done
 rm -f conftest.$ac_ext
-CC=$ac_save_CC
+CC=$ac_save_CC ;;
+esac
 fi
 
 if test "x$ac_cv_prog_cc_c89" = xno
@@ -3798,18 +3852,20 @@
 then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
 printf "%s\n" "unsupported" >&6; }
-else $as_nop
-  if test "x$ac_cv_prog_cc_c89" = x
+else case e in #(
+  e) if test "x$ac_cv_prog_cc_c89" = x
 then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
 printf "%s\n" "none needed" >&6; }
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }
-     CC="$CC $ac_cv_prog_cc_c89"
+     CC="$CC $ac_cv_prog_cc_c89" ;;
+esac
 fi
   ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
-  ac_prog_cc_stdc=c89
+  ac_prog_cc_stdc=c89 ;;
+esac
 fi
 fi
 
@@ -3834,8 +3890,8 @@
   if test ${ac_cv_prog_CPP+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-      # Double quotes because $CC needs to be expanded
+else case e in #(
+  e)     # Double quotes because $CC needs to be expanded
     for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
     do
       ac_preproc_ok=false
@@ -3853,9 +3909,10 @@
 if ac_fn_c_try_cpp "$LINENO"
 then :
 
-else $as_nop
-  # Broken: fails on valid input.
-continue
+else case e in #(
+  e) # Broken: fails on valid input.
+continue ;;
+esac
 fi
 rm -f conftest.err conftest.i conftest.$ac_ext
 
@@ -3869,15 +3926,16 @@
 then :
   # Broken: success on invalid input.
 continue
-else $as_nop
-  # Passes both tests.
+else case e in #(
+  e) # Passes both tests.
 ac_preproc_ok=:
-break
+break ;;
+esac
 fi
 rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok
 then :
@@ -3886,7 +3944,8 @@
 
     done
     ac_cv_prog_CPP=$CPP
-
+   ;;
+esac
 fi
   CPP=$ac_cv_prog_CPP
 else
@@ -3909,9 +3968,10 @@
 if ac_fn_c_try_cpp "$LINENO"
 then :
 
-else $as_nop
-  # Broken: fails on valid input.
-continue
+else case e in #(
+  e) # Broken: fails on valid input.
+continue ;;
+esac
 fi
 rm -f conftest.err conftest.i conftest.$ac_ext
 
@@ -3925,24 +3985,26 @@
 then :
   # Broken: success on invalid input.
 continue
-else $as_nop
-  # Passes both tests.
+else case e in #(
+  e) # Passes both tests.
 ac_preproc_ok=:
-break
+break ;;
+esac
 fi
 rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok
 then :
 
-else $as_nop
-  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+else case e in #(
+  e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; } ;;
+esac
 fi
 
 ac_ext=c
@@ -3969,8 +4031,8 @@
 if test ${ac_cv_path_PKG_CONFIG+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  case $PKG_CONFIG in
+else case e in #(
+  e) case $PKG_CONFIG in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
   ;;
@@ -3995,6 +4057,7 @@
 IFS=$as_save_IFS
 
   ;;
+esac ;;
 esac
 fi
 PKG_CONFIG=$ac_cv_path_PKG_CONFIG
@@ -4017,8 +4080,8 @@
 if test ${ac_cv_path_ac_pt_PKG_CONFIG+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  case $ac_pt_PKG_CONFIG in
+else case e in #(
+  e) case $ac_pt_PKG_CONFIG in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
   ;;
@@ -4043,6 +4106,7 @@
 IFS=$as_save_IFS
 
   ;;
+esac ;;
 esac
 fi
 ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
@@ -4185,8 +4249,8 @@
 if test ${ac_cv_path_SED+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+else case e in #(
+  e)           ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
      for ac_i in 1 2 3 4 5 6 7; do
        ac_script="$ac_script$as_nl$ac_script"
      done
@@ -4211,9 +4275,10 @@
       as_fn_executable_p "$ac_path_SED" || continue
 # Check for GNU ac_path_SED and select it if it is found.
   # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
+case `"$ac_path_SED" --version 2>&1` in #(
 *GNU*)
   ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -4248,7 +4313,8 @@
 else
   ac_cv_path_SED=$SED
 fi
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
 printf "%s\n" "$ac_cv_path_SED" >&6; }
@@ -4273,8 +4339,8 @@
 if test ${ac_cv_path_GREP+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -z "$GREP"; then
+else case e in #(
+  e) if test -z "$GREP"; then
   ac_path_GREP_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -4293,9 +4359,10 @@
       as_fn_executable_p "$ac_path_GREP" || continue
 # Check for GNU ac_path_GREP and select it if it is found.
   # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
+case `"$ac_path_GREP" --version 2>&1` in #(
 *GNU*)
   ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -4330,7 +4397,8 @@
 else
   ac_cv_path_GREP=$GREP
 fi
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
 printf "%s\n" "$ac_cv_path_GREP" >&6; }
@@ -4342,8 +4410,8 @@
 if test ${ac_cv_path_EGREP+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+else case e in #(
+  e) if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
    then ac_cv_path_EGREP="$GREP -E"
    else
      if test -z "$EGREP"; then
@@ -4365,9 +4433,10 @@
       as_fn_executable_p "$ac_path_EGREP" || continue
 # Check for GNU ac_path_EGREP and select it if it is found.
   # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
+case `"$ac_path_EGREP" --version 2>&1` in #(
 *GNU*)
   ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -4403,12 +4472,15 @@
   ac_cv_path_EGREP=$EGREP
 fi
 
-   fi
+   fi ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
 printf "%s\n" "$ac_cv_path_EGREP" >&6; }
  EGREP="$ac_cv_path_EGREP"
 
+         EGREP_TRADITIONAL=$EGREP
+ ac_cv_path_EGREP_TRADITIONAL=$EGREP
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
 printf %s "checking for fgrep... " >&6; }
@@ -4415,8 +4487,8 @@
 if test ${ac_cv_path_FGREP+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+else case e in #(
+  e) if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
    then ac_cv_path_FGREP="$GREP -F"
    else
      if test -z "$FGREP"; then
@@ -4438,9 +4510,10 @@
       as_fn_executable_p "$ac_path_FGREP" || continue
 # Check for GNU ac_path_FGREP and select it if it is found.
   # Check for GNU $ac_path_FGREP
-case `"$ac_path_FGREP" --version 2>&1` in
+case `"$ac_path_FGREP" --version 2>&1` in #(
 *GNU*)
   ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -4476,7 +4549,8 @@
   ac_cv_path_FGREP=$FGREP
 fi
 
-   fi
+   fi ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
 printf "%s\n" "$ac_cv_path_FGREP" >&6; }
@@ -4507,8 +4581,9 @@
 if test ${with_gnu_ld+y}
 then :
   withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
-else $as_nop
-  with_gnu_ld=no
+else case e in #(
+  e) with_gnu_ld=no ;;
+esac
 fi
 
 ac_prog=ld
@@ -4553,8 +4628,8 @@
 if test ${lt_cv_path_LD+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -z "$LD"; then
+else case e in #(
+  e) if test -z "$LD"; then
   lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
   for ac_dir in $PATH; do
     IFS=$lt_save_ifs
@@ -4577,8 +4652,9 @@
   IFS=$lt_save_ifs
 else
   lt_cv_path_LD=$LD # Let the user override the test with a path.
+fi ;;
+esac
 fi
-fi
 
 LD=$lt_cv_path_LD
 if test -n "$LD"; then
@@ -4594,8 +4670,8 @@
 if test ${lt_cv_prog_gnu_ld+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+else case e in #(
+  e) # I'd rather use --version here, but apparently some GNU lds only accept -v.
 case `$LD -v 2>&1 </dev/null` in
 *GNU* | *'with BFD'*)
   lt_cv_prog_gnu_ld=yes
@@ -4603,6 +4679,7 @@
 *)
   lt_cv_prog_gnu_ld=no
   ;;
+esac ;;
 esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
@@ -4622,8 +4699,8 @@
 if test ${lt_cv_path_NM+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$NM"; then
+else case e in #(
+  e) if test -n "$NM"; then
   # Let the user override the test.
   lt_cv_path_NM=$NM
 else
@@ -4670,8 +4747,9 @@
     IFS=$lt_save_ifs
   done
   : ${lt_cv_path_NM=no}
+fi ;;
+esac
 fi
-fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
 printf "%s\n" "$lt_cv_path_NM" >&6; }
 if test no != "$lt_cv_path_NM"; then
@@ -4691,8 +4769,8 @@
 if test ${ac_cv_prog_DUMPBIN+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$DUMPBIN"; then
+else case e in #(
+  e) if test -n "$DUMPBIN"; then
   ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -4714,8 +4792,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 DUMPBIN=$ac_cv_prog_DUMPBIN
 if test -n "$DUMPBIN"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
@@ -4740,8 +4819,8 @@
 if test ${ac_cv_prog_ac_ct_DUMPBIN+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_DUMPBIN"; then
+else case e in #(
+  e) if test -n "$ac_ct_DUMPBIN"; then
   ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -4763,8 +4842,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
 if test -n "$ac_ct_DUMPBIN"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
@@ -4817,8 +4897,8 @@
 if test ${lt_cv_nm_interface+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  lt_cv_nm_interface="BSD nm"
+else case e in #(
+  e) lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
   (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
   (eval "$ac_compile" 2>conftest.err)
@@ -4831,7 +4911,8 @@
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
   fi
-  rm -f conftest*
+  rm -f conftest* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
 printf "%s\n" "$lt_cv_nm_interface" >&6; }
@@ -4853,8 +4934,8 @@
 if test ${lt_cv_sys_max_cmd_len+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-    i=0
+else case e in #(
+  e)   i=0
   teststring=ABCD
 
   case $build_os in
@@ -4976,7 +5057,8 @@
     fi
     ;;
   esac
-
+ ;;
+esac
 fi
 
 if test -n "$lt_cv_sys_max_cmd_len"; then
@@ -5033,8 +5115,8 @@
 if test ${lt_cv_to_host_file_cmd+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  case $host in
+else case e in #(
+  e) case $host in
   *-*-mingw* )
     case $build in
       *-*-mingw* ) # actually msys
@@ -5065,7 +5147,8 @@
     lt_cv_to_host_file_cmd=func_convert_file_noop
     ;;
 esac
-
+ ;;
+esac
 fi
 
 to_host_file_cmd=$lt_cv_to_host_file_cmd
@@ -5081,8 +5164,8 @@
 if test ${lt_cv_to_tool_file_cmd+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  #assume ordinary cross tools, or native build.
+else case e in #(
+  e) #assume ordinary cross tools, or native build.
 lt_cv_to_tool_file_cmd=func_convert_file_noop
 case $host in
   *-*-mingw* )
@@ -5093,7 +5176,8 @@
     esac
     ;;
 esac
-
+ ;;
+esac
 fi
 
 to_tool_file_cmd=$lt_cv_to_tool_file_cmd
@@ -5109,8 +5193,9 @@
 if test ${lt_cv_ld_reload_flag+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  lt_cv_ld_reload_flag='-r'
+else case e in #(
+  e) lt_cv_ld_reload_flag='-r' ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
 printf "%s\n" "$lt_cv_ld_reload_flag" >&6; }
@@ -5151,8 +5236,8 @@
 if test ${ac_cv_prog_FILECMD+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$FILECMD"; then
+else case e in #(
+  e) if test -n "$FILECMD"; then
   ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5174,8 +5259,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 FILECMD=$ac_cv_prog_FILECMD
 if test -n "$FILECMD"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5
@@ -5196,8 +5282,8 @@
 if test ${ac_cv_prog_ac_ct_FILECMD+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_FILECMD"; then
+else case e in #(
+  e) if test -n "$ac_ct_FILECMD"; then
   ac_cv_prog_ac_ct_FILECMD="$ac_ct_FILECMD" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5219,8 +5305,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_FILECMD=$ac_cv_prog_ac_ct_FILECMD
 if test -n "$ac_ct_FILECMD"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FILECMD" >&5
@@ -5259,8 +5346,8 @@
 if test ${ac_cv_prog_OBJDUMP+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$OBJDUMP"; then
+else case e in #(
+  e) if test -n "$OBJDUMP"; then
   ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5282,8 +5369,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 OBJDUMP=$ac_cv_prog_OBJDUMP
 if test -n "$OBJDUMP"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
@@ -5304,8 +5392,8 @@
 if test ${ac_cv_prog_ac_ct_OBJDUMP+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_OBJDUMP"; then
+else case e in #(
+  e) if test -n "$ac_ct_OBJDUMP"; then
   ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5327,8 +5415,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
 if test -n "$ac_ct_OBJDUMP"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
@@ -5365,8 +5454,8 @@
 if test ${lt_cv_deplibs_check_method+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  lt_cv_file_magic_cmd='$MAGIC_CMD'
+else case e in #(
+  e) lt_cv_file_magic_cmd='$MAGIC_CMD'
 lt_cv_file_magic_test_file=
 lt_cv_deplibs_check_method='unknown'
 # Need to set the preceding variable on all platforms that support
@@ -5559,7 +5648,8 @@
   lt_cv_deplibs_check_method=pass_all
   ;;
 esac
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
 printf "%s\n" "$lt_cv_deplibs_check_method" >&6; }
@@ -5611,8 +5701,8 @@
 if test ${ac_cv_prog_DLLTOOL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$DLLTOOL"; then
+else case e in #(
+  e) if test -n "$DLLTOOL"; then
   ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5634,8 +5724,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 DLLTOOL=$ac_cv_prog_DLLTOOL
 if test -n "$DLLTOOL"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
@@ -5656,8 +5747,8 @@
 if test ${ac_cv_prog_ac_ct_DLLTOOL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_DLLTOOL"; then
+else case e in #(
+  e) if test -n "$ac_ct_DLLTOOL"; then
   ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5679,8 +5770,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
 if test -n "$ac_ct_DLLTOOL"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
@@ -5718,8 +5810,8 @@
 if test ${lt_cv_sharedlib_from_linklib_cmd+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  lt_cv_sharedlib_from_linklib_cmd='unknown'
+else case e in #(
+  e) lt_cv_sharedlib_from_linklib_cmd='unknown'
 
 case $host_os in
 cygwin* | mingw* | pw32* | cegcc*)
@@ -5739,7 +5831,8 @@
   lt_cv_sharedlib_from_linklib_cmd=$ECHO
   ;;
 esac
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
 printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
@@ -5763,8 +5856,8 @@
 if test ${ac_cv_prog_AR+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$AR"; then
+else case e in #(
+  e) if test -n "$AR"; then
   ac_cv_prog_AR="$AR" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5786,8 +5879,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 AR=$ac_cv_prog_AR
 if test -n "$AR"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
@@ -5812,8 +5906,8 @@
 if test ${ac_cv_prog_ac_ct_AR+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_AR"; then
+else case e in #(
+  e) if test -n "$ac_ct_AR"; then
   ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5835,8 +5929,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_AR=$ac_cv_prog_ac_ct_AR
 if test -n "$ac_ct_AR"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
@@ -5897,8 +5992,8 @@
 if test ${lt_cv_ar_at_file+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  lt_cv_ar_at_file=no
+else case e in #(
+  e) lt_cv_ar_at_file=no
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -5935,7 +6030,8 @@
 
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-
+   ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
 printf "%s\n" "$lt_cv_ar_at_file" >&6; }
@@ -5960,8 +6056,8 @@
 if test ${ac_cv_prog_STRIP+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$STRIP"; then
+else case e in #(
+  e) if test -n "$STRIP"; then
   ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -5983,8 +6079,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 STRIP=$ac_cv_prog_STRIP
 if test -n "$STRIP"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
@@ -6005,8 +6102,8 @@
 if test ${ac_cv_prog_ac_ct_STRIP+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_STRIP"; then
+else case e in #(
+  e) if test -n "$ac_ct_STRIP"; then
   ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -6028,8 +6125,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
 if test -n "$ac_ct_STRIP"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
@@ -6069,8 +6167,8 @@
 if test ${ac_cv_prog_RANLIB+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$RANLIB"; then
+else case e in #(
+  e) if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -6092,8 +6190,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 RANLIB=$ac_cv_prog_RANLIB
 if test -n "$RANLIB"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
@@ -6114,8 +6213,8 @@
 if test ${ac_cv_prog_ac_ct_RANLIB+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_RANLIB"; then
+else case e in #(
+  e) if test -n "$ac_ct_RANLIB"; then
   ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -6137,8 +6236,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
 if test -n "$ac_ct_RANLIB"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
@@ -6223,8 +6323,8 @@
 if test ${ac_cv_prog_AWK+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$AWK"; then
+else case e in #(
+  e) if test -n "$AWK"; then
   ac_cv_prog_AWK="$AWK" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -6246,8 +6346,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 AWK=$ac_cv_prog_AWK
 if test -n "$AWK"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
@@ -6295,8 +6396,8 @@
 if test ${lt_cv_sys_global_symbol_pipe+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
 # These are sane defaults that work on at least a few old systems.
 # [They come from Ultrix.  What could be older than Ultrix?!! ;)]
 
@@ -6551,7 +6652,8 @@
     lt_cv_sys_global_symbol_pipe=
   fi
 done
-
+ ;;
+esac
 fi
 
 if test -z "$lt_cv_sys_global_symbol_pipe"; then
@@ -6615,8 +6717,9 @@
 if test ${with_sysroot+y}
 then :
   withval=$with_sysroot;
-else $as_nop
-  with_sysroot=no
+else case e in #(
+  e) with_sysroot=no ;;
+esac
 fi
 
 
@@ -6651,8 +6754,8 @@
 if test ${ac_cv_path_lt_DD+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  printf 0123456789abcdef0123456789abcdef >conftest.i
+else case e in #(
+  e) printf 0123456789abcdef0123456789abcdef >conftest.i
 cat conftest.i conftest.i >conftest2.i
 : ${lt_DD:=$DD}
 if test -z "$lt_DD"; then
@@ -6688,7 +6791,8 @@
   ac_cv_path_lt_DD=$lt_DD
 fi
 
-rm -f conftest.i conftest2.i conftest.out
+rm -f conftest.i conftest2.i conftest.out ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5
 printf "%s\n" "$ac_cv_path_lt_DD" >&6; }
@@ -6699,8 +6803,8 @@
 if test ${lt_cv_truncate_bin+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  printf 0123456789abcdef0123456789abcdef >conftest.i
+else case e in #(
+  e) printf 0123456789abcdef0123456789abcdef >conftest.i
 cat conftest.i conftest.i >conftest2.i
 lt_cv_truncate_bin=
 if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
@@ -6708,7 +6812,8 @@
   && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1"
 fi
 rm -f conftest.i conftest2.i conftest.out
-test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"
+test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5
 printf "%s\n" "$lt_cv_truncate_bin" >&6; }
@@ -6918,8 +7023,8 @@
 if test ${lt_cv_cc_needs_belf+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_ext=c
+else case e in #(
+  e) ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
@@ -6939,8 +7044,9 @@
 if ac_fn_c_try_link "$LINENO"
 then :
   lt_cv_cc_needs_belf=yes
-else $as_nop
-  lt_cv_cc_needs_belf=no
+else case e in #(
+  e) lt_cv_cc_needs_belf=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
@@ -6949,7 +7055,8 @@
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
 printf "%s\n" "$lt_cv_cc_needs_belf" >&6; }
@@ -7007,8 +7114,8 @@
 if test ${ac_cv_prog_MANIFEST_TOOL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$MANIFEST_TOOL"; then
+else case e in #(
+  e) if test -n "$MANIFEST_TOOL"; then
   ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -7030,8 +7137,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
 if test -n "$MANIFEST_TOOL"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
@@ -7052,8 +7160,8 @@
 if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_MANIFEST_TOOL"; then
+else case e in #(
+  e) if test -n "$ac_ct_MANIFEST_TOOL"; then
   ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -7075,8 +7183,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
 if test -n "$ac_ct_MANIFEST_TOOL"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
@@ -7107,8 +7216,8 @@
 if test ${lt_cv_path_mainfest_tool+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  lt_cv_path_mainfest_tool=no
+else case e in #(
+  e) lt_cv_path_mainfest_tool=no
   echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
   $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
   cat conftest.err >&5
@@ -7115,7 +7224,8 @@
   if $GREP 'Manifest Tool' conftest.out > /dev/null; then
     lt_cv_path_mainfest_tool=yes
   fi
-  rm -f conftest*
+  rm -f conftest* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
 printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; }
@@ -7138,8 +7248,8 @@
 if test ${ac_cv_prog_DSYMUTIL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$DSYMUTIL"; then
+else case e in #(
+  e) if test -n "$DSYMUTIL"; then
   ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -7161,8 +7271,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 DSYMUTIL=$ac_cv_prog_DSYMUTIL
 if test -n "$DSYMUTIL"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
@@ -7183,8 +7294,8 @@
 if test ${ac_cv_prog_ac_ct_DSYMUTIL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_DSYMUTIL"; then
+else case e in #(
+  e) if test -n "$ac_ct_DSYMUTIL"; then
   ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -7206,8 +7317,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
 if test -n "$ac_ct_DSYMUTIL"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
@@ -7240,8 +7352,8 @@
 if test ${ac_cv_prog_NMEDIT+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$NMEDIT"; then
+else case e in #(
+  e) if test -n "$NMEDIT"; then
   ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -7263,8 +7375,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 NMEDIT=$ac_cv_prog_NMEDIT
 if test -n "$NMEDIT"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
@@ -7285,8 +7398,8 @@
 if test ${ac_cv_prog_ac_ct_NMEDIT+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_NMEDIT"; then
+else case e in #(
+  e) if test -n "$ac_ct_NMEDIT"; then
   ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -7308,8 +7421,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
 if test -n "$ac_ct_NMEDIT"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
@@ -7342,8 +7456,8 @@
 if test ${ac_cv_prog_LIPO+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$LIPO"; then
+else case e in #(
+  e) if test -n "$LIPO"; then
   ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -7365,8 +7479,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 LIPO=$ac_cv_prog_LIPO
 if test -n "$LIPO"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
@@ -7387,8 +7502,8 @@
 if test ${ac_cv_prog_ac_ct_LIPO+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_LIPO"; then
+else case e in #(
+  e) if test -n "$ac_ct_LIPO"; then
   ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -7410,8 +7525,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
 if test -n "$ac_ct_LIPO"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
@@ -7444,8 +7560,8 @@
 if test ${ac_cv_prog_OTOOL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$OTOOL"; then
+else case e in #(
+  e) if test -n "$OTOOL"; then
   ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -7467,8 +7583,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 OTOOL=$ac_cv_prog_OTOOL
 if test -n "$OTOOL"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
@@ -7489,8 +7606,8 @@
 if test ${ac_cv_prog_ac_ct_OTOOL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_OTOOL"; then
+else case e in #(
+  e) if test -n "$ac_ct_OTOOL"; then
   ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -7512,8 +7629,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
 if test -n "$ac_ct_OTOOL"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
@@ -7546,8 +7664,8 @@
 if test ${ac_cv_prog_OTOOL64+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$OTOOL64"; then
+else case e in #(
+  e) if test -n "$OTOOL64"; then
   ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -7569,8 +7687,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 OTOOL64=$ac_cv_prog_OTOOL64
 if test -n "$OTOOL64"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
@@ -7591,8 +7710,8 @@
 if test ${ac_cv_prog_ac_ct_OTOOL64+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_OTOOL64"; then
+else case e in #(
+  e) if test -n "$ac_ct_OTOOL64"; then
   ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -7614,8 +7733,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
 if test -n "$ac_ct_OTOOL64"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
@@ -7671,8 +7791,8 @@
 if test ${lt_cv_apple_cc_single_mod+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  lt_cv_apple_cc_single_mod=no
+else case e in #(
+  e) lt_cv_apple_cc_single_mod=no
       if test -z "$LT_MULTI_MODULE"; then
 	# By default we will add the -single_module flag. You can override
 	# by either setting the environment variable LT_MULTI_MODULE
@@ -7698,7 +7818,8 @@
 	fi
 	rm -rf libconftest.dylib*
 	rm -f conftest.*
-      fi
+      fi ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
 printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; }
@@ -7708,8 +7829,8 @@
 if test ${lt_cv_ld_exported_symbols_list+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  lt_cv_ld_exported_symbols_list=no
+else case e in #(
+  e) lt_cv_ld_exported_symbols_list=no
       save_LDFLAGS=$LDFLAGS
       echo "_main" > conftest.sym
       LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
@@ -7727,13 +7848,15 @@
 if ac_fn_c_try_link "$LINENO"
 then :
   lt_cv_ld_exported_symbols_list=yes
-else $as_nop
-  lt_cv_ld_exported_symbols_list=no
+else case e in #(
+  e) lt_cv_ld_exported_symbols_list=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 	LDFLAGS=$save_LDFLAGS
-
+     ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
 printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; }
@@ -7743,8 +7866,8 @@
 if test ${lt_cv_ld_force_load+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  lt_cv_ld_force_load=no
+else case e in #(
+  e) lt_cv_ld_force_load=no
       cat > conftest.c << _LT_EOF
 int forced_loaded() { return 2;}
 _LT_EOF
@@ -7769,7 +7892,8 @@
       fi
         rm -f conftest.err libconftest.a conftest conftest.c
         rm -rf conftest.dSYM
-
+     ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
 printf "%s\n" "$lt_cv_ld_force_load" >&6; }
@@ -7892,8 +8016,8 @@
 if test ${ac_cv_prog_AS+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$AS"; then
+else case e in #(
+  e) if test -n "$AS"; then
   ac_cv_prog_AS="$AS" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -7915,8 +8039,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 AS=$ac_cv_prog_AS
 if test -n "$AS"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
@@ -7937,8 +8062,8 @@
 if test ${ac_cv_prog_ac_ct_AS+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_AS"; then
+else case e in #(
+  e) if test -n "$ac_ct_AS"; then
   ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -7960,8 +8085,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_AS=$ac_cv_prog_ac_ct_AS
 if test -n "$ac_ct_AS"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
@@ -7994,8 +8120,8 @@
 if test ${ac_cv_prog_DLLTOOL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$DLLTOOL"; then
+else case e in #(
+  e) if test -n "$DLLTOOL"; then
   ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -8017,8 +8143,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 DLLTOOL=$ac_cv_prog_DLLTOOL
 if test -n "$DLLTOOL"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
@@ -8039,8 +8166,8 @@
 if test ${ac_cv_prog_ac_ct_DLLTOOL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_DLLTOOL"; then
+else case e in #(
+  e) if test -n "$ac_ct_DLLTOOL"; then
   ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -8062,8 +8189,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
 if test -n "$ac_ct_DLLTOOL"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
@@ -8096,8 +8224,8 @@
 if test ${ac_cv_prog_OBJDUMP+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$OBJDUMP"; then
+else case e in #(
+  e) if test -n "$OBJDUMP"; then
   ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -8119,8 +8247,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 OBJDUMP=$ac_cv_prog_OBJDUMP
 if test -n "$OBJDUMP"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
@@ -8141,8 +8270,8 @@
 if test ${ac_cv_prog_ac_ct_OBJDUMP+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_OBJDUMP"; then
+else case e in #(
+  e) if test -n "$ac_ct_OBJDUMP"; then
   ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -8164,8 +8293,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
 if test -n "$ac_ct_OBJDUMP"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
@@ -8237,8 +8367,9 @@
       IFS=$lt_save_ifs
       ;;
     esac
-else $as_nop
-  enable_shared=yes
+else case e in #(
+  e) enable_shared=yes ;;
+esac
 fi
 
 
@@ -8269,8 +8400,9 @@
       IFS=$lt_save_ifs
       ;;
     esac
-else $as_nop
-  enable_static=yes
+else case e in #(
+  e) enable_static=yes ;;
+esac
 fi
 
 
@@ -8301,8 +8433,9 @@
       IFS=$lt_save_ifs
       ;;
     esac
-else $as_nop
-  pic_mode=default
+else case e in #(
+  e) pic_mode=default ;;
+esac
 fi
 
 
@@ -8332,8 +8465,9 @@
       IFS=$lt_save_ifs
       ;;
     esac
-else $as_nop
-  enable_fast_install=yes
+else case e in #(
+  e) enable_fast_install=yes ;;
+esac
 fi
 
 
@@ -8360,15 +8494,17 @@
       ;;
     esac
     lt_cv_with_aix_soname=$with_aix_soname
-else $as_nop
-  if test ${lt_cv_with_aix_soname+y}
+else case e in #(
+  e) if test ${lt_cv_with_aix_soname+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  lt_cv_with_aix_soname=aix
+else case e in #(
+  e) lt_cv_with_aix_soname=aix ;;
+esac
 fi
 
-    with_aix_soname=$lt_cv_with_aix_soname
+    with_aix_soname=$lt_cv_with_aix_soname ;;
+esac
 fi
 
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5
@@ -8459,8 +8595,8 @@
 if test ${lt_cv_objdir+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  rm -f .libs 2>/dev/null
+else case e in #(
+  e) rm -f .libs 2>/dev/null
 mkdir .libs 2>/dev/null
 if test -d .libs; then
   lt_cv_objdir=.libs
@@ -8468,7 +8604,8 @@
   # MS-DOS does not allow filenames that begin with a dot.
   lt_cv_objdir=_libs
 fi
-rmdir .libs 2>/dev/null
+rmdir .libs 2>/dev/null ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
 printf "%s\n" "$lt_cv_objdir" >&6; }
@@ -8529,8 +8666,8 @@
 if test ${lt_cv_path_MAGIC_CMD+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  case $MAGIC_CMD in
+else case e in #(
+  e) case $MAGIC_CMD in
 [\\/*] |  ?:[\\/]*)
   lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
   ;;
@@ -8573,6 +8710,7 @@
   IFS=$lt_save_ifs
   MAGIC_CMD=$lt_save_MAGIC_CMD
   ;;
+esac ;;
 esac
 fi
 
@@ -8596,8 +8734,8 @@
 if test ${lt_cv_path_MAGIC_CMD+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  case $MAGIC_CMD in
+else case e in #(
+  e) case $MAGIC_CMD in
 [\\/*] |  ?:[\\/]*)
   lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
   ;;
@@ -8640,6 +8778,7 @@
   IFS=$lt_save_ifs
   MAGIC_CMD=$lt_save_MAGIC_CMD
   ;;
+esac ;;
 esac
 fi
 
@@ -8735,8 +8874,8 @@
 if test ${lt_cv_prog_compiler_rtti_exceptions+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  lt_cv_prog_compiler_rtti_exceptions=no
+else case e in #(
+  e) lt_cv_prog_compiler_rtti_exceptions=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
    lt_compiler_flag="-fno-rtti -fno-exceptions"  ## exclude from sc_useless_quotes_in_assignment
@@ -8764,7 +8903,8 @@
      fi
    fi
    $RM conftest*
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
 printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
@@ -9129,8 +9269,9 @@
 if test ${lt_cv_prog_compiler_pic+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+else case e in #(
+  e) lt_cv_prog_compiler_pic=$lt_prog_compiler_pic ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
 printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; }
@@ -9145,8 +9286,8 @@
 if test ${lt_cv_prog_compiler_pic_works+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  lt_cv_prog_compiler_pic_works=no
+else case e in #(
+  e) lt_cv_prog_compiler_pic_works=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
    lt_compiler_flag="$lt_prog_compiler_pic -DPIC"  ## exclude from sc_useless_quotes_in_assignment
@@ -9174,7 +9315,8 @@
      fi
    fi
    $RM conftest*
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
 printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; }
@@ -9210,8 +9352,8 @@
 if test ${lt_cv_prog_compiler_static_works+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  lt_cv_prog_compiler_static_works=no
+else case e in #(
+  e) lt_cv_prog_compiler_static_works=no
    save_LDFLAGS=$LDFLAGS
    LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
    echo "$lt_simple_link_test_code" > conftest.$ac_ext
@@ -9232,7 +9374,8 @@
    fi
    $RM -r conftest*
    LDFLAGS=$save_LDFLAGS
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
 printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; }
@@ -9254,8 +9397,8 @@
 if test ${lt_cv_prog_compiler_c_o+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  lt_cv_prog_compiler_c_o=no
+else case e in #(
+  e) lt_cv_prog_compiler_c_o=no
    $RM -r conftest 2>/dev/null
    mkdir conftest
    cd conftest
@@ -9295,7 +9438,8 @@
    cd ..
    $RM -r conftest
    $RM conftest*
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; }
@@ -9310,8 +9454,8 @@
 if test ${lt_cv_prog_compiler_c_o+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  lt_cv_prog_compiler_c_o=no
+else case e in #(
+  e) lt_cv_prog_compiler_c_o=no
    $RM -r conftest 2>/dev/null
    mkdir conftest
    cd conftest
@@ -9351,7 +9495,8 @@
    cd ..
    $RM -r conftest
    $RM conftest*
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
 printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; }
@@ -9946,8 +10091,8 @@
   if test ${lt_cv_aix_libpath_+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -9979,7 +10124,8 @@
   if test -z "$lt_cv_aix_libpath_"; then
     lt_cv_aix_libpath_=/usr/lib:/lib
   fi
-
+   ;;
+esac
 fi
 
   aix_libpath=$lt_cv_aix_libpath_
@@ -10001,8 +10147,8 @@
   if test ${lt_cv_aix_libpath_+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -10034,7 +10180,8 @@
   if test -z "$lt_cv_aix_libpath_"; then
     lt_cv_aix_libpath_=/usr/lib:/lib
   fi
-
+   ;;
+esac
 fi
 
   aix_libpath=$lt_cv_aix_libpath_
@@ -10285,8 +10432,8 @@
 if test ${lt_cv_prog_compiler__b+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  lt_cv_prog_compiler__b=no
+else case e in #(
+  e) lt_cv_prog_compiler__b=no
    save_LDFLAGS=$LDFLAGS
    LDFLAGS="$LDFLAGS -b"
    echo "$lt_simple_link_test_code" > conftest.$ac_ext
@@ -10307,7 +10454,8 @@
    fi
    $RM -r conftest*
    LDFLAGS=$save_LDFLAGS
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
 printf "%s\n" "$lt_cv_prog_compiler__b" >&6; }
@@ -10355,8 +10503,8 @@
 if test ${lt_cv_irix_exported_symbol+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  save_LDFLAGS=$LDFLAGS
+else case e in #(
+  e) save_LDFLAGS=$LDFLAGS
 	   LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
 	   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -10365,12 +10513,14 @@
 if ac_fn_c_try_link "$LINENO"
 then :
   lt_cv_irix_exported_symbol=yes
-else $as_nop
-  lt_cv_irix_exported_symbol=no
+else case e in #(
+  e) lt_cv_irix_exported_symbol=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS=$save_LDFLAGS
+           LDFLAGS=$save_LDFLAGS ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
 printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; }
@@ -10696,8 +10846,8 @@
 if test ${lt_cv_archive_cmds_need_lc+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  $RM conftest*
+else case e in #(
+  e) $RM conftest*
 	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
 	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
@@ -10733,7 +10883,8 @@
 	  cat conftest.err 1>&5
 	fi
 	$RM conftest*
-
+	 ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
 printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; }
@@ -11460,8 +11611,8 @@
   if test ${lt_cv_shlibpath_overrides_runpath+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  lt_cv_shlibpath_overrides_runpath=no
+else case e in #(
+  e) lt_cv_shlibpath_overrides_runpath=no
     save_LDFLAGS=$LDFLAGS
     save_libdir=$libdir
     eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
@@ -11488,7 +11639,8 @@
     conftest$ac_exeext conftest.$ac_ext
     LDFLAGS=$save_LDFLAGS
     libdir=$save_libdir
-
+     ;;
+esac
 fi
 
   shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
@@ -11913,8 +12065,8 @@
 if test ${ac_cv_lib_dl_dlopen+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_check_lib_save_LIBS=$LIBS
+else case e in #(
+  e) ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldl  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -11921,8 +12073,14 @@
 
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-char dlopen ();
+   builtin and then its argument prototype would still apply.
+   The 'extern "C"' is for builds by C++ compilers;
+   although this is not generally supported in C code supporting it here
+   has little cost and some practical benefit (sr 110532).  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen (void);
 int
 main (void)
 {
@@ -11934,12 +12092,14 @@
 if ac_fn_c_try_link "$LINENO"
 then :
   ac_cv_lib_dl_dlopen=yes
-else $as_nop
-  ac_cv_lib_dl_dlopen=no
+else case e in #(
+  e) ac_cv_lib_dl_dlopen=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+LIBS=$ac_check_lib_save_LIBS ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; }
@@ -11946,12 +12106,13 @@
 if test "x$ac_cv_lib_dl_dlopen" = xyes
 then :
   lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
-else $as_nop
-
+else case e in #(
+  e)
     lt_cv_dlopen=dyld
     lt_cv_dlopen_libs=
     lt_cv_dlopen_self=yes
-
+     ;;
+esac
 fi
 
     ;;
@@ -11969,14 +12130,14 @@
 if test "x$ac_cv_func_shl_load" = xyes
 then :
   lt_cv_dlopen=shl_load
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
 printf %s "checking for shl_load in -ldld... " >&6; }
 if test ${ac_cv_lib_dld_shl_load+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_check_lib_save_LIBS=$LIBS
+else case e in #(
+  e) ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldld  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -11983,8 +12144,14 @@
 
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-char shl_load ();
+   builtin and then its argument prototype would still apply.
+   The 'extern "C"' is for builds by C++ compilers;
+   although this is not generally supported in C code supporting it here
+   has little cost and some practical benefit (sr 110532).  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load (void);
 int
 main (void)
 {
@@ -11996,12 +12163,14 @@
 if ac_fn_c_try_link "$LINENO"
 then :
   ac_cv_lib_dld_shl_load=yes
-else $as_nop
-  ac_cv_lib_dld_shl_load=no
+else case e in #(
+  e) ac_cv_lib_dld_shl_load=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+LIBS=$ac_check_lib_save_LIBS ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
 printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; }
@@ -12008,19 +12177,19 @@
 if test "x$ac_cv_lib_dld_shl_load" = xyes
 then :
   lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld
-else $as_nop
-  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+else case e in #(
+  e) ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
 if test "x$ac_cv_func_dlopen" = xyes
 then :
   lt_cv_dlopen=dlopen
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
 printf %s "checking for dlopen in -ldl... " >&6; }
 if test ${ac_cv_lib_dl_dlopen+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_check_lib_save_LIBS=$LIBS
+else case e in #(
+  e) ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldl  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -12027,8 +12196,14 @@
 
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-char dlopen ();
+   builtin and then its argument prototype would still apply.
+   The 'extern "C"' is for builds by C++ compilers;
+   although this is not generally supported in C code supporting it here
+   has little cost and some practical benefit (sr 110532).  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen (void);
 int
 main (void)
 {
@@ -12040,12 +12215,14 @@
 if ac_fn_c_try_link "$LINENO"
 then :
   ac_cv_lib_dl_dlopen=yes
-else $as_nop
-  ac_cv_lib_dl_dlopen=no
+else case e in #(
+  e) ac_cv_lib_dl_dlopen=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+LIBS=$ac_check_lib_save_LIBS ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
 printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; }
@@ -12052,14 +12229,14 @@
 if test "x$ac_cv_lib_dl_dlopen" = xyes
 then :
   lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
 printf %s "checking for dlopen in -lsvld... " >&6; }
 if test ${ac_cv_lib_svld_dlopen+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_check_lib_save_LIBS=$LIBS
+else case e in #(
+  e) ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsvld  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -12066,8 +12243,14 @@
 
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-char dlopen ();
+   builtin and then its argument prototype would still apply.
+   The 'extern "C"' is for builds by C++ compilers;
+   although this is not generally supported in C code supporting it here
+   has little cost and some practical benefit (sr 110532).  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen (void);
 int
 main (void)
 {
@@ -12079,12 +12262,14 @@
 if ac_fn_c_try_link "$LINENO"
 then :
   ac_cv_lib_svld_dlopen=yes
-else $as_nop
-  ac_cv_lib_svld_dlopen=no
+else case e in #(
+  e) ac_cv_lib_svld_dlopen=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+LIBS=$ac_check_lib_save_LIBS ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
 printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; }
@@ -12091,14 +12276,14 @@
 if test "x$ac_cv_lib_svld_dlopen" = xyes
 then :
   lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
 printf %s "checking for dld_link in -ldld... " >&6; }
 if test ${ac_cv_lib_dld_dld_link+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_check_lib_save_LIBS=$LIBS
+else case e in #(
+  e) ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldld  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -12105,8 +12290,14 @@
 
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-char dld_link ();
+   builtin and then its argument prototype would still apply.
+   The 'extern "C"' is for builds by C++ compilers;
+   although this is not generally supported in C code supporting it here
+   has little cost and some practical benefit (sr 110532).  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link (void);
 int
 main (void)
 {
@@ -12118,12 +12309,14 @@
 if ac_fn_c_try_link "$LINENO"
 then :
   ac_cv_lib_dld_dld_link=yes
-else $as_nop
-  ac_cv_lib_dld_dld_link=no
+else case e in #(
+  e) ac_cv_lib_dld_dld_link=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+LIBS=$ac_check_lib_save_LIBS ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
 printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; }
@@ -12132,19 +12325,24 @@
   lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld
 fi
 
-
+	       ;;
+esac
 fi
 
-
+	     ;;
+esac
 fi
 
-
+	   ;;
+esac
 fi
 
-
+	 ;;
+esac
 fi
 
-
+       ;;
+esac
 fi
 
     ;;
@@ -12172,8 +12370,8 @@
 if test ${lt_cv_dlopen_self+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  	  if test yes = "$cross_compiling"; then :
+else case e in #(
+  e) 	  if test yes = "$cross_compiling"; then :
   lt_cv_dlopen_self=cross
 else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
@@ -12267,7 +12465,8 @@
 fi
 rm -fr conftest*
 
-
+     ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
 printf "%s\n" "$lt_cv_dlopen_self" >&6; }
@@ -12279,8 +12478,8 @@
 if test ${lt_cv_dlopen_self_static+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  	  if test yes = "$cross_compiling"; then :
+else case e in #(
+  e) 	  if test yes = "$cross_compiling"; then :
   lt_cv_dlopen_self_static=cross
 else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
@@ -12374,7 +12573,8 @@
 fi
 rm -fr conftest*
 
-
+       ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
 printf "%s\n" "$lt_cv_dlopen_self_static" >&6; }
@@ -12551,8 +12751,8 @@
 if test ${ac_cv_prog_RC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$RC"; then
+else case e in #(
+  e) if test -n "$RC"; then
   ac_cv_prog_RC="$RC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -12574,8 +12774,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 RC=$ac_cv_prog_RC
 if test -n "$RC"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RC" >&5
@@ -12596,8 +12797,8 @@
 if test ${ac_cv_prog_ac_ct_RC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_RC"; then
+else case e in #(
+  e) if test -n "$ac_ct_RC"; then
   ac_cv_prog_ac_ct_RC="$ac_ct_RC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -12619,8 +12820,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 ac_ct_RC=$ac_cv_prog_ac_ct_RC
 if test -n "$ac_ct_RC"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RC" >&5
@@ -12736,8 +12938,8 @@
 if test ${ac_cv_prog_CC_BUILD+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$CC_BUILD"; then
+else case e in #(
+  e) if test -n "$CC_BUILD"; then
   ac_cv_prog_CC_BUILD="$CC_BUILD" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -12759,8 +12961,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 CC_BUILD=$ac_cv_prog_CC_BUILD
 if test -n "$CC_BUILD"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_BUILD" >&5
@@ -12778,8 +12981,8 @@
 if test ${ac_cv_prog_CC_BUILD+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$CC_BUILD"; then
+else case e in #(
+  e) if test -n "$CC_BUILD"; then
   ac_cv_prog_CC_BUILD="$CC_BUILD" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -12801,8 +13004,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 CC_BUILD=$ac_cv_prog_CC_BUILD
 if test -n "$CC_BUILD"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_BUILD" >&5
@@ -12820,8 +13024,8 @@
 if test ${ac_cv_prog_CC_BUILD+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$CC_BUILD"; then
+else case e in #(
+  e) if test -n "$CC_BUILD"; then
   ac_cv_prog_CC_BUILD="$CC_BUILD" # Let the user override the test.
 else
   ac_prog_rejected=no
@@ -12860,8 +13064,9 @@
     ac_cv_prog_CC_BUILD="$as_dir$ac_word${1+' '}$@"
   fi
 fi
+fi ;;
+esac
 fi
-fi
 CC_BUILD=$ac_cv_prog_CC_BUILD
 if test -n "$CC_BUILD"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_BUILD" >&5
@@ -12925,8 +13130,8 @@
 if test ${ac_cv_path_install+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+else case e in #(
+  e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
@@ -12980,7 +13185,8 @@
 IFS=$as_save_IFS
 
 rm -rf conftest.one conftest.two conftest.dir
-
+ ;;
+esac
 fi
   if test ${ac_cv_path_install+y}; then
     INSTALL=$ac_cv_path_install
@@ -13018,8 +13224,8 @@
   if test ${ac_cv_path_mkdir+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+else case e in #(
+  e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
 do
   IFS=$as_save_IFS
@@ -13033,7 +13239,7 @@
 	   as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue
 	   case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #(
 	     'mkdir ('*'coreutils) '* | \
-	     'BusyBox '* | \
+	     *'BusyBox '* | \
 	     'mkdir (fileutils) '4.1*)
 	       ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext
 	       break 3;;
@@ -13042,7 +13248,8 @@
        done
   done
 IFS=$as_save_IFS
-
+ ;;
+esac
 fi
 
   test -d ./--version && rmdir ./--version
@@ -13049,11 +13256,9 @@
   if test ${ac_cv_path_mkdir+y}; then
     MKDIR_P="$ac_cv_path_mkdir -p"
   else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for MKDIR_P within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    MKDIR_P="$ac_install_sh -d"
+    # As a last resort, use plain mkdir -p,
+    # in the hope it doesn't have the bugs of ancient mkdir.
+    MKDIR_P='mkdir -p'
   fi
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
@@ -13092,8 +13297,8 @@
 if test ${ac_cv_c_const+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -13157,10 +13362,12 @@
 if ac_fn_c_try_compile "$LINENO"
 then :
   ac_cv_c_const=yes
-else $as_nop
-  ac_cv_c_const=no
+else case e in #(
+  e) ac_cv_c_const=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
 printf "%s\n" "$ac_cv_c_const" >&6; }
@@ -13179,8 +13386,9 @@
     no)  enable_freetype_config="FALSE" ;;
     *)   as_fn_error $? "unknown value '${enableval}' passed with --enable-freetype-config" "$LINENO" 5 ;;
    esac
-else $as_nop
-  enable_freetype_config="FALSE"
+else case e in #(
+  e) enable_freetype_config="FALSE" ;;
+esac
 fi
 
 
@@ -13194,31 +13402,34 @@
 then :
   enableval=$enable_largefile;
 fi
-
-if test "$enable_largefile" != no; then
-
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-printf %s "checking for special C compiler options needed for large files... " >&6; }
-if test ${ac_cv_sys_largefile_CC+y}
+if test "$enable_largefile,$enable_year2038" != no,no
 then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable large file support" >&5
+printf %s "checking for $CC option to enable large file support... " >&6; }
+if test ${ac_cv_sys_largefile_opts+y}
+then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_cv_sys_largefile_CC=no
-     if test "$GCC" != yes; then
-       ac_save_CC=$CC
-       while :; do
-	 # IRIX 6.2 and later do not support large files by default,
-	 # so use the C compiler's -n32 option if that helps.
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) ac_save_CC="$CC"
+  ac_opt_found=no
+  for ac_opt in "none needed" "-D_FILE_OFFSET_BITS=64" "-D_LARGE_FILES=1" "-n32"; do
+    if test x"$ac_opt" != x"none needed"
+then :
+  CC="$ac_save_CC $ac_opt"
+fi
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+#ifndef FTYPE
+# define FTYPE off_t
+#endif
+ /* Check that FTYPE can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_FTYPE to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
+#define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31))
+  int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721
+		       && LARGE_FTYPE % 2147483647 == 1)
 		      ? 1 : -1];
 int
 main (void)
@@ -13228,142 +13439,88 @@
   return 0;
 }
 _ACEOF
-	 if ac_fn_c_try_compile "$LINENO"
+if ac_fn_c_try_compile "$LINENO"
 then :
-  break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam
-	 CC="$CC -n32"
+  if test x"$ac_opt" = x"none needed"
+then :
+  # GNU/Linux s390x and alpha need _FILE_OFFSET_BITS=64 for wide ino_t.
+	 CC="$CC -DFTYPE=ino_t"
 	 if ac_fn_c_try_compile "$LINENO"
 then :
-  ac_cv_sys_largefile_CC=' -n32'; break
+
+else case e in #(
+  e) CC="$CC -D_FILE_OFFSET_BITS=64"
+	    if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_opt='-D_FILE_OFFSET_BITS=64'
 fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam ;;
+esac
+fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam
-	 break
-       done
-       CC=$ac_save_CC
-       rm -f conftest.$ac_ext
-    fi
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; }
-  if test "$ac_cv_sys_largefile_CC" != no; then
-    CC=$CC$ac_cv_sys_largefile_CC
-  fi
-
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if test ${ac_cv_sys_file_offset_bits+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  while :; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main (void)
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-  ac_cv_sys_file_offset_bits=no; break
+      ac_cv_sys_largefile_opts=$ac_opt
+      ac_opt_found=yes
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#define _FILE_OFFSET_BITS 64
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main (void)
-{
+    test $ac_opt_found = no || break
+  done
+  CC="$ac_save_CC"
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-  ac_cv_sys_file_offset_bits=64; break
+  test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected" ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  ac_cv_sys_file_offset_bits=unknown
-  break
-done
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; }
-case $ac_cv_sys_file_offset_bits in #(
-  no | unknown) ;;
-  *)
-printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h
-;;
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_opts" >&5
+printf "%s\n" "$ac_cv_sys_largefile_opts" >&6; }
+
+ac_have_largefile=yes
+case $ac_cv_sys_largefile_opts in #(
+  "none needed") :
+     ;; #(
+  "supported through gnulib") :
+     ;; #(
+  "support not detected") :
+    ac_have_largefile=no ;; #(
+  "-D_FILE_OFFSET_BITS=64") :
+
+printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h
+ ;; #(
+  "-D_LARGE_FILES=1") :
+
+printf "%s\n" "#define _LARGE_FILES 1" >>confdefs.h
+ ;; #(
+  "-n32") :
+    CC="$CC -n32" ;; #(
+  *) :
+    as_fn_error $? "internal error: bad value for \$ac_cv_sys_largefile_opts" "$LINENO" 5 ;;
 esac
-rm -rf conftest*
-  if test $ac_cv_sys_file_offset_bits = unknown; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-printf %s "checking for _LARGE_FILES value needed for large files... " >&6; }
-if test ${ac_cv_sys_large_files+y}
+
+if test "$enable_year2038" != no
 then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option for timestamps after 2038" >&5
+printf %s "checking for $CC option for timestamps after 2038... " >&6; }
+if test ${ac_cv_sys_year2038_opts+y}
+then :
   printf %s "(cached) " >&6
-else $as_nop
-  while :; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
-int
-main (void)
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
+else case e in #(
+  e) ac_save_CPPFLAGS="$CPPFLAGS"
+  ac_opt_found=no
+  for ac_opt in "none needed" "-D_TIME_BITS=64" "-D__MINGW_USE_VC2005_COMPAT" "-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"; do
+    if test x"$ac_opt" != x"none needed"
 then :
-  ac_cv_sys_large_files=no; break
+  CPPFLAGS="$ac_save_CPPFLAGS $ac_opt"
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#define _LARGE_FILES 1
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-		       && LARGE_OFF_T % 2147483647 == 1)
-		      ? 1 : -1];
+
+  #include <time.h>
+  /* Check that time_t can represent 2**32 - 1 correctly.  */
+  #define LARGE_TIME_T \\
+    ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30)))
+  int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535
+                           && LARGE_TIME_T % 65537 == 0)
+                          ? 1 : -1];
+
 int
 main (void)
 {
@@ -13374,25 +13531,47 @@
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
-  ac_cv_sys_large_files=1; break
+  ac_cv_sys_year2038_opts="$ac_opt"
+      ac_opt_found=yes
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  ac_cv_sys_large_files=unknown
-  break
-done
+    test $ac_opt_found = no || break
+  done
+  CPPFLAGS="$ac_save_CPPFLAGS"
+  test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected" ;;
+esac
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-printf "%s\n" "$ac_cv_sys_large_files" >&6; }
-case $ac_cv_sys_large_files in #(
-  no | unknown) ;;
-  *)
-printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h
-;;
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_year2038_opts" >&5
+printf "%s\n" "$ac_cv_sys_year2038_opts" >&6; }
+
+ac_have_year2038=yes
+case $ac_cv_sys_year2038_opts in #(
+  "none needed") :
+     ;; #(
+  "support not detected") :
+    ac_have_year2038=no ;; #(
+  "-D_TIME_BITS=64") :
+
+printf "%s\n" "#define _TIME_BITS 64" >>confdefs.h
+ ;; #(
+  "-D__MINGW_USE_VC2005_COMPAT") :
+
+printf "%s\n" "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h
+ ;; #(
+  "-U_USE_32_BIT_TIME_T"*) :
+    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+as_fn_error $? "the 'time_t' type is currently forced to be 32-bit. It
+will stop working after mid-January 2038. Remove
+_USE_32BIT_TIME_T from the compiler flags.
+See 'config.log' for more details" "$LINENO" 5; } ;; #(
+  *) :
+    as_fn_error $? "internal error: bad value for \$ac_cv_sys_year2038_opts" "$LINENO" 5 ;;
 esac
-rm -rf conftest*
-  fi
+
 fi
 
+fi
 
 # Here we check whether we can use our mmap file component.
 #
@@ -13403,8 +13582,9 @@
 if test ${enable_mmap+y}
 then :
   enableval=$enable_mmap; enable_mmap="no"
-else $as_nop
-  enable_mmap="yes"
+else case e in #(
+  e) enable_mmap="yes" ;;
+esac
 fi
 
 if test "x${enable_mmap}" != "xno"; then
@@ -13438,8 +13618,8 @@
 if test ${ac_cv_func_mmap_fixed_mapped+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test "$cross_compiling" = yes
+else case e in #(
+  e) if test "$cross_compiling" = yes
 then :
   case "$host_os" in # ((
 			  # Guess yes on platforms where we know the result.
@@ -13447,8 +13627,8 @@
 			  # If we don't know, assume the worst.
 		  *)      ac_cv_func_mmap_fixed_mapped=no ;;
 		esac
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $ac_includes_default
 /* malloc might have been renamed as rpl_malloc. */
@@ -13469,21 +13649,21 @@
    VM page cache was not coherent with the file system buffer cache
    like early versions of FreeBSD and possibly contemporary NetBSD.)
    For shared mappings, we should conversely verify that changes get
-   propagated back to all the places they're supposed to be.
+   propagated back to all the places they're supposed to be.  */
 
-   Grep wants private fixed already mapped.
-   The main things grep needs to know about mmap are:
-   * does it exist and is it safe to write into the mmap'd area
-   * how to use it (BSD variants)  */
-
 #include <fcntl.h>
 #include <sys/mman.h>
 
-/* This mess was copied from the GNU getpagesize.h.  */
-#ifndef HAVE_GETPAGESIZE
+#ifndef getpagesize
+/* Prefer sysconf to the legacy getpagesize function, as getpagesize has
+   been removed from POSIX and is limited to page sizes that fit in 'int'.  */
 # ifdef _SC_PAGESIZE
-#  define getpagesize() sysconf(_SC_PAGESIZE)
-# else /* no _SC_PAGESIZE */
+#  define getpagesize() sysconf (_SC_PAGESIZE)
+# elif defined _SC_PAGE_SIZE
+#  define getpagesize() sysconf (_SC_PAGE_SIZE)
+# elif HAVE_GETPAGESIZE
+int getpagesize ();
+# else
 #  ifdef HAVE_SYS_PARAM_H
 #   include <sys/param.h>
 #   ifdef EXEC_PAGESIZE
@@ -13507,16 +13687,15 @@
 #  else /* no HAVE_SYS_PARAM_H */
 #   define getpagesize() 8192	/* punt totally */
 #  endif /* no HAVE_SYS_PARAM_H */
-# endif /* no _SC_PAGESIZE */
+# endif
+#endif
 
-#endif /* no HAVE_GETPAGESIZE */
-
 int
 main (void)
 {
   char *data, *data2, *data3;
   const char *cdata2;
-  int i, pagesize;
+  long i, pagesize;
   int fd, fd2;
 
   pagesize = getpagesize ();
@@ -13550,8 +13729,7 @@
     if (*(data2 + i))
       return 7;
   close (fd2);
-  if (munmap (data2, pagesize))
-    return 8;
+  /* 'return 8;' not currently used.  */
 
   /* Next, try to mmap the file at a fixed address which already has
      something else allocated at it.  If we can, also make sure that
@@ -13588,13 +13766,16 @@
 if ac_fn_c_try_run "$LINENO"
 then :
   ac_cv_func_mmap_fixed_mapped=yes
-else $as_nop
-  ac_cv_func_mmap_fixed_mapped=no
+else case e in #(
+  e) ac_cv_func_mmap_fixed_mapped=no ;;
+esac
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+  conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5
 printf "%s\n" "$ac_cv_func_mmap_fixed_mapped" >&6; }
@@ -13613,8 +13794,8 @@
 if test ${ac_cv_c_undeclared_builtin_options+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_save_CFLAGS=$CFLAGS
+else case e in #(
+  e) ac_save_CFLAGS=$CFLAGS
    ac_cv_c_undeclared_builtin_options='cannot detect'
    for ac_arg in '' -fno-builtin; do
      CFLAGS="$ac_save_CFLAGS $ac_arg"
@@ -13633,8 +13814,8 @@
 if ac_fn_c_try_compile "$LINENO"
 then :
 
-else $as_nop
-  # This test program should compile successfully.
+else case e in #(
+  e) # This test program should compile successfully.
         # No library function is consistently available on
         # freestanding implementations, so test against a dummy
         # declaration.  Include always-available headers on the
@@ -13662,26 +13843,29 @@
   if test x"$ac_arg" = x
 then :
   ac_cv_c_undeclared_builtin_options='none needed'
-else $as_nop
-  ac_cv_c_undeclared_builtin_options=$ac_arg
+else case e in #(
+  e) ac_cv_c_undeclared_builtin_options=$ac_arg ;;
+esac
 fi
           break
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
     done
     CFLAGS=$ac_save_CFLAGS
-
+   ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5
 printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; }
   case $ac_cv_c_undeclared_builtin_options in #(
   'cannot detect') :
-    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "cannot make $CC report undeclared builtins
-See \`config.log' for more details" "$LINENO" 5; } ;; #(
+See 'config.log' for more details" "$LINENO" 5; } ;; #(
   'none needed') :
     ac_c_undeclared_builtin_options='' ;; #(
   *) :
@@ -13700,8 +13884,9 @@
 if test "x$ac_cv_have_decl_munmap" = xyes
 then :
   ac_have_decl=1
-else $as_nop
-  ac_have_decl=0
+else case e in #(
+  e) ac_have_decl=0 ;;
+esac
 fi
 printf "%s\n" "#define HAVE_DECL_MUNMAP $ac_have_decl" >>confdefs.h
 
@@ -13727,9 +13912,10 @@
 
 printf "%s\n" "#define MUNMAP_USES_VOIDP /**/" >>confdefs.h
 
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: char *" >&5
-printf "%s\n" "char *" >&6; }
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: char *" >&5
+printf "%s\n" "char *" >&6; } ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 
@@ -13798,9 +13984,10 @@
 printf "%s\n" "ok, adding to XX_ANSIFLAGS" >&6; }
          XX_ANSIFLAGS="${XX_ANSIFLAGS} ${a}"
 
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; } ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
       CFLAGS="${orig_CFLAGS}"
@@ -13848,10 +14035,11 @@
   found_visibility_flag=yes
                 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }
-else $as_nop
-  CFLAGS="${orig_CFLAGS}"
+else case e in #(
+  e) CFLAGS="${orig_CFLAGS}"
                 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+printf "%s\n" "no" >&6; } ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
@@ -13877,10 +14065,11 @@
   found_visibility_flag=yes
                   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }
-else $as_nop
-  CFLAGS="${orig_CFLAGS}"
+else case e in #(
+  e) CFLAGS="${orig_CFLAGS}"
                   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
+printf "%s\n" "no" >&6; } ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
@@ -13909,8 +14098,9 @@
 if test ${with_zlib+y}
 then :
   withval=$with_zlib;
-else $as_nop
-  with_zlib=auto
+else case e in #(
+  e) with_zlib=auto ;;
+esac
 fi
 
 
@@ -14021,8 +14211,8 @@
 if test ${ac_cv_lib_z_gzsetparams+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_check_lib_save_LIBS=$LIBS
+else case e in #(
+  e) ac_check_lib_save_LIBS=$LIBS
 LIBS="-lz  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -14029,8 +14219,14 @@
 
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-char gzsetparams ();
+   builtin and then its argument prototype would still apply.
+   The 'extern "C"' is for builds by C++ compilers;
+   although this is not generally supported in C code supporting it here
+   has little cost and some practical benefit (sr 110532).  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gzsetparams (void);
 int
 main (void)
 {
@@ -14042,12 +14238,14 @@
 if ac_fn_c_try_link "$LINENO"
 then :
   ac_cv_lib_z_gzsetparams=yes
-else $as_nop
-  ac_cv_lib_z_gzsetparams=no
+else case e in #(
+  e) ac_cv_lib_z_gzsetparams=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+LIBS=$ac_check_lib_save_LIBS ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzsetparams" >&5
 printf "%s\n" "$ac_cv_lib_z_gzsetparams" >&6; }
@@ -14086,8 +14284,9 @@
 if test ${with_bzip2+y}
 then :
   withval=$with_bzip2;
-else $as_nop
-  with_bzip2=auto
+else case e in #(
+  e) with_bzip2=auto ;;
+esac
 fi
 
 
@@ -14198,8 +14397,8 @@
 if test ${ac_cv_lib_bz2_BZ2_bzDecompress+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_check_lib_save_LIBS=$LIBS
+else case e in #(
+  e) ac_check_lib_save_LIBS=$LIBS
 LIBS="-lbz2  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -14206,8 +14405,14 @@
 
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-char BZ2_bzDecompress ();
+   builtin and then its argument prototype would still apply.
+   The 'extern "C"' is for builds by C++ compilers;
+   although this is not generally supported in C code supporting it here
+   has little cost and some practical benefit (sr 110532).  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char BZ2_bzDecompress (void);
 int
 main (void)
 {
@@ -14219,12 +14424,14 @@
 if ac_fn_c_try_link "$LINENO"
 then :
   ac_cv_lib_bz2_BZ2_bzDecompress=yes
-else $as_nop
-  ac_cv_lib_bz2_BZ2_bzDecompress=no
+else case e in #(
+  e) ac_cv_lib_bz2_BZ2_bzDecompress=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+LIBS=$ac_check_lib_save_LIBS ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bz2_BZ2_bzDecompress" >&5
 printf "%s\n" "$ac_cv_lib_bz2_BZ2_bzDecompress" >&6; }
@@ -14257,8 +14464,9 @@
 if test ${with_png+y}
 then :
   withval=$with_png;
-else $as_nop
-  with_png=auto
+else case e in #(
+  e) with_png=auto ;;
+esac
 fi
 
 
@@ -14371,8 +14579,8 @@
 if test ${ac_cv_prog_have_libpng+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$have_libpng"; then
+else case e in #(
+  e) if test -n "$have_libpng"; then
   ac_cv_prog_have_libpng="$have_libpng" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -14395,8 +14603,9 @@
 IFS=$as_save_IFS
 
   test -z "$ac_cv_prog_have_libpng" && ac_cv_prog_have_libpng="no"
+fi ;;
+esac
 fi
-fi
 have_libpng=$ac_cv_prog_have_libpng
 if test -n "$have_libpng"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_libpng" >&5
@@ -14429,8 +14638,9 @@
 if test ${with_harfbuzz+y}
 then :
   withval=$with_harfbuzz;
-else $as_nop
-  with_harfbuzz=auto
+else case e in #(
+  e) with_harfbuzz=auto ;;
+esac
 fi
 
 
@@ -14554,8 +14764,9 @@
 if test ${with_brotli+y}
 then :
   withval=$with_brotli;
-else $as_nop
-  with_brotli=auto
+else case e in #(
+  e) with_brotli=auto ;;
+esac
 fi
 
 
@@ -14688,15 +14899,21 @@
 if test ${ac_cv_search_clock_gettime+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_func_search_save_LIBS=$LIBS
+else case e in #(
+  e) ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-char clock_gettime ();
+   builtin and then its argument prototype would still apply.
+   The 'extern "C"' is for builds by C++ compilers;
+   although this is not generally supported in C code supporting it here
+   has little cost and some practical benefit (sr 110532).  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char clock_gettime (void);
 int
 main (void)
 {
@@ -14727,11 +14944,13 @@
 if test ${ac_cv_search_clock_gettime+y}
 then :
 
-else $as_nop
-  ac_cv_search_clock_gettime=no
+else case e in #(
+  e) ac_cv_search_clock_gettime=no ;;
+esac
 fi
 rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
+LIBS=$ac_func_search_save_LIBS ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5
 printf "%s\n" "$ac_cv_search_clock_gettime" >&6; }
@@ -14753,8 +14972,9 @@
 if test ${with_librsvg+y}
 then :
   withval=$with_librsvg;
-else $as_nop
-  with_librsvg=auto
+else case e in #(
+  e) with_librsvg=auto ;;
+esac
 fi
 
 
@@ -14989,11 +15209,12 @@
         CFLAGS="$orig_CFLAGS"
         CFLAGS="$CFLAGS -DHAVE_ANSI_OS_INLINE=1"
 
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, ANSI incompatible" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, ANSI incompatible" >&5
 printf "%s\n" "no, ANSI incompatible" >&6; }
         CFLAGS="$orig_CFLAGS"
-
+        ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking type ResourceIndex" >&5
@@ -15035,20 +15256,22 @@
         CFLAGS="$orig_CFLAGS"
         CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=1"
 
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
 printf "%s\n" "no" >&6; }
         CFLAGS="$orig_CFLAGS"
         CFLAGS="$CFLAGS -DHAVE_TYPE_RESOURCE_INDEX=0"
-
+        ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
 printf "%s\n" "not found" >&6; }
      ft2_extra_libs=""
      LDFLAGS="${orig_LDFLAGS}"
-     CFLAGS="$CFLAGS -DDARWIN_NO_CARBON"
+     CFLAGS="$CFLAGS -DDARWIN_NO_CARBON" ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
@@ -15117,10 +15340,11 @@
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5
 printf "%s\n" "ok" >&6; }
      CFLAGS="$CFLAGS -DHAVE_FSSPEC=1"
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
 printf "%s\n" "not found" >&6; }
-     CFLAGS="$CFLAGS -DHAVE_FSSPEC=0"
+     CFLAGS="$CFLAGS -DHAVE_FSSPEC=0" ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
@@ -15211,10 +15435,11 @@
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5
 printf "%s\n" "ok" >&6; }
      CFLAGS="$CFLAGS -DHAVE_FSREF=1"
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
 printf "%s\n" "not found" >&6; }
-     CFLAGS="$CFLAGS -DHAVE_FSREF=0"
+     CFLAGS="$CFLAGS -DHAVE_FSREF=0" ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
@@ -15275,10 +15500,11 @@
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5
 printf "%s\n" "ok" >&6; }
      CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=1"
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
 printf "%s\n" "not found" >&6; }
-     CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=0"
+     CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_TOOLBOX=0" ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
@@ -15349,10 +15575,11 @@
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5
 printf "%s\n" "ok" >&6; }
      CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=1"
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
 printf "%s\n" "not found" >&6; }
-     CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=0"
+     CFLAGS="$CFLAGS -DHAVE_QUICKDRAW_CARBON=0" ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
@@ -15410,10 +15637,11 @@
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5
 printf "%s\n" "ok" >&6; }
      CFLAGS="$CFLAGS -DHAVE_ATS=1"
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
 printf "%s\n" "not found" >&6; }
-     CFLAGS="$CFLAGS -DHAVE_ATS=0"
+     CFLAGS="$CFLAGS -DHAVE_ATS=0" ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
@@ -15444,14 +15672,15 @@
 if test ${ac_cv_target+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test "x$target_alias" = x; then
+else case e in #(
+  e) if test "x$target_alias" = x; then
   ac_cv_target=$ac_cv_host
 else
   ac_cv_target=`$SHELL "${ac_aux_dir}config.sub" $target_alias` ||
     as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $target_alias failed" "$LINENO" 5
 fi
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
 printf "%s\n" "$ac_cv_target" >&6; }
@@ -15480,10 +15709,144 @@
     NONENONEs,x,x, &&
   program_prefix=${target_alias}-
 
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
+printf %s "checking for egrep -e... " >&6; }
+if test ${ac_cv_path_EGREP_TRADITIONAL+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_prog in grep ggrep
+   do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
+*GNU*)
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
+*)
+  ac_count=0
+  printf %s 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
 
+      $ac_path_EGREP_TRADITIONAL_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+    :
+  fi
+else
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
+fi
 
+    if test "$ac_cv_path_EGREP_TRADITIONAL"
+then :
+  ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E"
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_prog in egrep
+   do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
+*GNU*)
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
+*)
+  ac_count=0
+  printf %s 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
 
+      $ac_path_EGREP_TRADITIONAL_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
+fi
+ ;;
+esac
+fi ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
+printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
+ EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
 
+
+
+
+
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -15520,8 +15883,14 @@
 
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-char pthread_join ();
+   builtin and then its argument prototype would still apply.
+   The 'extern "C"' is for builds by C++ compilers;
+   although this is not generally supported in C code supporting it here
+   has little cost and some practical benefit (sr 110532).  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_join (void);
 int
 main (void)
 {
@@ -15615,7 +15984,7 @@
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1
 then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5
 printf "%s\n" "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;}
@@ -15645,8 +16014,8 @@
 if test ${ax_cv_PTHREAD_CLANG+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ax_cv_PTHREAD_CLANG=no
+else case e in #(
+  e) ax_cv_PTHREAD_CLANG=no
      # Note that Autoconf sets GCC=yes for Clang as well as GCC
      if test "x$GCC" = "xyes"; then
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -15658,7 +16027,7 @@
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1
 then :
   ax_cv_PTHREAD_CLANG=yes
 fi
@@ -15665,7 +16034,8 @@
 rm -rf conftest*
 
      fi
-
+     ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5
 printf "%s\n" "$ax_cv_PTHREAD_CLANG" >&6; }
@@ -15715,8 +16085,9 @@
 if test "x$ax_pthread_check_macro" = "x--"
 then :
   ax_pthread_check_cond=0
-else $as_nop
-  ax_pthread_check_cond="!defined($ax_pthread_check_macro)"
+else case e in #(
+  e) ax_pthread_check_cond="!defined($ax_pthread_check_macro)" ;;
+esac
 fi
 
 
@@ -15750,8 +16121,8 @@
 if test ${ac_cv_prog_ax_pthread_config+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ax_pthread_config"; then
+else case e in #(
+  e) if test -n "$ax_pthread_config"; then
   ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -15774,8 +16145,9 @@
 IFS=$as_save_IFS
 
   test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no"
+fi ;;
+esac
 fi
-fi
 ax_pthread_config=$ac_cv_prog_ax_pthread_config
 if test -n "$ax_pthread_config"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5
@@ -15907,8 +16279,8 @@
 if test ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
+else case e in #(
+  e) ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
              # Create an alternate version of $ac_link that compiles and
              # links in two steps (.c -> .o, .o -> exe) instead of one
              # (.c -> exe), because the warning occurs only in the second
@@ -15954,7 +16326,8 @@
   ax_pthread_try=no
 fi
              ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
-
+             ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5
 printf "%s\n" "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; }
@@ -15981,8 +16354,8 @@
 if test ${ax_cv_PTHREAD_JOINABLE_ATTR+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ax_cv_PTHREAD_JOINABLE_ATTR=unknown
+else case e in #(
+  e) ax_cv_PTHREAD_JOINABLE_ATTR=unknown
              for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
                  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -16002,7 +16375,8 @@
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
              done
-
+             ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5
 printf "%s\n" "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; }
@@ -16022,14 +16396,15 @@
 if test ${ax_cv_PTHREAD_SPECIAL_FLAGS+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ax_cv_PTHREAD_SPECIAL_FLAGS=no
+else case e in #(
+  e) ax_cv_PTHREAD_SPECIAL_FLAGS=no
              case $target_os in
              solaris*)
              ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
              ;;
              esac
-
+             ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5
 printf "%s\n" "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; }
@@ -16045,8 +16420,8 @@
 if test ${ax_cv_PTHREAD_PRIO_INHERIT+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <pthread.h>
 int
@@ -16061,12 +16436,14 @@
 if ac_fn_c_try_link "$LINENO"
 then :
   ax_cv_PTHREAD_PRIO_INHERIT=yes
-else $as_nop
-  ax_cv_PTHREAD_PRIO_INHERIT=no
+else case e in #(
+  e) ax_cv_PTHREAD_PRIO_INHERIT=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-
+             ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5
 printf "%s\n" "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; }
@@ -16116,8 +16493,8 @@
 if test ${ac_cv_prog_PTHREAD_CC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$PTHREAD_CC"; then
+else case e in #(
+  e) if test -n "$PTHREAD_CC"; then
   ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -16139,8 +16516,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 PTHREAD_CC=$ac_cv_prog_PTHREAD_CC
 if test -n "$PTHREAD_CC"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5
@@ -16166,8 +16544,8 @@
 if test ${ac_cv_prog_PTHREAD_CXX+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$PTHREAD_CXX"; then
+else case e in #(
+  e) if test -n "$PTHREAD_CXX"; then
   ac_cv_prog_PTHREAD_CXX="$PTHREAD_CXX" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -16189,8 +16567,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 PTHREAD_CXX=$ac_cv_prog_PTHREAD_CXX
 if test -n "$PTHREAD_CXX"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CXX" >&5
@@ -16257,8 +16636,8 @@
 if test ${ac_cv_prog_PYTHON+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$PYTHON"; then
+else case e in #(
+  e) if test -n "$PYTHON"; then
   ac_cv_prog_PYTHON="$PYTHON" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -16280,8 +16659,9 @@
   done
 IFS=$as_save_IFS
 
+fi ;;
+esac
 fi
-fi
 PYTHON=$ac_cv_prog_PYTHON
 if test -n "$PYTHON"; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
@@ -16360,12 +16740,13 @@
   fi
 
 
-else $as_nop
-
+else case e in #(
+  e)
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: could not find the python interpreter" >&5
 printf "%s\n" "$as_me: WARNING: could not find the python interpreter" >&2;}
 
-
+     ;;
+esac
 fi
 
 
@@ -16547,8 +16928,8 @@
 # config.status only pays attention to the cache file if you give it
 # the --recheck option to rerun configure.
 #
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# 'ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* 'ac_cv_foo' will be assigned the
 # following values.
 
 _ACEOF
@@ -16578,7 +16959,7 @@
   (set) 2>&1 |
     case $as_nl`(ac_space=' '; set) 2>&1` in #(
     *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
+      # 'set' does not quote correctly, so add quotes: double-quote
       # substitution turns \\\\ into \\, and sed turns \\ into \.
       sed -n \
 	"s/'/'\\\\''/g;
@@ -16585,7 +16966,7 @@
 	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
       ;; #(
     *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      # 'set' quotes correctly as required by POSIX, so do not add quotes.
       sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
       ;;
     esac |
@@ -16646,7 +17027,13 @@
 LTLIBOBJS=$ac_ltlibobjs
 
 
+# Check whether --enable-year2038 was given.
+if test ${enable_year2038+y}
+then :
+  enableval=$enable_year2038;
+fi
 
+
 : "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
@@ -16675,7 +17062,6 @@
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-as_nop=:
 if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
 then :
   emulate sh
@@ -16684,12 +17070,13 @@
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
-else $as_nop
-  case `(set -o) 2>/dev/null` in #(
+else case e in #(
+  e) case `(set -o) 2>/dev/null` in #(
   *posix*) :
     set -o posix ;; #(
   *) :
      ;;
+esac ;;
 esac
 fi
 
@@ -16761,7 +17148,7 @@
 
      ;;
 esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
+# We did not find ourselves, most probably we were run as 'sh COMMAND'
 # in which case we are not to be found in the path.
 if test "x$as_myself" = x; then
   as_myself=$0
@@ -16790,7 +17177,6 @@
 } # as_fn_error
 
 
-
 # as_fn_set_status STATUS
 # -----------------------
 # Set $? to STATUS, without forking.
@@ -16830,11 +17216,12 @@
   {
     eval $1+=\$2
   }'
-else $as_nop
-  as_fn_append ()
+else case e in #(
+  e) as_fn_append ()
   {
     eval $1=\$$1\$2
-  }
+  } ;;
+esac
 fi # as_fn_append
 
 # as_fn_arith ARG...
@@ -16848,11 +17235,12 @@
   {
     as_val=$(( $* ))
   }'
-else $as_nop
-  as_fn_arith ()
+else case e in #(
+  e) as_fn_arith ()
   {
     as_val=`expr "$@" || test $? -eq 1`
-  }
+  } ;;
+esac
 fi # as_fn_arith
 
 
@@ -16935,9 +17323,9 @@
   if ln -s conf$$.file conf$$ 2>/dev/null; then
     as_ln_s='ln -s'
     # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
+    # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable.
+    # In both cases, we have to default to 'cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
       as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
@@ -17018,10 +17406,12 @@
 as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated
 
 # Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+as_tr_sh="eval sed '$as_sed_sh'" # deprecated
 
 
 exec 6>&1
@@ -17036,8 +17426,8 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by FreeType $as_me 2.13.2, which was
-generated by GNU Autoconf 2.71.  Invocation command line was
+This file was extended by FreeType $as_me 2.13.3, which was
+generated by GNU Autoconf 2.72.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -17069,7 +17459,7 @@
 
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
+'$as_me' instantiates files and other configuration actions
 from templates according to the current configuration.  Unless the files
 and actions are specified as TAGs, all are instantiated by default.
 
@@ -17104,11 +17494,11 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-FreeType config.status 2.13.2
-configured by $0, generated by GNU Autoconf 2.71,
+FreeType config.status 2.13.3
+configured by $0, generated by GNU Autoconf 2.72,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2021 Free Software Foundation, Inc.
+Copyright (C) 2023 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -17170,8 +17560,8 @@
     ac_need_defaults=false;;
   --he | --h)
     # Conflict between --help and --header
-    as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
+    as_fn_error $? "ambiguous option: '$1'
+Try '$0 --help' for more information.";;
   --help | --hel | -h )
     printf "%s\n" "$ac_cs_usage"; exit ;;
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
@@ -17179,8 +17569,8 @@
     ac_cs_silent=: ;;
 
   # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
+  -*) as_fn_error $? "unrecognized option: '$1'
+Try '$0 --help' for more information." ;;
 
   *) as_fn_append ac_config_targets " $1"
      ac_need_defaults=false ;;
@@ -17600,7 +17990,7 @@
     "unix-cc.mk") CONFIG_FILES="$CONFIG_FILES unix-cc.mk:unix-cc.in" ;;
     "unix-def.mk") CONFIG_FILES="$CONFIG_FILES unix-def.mk:unix-def.in" ;;
 
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;;
   esac
 done
 
@@ -17620,7 +18010,7 @@
 # creating and moving files from /tmp can sometimes cause problems.
 # Hook for its removal unless debugging.
 # Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
+# after its creation but before its name has been assigned to '$tmp'.
 $debug ||
 {
   tmp= ac_tmp=
@@ -17644,7 +18034,7 @@
 
 # Set up the scripts for CONFIG_FILES section.
 # No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
+# This happens for instance with './config.status config.h'.
 if test -n "$CONFIG_FILES"; then
 
 
@@ -17802,13 +18192,13 @@
 
 # Set up the scripts for CONFIG_HEADERS section.
 # No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
+# This happens for instance with './config.status Makefile'.
 if test -n "$CONFIG_HEADERS"; then
 cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
 BEGIN {
 _ACEOF
 
-# Transform confdefs.h into an awk script `defines.awk', embedded as
+# Transform confdefs.h into an awk script 'defines.awk', embedded as
 # here-document in config.status, that substitutes the proper values into
 # config.h.in to produce config.h.
 
@@ -17918,7 +18308,7 @@
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -17940,19 +18330,19 @@
       -) ac_f="$ac_tmp/stdin";;
       *) # Look for the file first in the build tree, then in the source tree
 	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
-	 # because $ac_f cannot contain `:'.
+	 # because $ac_f cannot contain ':'.
 	 test -f "$ac_f" ||
 	   case $ac_f in
 	   [\\/$]*) false;;
 	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
 	   esac ||
-	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+	   as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;;
       esac
       case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
       as_fn_append ac_file_inputs " '$ac_f'"
     done
 
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # Let's still pretend it is 'configure' which instantiates (i.e., don't
     # use $as_me), people would be surprised to read:
     #    /* config.h.  Generated by config.status.  */
     configure_input='Generated from '`
@@ -18085,7 +18475,7 @@
 esac
 _ACEOF
 
-# Neutralize VPATH when `$srcdir' = `.'.
+# Neutralize VPATH when '$srcdir' = '.'.
 # Shell code in configure.ac might set extrasub.
 # FIXME: do we really want to maintain this feature?
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
@@ -18116,9 +18506,9 @@
   { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
   { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
       "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&5
-printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&2;}
 
   rm -f "$ac_tmp/stdin"
@@ -18175,6 +18565,7 @@
     cat <<_LT_EOF >> "$cfgfile"
 #! $SHELL
 # Generated automatically by $as_me ($PACKAGE) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 
 # Provide generalized library-building support services.

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/unix/configure.ac
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/unix/configure.ac	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/unix/configure.ac	2024-08-13 00:41:00 UTC (rev 72022)
@@ -2,7 +2,7 @@
 #
 # Process this file with autoconf to produce a configure script.
 #
-# Copyright (C) 2001-2023 by
+# Copyright (C) 2001-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -11,13 +11,13 @@
 # indicate that you have read the license and understand and accept it
 # fully.
 
-AC_INIT([FreeType], [2.13.2], [freetype at nongnu.org], [freetype])
+AC_INIT([FreeType], [2.13.3], [freetype at nongnu.org], [freetype])
 AC_CONFIG_SRCDIR([ftconfig.h.in])
 
 
 # Don't forget to update `docs/VERSIONS.TXT'!
 
-version_info='26:1:20'
+version_info='26:2:20'
 AC_SUBST([version_info])
 ft_version=`echo $version_info | tr : .`
 AC_SUBST([ft_version])

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/unix/configure.raw
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/unix/configure.raw	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/unix/configure.raw	2024-08-13 00:41:00 UTC (rev 72022)
@@ -2,7 +2,7 @@
 #
 # Process this file with autoconf to produce a configure script.
 #
-# Copyright (C) 2001-2023 by
+# Copyright (C) 2001-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -17,7 +17,7 @@
 
 # Don't forget to update `docs/VERSIONS.TXT'!
 
-version_info='26:1:20'
+version_info='26:2:20'
 AC_SUBST([version_info])
 ft_version=`echo $version_info | tr : .`
 AC_SUBST([ft_version])

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/unix/detect.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/unix/detect.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/unix/detect.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/unix/freetype-config.in
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/unix/freetype-config.in	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/unix/freetype-config.in	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,6 +1,6 @@
 #! /bin/sh
 #
-# Copyright (C) 2000-2023 by
+# Copyright (C) 2000-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/unix/freetype2.m4
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/unix/freetype2.m4	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/unix/freetype2.m4	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,7 +1,7 @@
 # Configure paths for FreeType2
 # Marcelo Magallon 2001-10-26, based on `gtk.m4` by Owen Taylor
 #
-# Copyright (C) 2001-2023 by
+# Copyright (C) 2001-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/unix/ft-munmap.m4
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/unix/ft-munmap.m4	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/unix/ft-munmap.m4	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,6 +1,6 @@
 ## FreeType specific autoconf tests
 #
-# Copyright (C) 2002-2023 by
+# Copyright (C) 2002-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/unix/ftconfig.h.in
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/unix/ftconfig.h.in	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/unix/ftconfig.h.in	2024-08-13 00:41:00 UTC (rev 72022)
@@ -4,7 +4,7 @@
  *
  *   UNIX-specific configuration file (specification only).
  *
- * Copyright (C) 1996-2023 by
+ * Copyright (C) 1996-2024 by
  * David Turner, Robert Wilhelm, and Werner Lemberg.
  *
  * This file is part of the FreeType project, and may only be used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/unix/ftsystem.c
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/unix/ftsystem.c	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/unix/ftsystem.c	2024-08-13 00:41:00 UTC (rev 72022)
@@ -4,7 +4,7 @@
  *
  *   Unix-specific FreeType low-level system interface (body).
  *
- * Copyright (C) 1996-2023 by
+ * Copyright (C) 1996-2024 by
  * David Turner, Robert Wilhelm, and Werner Lemberg.
  *
  * This file is part of the FreeType project, and may only be used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/unix/install-sh
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/unix/install-sh	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/unix/install-sh	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2024-06-19.01; # UTC
+scriptversion=2020-11-14.01; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -124,9 +124,9 @@
 
 If -S is not specified, no backups are attempted.
 
-Report bugs to <bug-automake at gnu.org>.
-GNU Automake home page: <https://www.gnu.org/software/automake/>.
-General help using GNU software: <https://www.gnu.org/gethelp/>."
+Email bug reports to bug-automake at gnu.org.
+Automake home page: https://www.gnu.org/software/automake/
+"
 
 while test $# -ne 0; do
   case $1 in
@@ -170,7 +170,7 @@
 
     -T) is_target_a_directory=never;;
 
-    --version) echo "$0 (GNU Automake) $scriptversion"; exit $?;;
+    --version) echo "$0 $scriptversion"; exit $?;;
 
     --) shift
         break;;
@@ -345,7 +345,7 @@
 	' 0
 
 	# Because "mkdir -p" follows existing symlinks and we likely work
-	# directly in world-writable /tmp, make sure that the '$tmpdir'
+	# directly in world-writeable /tmp, make sure that the '$tmpdir'
 	# directory is successfully created first before we actually test
 	# 'mkdir -p'.
 	if (umask $mkdir_umask &&
@@ -353,7 +353,7 @@
 	    exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
 	then
 	  if test -z "$dir_arg" || {
-	       # Check for POSIX incompatibility with -m.
+	       # Check for POSIX incompatibilities with -m.
 	       # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
 	       # other-writable bit of parent directory when it shouldn't.
 	       # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/unix/install.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/unix/install.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/unix/install.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix-cc.in
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix-cc.in	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix-cc.in	2024-08-13 00:41:00 UTC (rev 72022)
@@ -2,7 +2,7 @@
 # FreeType 2 template for Unix-specific compiler definitions
 #
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix-def.in
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix-def.in	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix-def.in	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix-dev.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix-dev.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix-dev.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -6,7 +6,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix-lcc.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix-lcc.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix-lcc.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -6,7 +6,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unix.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unixddef.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unixddef.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/unix/unixddef.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -4,7 +4,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/vms/ftconfig.h
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/vms/ftconfig.h	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/vms/ftconfig.h	2024-08-13 00:41:00 UTC (rev 72022)
@@ -4,7 +4,7 @@
  *
  *   VMS-specific configuration file (specification only).
  *
- * Copyright (C) 1996-2023 by
+ * Copyright (C) 1996-2024 by
  * David Turner, Robert Wilhelm, and Werner Lemberg.
  *
  * This file is part of the FreeType project, and may only be used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/vms/ftsystem.c
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/vms/ftsystem.c	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/vms/ftsystem.c	2024-08-13 00:41:00 UTC (rev 72022)
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    VMS-specific FreeType low-level system interface (body).             */
 /*                                                                         */
-/*  Copyright (C) 1996-2023 by                                             */
+/*  Copyright (C) 1996-2024 by                                             */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/wince/ftdebug.c
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/wince/ftdebug.c	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/wince/ftdebug.c	2024-08-13 00:41:00 UTC (rev 72022)
@@ -4,7 +4,7 @@
  *
  *   Debugging and logging component for WinCE (body).
  *
- * Copyright (C) 1996-2023 by
+ * Copyright (C) 1996-2024 by
  * David Turner, Robert Wilhelm, and Werner Lemberg.
  *
  * This file is part of the FreeType project, and may only be used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/wince/vc2005-ce/index.html
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/wince/vc2005-ce/index.html	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/wince/vc2005-ce/index.html	2024-08-13 00:41:00 UTC (rev 72022)
@@ -21,7 +21,7 @@
   <li>PPC/SP WM6 (Windows Mobile 6)</li>
 </ul>
 
-It compiles the following libraries from the FreeType 2.13.2 sources:</p>
+It compiles the following libraries from the FreeType 2.13.3 sources:</p>
 
 <ul>
   <pre>

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/wince/vc2008-ce/index.html
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/wince/vc2008-ce/index.html	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/wince/vc2008-ce/index.html	2024-08-13 00:41:00 UTC (rev 72022)
@@ -21,7 +21,7 @@
   <li>PPC/SP WM6 (Windows Mobile 6)</li>
 </ul>
 
-It compiles the following libraries from the FreeType 2.13.2 sources:</p>
+It compiles the following libraries from the FreeType 2.13.3 sources:</p>
 
 <ul>
   <pre>

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/windows/detect.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/windows/detect.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/windows/detect.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/windows/ftdebug.c
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/windows/ftdebug.c	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/windows/ftdebug.c	2024-08-13 00:41:00 UTC (rev 72022)
@@ -4,7 +4,7 @@
  *
  *   Debugging and logging component for Win32 (body).
  *
- * Copyright (C) 1996-2023 by
+ * Copyright (C) 1996-2024 by
  * David Turner, Robert Wilhelm, and Werner Lemberg.
  *
  * This file is part of the FreeType project, and may only be used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/windows/ftsystem.c
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/windows/ftsystem.c	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/windows/ftsystem.c	2024-08-13 00:41:00 UTC (rev 72022)
@@ -4,7 +4,7 @@
  *
  *   Windows-specific FreeType low-level system interface (body).
  *
- * Copyright (C) 2021-2023 by
+ * Copyright (C) 2021-2024 by
  * David Turner, Robert Wilhelm, and Werner Lemberg.
  *
  * This file is part of the FreeType project, and may only be used,
@@ -196,8 +196,8 @@
   }
 
 
-  /* non-desktop Universal Windows Platform */
-#if defined( WINAPI_FAMILY ) && WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP
+  /* support for Universal Windows Platform UWP, formerly WinRT */
+#ifdef _WINRT_DLL
 
 #define PACK_DWORD64( hi, lo )  ( ( (DWORD64)(hi) << 32 ) | (DWORD)(lo) )
 
@@ -248,10 +248,11 @@
                         dwCreationDisposition, &createExParams );
   }
 
-#endif
+#endif  /* _WINRT_DLL */
 
 
-#if defined( _WIN32_WCE )
+  /* support for Windows CE */
+#ifdef _WIN32_WCE
 
   /* malloc.h provides implementation of alloca()/_alloca() */
   #include <malloc.h>
@@ -291,9 +292,9 @@
                         dwFlagsAndAttributes, hTemplateFile );
   }
 
-#endif
+#endif  /* _WIN32_WCE */
 
-
+  /* support for really old Windows */
 #if defined( _WIN32_WCE ) || defined ( _WIN32_WINDOWS ) || \
     !defined( _WIN32_WINNT ) || _WIN32_WINNT <= 0x0400
 
@@ -311,7 +312,7 @@
       return TRUE;
   }
 
-#endif
+#endif  /* _WIN32_WCE || _WIN32_WINDOWS || _WIN32_WINNT <= 0x0400 */
 
 
   /* documentation is in ftobjs.h */

Deleted: trunk/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/freetype.sln
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/freetype.sln	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/freetype.sln	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,52 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio Express 2012 for Windows Desktop
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcxproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|x64 = Debug|x64
-		Debug|ARM64 = Debug|ARM64
-		Debug|Win32 = Debug|Win32
-		Debug Static|x64 = Debug Static|x64
-		Debug Static|ARM64 = Debug Static|ARM64
-		Debug Static|Win32 = Debug Static|Win32
-		Release|x64 = Release|x64
-		Release|ARM64 = Release|ARM64
-		Release|Win32 = Release|Win32
-		Release Static|x64 = Release Static|x64
-		Release Static|ARM64 = Release Static|ARM64
-		Release Static|Win32 = Release Static|Win32
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.ActiveCfg = Debug|x64
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|x64.Build.0 = Debug|x64
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|ARM64.ActiveCfg = Debug|ARM64
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|ARM64.Build.0 = Debug|ARM64
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.ActiveCfg = Debug|Win32
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug|Win32.Build.0 = Debug|Win32
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|x64.ActiveCfg = Debug Static|x64
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|x64.Build.0 = Debug Static|x64
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|ARM64.ActiveCfg = Debug Static|ARM64
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|ARM64.Build.0 = Debug Static|ARM64
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|Win32.ActiveCfg = Debug Static|Win32
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Static|Win32.Build.0 = Debug Static|Win32
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.ActiveCfg = Release|x64
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|x64.Build.0 = Release|x64
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|ARM64.ActiveCfg = Release|ARM64
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|ARM64.Build.0 = Release|ARM64
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.ActiveCfg = Release|Win32
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release|Win32.Build.0 = Release|Win32
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|x64.ActiveCfg = Release Static|x64
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|x64.Build.0 = Release Static|x64
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|ARM64.ActiveCfg = Release Static|ARM64
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|ARM64.Build.0 = Release Static|ARM64
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|Win32.ActiveCfg = Release Static|Win32
-		{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Static|Win32.Build.0 = Release Static|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-		SolutionGuid = {90811697-0889-4381-80BC-C3FE8FA4931F}
-	EndGlobalSection
-EndGlobal

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/index.html
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/index.html	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/windows/vc2010/index.html	2024-08-13 00:41:00 UTC (rev 72022)
@@ -12,7 +12,7 @@
 <p>This directory contains solution and project files for
 Visual C++ 2010 or newer, named <tt>freetype.sln</tt>,
 and <tt>freetype.vcxproj</tt>.  It compiles the following libraries
-from the FreeType 2.13.2 sources:</p>
+from the FreeType 2.13.3 sources:</p>
 
 <ul>
   <li>freetype.dll using 'Release' or 'Debug' configurations</li>

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/windows/visualc/index.html
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/windows/visualc/index.html	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/windows/visualc/index.html	2024-08-13 00:41:00 UTC (rev 72022)
@@ -12,7 +12,7 @@
 <p>This directory contains project files <tt>freetype.dsp</tt> for
 Visual C++ 6.0, and <tt>freetype.vcproj</tt> for Visual C++ 2002
 through 2008, which you might need to upgrade automatically.
-It compiles the following libraries from the FreeType 2.13.2 sources:</p>
+It compiles the following libraries from the FreeType 2.13.3 sources:</p>
 
 <ul>
   <li>freetype.dll using 'Release' or 'Debug' configurations</li>

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/windows/visualce/index.html
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/windows/visualce/index.html	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/windows/visualce/index.html	2024-08-13 00:41:00 UTC (rev 72022)
@@ -21,7 +21,7 @@
   <li>PPC/SP WM6 (Windows Mobile 6)</li>
 </ul>
 
-It compiles the following libraries from the FreeType 2.13.2 sources:</p>
+It compiles the following libraries from the FreeType 2.13.3 sources:</p>
 
 <ul>
   <pre>

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-bcc.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-bcc.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-bcc.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-bccd.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-bccd.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-bccd.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-dev.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-dev.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-dev.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -5,7 +5,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-gcc.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-gcc.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-gcc.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-icc.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-icc.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-icc.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-intl.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-intl.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-intl.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-lcc.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-lcc.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-lcc.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-mingw32.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-mingw32.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-mingw32.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-vcc.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-vcc.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-vcc.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-wat.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-wat.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/windows/w32-wat.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/builds/windows/win32-def.mk
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/builds/windows/win32-def.mk	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/builds/windows/win32-def.mk	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 1996-2023 by
+# Copyright (C) 1996-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/configure
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/configure	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/configure	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# Copyright (C) 2002-2023 by
+# Copyright (C) 2002-2024 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/devel/ft2build.h
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/devel/ft2build.h	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/devel/ft2build.h	2024-08-13 00:41:00 UTC (rev 72022)
@@ -4,7 +4,7 @@
  *
  *   FreeType 2 build and setup macros (development version).
  *
- * Copyright (C) 1996-2023 by
+ * Copyright (C) 1996-2024 by
  * David Turner, Robert Wilhelm, and Werner Lemberg.
  *
  * This file is part of the FreeType project, and may only be used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/devel/ftoption.h
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/devel/ftoption.h	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/devel/ftoption.h	2024-08-13 00:41:00 UTC (rev 72022)
@@ -4,7 +4,7 @@
  *
  *   User-selectable configuration macros (specification only).
  *
- * Copyright (C) 1996-2023 by
+ * Copyright (C) 1996-2024 by
  * David Turner, Robert Wilhelm, and Werner Lemberg.
  *
  * This file is part of the FreeType project, and may only be used,
@@ -757,6 +757,22 @@
 #endif
 
 
+  /**************************************************************************
+   *
+   * Option `TT_CONFIG_OPTION_GPOS_KERNING` enables a basic GPOS kerning
+   * implementation (for TrueType fonts only).  With this defined, FreeType
+   * is able to get kerning pair data from the GPOS 'kern' feature as well as
+   * legacy 'kern' tables; without this defined, FreeType will only be able
+   * to use legacy 'kern' tables.
+   *
+   * Note that FreeType does not support more advanced GPOS layout features;
+   * even the 'kern' feature implemented here doesn't handle more
+   * sophisticated kerning variants.  Use a higher-level library like
+   * HarfBuzz instead for that.
+   */
+#define TT_CONFIG_OPTION_GPOS_KERNING
+
+
   /*************************************************************************/
   /*************************************************************************/
   /****                                                                 ****/

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/CHANGES
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/CHANGES	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/CHANGES	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,3 +1,43 @@
+CHANGES BETWEEN 2.13.2 and 2.13.3 (2024-Aug-11)
+
+  I. IMPORTANT CHANGES
+
+  - Some  fields  in  the  `FT_Outline` structure  have been   changed
+    from signed  to unsigned type,  which  better reflects  the actual
+    usage.   It  is  also  an  additional  means  to  protect  against
+    malformed input.
+
+
+  II. IMPORTANT BUG FIXES
+
+  - Rare double-free crashes in the cache subsystem have been fixed.
+
+  - Excessive stack allocation in the autohinter has been fixed.
+
+
+  III. MISCELLANEOUS
+
+  - The B/W  rasterizer has  received a major  upkeep that  results in
+    large performance improvements.  The rendering speed has increased
+    and even doubled for very complex glyphs.
+
+  - If the new configuration option `TT_CONFIG_OPTION_GPOS_KERNING` is
+    defined,  `FT_Get_Kerning`  understands rudimentary  GPOS  kerning
+    (for TrueType fonts  only).  This is not enabled  by default since
+    its usage  is very  limited, mainly  for legacy  applications that
+    have to support TrueType fonts automatically converted from 'kern'
+    tables to GPOS kerning.  If you need proper (GPOS) kerning support
+    please use a higher-level library like HarfBuzz.
+
+    Code contributed by David Saltzman <davidbsaltzman at gmail.com>.
+
+  - The internal structures  `PS_DesignMap` and `PS_Blend` related  to
+    parsing of old Multiple Masters fonts  have been removed  from the
+    public header file `t1tables.h`.
+
+
+======================================================================
+
 CHANGES BETWEEN 2.13.1 and 2.13.2 (2023-Aug-25)
 
   I. MISCELLANEOUS
@@ -5668,7 +5708,7 @@
 
 ------------------------------------------------------------------------
 
-Copyright (C) 2000-2023 by
+Copyright (C) 2000-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This  file  is  part  of the  FreeType  project, and may  only be  used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/CUSTOMIZE
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/CUSTOMIZE	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/CUSTOMIZE	2024-08-13 00:41:00 UTC (rev 72022)
@@ -139,7 +139,7 @@
 
 ----------------------------------------------------------------------
 
-Copyright (C) 2003-2023 by
+Copyright (C) 2003-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This  file is  part of  the FreeType  project, and  may only  be used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/DEBUG
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/DEBUG	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/DEBUG	2024-08-13 00:41:00 UTC (rev 72022)
@@ -297,7 +297,7 @@
 
 ------------------------------------------------------------------------
 
-Copyright (C) 2002-2023 by
+Copyright (C) 2002-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This  file is  part  of the  FreeType  project, and  may  only be  used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/DOCGUIDE
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/DOCGUIDE	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/DOCGUIDE	2024-08-13 00:41:00 UTC (rev 72022)
@@ -285,7 +285,7 @@
 
 ----------------------------------------------------------------------
 
-Copyright (C) 2018-2023 by
+Copyright (C) 2018-2024 by
 Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This  file is  part of  the FreeType  project, and  may only  be used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL	2024-08-13 00:41:00 UTC (rev 72022)
@@ -59,7 +59,7 @@
 
       CMake   :: see `CMakeLists.txt` for more information
       Meson   :: see `meson.build` for more information
-      MSBuild :: see `builds/windows/vc2010/freetype.vcxproj`
+      MSBuild :: see `MSBuild.sln` for more information
       MMS     :: see `vms_make.com` and `docs/INSTALL.VMS`
 
 
@@ -101,7 +101,7 @@
 
 ----------------------------------------------------------------------
 
-Copyright (C) 2000-2023 by
+Copyright (C) 2000-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This  file is  part of  the FreeType  project, and  may only  be used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.ANY
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.ANY	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.ANY	2024-08-13 00:41:00 UTC (rev 72022)
@@ -72,9 +72,9 @@
     -- rasterizers (optional; at least one is needed for vector
        formats)
 
+      src/smooth/smooth.c     -- anti-aliasing rasterizer
       src/raster/raster.c     -- monochrome rasterizer
       src/sdf/sdf.c           -- Signed Distance Field driver
-      src/smooth/smooth.c     -- anti-aliasing rasterizer
 
     -- auxiliary modules (optional)
 
@@ -127,7 +127,7 @@
   1. Copy all files in current directory
 
       cp freetype/src/base/*.[hc] .
-      cp freetype/src/raster1/*.[hc] .
+      cp freetype/src/raster/*.[hc] .
       cp freetype/src/smooth/*.[hc] .
       etc.
 
@@ -144,7 +144,7 @@
 
 ----------------------------------------------------------------------
 
-Copyright (C) 2003-2023 by
+Copyright (C) 2003-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This  file is  part of  the FreeType  project, and  may only  be used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.CROSS
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.CROSS	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.CROSS	2024-08-13 00:41:00 UTC (rev 72022)
@@ -163,7 +163,7 @@
 
 ----------------------------------------------------------------------
 
-Copyright (C) 2006-2023 by
+Copyright (C) 2006-2024 by
 suzuki toshiya, David Turner, Robert Wilhelm, and Werner Lemberg.
 
 

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.GNU
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.GNU	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.GNU	2024-08-13 00:41:00 UTC (rev 72022)
@@ -168,7 +168,7 @@
 
 ----------------------------------------------------------------------
 
-Copyright (C) 2003-2023 by
+Copyright (C) 2003-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This  file is  part of  the FreeType  project, and  may only  be used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.UNIX
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.UNIX	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.UNIX	2024-08-13 00:41:00 UTC (rev 72022)
@@ -126,7 +126,7 @@
 
 ----------------------------------------------------------------------
 
-Copyright (C) 2003-2023 by
+Copyright (C) 2003-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This  file is  part of  the FreeType  project, and  may only  be used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.VMS
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.VMS	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/INSTALL.VMS	2024-08-13 00:41:00 UTC (rev 72022)
@@ -56,7 +56,7 @@
 
 ------------------------------------------------------------------------
 
-Copyright (C) 2000-2023 by
+Copyright (C) 2000-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This  file  is  part  of the  FreeType  project, and may  only be  used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/TODO
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/TODO	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/TODO	2024-08-13 00:41:00 UTC (rev 72022)
@@ -27,7 +27,7 @@
 
 ------------------------------------------------------------------------
 
-Copyright (C) 2001-2023 by
+Copyright (C) 2001-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This  file  is  part  of the  FreeType  project, and may  only be  used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/VERSIONS.TXT
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/VERSIONS.TXT	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/VERSIONS.TXT	2024-08-13 00:41:00 UTC (rev 72022)
@@ -60,6 +60,7 @@
 
     release     libtool     so
   -------------------------------
+     2.13.3     26.2.20   6.20.2
      2.13.2     26.1.20   6.20.1
      2.13.1     26.0.20   6.20.0
      2.13.0     25.0.19   6.19.0
@@ -124,7 +125,7 @@
 
 ----------------------------------------------------------------------
 
-Copyright (C) 2002-2023 by
+Copyright (C) 2002-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This  file is  part of  the FreeType  project, and  may only  be used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/formats.txt
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/formats.txt	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/formats.txt	2024-08-13 00:41:00 UTC (rev 72022)
@@ -206,7 +206,7 @@
 
 ------------------------------------------------------------------------
 
-Copyright (C) 2004-2023 by
+Copyright (C) 2004-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This  file is  part  of the  FreeType  project, and  may  only be  used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/freetype-config.1
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/freetype-config.1	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/freetype-config.1	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,4 +1,4 @@
-.TH FREETYPE-CONFIG 1 "August 2023" "FreeType 2.13.2"
+.TH FREETYPE-CONFIG 1 "August 2024" "FreeType 2.13.3"
 .
 .
 .SH NAME

Added: trunk/Build/source/libs/freetype2/freetype-src/docs/freetype-web.txt
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/freetype-web.txt	                        (rev 0)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/freetype-web.txt	2024-08-13 00:41:00 UTC (rev 72022)
@@ -0,0 +1,42 @@
+How to update the FreeType web pages
+------------------------------------
+
+The 'freetype.org' website is hosted via the 'freetype-web' repo
+located at
+
+   https://gitlab.com/freetype/freetype-web  ,
+
+which in turn is a mirror from the master 'freetype-web' repository
+located at
+
+  https://gitlab.freedesktop.org/freetype/freetype-web  .
+
+Due to Cloudflare caching, changes take time to appear on
+'freetype.org', so visit
+
+  https://freetype.gitlab.io/freetype-web
+
+for instant feedback.
+
+All the commits should *only* be done to the 'freetype-web' repo at
+
+  https://gitlab.freedesktop.org/freetype/freetype-web
+
+When a commit is done to this repo, the CI pipeline runs and the
+website is deployed via gitlab pages at
+
+  https://freetype.pages.freedesktop.org/freetype-web  .
+
+The pull mirror automatically updates the repository in 'gitlab.com',
+and the CI pipeline deploys the website at:
+
+  https://freetype.gitlab.io/freetype-web
+
+Since the 'freetype.org' website uses Cloudflare caching, it will take
+a while for the changes to show up in 'freetype.org'.
+
+If you have access to the Cloudflare dashboard you can purge the
+cache from there; this will cause the cache to be fetched again
+resulting in the website being updated instantly.
+
+--- end of freetype-web.txt ---

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.20
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.20	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.20	2024-08-13 00:41:00 UTC (rev 72022)
@@ -2597,7 +2597,7 @@
 
 ----------------------------------------------------------------------------
 
-Copyright (C) 2000-2023 by
+Copyright (C) 2000-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.21
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.21	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.21	2024-08-13 00:41:00 UTC (rev 72022)
@@ -9422,7 +9422,7 @@
 
 ----------------------------------------------------------------------------
 
-Copyright (C) 2002-2023 by
+Copyright (C) 2002-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.210
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.210	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.210	2024-08-13 00:41:00 UTC (rev 72022)
@@ -7799,7 +7799,7 @@
 
 ----------------------------------------------------------------------------
 
-Copyright (C) 2018-2023 by
+Copyright (C) 2018-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.22
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.22	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.22	2024-08-13 00:41:00 UTC (rev 72022)
@@ -2821,7 +2821,7 @@
 
 ----------------------------------------------------------------------------
 
-Copyright (C) 2005-2023 by
+Copyright (C) 2005-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.23
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.23	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.23	2024-08-13 00:41:00 UTC (rev 72022)
@@ -7932,7 +7932,7 @@
 
 ----------------------------------------------------------------------------
 
-Copyright (C) 2006-2023 by
+Copyright (C) 2006-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.24
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.24	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.24	2024-08-13 00:41:00 UTC (rev 72022)
@@ -6344,7 +6344,7 @@
 
 ----------------------------------------------------------------------------
 
-Copyright (C) 2010-2023 by
+Copyright (C) 2010-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.25
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.25	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.25	2024-08-13 00:41:00 UTC (rev 72022)
@@ -5145,7 +5145,7 @@
 
 ----------------------------------------------------------------------------
 
-Copyright (C) 2013-2023 by
+Copyright (C) 2013-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.26
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.26	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.26	2024-08-13 00:41:00 UTC (rev 72022)
@@ -5695,7 +5695,7 @@
 
 ----------------------------------------------------------------------------
 
-Copyright (C) 2015-2023 by
+Copyright (C) 2015-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.27
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.27	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.27	2024-08-13 00:41:00 UTC (rev 72022)
@@ -2090,7 +2090,7 @@
 
 ----------------------------------------------------------------------------
 
-Copyright (C) 2016-2023 by
+Copyright (C) 2016-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.28
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.28	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.28	2024-08-13 00:41:00 UTC (rev 72022)
@@ -3120,7 +3120,7 @@
 
 ----------------------------------------------------------------------------
 
-Copyright (C) 2016-2023 by
+Copyright (C) 2016-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.29
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.29	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/oldlogs/ChangeLog.29	2024-08-13 00:41:00 UTC (rev 72022)
@@ -2336,7 +2336,7 @@
 
 ----------------------------------------------------------------------------
 
-Copyright (C) 2017-2023 by
+Copyright (C) 2017-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This file is part of the FreeType project, and may only be used, modified,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/raster.txt
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/raster.txt	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/raster.txt	2024-08-13 00:41:00 UTC (rev 72022)
@@ -618,7 +618,7 @@
 
 ------------------------------------------------------------------------
 
-Copyright (C) 2003-2023 by
+Copyright (C) 2003-2024 by
 David Turner, Robert Wilhelm, and Werner Lemberg.
 
 This  file  is  part  of the  FreeType  project, and may  only be  used,

Modified: trunk/Build/source/libs/freetype2/freetype-src/docs/reference/404.html
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/reference/404.html	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/reference/404.html	2024-08-13 00:41:00 UTC (rev 72022)
@@ -6,52 +6,55 @@
       <meta charset="utf-8">
       <meta name="viewport" content="width=device-width,initial-scale=1">
       
-        <meta name="description" content="API Reference Documentation for FreeType-2.13.2">
+        <meta name="description" content="API Reference Documentation for FreeType-2.13.3">
       
       
-      
         <meta name="author" content="FreeType Contributors">
       
       
-      <link rel="icon" href="/images/favico.ico">
-      <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-7.1.9">
+      
+      
+      
+      <link rel="icon" href="/freetype2/docs/reference/images/favico.ico">
+      <meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.31">
     
     
       
-        <title>FreeType-2.13.2 API Reference</title>
+        <title>FreeType-2.13.3 API Reference</title>
       
     
     
-      <link rel="stylesheet" href="/assets/stylesheets/main.ca7ac06f.min.css">
+      <link rel="stylesheet" href="/freetype2/docs/reference/assets/stylesheets/main.3cba04c6.min.css">
       
         
-        <link rel="stylesheet" href="/assets/stylesheets/palette.f1a3b89f.min.css">
-        
-          
-          
-          <meta name="theme-color" content="#4cae4f">
-        
+        <link rel="stylesheet" href="/freetype2/docs/reference/assets/stylesheets/palette.06af60db.min.css">
       
+      
+
+
     
     
+      
     
+    
       
         
+        
         <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
-        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Serif:300,400,400i,700%7CRoboto+Mono&display=fallback">
-        <style>:root{--md-text-font-family:"Noto Serif";--md-code-font-family:"Roboto Mono"}</style>
+        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Serif:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
+        <style>:root{--md-text-font:"Noto Serif";--md-code-font:"Roboto Mono"}</style>
       
     
     
+      <link rel="stylesheet" href="/freetype2/docs/reference/stylesheets/extra.css">
     
-      <link rel="stylesheet" href="/stylesheets/extra.css">
+    <script>__md_scope=new URL("/freetype2/docs/reference/",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
     
-    
       
 
-
     
     
+    
   </head>
   
   
@@ -60,11 +63,9 @@
     
     
     
-    <body dir="ltr" data-md-color-scheme="" data-md-color-primary="green" data-md-color-accent="green">
+    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="green" data-md-color-accent="green">
   
     
-    <script>function __prefix(e){return new URL("/",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
-    
     <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
     <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
     <label class="md-overlay" for="__drawer"></label>
@@ -75,21 +76,27 @@
       
     </div>
     
-      <header class="md-header" data-md-component="header">
+    
+      
+
+  
+
+<header class="md-header md-header--shadow" data-md-component="header">
   <nav class="md-header__inner md-grid" aria-label="Header">
-    <a href="/index.html" title="FreeType-2.13.2 API Reference" class="md-header__button md-logo" aria-label="FreeType-2.13.2 API Reference" data-md-component="logo">
+    <a href="/freetype2/docs/reference/index.html" title="FreeType-2.13.3 API Reference" class="md-header__button md-logo" aria-label="FreeType-2.13.3 API Reference" data-md-component="logo">
       
-  <img src="/images/favico.ico" alt="logo">
+  <img src="/freetype2/docs/reference/images/favico.ico" alt="logo">
 
     </a>
     <label class="md-header__button md-icon" for="__drawer">
-      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
+      
+      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
     </label>
     <div class="md-header__title" data-md-component="header-title">
       <div class="md-header__ellipsis">
         <div class="md-header__topic">
           <span class="md-ellipsis">
-            FreeType-2.13.2 API Reference
+            FreeType-2.13.3 API Reference
           </span>
         </div>
         <div class="md-header__topic" data-md-component="header-topic">
@@ -102,32 +109,42 @@
       </div>
     </div>
     
+      
     
     
+    
+    
       <label class="md-header__button md-icon" for="__search">
-        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
+        
+        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
       </label>
-      
-<div class="md-search" data-md-component="search" role="dialog">
+      <div class="md-search" data-md-component="search" role="dialog">
   <label class="md-search__overlay" for="__search"></label>
   <div class="md-search__inner" role="search">
     <form class="md-search__form" name="search">
-      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active" required>
+      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
       <label class="md-search__icon md-icon" for="__search">
-        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
-        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
+        
+        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
+        
+        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
       </label>
-      <button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
-        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
-      </button>
+      <nav class="md-search__options" aria-label="Search">
+        
+        <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
+          
+          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
+        </button>
+      </nav>
+      
     </form>
     <div class="md-search__output">
-      <div class="md-search__scrollwrap" data-md-scrollfix>
+      <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
         <div class="md-search-result" data-md-component="search-result">
           <div class="md-search-result__meta">
             Initializing search
           </div>
-          <ol class="md-search-result__list"></ol>
+          <ol class="md-search-result__list" role="presentation"></ol>
         </div>
       </div>
     </div>
@@ -136,6 +153,7 @@
     
     
   </nav>
+  
 </header>
     
     <div class="md-container" data-md-component="container">
@@ -142,6 +160,8 @@
       
       
         
+          
+        
       
       <main class="md-main" data-md-component="main">
         <div class="md-main__inner md-grid">
@@ -154,14 +174,15 @@
                     
 
 
+
 <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
   <label class="md-nav__title" for="__drawer">
-    <a href="/index.html" title="FreeType-2.13.2 API Reference" class="md-nav__button md-logo" aria-label="FreeType-2.13.2 API Reference" data-md-component="logo">
+    <a href="/freetype2/docs/reference/index.html" title="FreeType-2.13.3 API Reference" class="md-nav__button md-logo" aria-label="FreeType-2.13.3 API Reference" data-md-component="logo">
       
-  <img src="/images/favico.ico" alt="logo">
+  <img src="/freetype2/docs/reference/images/favico.ico" alt="logo">
 
     </a>
-    FreeType-2.13.2 API Reference
+    FreeType-2.13.3 API Reference
   </label>
   
   <ul class="md-nav__list" data-md-scrollfix>
@@ -168,14 +189,19 @@
     
       
       
-      
-
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/index.html" class="md-nav__link">
-        TOC
+      <a href="/freetype2/docs/reference/index.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    TOC
+  </span>
+  
+
       </a>
     </li>
   
@@ -183,14 +209,19 @@
     
       
       
-      
-
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-index.html" class="md-nav__link">
-        Index
+      <a href="/freetype2/docs/reference/ft2-index.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Index
+  </span>
+  
+
       </a>
     </li>
   
@@ -198,66 +229,105 @@
     
       
       
-      
-
   
   
   
+  
     
+    
+    
+    
     <li class="md-nav__item md-nav__item--nested">
       
-      
-        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
-      
-      <label class="md-nav__link" for="__nav_3">
-        General Remarks
-        <span class="md-nav__icon md-icon"></span>
-      </label>
-      <nav class="md-nav" aria-label="General Remarks" data-md-level="1">
-        <label class="md-nav__title" for="__nav_3">
-          <span class="md-nav__icon md-icon"></span>
-          General Remarks
-        </label>
-        <ul class="md-nav__list" data-md-scrollfix>
+        
+        
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
+        
           
+          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
             
   
+  <span class="md-ellipsis">
+    General Remarks
+  </span>
   
+
+            <span class="md-nav__icon md-icon"></span>
+          </label>
+        
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_3">
+            <span class="md-nav__icon md-icon"></span>
+            General Remarks
+          </label>
+          <ul class="md-nav__list" data-md-scrollfix>
+            
+              
+                
   
+  
+  
+  
     <li class="md-nav__item">
-      <a href="/ft2-preamble.html" class="md-nav__link">
-        Preamble
+      <a href="/freetype2/docs/reference/ft2-preamble.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Preamble
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-header_inclusion.html" class="md-nav__link">
-        FreeType's header inclusion scheme
+      <a href="/freetype2/docs/reference/ft2-header_inclusion.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    FreeType's header inclusion scheme
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-user_allocation.html" class="md-nav__link">
-        User allocation
+      <a href="/freetype2/docs/reference/ft2-user_allocation.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    User allocation
+  </span>
+  
+
       </a>
     </li>
   
 
-          
-        </ul>
-      </nav>
+              
+            
+          </ul>
+        </nav>
+      
     </li>
   
 
@@ -264,138 +334,231 @@
     
       
       
-      
-
   
   
   
+  
     
+    
+    
+    
     <li class="md-nav__item md-nav__item--nested">
       
-      
-        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
-      
-      <label class="md-nav__link" for="__nav_4">
-        Core API
-        <span class="md-nav__icon md-icon"></span>
-      </label>
-      <nav class="md-nav" aria-label="Core API" data-md-level="1">
-        <label class="md-nav__title" for="__nav_4">
-          <span class="md-nav__icon md-icon"></span>
-          Core API
-        </label>
-        <ul class="md-nav__list" data-md-scrollfix>
+        
+        
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
+        
           
+          <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
             
   
+  <span class="md-ellipsis">
+    Core API
+  </span>
   
+
+            <span class="md-nav__icon md-icon"></span>
+          </label>
+        
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_4">
+            <span class="md-nav__icon md-icon"></span>
+            Core API
+          </label>
+          <ul class="md-nav__list" data-md-scrollfix>
+            
+              
+                
   
+  
+  
+  
     <li class="md-nav__item">
-      <a href="/ft2-basic_types.html" class="md-nav__link">
-        Basic Data Types
+      <a href="/freetype2/docs/reference/ft2-basic_types.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Basic Data Types
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-library_setup.html" class="md-nav__link">
-        Library Setup
+      <a href="/freetype2/docs/reference/ft2-library_setup.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Library Setup
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-face_creation.html" class="md-nav__link">
-        Face Creation
+      <a href="/freetype2/docs/reference/ft2-face_creation.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Face Creation
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-font_testing_macros.html" class="md-nav__link">
-        Font Testing Macros
+      <a href="/freetype2/docs/reference/ft2-font_testing_macros.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Font Testing Macros
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-sizing_and_scaling.html" class="md-nav__link">
-        Sizing and Scaling
+      <a href="/freetype2/docs/reference/ft2-sizing_and_scaling.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Sizing and Scaling
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-glyph_retrieval.html" class="md-nav__link">
-        Glyph Retrieval
+      <a href="/freetype2/docs/reference/ft2-glyph_retrieval.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Glyph Retrieval
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-character_mapping.html" class="md-nav__link">
-        Character Mapping
+      <a href="/freetype2/docs/reference/ft2-character_mapping.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Character Mapping
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-information_retrieval.html" class="md-nav__link">
-        Information Retrieval
+      <a href="/freetype2/docs/reference/ft2-information_retrieval.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Information Retrieval
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-other_api_data.html" class="md-nav__link">
-        Other API Data
+      <a href="/freetype2/docs/reference/ft2-other_api_data.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Other API Data
+  </span>
+  
+
       </a>
     </li>
   
 
-          
-        </ul>
-      </nav>
+              
+            
+          </ul>
+        </nav>
+      
     </li>
   
 
@@ -402,114 +565,189 @@
     
       
       
-      
-
   
   
   
+  
     
+    
+    
+    
     <li class="md-nav__item md-nav__item--nested">
       
-      
-        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
-      
-      <label class="md-nav__link" for="__nav_5">
-        Extended API
-        <span class="md-nav__icon md-icon"></span>
-      </label>
-      <nav class="md-nav" aria-label="Extended API" data-md-level="1">
-        <label class="md-nav__title" for="__nav_5">
-          <span class="md-nav__icon md-icon"></span>
-          Extended API
-        </label>
-        <ul class="md-nav__list" data-md-scrollfix>
+        
+        
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
+        
           
+          <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
             
   
+  <span class="md-ellipsis">
+    Extended API
+  </span>
   
+
+            <span class="md-nav__icon md-icon"></span>
+          </label>
+        
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_5">
+            <span class="md-nav__icon md-icon"></span>
+            Extended API
+          </label>
+          <ul class="md-nav__list" data-md-scrollfix>
+            
+              
+                
   
+  
+  
+  
     <li class="md-nav__item">
-      <a href="/ft2-glyph_variants.html" class="md-nav__link">
-        Unicode Variation Sequences
+      <a href="/freetype2/docs/reference/ft2-glyph_variants.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Unicode Variation Sequences
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-color_management.html" class="md-nav__link">
-        Glyph Color Management
+      <a href="/freetype2/docs/reference/ft2-color_management.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Glyph Color Management
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-layer_management.html" class="md-nav__link">
-        Glyph Layer Management
+      <a href="/freetype2/docs/reference/ft2-layer_management.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Glyph Layer Management
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-glyph_management.html" class="md-nav__link">
-        Glyph Management
+      <a href="/freetype2/docs/reference/ft2-glyph_management.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Glyph Management
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-mac_specific.html" class="md-nav__link">
-        Mac Specific Interface
+      <a href="/freetype2/docs/reference/ft2-mac_specific.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Mac Specific Interface
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-sizes_management.html" class="md-nav__link">
-        Size Management
+      <a href="/freetype2/docs/reference/ft2-sizes_management.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Size Management
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-header_file_macros.html" class="md-nav__link">
-        Header File Macros
+      <a href="/freetype2/docs/reference/ft2-header_file_macros.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Header File Macros
+  </span>
+  
+
       </a>
     </li>
   
 
-          
-        </ul>
-      </nav>
+              
+            
+          </ul>
+        </nav>
+      
     </li>
   
 
@@ -516,162 +754,273 @@
     
       
       
-      
-
   
   
   
+  
     
+    
+    
+    
     <li class="md-nav__item md-nav__item--nested">
       
-      
-        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" >
-      
-      <label class="md-nav__link" for="__nav_6">
-        Format-Specific API
-        <span class="md-nav__icon md-icon"></span>
-      </label>
-      <nav class="md-nav" aria-label="Format-Specific API" data-md-level="1">
-        <label class="md-nav__title" for="__nav_6">
-          <span class="md-nav__icon md-icon"></span>
-          Format-Specific API
-        </label>
-        <ul class="md-nav__list" data-md-scrollfix>
+        
+        
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
+        
           
+          <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
             
   
+  <span class="md-ellipsis">
+    Format-Specific API
+  </span>
   
+
+            <span class="md-nav__icon md-icon"></span>
+          </label>
+        
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_6">
+            <span class="md-nav__icon md-icon"></span>
+            Format-Specific API
+          </label>
+          <ul class="md-nav__list" data-md-scrollfix>
+            
+              
+                
   
+  
+  
+  
     <li class="md-nav__item">
-      <a href="/ft2-multiple_masters.html" class="md-nav__link">
-        Multiple Masters
+      <a href="/freetype2/docs/reference/ft2-multiple_masters.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Multiple Masters
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-truetype_tables.html" class="md-nav__link">
-        TrueType Tables
+      <a href="/freetype2/docs/reference/ft2-truetype_tables.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    TrueType Tables
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-type1_tables.html" class="md-nav__link">
-        Type 1 Tables
+      <a href="/freetype2/docs/reference/ft2-type1_tables.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Type 1 Tables
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-sfnt_names.html" class="md-nav__link">
-        SFNT Names
+      <a href="/freetype2/docs/reference/ft2-sfnt_names.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    SFNT Names
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-bdf_fonts.html" class="md-nav__link">
-        BDF and PCF Files
+      <a href="/freetype2/docs/reference/ft2-bdf_fonts.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    BDF and PCF Files
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-cid_fonts.html" class="md-nav__link">
-        CID Fonts
+      <a href="/freetype2/docs/reference/ft2-cid_fonts.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    CID Fonts
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-pfr_fonts.html" class="md-nav__link">
-        PFR Fonts
+      <a href="/freetype2/docs/reference/ft2-pfr_fonts.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    PFR Fonts
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-winfnt_fonts.html" class="md-nav__link">
-        Window FNT Files
+      <a href="/freetype2/docs/reference/ft2-winfnt_fonts.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Window FNT Files
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-svg_fonts.html" class="md-nav__link">
-        OpenType SVG Fonts
+      <a href="/freetype2/docs/reference/ft2-svg_fonts.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    OpenType SVG Fonts
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-font_formats.html" class="md-nav__link">
-        Font Formats
+      <a href="/freetype2/docs/reference/ft2-font_formats.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Font Formats
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-gasp_table.html" class="md-nav__link">
-        Gasp Table
+      <a href="/freetype2/docs/reference/ft2-gasp_table.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Gasp Table
+  </span>
+  
+
       </a>
     </li>
   
 
-          
-        </ul>
-      </nav>
+              
+            
+          </ul>
+        </nav>
+      
     </li>
   
 
@@ -678,138 +1027,231 @@
     
       
       
-      
-
   
   
   
+  
     
+    
+    
+    
     <li class="md-nav__item md-nav__item--nested">
       
-      
-        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" >
-      
-      <label class="md-nav__link" for="__nav_7">
-        Controlling FreeType Modules
-        <span class="md-nav__icon md-icon"></span>
-      </label>
-      <nav class="md-nav" aria-label="Controlling FreeType Modules" data-md-level="1">
-        <label class="md-nav__title" for="__nav_7">
-          <span class="md-nav__icon md-icon"></span>
-          Controlling FreeType Modules
-        </label>
-        <ul class="md-nav__list" data-md-scrollfix>
+        
+        
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
+        
           
+          <label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
             
   
+  <span class="md-ellipsis">
+    Controlling FreeType Modules
+  </span>
   
+
+            <span class="md-nav__icon md-icon"></span>
+          </label>
+        
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_7">
+            <span class="md-nav__icon md-icon"></span>
+            Controlling FreeType Modules
+          </label>
+          <ul class="md-nav__list" data-md-scrollfix>
+            
+              
+                
   
+  
+  
+  
     <li class="md-nav__item">
-      <a href="/ft2-auto_hinter.html" class="md-nav__link">
-        The auto-hinter
+      <a href="/freetype2/docs/reference/ft2-auto_hinter.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    The auto-hinter
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-cff_driver.html" class="md-nav__link">
-        The CFF driver
+      <a href="/freetype2/docs/reference/ft2-cff_driver.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    The CFF driver
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-t1_cid_driver.html" class="md-nav__link">
-        The Type 1 and CID drivers
+      <a href="/freetype2/docs/reference/ft2-t1_cid_driver.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    The Type 1 and CID drivers
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-tt_driver.html" class="md-nav__link">
-        The TrueType driver
+      <a href="/freetype2/docs/reference/ft2-tt_driver.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    The TrueType driver
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-pcf_driver.html" class="md-nav__link">
-        The PCF driver
+      <a href="/freetype2/docs/reference/ft2-pcf_driver.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    The PCF driver
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-ot_svg_driver.html" class="md-nav__link">
-        The SVG driver
+      <a href="/freetype2/docs/reference/ft2-ot_svg_driver.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    The SVG driver
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-properties.html" class="md-nav__link">
-        Driver properties
+      <a href="/freetype2/docs/reference/ft2-properties.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Driver properties
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-parameter_tags.html" class="md-nav__link">
-        Parameter Tags
+      <a href="/freetype2/docs/reference/ft2-parameter_tags.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Parameter Tags
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-lcd_rendering.html" class="md-nav__link">
-        Subpixel Rendering
+      <a href="/freetype2/docs/reference/ft2-lcd_rendering.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Subpixel Rendering
+  </span>
+  
+
       </a>
     </li>
   
 
-          
-        </ul>
-      </nav>
+              
+            
+          </ul>
+        </nav>
+      
     </li>
   
 
@@ -816,42 +1258,63 @@
     
       
       
-      
-
   
   
   
+  
     
+    
+    
+    
     <li class="md-nav__item md-nav__item--nested">
       
-      
-        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_8" type="checkbox" id="__nav_8" >
-      
-      <label class="md-nav__link" for="__nav_8">
-        Cache Sub-System
-        <span class="md-nav__icon md-icon"></span>
-      </label>
-      <nav class="md-nav" aria-label="Cache Sub-System" data-md-level="1">
-        <label class="md-nav__title" for="__nav_8">
-          <span class="md-nav__icon md-icon"></span>
-          Cache Sub-System
-        </label>
-        <ul class="md-nav__list" data-md-scrollfix>
+        
+        
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
+        
           
+          <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
             
   
+  <span class="md-ellipsis">
+    Cache Sub-System
+  </span>
   
+
+            <span class="md-nav__icon md-icon"></span>
+          </label>
+        
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_8">
+            <span class="md-nav__icon md-icon"></span>
+            Cache Sub-System
+          </label>
+          <ul class="md-nav__list" data-md-scrollfix>
+            
+              
+                
   
+  
+  
+  
     <li class="md-nav__item">
-      <a href="/ft2-cache_subsystem.html" class="md-nav__link">
-        Cache Sub-System
+      <a href="/freetype2/docs/reference/ft2-cache_subsystem.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Cache Sub-System
+  </span>
+  
+
       </a>
     </li>
   
 
-          
-        </ul>
-      </nav>
+              
+            
+          </ul>
+        </nav>
+      
     </li>
   
 
@@ -858,186 +1321,315 @@
     
       
       
-      
-
   
   
   
+  
     
+    
+    
+    
     <li class="md-nav__item md-nav__item--nested">
       
-      
-        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_9" type="checkbox" id="__nav_9" >
-      
-      <label class="md-nav__link" for="__nav_9">
-        Support API
-        <span class="md-nav__icon md-icon"></span>
-      </label>
-      <nav class="md-nav" aria-label="Support API" data-md-level="1">
-        <label class="md-nav__title" for="__nav_9">
-          <span class="md-nav__icon md-icon"></span>
-          Support API
-        </label>
-        <ul class="md-nav__list" data-md-scrollfix>
+        
+        
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
+        
           
+          <label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
             
   
+  <span class="md-ellipsis">
+    Support API
+  </span>
   
+
+            <span class="md-nav__icon md-icon"></span>
+          </label>
+        
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_9">
+            <span class="md-nav__icon md-icon"></span>
+            Support API
+          </label>
+          <ul class="md-nav__list" data-md-scrollfix>
+            
+              
+                
   
+  
+  
+  
     <li class="md-nav__item">
-      <a href="/ft2-computations.html" class="md-nav__link">
-        Computations
+      <a href="/freetype2/docs/reference/ft2-computations.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Computations
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-list_processing.html" class="md-nav__link">
-        List Processing
+      <a href="/freetype2/docs/reference/ft2-list_processing.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    List Processing
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-outline_processing.html" class="md-nav__link">
-        Outline Processing
+      <a href="/freetype2/docs/reference/ft2-outline_processing.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Outline Processing
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-quick_advance.html" class="md-nav__link">
-        Quick retrieval of advance values
+      <a href="/freetype2/docs/reference/ft2-quick_advance.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Quick retrieval of advance values
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-bitmap_handling.html" class="md-nav__link">
-        Bitmap Handling
+      <a href="/freetype2/docs/reference/ft2-bitmap_handling.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Bitmap Handling
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-raster.html" class="md-nav__link">
-        Scanline Converter
+      <a href="/freetype2/docs/reference/ft2-raster.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Scanline Converter
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-glyph_stroker.html" class="md-nav__link">
-        Glyph Stroker
+      <a href="/freetype2/docs/reference/ft2-glyph_stroker.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Glyph Stroker
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-system_interface.html" class="md-nav__link">
-        System Interface
+      <a href="/freetype2/docs/reference/ft2-system_interface.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    System Interface
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-module_management.html" class="md-nav__link">
-        Module Management
+      <a href="/freetype2/docs/reference/ft2-module_management.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Module Management
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-gzip.html" class="md-nav__link">
-        GZIP Streams
+      <a href="/freetype2/docs/reference/ft2-gzip.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    GZIP Streams
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-lzw.html" class="md-nav__link">
-        LZW Streams
+      <a href="/freetype2/docs/reference/ft2-lzw.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    LZW Streams
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-bzip2.html" class="md-nav__link">
-        BZIP2 Streams
+      <a href="/freetype2/docs/reference/ft2-bzip2.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    BZIP2 Streams
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-debugging_apis.html" class="md-nav__link">
-        External Debugging APIs
+      <a href="/freetype2/docs/reference/ft2-debugging_apis.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    External Debugging APIs
+  </span>
+  
+
       </a>
     </li>
   
 
-          
-        </ul>
-      </nav>
+              
+            
+          </ul>
+        </nav>
+      
     </li>
   
 
@@ -1044,54 +1636,84 @@
     
       
       
-      
-
   
   
   
+  
     
+    
+    
+    
     <li class="md-nav__item md-nav__item--nested">
       
-      
-        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_10" type="checkbox" id="__nav_10" >
-      
-      <label class="md-nav__link" for="__nav_10">
-        Error Codes
-        <span class="md-nav__icon md-icon"></span>
-      </label>
-      <nav class="md-nav" aria-label="Error Codes" data-md-level="1">
-        <label class="md-nav__title" for="__nav_10">
-          <span class="md-nav__icon md-icon"></span>
-          Error Codes
-        </label>
-        <ul class="md-nav__list" data-md-scrollfix>
+        
+        
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
+        
           
+          <label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
             
   
+  <span class="md-ellipsis">
+    Error Codes
+  </span>
   
+
+            <span class="md-nav__icon md-icon"></span>
+          </label>
+        
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_10">
+            <span class="md-nav__icon md-icon"></span>
+            Error Codes
+          </label>
+          <ul class="md-nav__list" data-md-scrollfix>
+            
+              
+                
   
+  
+  
+  
     <li class="md-nav__item">
-      <a href="/ft2-error_enumerations.html" class="md-nav__link">
-        Error Enumerations
+      <a href="/freetype2/docs/reference/ft2-error_enumerations.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Error Enumerations
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-error_code_values.html" class="md-nav__link">
-        Error Code Values
+      <a href="/freetype2/docs/reference/ft2-error_code_values.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Error Code Values
+  </span>
+  
+
       </a>
     </li>
   
 
-          
-        </ul>
-      </nav>
+              
+            
+          </ul>
+        </nav>
+      
     </li>
   
 
@@ -1098,78 +1720,126 @@
     
       
       
-      
-
   
   
   
+  
     
+    
+    
+    
     <li class="md-nav__item md-nav__item--nested">
       
-      
-        <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_11" type="checkbox" id="__nav_11" >
-      
-      <label class="md-nav__link" for="__nav_11">
-        Miscellaneous
-        <span class="md-nav__icon md-icon"></span>
-      </label>
-      <nav class="md-nav" aria-label="Miscellaneous" data-md-level="1">
-        <label class="md-nav__title" for="__nav_11">
-          <span class="md-nav__icon md-icon"></span>
-          Miscellaneous
-        </label>
-        <ul class="md-nav__list" data-md-scrollfix>
+        
+        
+        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_11" >
+        
           
+          <label class="md-nav__link" for="__nav_11" id="__nav_11_label" tabindex="0">
             
   
+  <span class="md-ellipsis">
+    Miscellaneous
+  </span>
   
+
+            <span class="md-nav__icon md-icon"></span>
+          </label>
+        
+        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_11_label" aria-expanded="false">
+          <label class="md-nav__title" for="__nav_11">
+            <span class="md-nav__icon md-icon"></span>
+            Miscellaneous
+          </label>
+          <ul class="md-nav__list" data-md-scrollfix>
+            
+              
+                
   
+  
+  
+  
     <li class="md-nav__item">
-      <a href="/ft2-gx_validation.html" class="md-nav__link">
-        TrueTypeGX/AAT Validation
+      <a href="/freetype2/docs/reference/ft2-gx_validation.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    TrueTypeGX/AAT Validation
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-incremental.html" class="md-nav__link">
-        Incremental Loading
+      <a href="/freetype2/docs/reference/ft2-incremental.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    Incremental Loading
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-truetype_engine.html" class="md-nav__link">
-        The TrueType Engine
+      <a href="/freetype2/docs/reference/ft2-truetype_engine.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    The TrueType Engine
+  </span>
+  
+
       </a>
     </li>
   
 
-          
+              
             
+              
+                
   
   
   
+  
     <li class="md-nav__item">
-      <a href="/ft2-ot_validation.html" class="md-nav__link">
-        OpenType Validation
+      <a href="/freetype2/docs/reference/ft2-ot_validation.html" class="md-nav__link">
+        
+  
+  <span class="md-ellipsis">
+    OpenType Validation
+  </span>
+  
+
       </a>
     </li>
   
 
-          
-        </ul>
-      </nav>
+              
+            
+          </ul>
+        </nav>
+      
     </li>
   
 
@@ -1181,36 +1851,55 @@
               </div>
             
             
+              
+              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
+                <div class="md-sidebar__scrollwrap">
+                  <div class="md-sidebar__inner">
+                    
+
+<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
+  
+  
+  
+  
+</nav>
+                  </div>
+                </div>
+              </div>
+            
           
-          <div class="md-content" data-md-component="content">
-            <article class="md-content__inner md-typeset">
-              
+          
+            <div class="md-content" data-md-component="content">
+              <article class="md-content__inner md-typeset">
+                
   <h1>404 - Not found</h1>
 
-              
-            </article>
-          </div>
+              </article>
+            </div>
+          
+          
+<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
         </div>
         
       </main>
       
-        
-<footer class="md-footer">
+        <footer class="md-footer">
   
   <div class="md-footer-meta md-typeset">
     <div class="md-footer-meta__inner md-grid">
-      <div class="md-footer-copyright">
-        
-          <div class="md-footer-copyright__highlight">
-            Copyright 2023 <a href = "https://www.freetype.org/license.html">The FreeType Project</a>.
-          </div>
-        
-        Made with
-        <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
-          Material for MkDocs
-        </a>
-        
-      </div>
+      <div class="md-copyright">
+  
+    <div class="md-copyright__highlight">
+      Copyright 2024 <a href = "https://www.freetype.org/license.html">The FreeType Project</a>.
+    </div>
+  
+  
+    Made with
+    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
+      Material for MkDocs
+    </a>
+  
+</div>
       
     </div>
   </div>
@@ -1220,12 +1909,14 @@
     <div class="md-dialog" data-md-component="dialog">
       <div class="md-dialog__inner md-typeset"></div>
     </div>
-    <script id="__config" type="application/json">{"base": "/", "features": [], "search": "/assets/javascripts/workers/search.477d984a.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version.title": "Select version"}, "version": null}</script>
     
     
-      <script src="/assets/javascripts/bundle.82b56eb2.min.js"></script>
+    <script id="__config" type="application/json">{"base": "/freetype2/docs/reference/", "features": [], "search": "/freetype2/docs/reference/assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
+    
+    
+      <script src="/freetype2/docs/reference/assets/javascripts/bundle.fe8b6f2b.min.js"></script>
       
-        <script src="/javascripts/extra.js"></script>
+        <script src="/freetype2/docs/reference/javascripts/extra.js"></script>
       
     
   </body>

Deleted: trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/bundle.82b56eb2.min.js
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/bundle.82b56eb2.min.js	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/bundle.82b56eb2.min.js	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,29 +0,0 @@
-(()=>{var zi=Object.create;var dt=Object.defineProperty;var qi=Object.getOwnPropertyDescriptor;var Qi=Object.getOwnPropertyNames,ht=Object.getOwnPropertySymbols,Ki=Object.getPrototypeOf,tr=Object.prototype.hasOwnProperty,Wr=Object.prototype.propertyIsEnumerable;var Ur=(e,t,r)=>t in e?dt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,$=(e,t)=>{for(var r in t||(t={}))tr.call(t,r)&&Ur(e,r,t[r]);if(ht)for(var r of ht(t))Wr.call(t,r)&&Ur(e,r,t[r]);return e};var Bi=e=>dt(e,"__esModule",{value:!0});var Dr=(e,t)=>{var r={};for(var o in e)tr.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&ht)for(var o of ht(e))t.indexOf(o)<0&&Wr.call(e,o)&&(r[o]=e[o]);return r};var bt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Ji=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Qi(t))!tr.call(e,o)&&o!=="default"&&dt(e,o,{get:()=>t[o],enumerable:!(r=qi(t,o))||r.enumerable});return e},tt=e=>Ji(Bi(dt(e!=null?zi(Ki(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var zr=bt((rr,Nr)=>{(function(e,t){typeof rr=="object"&&typeof Nr!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(rr,function(){"use strict";function e(r){var o=!0,n=!1,i=null,a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function s(w){return!!(w&&w!==document&&w.nodeName!=="HTML"&&w.nodeName!=="BODY"&&"classList"in w&&"contains"in w.classList)}function c(w){var Fe=w.type,Se=w.tagName;return!!(Se==="INPUT"&&a[Fe]&&!w.readOnly||Se==="TEXTAREA"&&!w.readOnly||w.isContentEditable)}function l(w){w.classList.contains("focus-visible")||(w.classList.add("focus-visible"),w.setAttribute("data-focus-visible-added",""))}function u(w){!w.hasAttribute("data-focus-visible-added")||(w.classList.remove("focus-visible"),w.removeAttribute("data-focus-visible-added"))}function m(w){w.metaKey||w.altKey||w.ctrlKey||(s(r.activeElement)&&l(r.activeElement),o=!0)}function p!
 (w){o=!1}function b(w){!s(w.target)||(o||c(w.target))&&l(w.target)}function g(w){!s(w.target)||(w.target.classList.contains("focus-visible")||w.target.hasAttribute("data-focus-visible-added"))&&(n=!0,window.clearTimeout(i),i=window.setTimeout(function(){n=!1},100),u(w.target))}function h(w){document.visibilityState==="hidden"&&(n&&(o=!0),W())}function W(){document.addEventListener("mousemove",j),document.addEventListener("mousedown",j),document.addEventListener("mouseup",j),document.addEventListener("pointermove",j),document.addEventListener("pointerdown",j),document.addEventListener("pointerup",j),document.addEventListener("touchmove",j),document.addEventListener("touchstart",j),document.addEventListener("touchend",j)}function q(){document.removeEventListener("mousemove",j),document.removeEventListener("mousedown",j),document.removeEventListener("mouseup",j),document.removeEventListener("pointermove",j),document.removeEventListener("pointerdown",j),document.removeEventListener("pointerup",j),document.removeEventListener("touchmove",j),document.removeEventListener("touchstart",j),document.removeEventListener("touchend",j)}function j(w){w.target.nodeName&&w.target.nodeName.toLowerCase()==="html"||(o=!1,q())}document.addEventListener("keydown",m,!0),document.addEventListener("mousedown",p,!0),document.addEventListener("pointerdown",p,!0),document.addEventListener("touchstart",p,!0),document.addEventListener("visibilitychange",h,!0),W(),r.addEventListener("focus",b,!0),r.addEventListener("blur",g,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}windo!
 w.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var po=bt((Xa,xt)=>{/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */var qr,Qr,Kr,Br,Jr,Yr,Gr,Xr,Zr,vt,or,eo,to,ro,De,oo,no,io,ao,so,co,lo,uo,gt;(function(e){var t=typeof global=="object"?global:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(o){e(r(t,r(o)))}):typeof xt=="object"&&typeof xt.exports=="object"?e(r(t,r(xt.exports))):e(r(t));function r(o,n){return o!==t&&(typeof Object.create=="function"?Object.defineProperty(o,"__esModule",{value:!0}):o.__esModule=!0),function(i,a){return o[i]=n?n(i,a):a}}})(function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,n){o.__proto__=n}||function(o,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(o[i]=n[i])};qr=function(o,n){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");t(o,n);function i(){this.constructor=o}o.prototype=n===null?Object.create(n):(i.prototype=n.prototype,new i)},Qr=Object.assign||function(o){for(var n,i=1,a=arguments.length;i<a;i++){n=arguments[i];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(o[s]=n[s])}return o},Kr=function(o,n){var i={};for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&n.indexOf(a)<0&&(i[a]=o[a]);if(o!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,a=Object.getOwnPropertySymbols(o);s<a.length;s++)n.indexOf(a[s])<0&&Object.prototype.propertyIsEnumerable.call(o,a[s])&&(i[a[s]]=o[a[s]]);return i},Br=function(o,n,i,a){var s=arguments.length,c=s<3?n:a===null?a=Object.getOwnPropertyDescriptor(n,i):a,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")c=Reflect.decorate(o,n,i,a);else for(var u=o.length-1;u>=0;u--)(l=o[u])&&(c=(s<3?l(c):s>3?l(n,i,c):l(n,i))||c);return s>3&&c&&Object.defineProperty(n,i,c),c},Jr=function(o,n){return function(i,a){n(i,a,o)}},Yr=function(o,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,n)},Gr=function!
 (o,n,i,a){function s(c){return c instanceof i?c:new i(function(l){l(c)})}return new(i||(i=Promise))(function(c,l){function u(b){try{p(a.next(b))}catch(g){l(g)}}function m(b){try{p(a.throw(b))}catch(g){l(g)}}function p(b){b.done?c(b.value):s(b.value).then(u,m)}p((a=a.apply(o,n||[])).next())})},Xr=function(o,n){var i={label:0,sent:function(){if(c[0]&1)throw c[1];return c[1]},trys:[],ops:[]},a,s,c,l;return l={next:u(0),throw:u(1),return:u(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function u(p){return function(b){return m([p,b])}}function m(p){if(a)throw new TypeError("Generator is already executing.");for(;i;)try{if(a=1,s&&(c=p[0]&2?s.return:p[0]?s.throw||((c=s.return)&&c.call(s),0):s.next)&&!(c=c.call(s,p[1])).done)return c;switch(s=0,c&&(p=[p[0]&2,c.value]),p[0]){case 0:case 1:c=p;break;case 4:return i.label++,{value:p[1],done:!1};case 5:i.label++,s=p[1],p=[0];continue;case 7:p=i.ops.pop(),i.trys.pop();continue;default:if(c=i.trys,!(c=c.length>0&&c[c.length-1])&&(p[0]===6||p[0]===2)){i=0;continue}if(p[0]===3&&(!c||p[1]>c[0]&&p[1]<c[3])){i.label=p[1];break}if(p[0]===6&&i.label<c[1]){i.label=c[1],c=p;break}if(c&&i.label<c[2]){i.label=c[2],i.ops.push(p);break}c[2]&&i.ops.pop(),i.trys.pop();continue}p=n.call(o,i)}catch(b){p=[6,b],s=0}finally{a=c=0}if(p[0]&5)throw p[1];return{value:p[0]?p[1]:void 0,done:!0}}},Zr=function(o,n){for(var i in o)i!=="default"&&!Object.prototype.hasOwnProperty.call(n,i)&&gt(n,o,i)},gt=Object.create?function(o,n,i,a){a===void 0&&(a=i),Object.defineProperty(o,a,{enumerable:!0,get:function(){return n[i]}})}:function(o,n,i,a){a===void 0&&(a=i),o[a]=n[i]},vt=function(o){var n=typeof Symbol=="function"&&Symbol.iterator,i=n&&o[n],a=0;if(i)return i.call(o);if(o&&typeof o.length=="number")return{next:function(){return o&&a>=o.length&&(o=void 0),{value:o&&o[a++],done:!o}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")},or=function(o,n){var i=typeof Symbol=="function"&&o[Symbol.iterator];if(!i)return o;var a=i.call(o),s,c=[],l;tr!
 y{for(;(n===void 0||n-- >0)&&!(s=a.next()).done;)c.push(s.value)}catch(u){l={error:u}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(l)throw l.error}}return c},eo=function(){for(var o=[],n=0;n<arguments.length;n++)o=o.concat(or(arguments[n]));return o},to=function(){for(var o=0,n=0,i=arguments.length;n<i;n++)o+=arguments[n].length;for(var a=Array(o),s=0,n=0;n<i;n++)for(var c=arguments[n],l=0,u=c.length;l<u;l++,s++)a[s]=c[l];return a},ro=function(o,n){for(var i=0,a=n.length,s=o.length;i<a;i++,s++)o[s]=n[i];return o},De=function(o){return this instanceof De?(this.v=o,this):new De(o)},oo=function(o,n,i){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var a=i.apply(o,n||[]),s,c=[];return s={},l("next"),l("throw"),l("return"),s[Symbol.asyncIterator]=function(){return this},s;function l(h){a[h]&&(s[h]=function(W){return new Promise(function(q,j){c.push([h,W,q,j])>1||u(h,W)})})}function u(h,W){try{m(a[h](W))}catch(q){g(c[0][3],q)}}function m(h){h.value instanceof De?Promise.resolve(h.value.v).then(p,b):g(c[0][2],h)}function p(h){u("next",h)}function b(h){u("throw",h)}function g(h,W){h(W),c.shift(),c.length&&u(c[0][0],c[0][1])}},no=function(o){var n,i;return n={},a("next"),a("throw",function(s){throw s}),a("return"),n[Symbol.iterator]=function(){return this},n;function a(s,c){n[s]=o[s]?function(l){return(i=!i)?{value:De(o[s](l)),done:s==="return"}:c?c(l):l}:c}},io=function(o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=o[Symbol.asyncIterator],i;return n?n.call(o):(o=typeof vt=="function"?vt(o):o[Symbol.iterator](),i={},a("next"),a("throw"),a("return"),i[Symbol.asyncIterator]=function(){return this},i);function a(c){i[c]=o[c]&&function(l){return new Promise(function(u,m){l=o[c](l),s(u,m,l.done,l.value)})}}function s(c,l,u,m){Promise.resolve(m).then(function(p){c({value:p,done:u})},l)}},ao=function(o,n){return Object.defineProperty?Object.defineProperty(o,"raw",{value:n}):o.raw=n,o};var r=Object.create?function(o,n){Object.defi!
 neProperty(o,"default",{enumerable:!0,value:n})}:function(o,n){o.default=n};so=function(o){if(o&&o.__esModule)return o;var n={};if(o!=null)for(var i in o)i!=="default"&&Object.prototype.hasOwnProperty.call(o,i)&&gt(n,o,i);return r(n,o),n},co=function(o){return o&&o.__esModule?o:{default:o}},lo=function(o,n){if(!n.has(o))throw new TypeError("attempted to get private field on non-instance");return n.get(o)},uo=function(o,n,i){if(!n.has(o))throw new TypeError("attempted to set private field on non-instance");return n.set(o,i),i},e("__extends",qr),e("__assign",Qr),e("__rest",Kr),e("__decorate",Br),e("__param",Jr),e("__metadata",Yr),e("__awaiter",Gr),e("__generator",Xr),e("__exportStar",Zr),e("__createBinding",gt),e("__values",vt),e("__read",or),e("__spread",eo),e("__spreadArrays",to),e("__spreadArray",ro),e("__await",De),e("__asyncGenerator",oo),e("__asyncDelegator",no),e("__asyncValues",io),e("__makeTemplateObject",ao),e("__importStar",so),e("__importDefault",co),e("__classPrivateFieldGet",lo),e("__classPrivateFieldSet",uo)})});var Lr=bt((ft,Ar)=>{/*!
- * clipboard.js v2.0.8
- * https://clipboardjs.com/
- *
- * Licensed MIT © Zeno Rocha
- */(function(t,r){typeof ft=="object"&&typeof Ar=="object"?Ar.exports=r():typeof define=="function"&&define.amd?define([],r):typeof ft=="object"?ft.ClipboardJS=r():t.ClipboardJS=r()})(ft,function(){return function(){var e={134:function(o,n,i){"use strict";i.d(n,{default:function(){return Di}});var a=i(279),s=i.n(a),c=i(370),l=i.n(c),u=i(817),m=i.n(u);function p(O){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?p=function(d){return typeof d}:p=function(d){return d&&typeof Symbol=="function"&&d.constructor===Symbol&&d!==Symbol.prototype?"symbol":typeof d},p(O)}function b(O,v){if(!(O instanceof v))throw new TypeError("Cannot call a class as a function")}function g(O,v){for(var d=0;d<v.length;d++){var A=v[d];A.enumerable=A.enumerable||!1,A.configurable=!0,"value"in A&&(A.writable=!0),Object.defineProperty(O,A.key,A)}}function h(O,v,d){return v&&g(O.prototype,v),d&&g(O,d),O}var W=function(){function O(v){b(this,O),this.resolveOptions(v),this.initSelection()}return h(O,[{key:"resolveOptions",value:function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.action=d.action,this.container=d.container,this.emitter=d.emitter,this.target=d.target,this.text=d.text,this.trigger=d.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"createFakeElement",value:function(){var d=document.documentElement.getAttribute("dir")==="rtl";this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[d?"right":"left"]="-9999px";var A=window.pageYOffset||document.documentElement.scrollTop;return this.fakeElem.style.top="".concat(A,"px"),this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.fakeElem}},{key:"selectFake",value:function(){var d=this,A=this.createFakeElement();this.fakeHandlerCallback=function(){retur!
 n d.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.container.appendChild(A),this.selectedText=m()(A),this.copyText(),this.removeFake()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=m()(this.target),this.copyText()}},{key:"copyText",value:function(){var d;try{d=document.execCommand(this.action)}catch(A){d=!1}this.handleResult(d)}},{key:"handleResult",value:function(d){this.emitter.emit(d?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),document.activeElement.blur(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"copy";if(this._action=d,this._action!=="copy"&&this._action!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(d){if(d!==void 0)if(d&&p(d)==="object"&&d.nodeType===1){if(this.action==="copy"&&d.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(this.action==="cut"&&(d.hasAttribute("readonly")||d.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`);this._target=d}else throw new Error('Invalid "target" value, use a valid Element')},get:function(){return this._target}}]),O}(),q=W;function j(O){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?j=function(d){return typeof d}:j=function(d){return d&&typeof Symbol=="function"&&d!
 .constructor===Symbol&&d!==Symbol.prototype?"symbol":typeof d},j(O)}function w(O,v){if(!(O instanceof v))throw new TypeError("Cannot call a class as a function")}function Fe(O,v){for(var d=0;d<v.length;d++){var A=v[d];A.enumerable=A.enumerable||!1,A.configurable=!0,"value"in A&&(A.writable=!0),Object.defineProperty(O,A.key,A)}}function Se(O,v,d){return v&&Fe(O.prototype,v),d&&Fe(O,d),O}function Ue(O,v){if(typeof v!="function"&&v!==null)throw new TypeError("Super expression must either be null or a function");O.prototype=Object.create(v&&v.prototype,{constructor:{value:O,writable:!0,configurable:!0}}),v&&Zt(O,v)}function Zt(O,v){return Zt=Object.setPrototypeOf||function(A,R){return A.__proto__=R,A},Zt(O,v)}function Pi(O){var v=Wi();return function(){var A=mt(O),R;if(v){var X=mt(this).constructor;R=Reflect.construct(A,arguments,X)}else R=A.apply(this,arguments);return $i(this,R)}}function $i(O,v){return v&&(j(v)==="object"||typeof v=="function")?v:Vi(O)}function Vi(O){if(O===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return O}function Wi(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(O){return!1}}function mt(O){return mt=Object.setPrototypeOf?Object.getPrototypeOf:function(d){return d.__proto__||Object.getPrototypeOf(d)},mt(O)}function er(O,v){var d="data-clipboard-".concat(O);if(!!v.hasAttribute(d))return v.getAttribute(d)}var Ui=function(O){Ue(d,O);var v=Pi(d);function d(A,R){var X;return w(this,d),X=v.call(this),X.resolveOptions(R),X.listenClick(A),X}return Se(d,[{key:"resolveOptions",value:function(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof R.action=="function"?R.action:this.defaultAction,this.target=typeof R.target=="function"?R.target:this.defaultTarget,this.text=typeof R.text=="function"?R.text:this.defaultText,this.container=j(R.container)==="object"?R.!
 container:document.body}},{key:"listenClick",value:function(R){var X=this;this.listener=l()(R,"click",function(et){return X.onClick(et)})}},{key:"onClick",value:function(R){var X=R.delegateTarget||R.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new q({action:this.action(X),target:this.target(X),text:this.text(X),container:this.container,trigger:X,emitter:this})}},{key:"defaultAction",value:function(R){return er("action",R)}},{key:"defaultTarget",value:function(R){var X=er("target",R);if(X)return document.querySelector(X)}},{key:"defaultText",value:function(R){return er("text",R)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],X=typeof R=="string"?[R]:R,et=!!document.queryCommandSupported;return X.forEach(function(Ni){et=et&&!!document.queryCommandSupported(Ni)}),et}}]),d}(s()),Di=Ui},828:function(o){var n=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function a(s,c){for(;s&&s.nodeType!==n;){if(typeof s.matches=="function"&&s.matches(c))return s;s=s.parentNode}}o.exports=a},438:function(o,n,i){var a=i(828);function s(u,m,p,b,g){var h=l.apply(this,arguments);return u.addEventListener(p,h,g),{destroy:function(){u.removeEventListener(p,h,g)}}}function c(u,m,p,b,g){return typeof u.addEventListener=="function"?s.apply(null,arguments):typeof p=="function"?s.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(h){return s(h,m,p,b,g)}))}function l(u,m,p,b){return function(g){g.delegateTarget=a(g.target,m),g.delegateTarget&&b.call(u,g)}}o.exports=c},879:function(o,n){n.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},n.no!
 deList=function(i){var a=Object.prototype.toString.call(i);return i!==void 0&&(a==="[object NodeList]"||a==="[object HTMLCollection]")&&"length"in i&&(i.length===0||n.node(i[0]))},n.string=function(i){return typeof i=="string"||i instanceof String},n.fn=function(i){var a=Object.prototype.toString.call(i);return a==="[object Function]"}},370:function(o,n,i){var a=i(879),s=i(438);function c(p,b,g){if(!p&&!b&&!g)throw new Error("Missing required arguments");if(!a.string(b))throw new TypeError("Second argument must be a String");if(!a.fn(g))throw new TypeError("Third argument must be a Function");if(a.node(p))return l(p,b,g);if(a.nodeList(p))return u(p,b,g);if(a.string(p))return m(p,b,g);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function l(p,b,g){return p.addEventListener(b,g),{destroy:function(){p.removeEventListener(b,g)}}}function u(p,b,g){return Array.prototype.forEach.call(p,function(h){h.addEventListener(b,g)}),{destroy:function(){Array.prototype.forEach.call(p,function(h){h.removeEventListener(b,g)})}}}function m(p,b,g){return s(document.body,p,b,g)}o.exports=c},817:function(o){function n(i){var a;if(i.nodeName==="SELECT")i.focus(),a=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var s=i.hasAttribute("readonly");s||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),s||i.removeAttribute("readonly"),a=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var c=window.getSelection(),l=document.createRange();l.selectNodeContents(i),c.removeAllRanges(),c.addRange(l),a=c.toString()}return a}o.exports=n},279:function(o){function n(){}n.prototype={on:function(i,a,s){var c=this.e||(this.e={});return(c[i]||(c[i]=[])).push({fn:a,ctx:s}),this},once:function(i,a,s){var c=this;function l(){c.off(i,l),a.apply(s,arguments)}return l._=a,this.on(i,l,s)},emit:function(i){var a=[].slice.call(arguments,1),s=((this.e||(this.e={}))[i]||[]).slice(),c=0,l=s.length;for(c;c<l;c++)s[c].fn.apply(s[c].ctx,a);return this},off:function(i,a!
 ){var s=this.e||(this.e={}),c=s[i],l=[];if(c&&a)for(var u=0,m=c.length;u<m;u++)c[u].fn!==a&&c[u].fn._!==a&&l.push(c[u]);return l.length?s[i]=l:delete s[i],this}},o.exports=n,o.exports.TinyEmitter=n}},t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={exports:{}};return e[o](n,n.exports,r),n.exports}return function(){r.n=function(o){var n=o&&o.__esModule?function(){return o.default}:function(){return o};return r.d(n,{a:n}),n}}(),function(){r.d=function(o,n){for(var i in n)r.o(n,i)&&!r.o(o,i)&&Object.defineProperty(o,i,{enumerable:!0,get:n[i]})}}(),function(){r.o=function(o,n){return Object.prototype.hasOwnProperty.call(o,n)}}(),r(134)}().default})});var di=bt((Fx,mi)=>{/*!
- * escape-html
- * Copyright(c) 2012-2013 TJ Holowaychuk
- * Copyright(c) 2015 Andreas Lubbe
- * Copyright(c) 2015 Tiancheng "Timothy" Gu
- * MIT Licensed
- */"use strict";var Ia=/["'&<>]/;mi.exports=Pa;function Pa(e){var t=""+e,r=Ia.exec(t);if(!r)return t;var o,n="",i=0,a=0;for(i=r.index;i<t.length;i++){switch(t.charCodeAt(i)){case 34:o=""";break;case 38:o="&";break;case 39:o="'";break;case 60:o="<";break;case 62:o=">";break;default:continue}a!==i&&(n+=t.substring(a,i)),a=i+1,n+=o}return a!==i?n+t.substring(a,i):n}});var Bw=tt(zr());var fo=tt(po()),{__extends:B,__assign:Za,__rest:es,__decorate:ts,__param:rs,__metadata:os,__awaiter:mo,__generator:yt,__exportStar:ns,__createBinding:is,__values:ce,__read:L,__spread:as,__spreadArrays:ss,__spreadArray:C,__await:St,__asyncGenerator:ho,__asyncDelegator:cs,__asyncValues:bo,__makeTemplateObject:ls,__importStar:us,__importDefault:ps,__classPrivateFieldGet:fs,__classPrivateFieldSet:ms}=fo.default;function S(e){return typeof e=="function"}function wt(e){var t=function(o){Error.call(o),o.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var Et=wt(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription:
-`+r.map(function(o,n){return n+1+") "+o.toString()}).join(`
-  `):"",this.name="UnsubscriptionError",this.errors=r}});function we(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var ie=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._teardowns=null}return e.prototype.unsubscribe=function(){var t,r,o,n,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var s=ce(a),c=s.next();!c.done;c=s.next()){var l=c.value;l.remove(this)}}catch(h){t={error:h}}finally{try{c&&!c.done&&(r=s.return)&&r.call(s)}finally{if(t)throw t.error}}else a.remove(this);var u=this.initialTeardown;if(S(u))try{u()}catch(h){i=h instanceof Et?h.errors:[h]}var m=this._teardowns;if(m){this._teardowns=null;try{for(var p=ce(m),b=p.next();!b.done;b=p.next()){var g=b.value;try{vo(g)}catch(h){i=i!=null?i:[],h instanceof Et?i=C(C([],L(i)),L(h.errors)):i.push(h)}}}catch(h){o={error:h}}finally{try{b&&!b.done&&(n=p.return)&&n.call(p)}finally{if(o)throw o.error}}}if(i)throw new Et(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)vo(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._teardowns=(r=this._teardowns)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&we(r,t)},e.prototype.remove=function(t){var r=this._teardowns;r&&we(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var nr=ie.EMPTY;function Ot(e){return e instanceof ie||e&&"closed"in e&&S(e.remove)&&S(e.add)&&S(e.unsubscribe)}function vo(e){S(e)?e():e.unsubscribe()}var Ee={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var Ne={setTimeout:function(){!
 for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=Ne.delegate;return((r==null?void 0:r.setTimeout)||setTimeout).apply(void 0,C([],L(e)))},clearTimeout:function(e){var t=Ne.delegate;return((t==null?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0};function Tt(e){Ne.setTimeout(function(){var t=Ee.onUnhandledError;if(t)t(e);else throw e})}function ee(){}var go=function(){return ir("C",void 0,void 0)}();function xo(e){return ir("E",void 0,e)}function yo(e){return ir("N",e,void 0)}function ir(e,t,r){return{kind:e,value:t,error:r}}var rt=function(e){B(t,e);function t(r){var o=e.call(this)||this;return o.isStopped=!1,r?(o.destination=r,Ot(r)&&r.add(o)):o.destination=Yi,o}return t.create=function(r,o,n){return new ot(r,o,n)},t.prototype.next=function(r){this.isStopped?sr(yo(r),this):this._next(r)},t.prototype.error=function(r){this.isStopped?sr(xo(r),this):(this.isStopped=!0,this._error(r))},t.prototype.complete=function(){this.isStopped?sr(go,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(r){this.destination.next(r)},t.prototype._error=function(r){try{this.destination.error(r)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(ie);var ot=function(e){B(t,e);function t(r,o,n){var i=e.call(this)||this,a;if(S(r))a=r;else if(r){a=r.next,o=r.error,n=r.complete;var s;i&&Ee.useDeprecatedNextContext?(s=Object.create(r),s.unsubscribe=function(){return i.unsubscribe()}):s=r,a=a==null?void 0:a.bind(s),o=o==null?void 0:o.bind(s),n=n==null?void 0:n.bind(s)}return i.destination={next:a?ar(a,i):ee,error:ar(o!=null?o:So,i),complete:n?ar(n,i):ee},i}return t}(rt);function ar(e,t){return function(){for(var r=[],o=0;o<arguments.length;o++)r[o]=arguments[o];try{e.apply(void 0,C([],L(r)))}catch(n){if(Ee.useDeprecatedSynchronousErrorHandling)if(t._syncErrorHack_isSubscribing)t.__syncError=n;else thr!
 ow n;else Tt(n)}}}function So(e){throw e}function sr(e,t){var r=Ee.onStoppedNotification;r&&Ne.setTimeout(function(){return r(e,t)})}var Yi={closed:!0,next:ee,error:So,complete:ee};var Me=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}();function le(e){return e}function wo(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return cr(e)}function cr(e){return e.length===0?le:e.length===1?e[0]:function(r){return e.reduce(function(o,n){return n(o)},r)}}var _=function(){function e(t){t&&(this._subscribe=t)}return e.prototype.lift=function(t){var r=new e;return r.source=this,r.operator=t,r},e.prototype.subscribe=function(t,r,o){var n=Xi(t)?t:new ot(t,r,o);if(Ee.useDeprecatedSynchronousErrorHandling)this._deprecatedSyncErrorSubscribe(n);else{var i=this,a=i.operator,s=i.source;n.add(a?a.call(n,s):s?this._subscribe(n):this._trySubscribe(n))}return n},e.prototype._deprecatedSyncErrorSubscribe=function(t){var r=t;r._syncErrorHack_isSubscribing=!0;var o=this.operator;if(o)t.add(o.call(t,this.source));else try{t.add(this._subscribe(t))}catch(i){r.__syncError=i}for(var n=r;n;){if("__syncError"in n)try{throw n.__syncError}finally{t.unsubscribe()}n=n.destination}r._syncErrorHack_isSubscribing=!1},e.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(r){t.error(r)}},e.prototype.forEach=function(t,r){var o=this;return r=Eo(r),new r(function(n,i){var a;a=o.subscribe(function(s){try{t(s)}catch(c){i(c),a==null||a.unsubscribe()}},i,n)})},e.prototype._subscribe=function(t){var r;return(r=this.source)===null||r===void 0?void 0:r.subscribe(t)},e.prototype[Me]=function(){return this},e.prototype.pipe=function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return t.length?cr(t)(this):this},e.prototype.toPromise=function(t){var r=this;return t=Eo(t),new t(function(o,n){var i;r.subscribe(function(a){return i=a},function(a){return n(a)},function(){return o(i)})})},e.create=function(t){return new e(t)},e}();function Eo(e){var t;return(t=e!=null?e:Ee.Promise)!==null&&t!=!
 =void 0?t:Promise}function Gi(e){return e&&S(e.next)&&S(e.error)&&S(e.complete)}function Xi(e){return e&&e instanceof rt||Gi(e)&&Ot(e)}function Zi(e){return S(e==null?void 0:e.lift)}function x(e){return function(t){if(Zi(t))return t.lift(function(r){try{return e(r,this)}catch(o){this.error(o)}});throw new TypeError("Unable to lift unknown Observable type")}}var y=function(e){B(t,e);function t(r,o,n,i,a){var s=e.call(this,r)||this;return s.onFinalize=a,s._next=o?function(c){try{o(c)}catch(l){r.error(l)}}:e.prototype._next,s._error=i?function(c){try{i(c)}catch(l){r.error(l)}finally{this.unsubscribe()}}:e.prototype._error,s._complete=n?function(){try{n()}catch(c){r.error(c)}finally{this.unsubscribe()}}:e.prototype._complete,s}return t.prototype.unsubscribe=function(){var r,o=this.closed;e.prototype.unsubscribe.call(this),!o&&((r=this.onFinalize)===null||r===void 0||r.call(this))},t}(rt);var ze={schedule:function(e){var t=requestAnimationFrame,r=cancelAnimationFrame,o=ze.delegate;o&&(t=o.requestAnimationFrame,r=o.cancelAnimationFrame);var n=t(function(i){r=void 0,e(i)});return new ie(function(){return r==null?void 0:r(n)})},requestAnimationFrame:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=ze.delegate;return((r==null?void 0:r.requestAnimationFrame)||requestAnimationFrame).apply(void 0,C([],L(e)))},cancelAnimationFrame:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=ze.delegate;return((r==null?void 0:r.cancelAnimationFrame)||cancelAnimationFrame).apply(void 0,C([],L(e)))},delegate:void 0};var Oo=wt(function(e){return function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}});var M=function(e){B(t,e);function t(){var r=e.call(this)||this;return r.closed=!1,r.observers=[],r.isStopped=!1,r.hasError=!1,r.thrownError=null,r}return t.prototype.lift=function(r){var o=new To(this,this);return o.operator=r,o},t.prototype._throwIfClosed=function(){if(this.closed)throw new Oo},t.prototype.next=function(r){var o,n;if(this._throwIfClosed(),!
 !this.isStopped){var i=this.observers.slice();try{for(var a=ce(i),s=a.next();!s.done;s=a.next()){var c=s.value;c.next(r)}}catch(l){o={error:l}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}}},t.prototype.error=function(r){if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=r;for(var o=this.observers;o.length;)o.shift().error(r)}},t.prototype.complete=function(){if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;for(var r=this.observers;r.length;)r.shift().complete()}},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=null},Object.defineProperty(t.prototype,"observed",{get:function(){var r;return((r=this.observers)===null||r===void 0?void 0:r.length)>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var o=this,n=o.hasError,i=o.isStopped,a=o.observers;return n||i?nr:(a.push(r),new ie(function(){return we(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var o=this,n=o.hasError,i=o.thrownError,a=o.isStopped;n?r.error(i):a&&r.complete()},t.prototype.asObservable=function(){var r=new _;return r.source=this,r},t.create=function(r,o){return new To(r,o)},t}(_);var To=function(e){B(t,e);function t(r,o){var n=e.call(this)||this;return n.destination=r,n.source=o,n}return t.prototype.next=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.next)===null||n===void 0||n.call(o,r)},t.prototype.error=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.error)===null||n===void 0||n.call(o,r)},t.prototype.complete=function(){var r,o;(o=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||o===void 0||o.call(r)},t.prototype._subscribe=function(r){var o,n;return(n=(o=this.source)===null||o===void 0?void 0:o.subscribe(r))!
 !==null&&n!==void 0?n:nr},t}(M);var nt={now:function(){return(nt.delegate||Date).now()},delegate:void 0};var it=function(e){B(t,e);function t(r,o,n){r===void 0&&(r=Infinity),o===void 0&&(o=Infinity),n===void 0&&(n=nt);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=o,i._timestampProvider=n,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=o===Infinity,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,o),i}return t.prototype.next=function(r){var o=this,n=o.isStopped,i=o._buffer,a=o._infiniteTimeWindow,s=o._timestampProvider,c=o._windowTime;n||(i.push(r),!a&&i.push(s.now()+c)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var o=this._innerSubscribe(r),n=this,i=n._infiniteTimeWindow,a=n._buffer,s=a.slice(),c=0;c<s.length&&!r.closed;c+=i?1:2)r.next(s[c]);return this._checkFinalizedStatuses(r),o},t.prototype._trimBuffer=function(){var r=this,o=r._bufferSize,n=r._timestampProvider,i=r._buffer,a=r._infiniteTimeWindow,s=(a?1:2)*o;if(o<Infinity&&s<i.length&&i.splice(0,i.length-s),!a){for(var c=n.now(),l=0,u=1;u<i.length&&i[u]<=c;u+=2)l=u;l&&i.splice(0,l+1)}},t}(M);var _o=function(e){B(t,e);function t(r,o){return e.call(this)||this}return t.prototype.schedule=function(r,o){return o===void 0&&(o=0),this},t}(ie);var at={setInterval:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=at.delegate;return((r==null?void 0:r.setInterval)||setInterval).apply(void 0,C([],L(e)))},clearInterval:function(e){var t=at.delegate;return((t==null?void 0:t.clearInterval)||clearInterval)(e)},delegate:void 0};var _t=function(e){B(t,e);function t(r,o){var n=e.call(this,r,o)||this;return n.scheduler=r,n.work=o,n.pending=!1,n}return t.prototype.schedule=function(r,o){if(o===void 0&&(o=0),this.closed)return this;this.state=r;var n=this.id,i=this.scheduler;return n!=null&&(this.id=this.recycleAsyncId(i,n,o)),this.pending=!0,this.delay=o,this.id=this.id||this.requestAsyncId(i,this.id,o),this},t.prototype.requestAsyncI!
 d=function(r,o,n){return n===void 0&&(n=0),at.setInterval(r.flush.bind(r,this),n)},t.prototype.recycleAsyncId=function(r,o,n){if(n===void 0&&(n=0),n!=null&&this.delay===n&&this.pending===!1)return o;at.clearInterval(o)},t.prototype.execute=function(r,o){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var n=this._execute(r,o);if(n)return n;this.pending===!1&&this.id!=null&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},t.prototype._execute=function(r,o){var n=!1,i;try{this.work(r)}catch(a){n=!0,i=!!a&&a||new Error(a)}if(n)return this.unsubscribe(),i},t.prototype.unsubscribe=function(){if(!this.closed){var r=this,o=r.id,n=r.scheduler,i=n.actions;this.work=this.state=this.scheduler=null,this.pending=!1,we(i,this),o!=null&&(this.id=this.recycleAsyncId(n,o,null)),this.delay=null,e.prototype.unsubscribe.call(this)}},t}(_o);var lr=function(){function e(t,r){r===void 0&&(r=e.now),this.schedulerActionCtor=t,this.now=r}return e.prototype.schedule=function(t,r,o){return r===void 0&&(r=0),new this.schedulerActionCtor(this,t).schedule(o,r)},e.now=nt.now,e}();var Mt=function(e){B(t,e);function t(r,o){o===void 0&&(o=lr.now);var n=e.call(this,r,o)||this;return n.actions=[],n._active=!1,n._scheduled=void 0,n}return t.prototype.flush=function(r){var o=this.actions;if(this._active){o.push(r);return}var n;this._active=!0;do if(n=r.execute(r.state,r.delay))break;while(r=o.shift());if(this._active=!1,n){for(;r=o.shift();)r.unsubscribe();throw n}},t}(lr);var st=new Mt(_t),Mo=st;var Ao=function(e){B(t,e);function t(r,o){var n=e.call(this,r,o)||this;return n.scheduler=r,n.work=o,n}return t.prototype.requestAsyncId=function(r,o,n){return n===void 0&&(n=0),n!==null&&n>0?e.prototype.requestAsyncId.call(this,r,o,n):(r.actions.push(this),r._scheduled||(r._scheduled=ze.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,o,n){if(n===void 0&&(n=0),n!=null&&n>0||n==null&&this.delay>0)return e.prototype.recycleAsyncId.call(this,r,o,n);r.actions.length===0&!
 &(ze.cancelAnimationFrame(o),r._scheduled=void 0)},t}(_t);var Lo=function(e){B(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0,this._scheduled=void 0;var o=this.actions,n,i=-1;r=r||o.shift();var a=o.length;do if(n=r.execute(r.state,r.delay))break;while(++i<a&&(r=o.shift()));if(this._active=!1,n){for(;++i<a&&(r=o.shift());)r.unsubscribe();throw n}},t}(Mt);var J=new Lo(Ao);var de=new _(function(e){return e.complete()});function qe(e,t){return new _(function(r){var o=0;return t.schedule(function(){o===e.length?r.complete():(r.next(e[o++]),r.closed||this.schedule())})})}var Qe=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function At(e){return S(e==null?void 0:e.then)}function ko(e,t){return new _(function(r){var o=new ie;return o.add(t.schedule(function(){var n=e[Me]();o.add(n.subscribe({next:function(i){o.add(t.schedule(function(){return r.next(i)}))},error:function(i){o.add(t.schedule(function(){return r.error(i)}))},complete:function(){o.add(t.schedule(function(){return r.complete()}))}}))})),o})}function Co(e,t){return new _(function(r){return t.schedule(function(){return e.then(function(o){r.add(t.schedule(function(){r.next(o),r.add(t.schedule(function(){return r.complete()}))}))},function(o){r.add(t.schedule(function(){return r.error(o)}))})})})}function ea(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Lt=ea();function Ho(e,t,r,o){o===void 0&&(o=0);var n=t.schedule(function(){try{r.call(this)}catch(i){e.error(i)}},o);return e.add(n),n}function jo(e,t){return new _(function(r){var o;return r.add(t.schedule(function(){o=e[Lt](),Ho(r,t,function(){var n=o.next(),i=n.value,a=n.done;a?r.complete():(r.next(i),this.schedule())})})),function(){return S(o==null?void 0:o.return)&&o.return()}})}function kt(e,t){if(!e)throw new Error("Iterable cannot be null");return new _(function(r){var o=new ie;return o.add(t.schedule(function(){var n=e[Symbol.asyncIterator]();o.add(t.schedule(function(!
 ){var i=this;n.next().then(function(a){a.done?r.complete():(r.next(a.value),i.schedule())})}))})),o})}function Ct(e){return S(e[Me])}function Ht(e){return S(e==null?void 0:e[Lt])}function jt(e){return Symbol.asyncIterator&&S(e==null?void 0:e[Symbol.asyncIterator])}function Ft(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Rt(e){return ho(this,arguments,function(){var r,o,n,i;return yt(this,function(a){switch(a.label){case 0:r=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,St(r.read())];case 3:return o=a.sent(),n=o.value,i=o.done,i?[4,St(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,St(n)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function It(e){return S(e==null?void 0:e.getReader)}function Fo(e,t){return kt(Rt(e),t)}function Ro(e,t){if(e!=null){if(Ct(e))return ko(e,t);if(Qe(e))return qe(e,t);if(At(e))return Co(e,t);if(jt(e))return kt(e,t);if(Ht(e))return jo(e,t);if(It(e))return Fo(e,t)}throw Ft(e)}function ve(e,t){return t?Ro(e,t):N(e)}function N(e){if(e instanceof _)return e;if(e!=null){if(Ct(e))return ta(e);if(Qe(e))return ur(e);if(At(e))return ra(e);if(jt(e))return Io(e);if(Ht(e))return oa(e);if(It(e))return na(e)}throw Ft(e)}function ta(e){return new _(function(t){var r=e[Me]();if(S(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function ur(e){return new _(function(t){for(var r=0;r<e.length&&!t.closed;r++)t.next(e[r]);t.complete()})}function ra(e){return new _(function(t){e.then(function(r){t.closed||(t.next(r),t.complete())},function(r){return t.error(r)}).then(null,Tt)})}function oa(e){return new _(function(t){var r,o;try{for(var n=ce(e),i=n.next();!i.done;i=n.next()){var a=i.value;if(t.next(a),t.closed)return}}catch!
 (s){r={error:s}}finally{try{i&&!i.done&&(o=n.return)&&o.call(n)}finally{if(r)throw r.error}}t.complete()})}function Io(e){return new _(function(t){ia(e,t).catch(function(r){return t.error(r)})})}function na(e){return Io(Rt(e))}function ia(e,t){var r,o,n,i;return mo(this,void 0,void 0,function(){var a,s;return yt(this,function(c){switch(c.label){case 0:c.trys.push([0,5,6,11]),r=bo(e),c.label=1;case 1:return[4,r.next()];case 2:if(o=c.sent(),!!o.done)return[3,4];if(a=o.value,t.next(a),t.closed)return[2];c.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return s=c.sent(),n={error:s},[3,11];case 6:return c.trys.push([6,,9,10]),o&&!o.done&&(i=r.return)?[4,i.call(r)]:[3,8];case 7:c.sent(),c.label=8;case 8:return[3,10];case 9:if(n)throw n.error;return[7];case 10:return[7];case 11:return t.complete(),[2]}})})}function ge(e,t){return t?qe(e,t):ur(e)}function Pt(e){return e&&S(e.schedule)}function pr(e){return e[e.length-1]}function Ae(e){return S(pr(e))?e.pop():void 0}function pe(e){return Pt(pr(e))?e.pop():void 0}function $t(e,t){return typeof pr(e)=="number"?e.pop():t}function F(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=pe(e);return r?qe(e,r):ge(e)}function Po(e){return e instanceof Date&&!isNaN(e)}function f(e,t){return x(function(r,o){var n=0;r.subscribe(new y(o,function(i){o.next(e.call(t,i,n++))}))})}var aa=Array.isArray;function sa(e,t){return aa(t)?e.apply(void 0,C([],L(t))):e(t)}function Le(e){return f(function(t){return sa(e,t)})}function Y(e,t){return t===void 0&&(t=0),x(function(r,o){r.subscribe(new y(o,function(n){return o.add(e.schedule(function(){return o.next(n)},t))},function(){return o.add(e.schedule(function(){return o.complete()},t))},function(n){return o.add(e.schedule(function(){return o.error(n)},t))}))})}var ca=Array.isArray,la=Object.getPrototypeOf,ua=Object.prototype,pa=Object.keys;function $o(e){if(e.length===1){var t=e[0];if(ca(t))return{args:t,keys:null};if(fa(t)){var r=pa(t);return{args:r.map(function(o){return t[o]}),keys:r}}}return{args:e,keys:null}}function fa!
 (e){return e&&typeof e=="object"&&la(e)===ua}function Vo(e,t){return e.reduce(function(r,o,n){return r[o]=t[n],r},{})}function G(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=pe(e),o=Ae(e),n=$o(e),i=n.args,a=n.keys;if(i.length===0)return ve([],r);var s=new _(fr(i,r,a?function(c){return Vo(a,c)}:le));return o?s.pipe(Le(o)):s}function fr(e,t,r){return r===void 0&&(r=le),function(o){Wo(t,function(){for(var n=e.length,i=new Array(n),a=n,s=n,c=function(u){Wo(t,function(){var m=ve(e[u],t),p=!1;m.subscribe(new y(o,function(b){i[u]=b,p||(p=!0,s--),s||o.next(r(i.slice()))},function(){--a||o.complete()}))},o)},l=0;l<n;l++)c(l)},o)}}function Wo(e,t,r){e?r.add(e.schedule(t)):t()}function Uo(e,t,r,o,n,i,a,s){var c=[],l=0,u=0,m=!1,p=function(){m&&!c.length&&!l&&t.complete()},b=function(h){return l<o?g(h):c.push(h)},g=function(h){i&&t.next(h),l++;var W=!1;N(r(h,u++)).subscribe(new y(t,function(q){n==null||n(q),i?b(q):t.next(q)},function(){W=!0},void 0,function(){if(W)try{l--;for(var q=function(){var j=c.shift();a?t.add(a.schedule(function(){return g(j)})):g(j)};c.length&&l<o;)q();p()}catch(j){t.error(j)}}))};return e.subscribe(new y(t,b,function(){m=!0,p()})),function(){s==null||s()}}function te(e,t,r){return r===void 0&&(r=Infinity),S(t)?te(function(o,n){return f(function(i,a){return t(o,i,n,a)})(N(e(o,n)))},r):(typeof t=="number"&&(r=t),x(function(o,n){return Uo(o,n,e,r)}))}function Ke(e){return e===void 0&&(e=Infinity),te(le,e)}function Do(){return Ke(1)}function ct(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Do()(ge(e,pe(e)))}function Oe(e){return new _(function(t){N(e()).subscribe(t)})}var ma=["addListener","removeListener"],da=["addEventListener","removeEventListener"],ha=["on","off"];function T(e,t,r,o){if(S(r)&&(o=r,r=void 0),o)return T(e,t,r).pipe(Le(o));var n=L(ga(e)?da.map(function(s){return function(c){return e[s](t,c,r)}}):ba(e)?ma.map(No(e,t)):va(e)?ha.map(No(e,t)):[],2),i=n[0],a=n[1];if(!i&&Qe(e))return te(function(s){return T(s,t,r)})(ge(e));if(!i)throw new TypeError("!
 Invalid event target");return new _(function(s){var c=function(){for(var l=[],u=0;u<arguments.length;u++)l[u]=arguments[u];return s.next(1<l.length?l:l[0])};return i(c),function(){return a(c)}})}function No(e,t){return function(r){return function(o){return e[r](t,o)}}}function ba(e){return S(e.addListener)&&S(e.removeListener)}function va(e){return S(e.on)&&S(e.off)}function ga(e){return S(e.addEventListener)&&S(e.removeEventListener)}function Vt(e,t,r){return r?Vt(e,t).pipe(Le(r)):new _(function(o){var n=function(){for(var a=[],s=0;s<arguments.length;s++)a[s]=arguments[s];return o.next(a.length===1?a[0]:a)},i=e(n);return S(t)?function(){return t(n,i)}:void 0})}function zo(e,t,r){e===void 0&&(e=0),r===void 0&&(r=Mo);var o=-1;return t!=null&&(Pt(t)?r=t:o=t),new _(function(n){var i=Po(e)?+e-r.now():e;i<0&&(i=0);var a=0;return r.schedule(function(){n.closed||(n.next(a++),0<=o?this.schedule(void 0,o):n.complete())},i)})}function I(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=pe(e),o=$t(e,Infinity),n=e;return n.length?n.length===1?N(n[0]):Ke(o)(ge(n,r)):de}var Z=new _(ee);var xa=Array.isArray;function Be(e){return e.length===1&&xa(e[0])?e[0]:e}function k(e,t){return x(function(r,o){var n=0;r.subscribe(new y(o,function(i){return e.call(t,i,n++)&&o.next(i)}))})}function lt(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=Ae(e),o=Be(e);return o.length?new _(function(n){var i=o.map(function(){return[]}),a=o.map(function(){return!1});n.add(function(){i=a=null});for(var s=function(l){N(o[l]).subscribe(new y(n,function(u){if(i[l].push(u),i.every(function(p){return p.length})){var m=i.map(function(p){return p.shift()});n.next(r?r.apply(void 0,C([],L(m))):m),i.some(function(p,b){return!p.length&&a[b]})&&n.complete()}},function(){a[l]=!0,!i[l].length&&n.complete()}))},c=0;!n.closed&&c<o.length;c++)s(c);return function(){i=a=null}}):de}function he(e,t){return t===void 0&&(t=null),t=t!=null?t:e,x(function(r,o){var n=[],i=0;r.subscribe(new y(o,function(a){var s,c,l,u,m=null;i++%t==0&&n.push([!
 ]);try{for(var p=ce(n),b=p.next();!b.done;b=p.next()){var g=b.value;g.push(a),e<=g.length&&(m=m!=null?m:[],m.push(g))}}catch(q){s={error:q}}finally{try{b&&!b.done&&(c=p.return)&&c.call(p)}finally{if(s)throw s.error}}if(m)try{for(var h=ce(m),W=h.next();!W.done;W=h.next()){var g=W.value;we(n,g),o.next(g)}}catch(q){l={error:q}}finally{try{W&&!W.done&&(u=h.return)&&u.call(h)}finally{if(l)throw l.error}}},function(){var a,s;try{for(var c=ce(n),l=c.next();!l.done;l=c.next()){var u=l.value;o.next(u)}}catch(m){a={error:m}}finally{try{l&&!l.done&&(s=c.return)&&s.call(c)}finally{if(a)throw a.error}}o.complete()},void 0,function(){n=null}))})}function Je(e){return x(function(t,r){var o=null,n=!1,i;o=t.subscribe(new y(r,void 0,void 0,function(a){i=N(e(a,Je(e)(t))),o?(o.unsubscribe(),o=null,i.subscribe(r)):n=!0})),n&&(o.unsubscribe(),o=null,i.subscribe(r))})}function qo(e,t,r,o,n){return function(i,a){var s=r,c=t,l=0;i.subscribe(new y(a,function(u){var m=l++;c=s?e(c,u,m):(s=!0,u),o&&a.next(c)},n&&function(){s&&a.next(c),a.complete()}))}}function mr(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=Ae(e);return r?wo(mr.apply(void 0,C([],L(e))),Le(r)):x(function(o,n){fr(C([o],L(Be(e))))(n)})}function Wt(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return mr.apply(void 0,C([],L(e)))}function dr(e,t){return S(t)?te(e,t,1):te(e,1)}function hr(e,t){return t===void 0&&(t=st),x(function(r,o){var n=null,i=null,a=null,s=function(){if(n){n.unsubscribe(),n=null;var l=i;i=null,o.next(l)}};function c(){var l=a+e,u=t.now();if(u<l){n=this.schedule(void 0,l-u);return}s()}r.subscribe(new y(o,function(l){i=l,a=t.now(),n||(n=t.schedule(c,e))},function(){s(),o.complete()},void 0,function(){i=n=null}))})}function Re(e){return x(function(t,r){var o=!1;t.subscribe(new y(r,function(n){o=!0,r.next(n)},function(){o||r.next(e),r.complete()}))})}function xe(e){return e<=0?function(){return de}:x(function(t,r){var o=0;t.subscribe(new y(r,function(n){++o<=e&&(r.next(n),e<=o&&r.complete())}))})}function Qo(){return x(function!
 (e,t){e.subscribe(new y(t,ee))})}function oe(e){return f(function(){return e})}function br(e,t){return t?function(r){return ct(t.pipe(xe(1),Qo()),r.pipe(br(e)))}:te(function(r,o){return e(r,o).pipe(xe(1),oe(r))})}function Te(e,t){t===void 0&&(t=st);var r=zo(e,t);return br(function(){return r})}function z(e,t){return t===void 0&&(t=le),e=e!=null?e:ya,x(function(r,o){var n,i=!0;r.subscribe(new y(o,function(a){var s=t(a);(i||!e(n,s))&&(i=!1,n=s,o.next(a))}))})}function ya(e,t){return e===t}function U(e,t){return z(function(r,o){return t?t(r[e],o[e]):r[e]===o[e]})}function P(e){return x(function(t,r){try{t.subscribe(r)}finally{r.add(e)}})}function vr(e){return e<=0?function(){return de}:x(function(t,r){var o=[];t.subscribe(new y(r,function(n){o.push(n),e<o.length&&o.shift()},function(){var n,i;try{for(var a=ce(o),s=a.next();!s.done;s=a.next()){var c=s.value;r.next(c)}}catch(l){n={error:l}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}r.complete()},void 0,function(){o=null}))})}function Ko(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=pe(e),o=$t(e,Infinity);return e=Be(e),x(function(n,i){Ke(o)(ge(C([n],L(e)),r)).subscribe(i)})}function ut(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Ko.apply(void 0,C([],L(e)))}function Ye(e){return x(function(t,r){var o=!1,n=null;t.subscribe(new y(r,function(a){o=!0,n=a}));var i=function(){if(o){o=!1;var a=n;n=null,r.next(a)}};e.subscribe(new y(r,i,ee))})}function gr(e,t){return x(qo(e,t,arguments.length>=2,!0))}function ne(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new M}:t,o=e.resetOnError,n=o===void 0?!0:o,i=e.resetOnComplete,a=i===void 0?!0:i,s=e.resetOnRefCountZero,c=s===void 0?!0:s;return function(l){var u=null,m=null,p=null,b=0,g=!1,h=!1,W=function(){m==null||m.unsubscribe(),m=null},q=function(){W(),u=p=null,g=h=!1},j=function(){var w=u;q(),w==null||w.unsubscribe()};return x(function(w,Fe){b++,!h&&!g&&W();var Se=p=p!=null?p:r();Fe.add(function(){b--,b===0&&!h&&!g&&(m=xr(j,c))}),!
 Se.subscribe(Fe),u||(u=new ot({next:function(Ue){return Se.next(Ue)},error:function(Ue){h=!0,W(),m=xr(q,n,Ue),Se.error(Ue)},complete:function(){g=!0,W(),m=xr(q,a),Se.complete()}}),ve(w).subscribe(u))})(l)}}function xr(e,t){for(var r=[],o=2;o<arguments.length;o++)r[o-2]=arguments[o];return t===!0?(e(),null):t===!1?null:t.apply(void 0,C([],L(r))).pipe(xe(1)).subscribe(function(){return e()})}function re(e,t,r){var o,n,i,a=!1;return e&&typeof e=="object"?(i=(o=e.bufferSize)!==null&&o!==void 0?o:Infinity,t=(n=e.windowTime)!==null&&n!==void 0?n:Infinity,a=!!e.refCount,r=e.scheduler):i=e!=null?e:Infinity,ne({connector:function(){return new it(i,t,r)},resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:a})}function Ut(e){return k(function(t,r){return e<=r})}function yr(e){return x(function(t,r){var o=!1,n=new y(r,function(){n==null||n.unsubscribe(),o=!0},ee);N(e).subscribe(n),t.subscribe(new y(r,function(i){return o&&r.next(i)}))})}function V(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=pe(e);return x(function(o,n){(r?ct(e,o,r):ct(e,o)).subscribe(n)})}function E(e,t){return x(function(r,o){var n=null,i=0,a=!1,s=function(){return a&&!n&&o.complete()};r.subscribe(new y(o,function(c){n==null||n.unsubscribe();var l=0,u=i++;N(e(c,u)).subscribe(n=new y(o,function(m){return o.next(t?t(c,m,u,l++):m)},function(){n=null,s()}))},function(){a=!0,s()}))})}function Sr(e,t){return S(t)?E(function(){return e},t):E(function(){return e})}function wr(e){return x(function(t,r){N(e).subscribe(new y(r,function(){return r.complete()},ee)),!r.closed&&t.subscribe(r)})}function Er(e,t){return t===void 0&&(t=!1),x(function(r,o){var n=0;r.subscribe(new y(o,function(i){var a=e(i,n++);(a||t)&&o.next(i),!a&&o.complete()}))})}function H(e,t,r){var o=S(e)||t||r?{next:e,error:t,complete:r}:e;return o?x(function(n,i){n.subscribe(new y(i,function(a){var s;(s=o.next)===null||s===void 0||s.call(o,a),i.next(a)},function(){var a;(a=o.complete)===null||a===void 0||a.call(o),i.complete()},function(a){var s;(s=o.error)===null||s===void 0!
 ||s.call(o,a),i.error(a)}))}):le}var Sa={leading:!0,trailing:!1};function Or(e,t){var r=t===void 0?Sa:t,o=r.leading,n=r.trailing;return x(function(i,a){var s=!1,c=null,l=null,u=!1,m=function(){l==null||l.unsubscribe(),l=null,n&&(g(),u&&a.complete())},p=function(){l=null,u&&a.complete()},b=function(h){return l=N(e(h)).subscribe(new y(a,m,p))},g=function(){if(s){s=!1;var h=c;c=null,a.next(h),!u&&b(h)}};i.subscribe(new y(a,function(h){s=!0,c=h,!(l&&!l.closed)&&(o?g():b(h))},function(){u=!0,!(n&&s&&l&&!l.closed)&&a.complete()}))})}function be(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=Ae(e);return x(function(o,n){for(var i=e.length,a=new Array(i),s=e.map(function(){return!1}),c=!1,l=function(m){N(e[m]).subscribe(new y(n,function(p){a[m]=p,!c&&!s[m]&&(s[m]=!0,(c=s.every(le))&&(s=null))},ee))},u=0;u<i;u++)l(u);o.subscribe(new y(n,function(m){if(c){var p=C([m],L(a));n.next(r?r.apply(void 0,C([],L(p))):p)}}))})}function Bo(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return x(function(r,o){lt.apply(void 0,C([r],L(e))).subscribe(o)})}function Tr(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Bo.apply(void 0,C([],L(e)))}function Jo(){let e=new it;return T(document,"DOMContentLoaded").pipe(oe(document)).subscribe(e),e}function ae(e,t=document){return t.querySelector(e)||void 0}function fe(e,t=document){let r=ae(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function Ie(){return document.activeElement instanceof HTMLElement?document.activeElement:void 0}function Q(e,t=document){return Array.from(t.querySelectorAll(e))}function Ge(e){return document.createElement(e)}function Pe(e,...t){e.replaceWith(...t)}function ke(e,t=!0){t?e.focus():e.blur()}function Yo(e){return I(T(e,"focus"),T(e,"blur")).pipe(f(({type:t})=>t==="focus"),V(e===Ie()))}var Go=new M,wa=Oe(()=>F(new ResizeObserver(e=>{for(let t of e)Go.next(t)}))).pipe(E(e=>Z.pipe(V(e)).pipe(P(()=>e.disconnect()))),re(1));function Ce(e){return{width:e!
 .offsetWidth,height:e.offsetHeight}}function Dt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function He(e){return wa.pipe(H(t=>t.observe(e)),E(t=>Go.pipe(k(({target:r})=>r===e),P(()=>t.unobserve(e)),f(()=>Ce(e)))),V(Ce(e)))}function Xo(e){return{x:e.scrollLeft,y:e.scrollTop}}function Ea(e){return I(T(e,"scroll"),T(window,"resize")).pipe(f(()=>Xo(e)),V(Xo(e)))}function Zo(e,t=16){return Ea(e).pipe(f(({y:r})=>{let o=Ce(e),n=Dt(e);return r>=n.height-o.height-t}),z())}function en(e){if(e instanceof HTMLInputElement)e.select();else throw new Error("Not implemented")}var Nt={drawer:fe("[data-md-toggle=drawer]"),search:fe("[data-md-toggle=search]")};function tn(e){return Nt[e].checked}function $e(e,t){Nt[e].checked!==t&&Nt[e].click()}function zt(e){let t=Nt[e];return T(t,"change").pipe(f(()=>t.checked),V(t.checked))}function Oa(e){switch(e.tagName){case"INPUT":case"SELECT":case"TEXTAREA":return!0;default:return e.isContentEditable}}function rn(){return T(window,"keydown").pipe(k(e=>!(e.metaKey||e.ctrlKey)),f(e=>({mode:tn("search")?"search":"global",type:e.key,claim(){e.preventDefault(),e.stopPropagation()}})),k(({mode:e})=>{if(e==="global"){let t=Ie();if(typeof t!="undefined")return!Oa(t)}return!0}),ne())}function on(){return new URL(location.href)}function nn(e){location.href=e.href}function an(){return new M}function sn(){return location.hash.substring(1)}function cn(e){let t=Ge("a");t.href=e,t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Ta(){return T(window,"hashchange").pipe(f(sn),V(sn()),k(e=>e.length>0),ne())}function ln(){return Ta().pipe(E(e=>F(ae(`[id="${e}"]`))))}function pt(e){let t=matchMedia(e);return Vt(r=>t.addListener(()=>r(t.matches))).pipe(V(t.matches))}function un(){return T(window,"beforeprint").pipe(oe(void 0))}function _r(e,t){return e.pipe(E(r=>r?t():Z))}function qt(e,t={credentials:"same-origin"}){return ve(fetch(`${e}`,t)).pipe(k(r=>r.status===200))}function ye(e,t){return qt(e,t).pipe(E(r=>r.json()),re(1))}function pn(e,t){let r=new DOMParser;return qt(e,t).pip!
 e(E(o=>o..text()),f(o=>r.parseFromString(o,"text/xml")),re(1))}function fn(){return{x:Math.max(0,pageXOffset),y:Math.max(0,pageYOffset)}}function Mr({x:e,y:t}){window.scrollTo(e||0,t||0)}function mn(){return I(T(window,"scroll",{passive:!0}),T(window,"resize",{passive:!0})).pipe(f(fn),V(fn()))}function dn(){return{width:innerWidth,height:innerHeight}}function hn(){return T(window,"resize",{passive:!0}).pipe(f(dn),V(dn()))}function bn(){return G([mn(),hn()]).pipe(f(([e,t])=>({offset:e,size:t})),re(1))}function Qt(e,{viewport$:t,header$:r}){let o=t.pipe(U("size")),n=G([o,r]).pipe(f(()=>({x:e.offsetLeft,y:e.offsetTop})));return G([r,t,n]).pipe(f(([{height:i},{offset:a,size:s},{x:c,y:l}])=>({offset:{x:a.x-c,y:a.y-l+i},size:s})))}function vn(e,{tx$:t}){let r=T(e,"message").pipe(f(({data:o})=>o));return t.pipe(Or(()=>r,{leading:!0,trailing:!0}),H(o=>e.postMessage(o)),Sr(r),ne())}var _a=fe("#__config"),Xe=JSON.parse(_a.textContent);Xe.base=new URL(Xe.base,on()).toString().replace(/\/$/,"");function se(){return Xe}function Kt(e){return Xe.features.includes(e)}function K(e,t){return typeof t!="undefined"?Xe.translations[e].replace("#",t.toString()):Xe.translations[e]}function je(e,t=document){return fe(`[data-md-component=${e}]`,t)}function me(e,t=document){return Q(`[data-md-component=${e}]`,t)}var Zn=tt(Lr());function gn(e,t=0){e.setAttribute("tabindex",t.toString())}function xn(e){e.removeAttribute("tabindex")}function yn(e,t){e.setAttribute("data-md-state","lock"),e.style.top=`-${t}px`}function Sn(e){let t=-1*parseInt(e.style.top,10);e.removeAttribute("data-md-state"),e.style.top="",t&&window.scrollTo(0,t)}function wn(e,t){e.setAttribute("data-md-state",t)}function En(e){e.removeAttribute("data-md-state")}function On(e,t){e.classList.toggle("md-nav__link--active",t)}function Tn(e){e.classList.remove("md-nav__link--active")}function _n(e,t){e.firstElementChild.innerHTML=t}function Mn(e,t){e.setAttribute("data-md-state",t)}function An(e){e.removeAttribute("data-md-state")}function Ln(e,t){e.setAttribute("data-md-state",!
 t)}function kn(e){e.removeAttribute("data-md-state")}function Cn(e,t){e.setAttribute("data-md-state",t)}function Hn(e){e.removeAttribute("data-md-state")}function jn(e,t){e.placeholder=t}function Fn(e){e.placeholder=K("search.placeholder")}function Rn(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)Rn(e,r)}function D(e,t,...r){let o=document.createElement(e);if(t)for(let n of Object.keys(t))typeof t[n]!="boolean"?o.setAttribute(n,t[n]):t[n]&&o.setAttribute(n,"");for(let n of r)Rn(o,n);return o}function In(e,t){let r=t;if(e.length>r){for(;e[r]!==" "&&--r>0;);return`${e.substring(0,r)}...`}return e}function Bt(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function Pn(e,t){switch(t){case 0:e.textContent=K("search.result.none");break;case 1:e.textContent=K("search.result.one");break;default:e.textContent=K("search.result.other",Bt(t))}}function kr(e){e.textContent=K("search.result.placeholder")}function $n(e,t){e.appendChild(t)}function Vn(e){e.innerHTML=""}function Wn(e,t){e.style.top=`${t}px`}function Un(e){e.style.top=""}function Dn(e,t){let r=e.firstElementChild;r.style.height=`${t-2*r.offsetTop}px`}function Nn(e){let t=e.firstElementChild;t.style.height=""}function zn(e,t){e.lastElementChild.appendChild(t)}function qn(e,t){e.lastElementChild.setAttribute("data-md-state",t)}function Qn(e,t){e.setAttribute("data-md-state",t)}function Cr(e){e.removeAttribute("data-md-state")}function Kn(e,t){e.setAttribute("data-md-state",t)}function Hr(e){e.removeAttribute("data-md-state")}function Bn(e){return D("button",{class:"md-clipboard md-icon",title:K("clipboard.copy"),"data-clipboard-target":`#${e} > code`})}var Ve;(function(r){r[r.TEASER=1]="TEASER",r[r.PARENT=2]="PARENT"})(Ve||(Ve={}));function jr(e,t){let r=t&2,o=t&1,n=Object.keys(e.terms).filter(a=>!e.terms[a]).map(a=>[D("del",null,a)," "]).flat().slice(0,-1),i=e.location;return D("a",{href:i,class:"md-searc!
 h-result__link",tabIndex:-1},D("article",{class:["md-search-result__article",...r?["md-search-result__article--document"]:[]].join(" "),"data-md-score":e.score.toFixed(2)},r>0&&D("div",{class:"md-search-result__icon md-icon"}),D("h1",{class:"md-search-result__title"},e.title),o>0&&e.text.length>0&&D("p",{class:"md-search-result__teaser"},In(e.text,320)),o>0&&n.length>0&&D("p",{class:"md-search-result__terms"},K("search.result.term.missing"),": ",n)))}function Jn(e){let t=e[0].score,r=[...e],o=r.findIndex(l=>!l.location.includes("#")),[n]=r.splice(o,1),i=r.findIndex(l=>l.score<t);i===-1&&(i=r.length);let a=r.slice(0,i),s=r.slice(i),c=[jr(n,2|+(!o&&i===0)),...a.map(l=>jr(l,1)),...s.length?[D("details",{class:"md-search-result__more"},D("summary",{tabIndex:-1},s.length>0&&s.length===1?K("search.result.more.one"):K("search.result.more.other",s.length)),s.map(l=>jr(l,1)))]:[]];return D("li",{class:"md-search-result__item"},c)}function Yn(e){return D("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>D("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?Bt(r):r)))}function Gn(e){return D("div",{class:"md-typeset__scrollwrap"},D("div",{class:"md-typeset__table"},e))}function Ma(e){let t=se(),r=new URL(`${e.version}/`,t.base);return D("li",{class:"md-version__item"},D("a",{href:r.toString(),class:"md-version__link"},e.title))}function Xn(e){let t=se(),[,r]=t.base.match(/([^/]+)\/?$/),o=e.find(({version:n,aliases:i})=>n===r||i.includes(r))||e[0];return D("div",{class:"md-version"},D("button",{class:"md-version__current","aria-label":K("select.version.title")},o.title),D("ul",{class:"md-version__list"},e.map(Ma)))}var Aa=0;function La(e,{viewport$:t}){let r=F(e).pipe(E(o=>{let n=o.closest("[data-tabs]");return n instanceof HTMLElement?I(...Q("input",n).map(i=>T(i,"change"))):Z}));return I(t.pipe(U("size")),r).pipe(f(()=>{let o=Ce(e);return{scroll:Dt(e).width>o.width}}),U("scroll"))}function ei(e,t){let r=new M;if(r.pipe(be(pt("(hover)"))).subscribe(([{scroll:o},n])=>{o&&n?gn(e):xn(e)}),Zn.d!
 efault.isSupported()){let o=e.closest("pre");o.id=`__code_${Aa++}`,o.insertBefore(Bn(o.id),e)}return La(e,t).pipe(H(r),P(()=>r.complete()),f(o=>$({ref:e},o)))}function ka(e,{target$:t,print$:r}){return t.pipe(f(o=>o.closest("details:not([open])")),k(o=>e===o),ut(r),oe(e))}function ti(e,t){let r=new M;return r.subscribe(()=>{e.setAttribute("open",""),e.scrollIntoView()}),ka(e,t).pipe(H(r),P(()=>r.complete()),oe({ref:e}))}var ri=Ge("table");function oi(e){return Pe(e,ri),Pe(ri,Gn(e)),F({ref:e})}function ni(e,{target$:t,viewport$:r,print$:o}){return I(...Q("pre > code",e).map(n=>ei(n,{viewport$:r})),...Q("table:not([class])",e).map(n=>oi(n)),...Q("details",e).map(n=>ti(n,{target$:t,print$:o})))}function Ca(e,{alert$:t}){return t.pipe(E(r=>I(F(!0),F(!1).pipe(Te(2e3))).pipe(f(o=>({message:r,open:o})))))}function ii(e,t){let r=new M;return r.pipe(Y(J)).subscribe(({message:o,open:n})=>{_n(e,o),n?Mn(e,"open"):An(e)}),Ca(e,t).pipe(H(r),P(()=>r.complete()),f(o=>$({ref:e},o)))}function Ha({viewport$:e}){if(!Kt("header.autohide"))return F(!1);let t=e.pipe(f(({offset:{y:n}})=>n),he(2,1),f(([n,i])=>[n<i,i]),U(0)),r=G([e,t]).pipe(k(([{offset:n},[,i]])=>Math.abs(i-n.y)>100),f(([,[n]])=>n),z()),o=zt("search");return G([e,o]).pipe(f(([{offset:n},i])=>n.y>400&&!i),z(),E(n=>n?r:F(!1)),V(!1))}function ai(e,t){return Oe(()=>{let r=getComputedStyle(e);return F(r.position==="sticky"||r.position==="-webkit-sticky")}).pipe(Wt(He(e),Ha(t)),f(([r,{height:o},n])=>({height:r?o:0,sticky:r,hidden:n})),z((r,o)=>r.sticky===o.sticky&&r.height===o.height&&r.hidden===o.hidden),re(1))}function si(e,{header$:t,main$:r}){let o=new M;return o.pipe(U("active"),Wt(t),Y(J)).subscribe(([{active:n},{hidden:i}])=>{n?Ln(e,i?"hidden":"shadow"):kn(e)}),r.subscribe(n=>o.next(n)),t.pipe(f(n=>$({ref:e},n)))}function ja(e,{viewport$:t,header$:r}){return Qt(e,{header$:r,viewport$:t}).pipe(f(({offset:{y:o}})=>{let{height:n}=Ce(e);return{active:o>=n}}),U("active"))}function ci(e,t){let r=new M;r.pipe(Y(J)).subscribe(({active:n})=>{n?Cn(e,"active"):Hn(e)});let o=ae("ar!
 ticle h1");return typeof o=="undefined"?Z:ja(o,t).pipe(H(r),P(()=>r.complete()),f(n=>$({ref:e},n)))}function li(e,{viewport$:t,header$:r}){let o=r.pipe(f(({height:i})=>i),z()),n=o.pipe(E(()=>He(e).pipe(f(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),U("bottom"))));return G([o,n,t]).pipe(f(([i,{top:a,bottom:s},{offset:{y:c},size:{height:l}}])=>(l=Math.max(0,l-Math.max(0,a-c,i)-Math.max(0,l+c-s)),{offset:a-i,height:l,active:a-i<=c})),z((i,a)=>i.offset===a.offset&&i.height===a.height&&i.active===a.active))}function Fa(e){let t=localStorage.getItem(__prefix("__palette")),r=JSON.parse(t)||{index:e.findIndex(n=>matchMedia(n.getAttribute("data-md-color-media")).matches)},o=F(...e).pipe(te(n=>T(n,"change").pipe(oe(n))),V(e[Math.max(0,r.index)]),f(n=>({index:e.indexOf(n),color:{scheme:n.getAttribute("data-md-color-scheme"),primary:n.getAttribute("data-md-color-primary"),accent:n.getAttribute("data-md-color-accent")}})),re(1));return o.subscribe(n=>{localStorage.setItem(__prefix("__palette"),JSON.stringify(n))}),o}function ui(e){let t=new M;t.subscribe(o=>{for(let[n,i]of Object.entries(o.color))typeof i=="string"&&document.body.setAttribute(`data-md-color-${n}`,i);for(let n=0;n<r.length;n++){let i=r[n].nextElementSibling;i instanceof HTMLElement&&(i.hidden=o.index!==n)}});let r=Q("input",e);return Fa(r).pipe(H(t),P(()=>t.complete()),f(o=>$({ref:e},o)))}var Fr=tt(Lr());function pi({alert$:e}){Fr.default.isSupported()&&new _(t=>{new Fr.default("[data-clipboard-target], [data-clipboard-text]").on("success",r=>t.next(r))}).subscribe(()=>e.next(K("clipboard.copied")))}function Ra(e){if(e.length<2)return e;let[t,r]=e.sort((i,a)=>i.length-a.length).map(i=>i.replace(/[^/]+$/,"")),o=0;if(t===r)o=t.length;else for(;t.charCodeAt(o)===r.charCodeAt(o);)o++;let n=se();return e.map(i=>i.replace(t.slice(0,o),`${n.base}/`))}function fi({document$:e,location$:t,viewport$:r}){let o=se();if(location.protocol==="file:")return;"scrollRestoration"in history&&(history.scrollRestoration="manual",T(window,"beforeunload").subscribe(()=>{h!
 istory.scrollRestoration="auto"}));let n=ae("link[rel=icon]");typeof n!="undefined"&&(n.href=n.href);let i=pn(`${o.base}/sitemap.xml`).pipe(f(l=>Ra(Q("loc",l).map(u=>u.textContent))),E(l=>T(document.body,"click").pipe(k(u=>!u.metaKey&&!u.ctrlKey),E(u=>{if(u.target instanceof Element){let m=u.target.closest("a");if(m&&!m.target&&l.includes(m.href))return u.preventDefault(),F({url:new URL(m.href)})}return Z}))),ne()),a=T(window,"popstate").pipe(k(l=>l.state!==null),f(l=>({url:new URL(location.href),offset:l.state})),ne());I(i,a).pipe(z((l,u)=>l.url.href===u.url.href),f(({url:l})=>l)).subscribe(t);let s=t.pipe(U("pathname"),E(l=>qt(l.href).pipe(Je(()=>(nn(l),Z)))),ne());i.pipe(Ye(s)).subscribe(({url:l})=>{history.pushState({},"",`${l}`)});let c=new DOMParser;s.pipe(E(l=>l.text()),f(l=>c.parseFromString(l,"text/html"))).subscribe(e),I(i,a).pipe(Ye(e)).subscribe(({url:l,offset:u})=>{l.hash&&!u?cn(l.hash):Mr(u||{y:0})}),e.pipe(Ut(1)).subscribe(l=>{for(let u of["title","link[rel=canonical]","meta[name=author]","meta[name=description]","[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=logo], .md-logo","[data-md-component=skip]"]){let m=ae(u),p=ae(u,l);typeof m!="undefined"&&typeof p!="undefined"&&Pe(m,p)}}),e.pipe(Ut(1),f(()=>je("container")),E(l=>F(...Q("script",l))),dr(l=>{let u=Ge("script");if(l.src){for(let m of l.getAttributeNames())u.setAttribute(m,l.getAttribute(m));return Pe(l,u),new _(m=>{u.onload=()=>m.complete()})}else return u.textContent=l.textContent,Pe(l,u),de})).subscribe(),r.pipe(yr(i),hr(250),U("offset")).subscribe(({offset:l})=>{history.replaceState(l,"")}),I(i,a).pipe(he(2,1),k(([l,u])=>l.url.pathname===u.url.pathname),f(([,l])=>l)).subscribe(({offset:l})=>{Mr(l||{y:0})})}var $a=tt(di());function hi(e){return e.split(/"([^"]+)"/g).map((t,r)=>r&1?t.replace(/^\b|^(?![^\x00-\x7F]|$)|\s+/g," +"):t).join("").replace(/"|(?:^|\s+)[*+\-:^~]+(?=\s+|$)/g,"").trim()}var _e;(function(n){n[n.SETUP=0]="SETUP",n[n.READY=1]="READY",n[n.QUERY=2]="QUE!
 RY",n[n.RESULT=3]="RESULT"})(_e||(_e={}));function Jt(e){return e.type===1}function bi(e){return e.type===2}function Yt(e){return e.type===3}function Va({config:e,docs:t,index:r}){e.lang.length===1&&e.lang[0]==="en"&&(e.lang=[K("search.config.lang")]),e.separator==="[\\s\\-]+"&&(e.separator=K("search.config.separator"));let o=K("search.config.pipeline").split(/\s*,\s*/).filter(Boolean);return{config:e,docs:t,index:r,pipeline:o}}function vi(e,t){let r=se(),o=new Worker(e),n=new M,i=vn(o,{tx$:n}).pipe(f(a=>{if(Yt(a))for(let s of a.data)for(let c of s)c.location=`${r.base}/${c.location}`;return a}),ne());return ve(t).pipe(f(a=>({type:_e.SETUP,data:Va(a)}))).subscribe(n.next.bind(n)),{tx$:n,rx$:i}}function gi(){let e=se();ye(new URL("versions.json",e.base)).subscribe(t=>{fe(".md-header__topic").appendChild(Xn(t))})}function Wa(e){let t=(__search==null?void 0:__search.transform)||hi,r=Yo(e),o=I(T(e,"keyup"),T(e,"focus").pipe(Te(1))).pipe(f(()=>t(e.value)),z());return G([o,r]).pipe(f(([n,i])=>({value:n,focus:i})))}function xi(e,{tx$:t}){let r=new M;return r.pipe(U("value"),f(({value:o})=>({type:_e.QUERY,data:o}))).subscribe(t.next.bind(t)),r.pipe(U("focus")).subscribe(({focus:o})=>{o?($e("search",o),jn(e,"")):Fn(e)}),T(e.form,"reset").pipe(wr(r.pipe(vr(1)))).subscribe(()=>ke(e)),Wa(e).pipe(H(r),P(()=>r.complete()),f(o=>$({ref:e},o)))}function yi(e,{rx$:t},{query$:r}){let o=new M,n=Zo(e.parentElement).pipe(k(Boolean)),i=fe(":scope > :first-child",e),a=fe(":scope > :last-child",e);return t.pipe(k(Jt),xe(1)).subscribe(()=>{kr(i)}),o.pipe(Y(J),be(r)).subscribe(([{data:c},{value:l}])=>{l?Pn(i,c.length):kr(i)}),o.pipe(Y(J),H(()=>Vn(a)),E(({data:c})=>I(F(...c.slice(0,10)),F(...c.slice(10)).pipe(he(4),Tr(n),E(([l])=>F(...l)))))).subscribe(c=>{$n(a,Jn(c))}),t.pipe(k(Yt),f(({data:c})=>({data:c})),V({data:[]})).pipe(H(o),P(()=>o.complete()),f(c=>$({ref:e},c)))}function Si(e,{index$:t,keyboard$:r}){let o=se(),n=vi(o.search,t),i=je("search-query",e),a=je("search-result",e),{tx$:s,rx$:c}=n;s.pipe(k(bi),Ye(c.pipe(k(Jt))),xe(1)).subs!
 cribe(s.next.bind(s)),r.pipe(k(({mode:u})=>u==="search")).subscribe(u=>{let m=Ie();switch(u.type){case"Enter":m===i&&u.claim();break;case"Escape":case"Tab":$e("search",!1),ke(i,!1);break;case"ArrowUp":case"ArrowDown":if(typeof m=="undefined")ke(i);else{let p=[i,...Q(":not(details) > [href], summary, details[open] [href]",a)],b=Math.max(0,(Math.max(0,p.indexOf(m))+p.length+(u.type==="ArrowUp"?-1:1))%p.length);ke(p[b])}u.claim();break;default:i!==Ie()&&ke(i)}}),r.pipe(k(({mode:u})=>u==="global")).subscribe(u=>{switch(u.type){case"f":case"s":case"/":ke(i),en(i),u.claim();break}});let l=xi(i,n);return I(l,yi(a,n,{query$:l}))}function Ua(e,{viewport$:t,main$:r}){let o=e.parentElement.offsetTop-e.parentElement.parentElement.offsetTop;return G([r,t]).pipe(f(([{offset:n,height:i},{offset:{y:a}}])=>(i=i+Math.min(o,Math.max(0,a-n))-o,{height:i,locked:a>=n+o})),z((n,i)=>n.height===i.height&&n.locked===i.locked))}function Rr(e,o){var n=o,{header$:t}=n,r=Dr(n,["header$"]);let i=new M;return i.pipe(Y(J),be(t)).subscribe({next([{height:a},{height:s}]){Dn(e,a),Wn(e,s)},complete(){Un(e),Nn(e)}}),Ua(e,r).pipe(H(i),P(()=>i.complete()),f(a=>$({ref:e},a)))}function wi(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return lt(ye(`${r}/releases/latest`).pipe(f(o=>({version:o.tag_name})),Re({})),ye(r).pipe(f(o=>({stars:o.stargazers_count,forks:o.forks_count})),Re({}))).pipe(f(([o,n])=>$($({},o),n)))}else{let r=`https://api.github.com/repos/${e}`;return ye(r).pipe(f(o=>({repositories:o.public_repos})),Re({}))}}function Ei(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return ye(r).pipe(f(({star_count:o,forks_count:n})=>({stars:o,forks:n})),Re({}))}function Oi(e){let[t]=e.match(/(git(?:hub|lab))/i)||[];switch(t.toLowerCase()){case"github":let[,r,o]=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);return wi(r,o);case"gitlab":let[,n,i]=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i);return Ei(n,i);default:return Z}}var Da;function Na(e){return Da||(Da=Oe(()=>{let t=sessionStorage.getItem(__pref!
 ix("__source"));if(t)return F(JSON.parse(t));{let r=Oi(e.href);return r.subscribe(o=>{try{sessionStorage.setItem(__prefix("__source"),JSON.stringify(o))}catch(n){}}),r}}).pipe(Je(()=>Z),k(t=>Object.keys(t).length>0),f(t=>({facts:t})),re(1)))}function Ti(e){let t=new M;return t.subscribe(({facts:r})=>{zn(e,Yn(r)),qn(e,"done")}),Na(e).pipe(H(t),P(()=>t.complete()),f(r=>$({ref:e},r)))}function za(e,{viewport$:t,header$:r}){return He(document.body).pipe(E(()=>Qt(e,{header$:r,viewport$:t})),f(({offset:{y:o}})=>({hidden:o>=10})),U("hidden"))}function _i(e,t){let r=new M;return r.pipe(Y(J)).subscribe({next({hidden:o}){o?Qn(e,"hidden"):Cr(e)},complete(){Cr(e)}}),za(e,t).pipe(H(r),P(()=>r.complete()),f(o=>$({ref:e},o)))}function qa(e,{viewport$:t,header$:r}){let o=new Map;for(let a of e){let s=decodeURIComponent(a.hash.substring(1)),c=ae(`[id="${s}"]`);typeof c!="undefined"&&o.set(a,c)}let n=r.pipe(f(a=>24+a.height));return He(document.body).pipe(U("height"),f(()=>{let a=[];return[...o].reduce((s,[c,l])=>{for(;a.length&&o.get(a[a.length-1]).tagName>=l.tagName;)a.pop();let u=l.offsetTop;for(;!u&&l.parentElement;)l=l.parentElement,u=l.offsetTop;return s.set([...a=[...a,c]].reverse(),u)},new Map)}),f(a=>new Map([...a].sort(([,s],[,c])=>s-c))),E(a=>G([n,t]).pipe(gr(([s,c],[l,{offset:{y:u}}])=>{for(;c.length;){let[,m]=c[0];if(m-l<u)s=[...s,c.shift()];else break}for(;s.length;){let[,m]=s[s.length-1];if(m-l>=u)c=[s.pop(),...c];else break}return[s,c]},[[],[...a]]),z((s,c)=>s[0]===c[0]&&s[1]===c[1])))).pipe(f(([a,s])=>({prev:a.map(([c])=>c),next:s.map(([c])=>c)})),V({prev:[],next:[]}),he(2,1),f(([a,s])=>a.prev.length<s.prev.length?{prev:s.prev.slice(Math.max(0,a.prev.length-1),s.prev.length),next:[]}:{prev:s.prev.slice(-1),next:s.next.slice(0,s.next.length-a.next.length)}))}function Mi(e,t){let r=new M;r.pipe(Y(J)).subscribe(({prev:n,next:i})=>{for(let[a]of i)Tn(a),En(a);for(let[a,[s]]of n.entries())On(s,a===n.length-1),wn(s,"blur")});let o=Q("[href^=\\#]",e);return qa(o,t).pipe(H(r),P(()=>r.complete()),f(n=>$({ref:e},n)))}functi!
 on Qa(e,{viewport$:t,main$:r}){let o=t.pipe(f(({offset:{y:i}})=>i),he(2,1),f(([i,a])=>i>a),z()),n=r.pipe(U("active"));return G([n,o]).pipe(f(([{active:i},a])=>({hidden:!(i&&a)})),z((i,a)=>i.hidden===a.hidden))}function Ai(e,t){let r=new M;return r.pipe(Y(J)).subscribe({next({hidden:o}){o?Kn(e,"hidden"):Hr(e)},complete(){Hr(e)}}),Qa(e,t).pipe(H(r),P(()=>r.complete()),f(o=>$({ref:e},o)))}function Li({document$:e,tablet$:t}){e.pipe(E(()=>F(...Q("[data-md-state=indeterminate]"))),H(r=>{r.indeterminate=!0,r.checked=!1}),te(r=>T(r,"change").pipe(Er(()=>r.hasAttribute("data-md-state")),oe(r))),be(t)).subscribe(([r,o])=>{r.removeAttribute("data-md-state"),o&&(r.checked=!1)})}function Ka(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function ki({document$:e}){e.pipe(E(()=>F(...Q("[data-md-scrollfix]"))),H(t=>t.removeAttribute("data-md-scrollfix")),k(Ka),te(t=>T(t,"touchstart").pipe(oe(t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function Ci({viewport$:e,tablet$:t}){G([zt("search"),t]).pipe(f(([r,o])=>r&&!o),E(r=>F(r).pipe(Te(r?400:100),Y(J))),be(e)).subscribe(([r,{offset:{y:o}}])=>{r?yn(document.body,o):Sn(document.body)})}document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var Ze=Jo(),Ir=an(),Pr=ln(),$r=rn(),ue=bn(),Gt=pt("(min-width: 960px)"),Hi=pt("(min-width: 1220px)"),ji=un(),Fi=se(),Ba=document.forms.namedItem("search")?(__search==null?void 0:__search.index)||ye(`${Fi.base}/search/search_index.json`):Z,Vr=new M;pi({alert$:Vr});Kt("navigation.instant")&&fi({document$:Ze,location$:Ir,viewport$:ue});var Ii;((Ii=Fi.version)==null?void 0:Ii.provider)==="mike"&&gi();I(Ir,Pr).pipe(Te(125)).subscribe(()=>{$e("drawer",!1),$e("search",!1)});$r.pipe(k(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=ae("[href][rel=prev]");typeof t!="undefined"&&t.click();break;case"n":case".":let r=ae("[href][rel=next]");typeof r!="undefined"&&r.click();break}});Li({document$:Ze,tablet$:Gt});ki(!
 {document$:Ze});Ci({viewport$:ue,tablet$:Gt});var We=ai(je("header"),{viewport$:ue}),Xt=Ze.pipe(f(()=>je("main")),E(e=>li(e,{viewport$:ue,header$:We})),re(1)),Ja=I(...me("dialog").map(e=>ii(e,{alert$:Vr})),...me("header").map(e=>si(e,{viewport$:ue,header$:We,main$:Xt})),...me("palette").map(e=>ui(e)),...me("search").map(e=>Si(e,{index$:Ba,keyboard$:$r})),...me("source").map(e=>Ti(e))),Ya=Oe(()=>I(...me("content").map(e=>ni(e,{target$:Pr,viewport$:ue,print$:ji})),...me("header-title").map(e=>ci(e,{viewport$:ue,header$:We})),...me("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?_r(Hi,()=>Rr(e,{viewport$:ue,header$:We,main$:Xt})):_r(Gt,()=>Rr(e,{viewport$:ue,header$:We,main$:Xt}))),...me("tabs").map(e=>_i(e,{viewport$:ue,header$:We})),...me("toc").map(e=>Mi(e,{viewport$:ue,header$:We})),...me("top").map(e=>Ai(e,{viewport$:ue,main$:Xt})))),Ri=Ze.pipe(E(()=>Ya),ut(Ja),re(1));Ri.subscribe();window.document$=Ze;window.location$=Ir;window.target$=Pr;window.keyboard$=$r;window.viewport$=ue;window.tablet$=Gt;window.screen$=Hi;window.print$=ji;window.alert$=Vr;window.component$=Ri;})();
-//# sourceMappingURL=bundle.82b56eb2.min.js.map
-

Deleted: trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/bundle.82b56eb2.min.js.map
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/bundle.82b56eb2.min.js.map	2024-08-12 23:41:52 UTC (rev 72021)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/bundle.82b56eb2.min.js.map	2024-08-13 00:41:00 UTC (rev 72022)
@@ -1,7 +0,0 @@
-{
-  "version": 3,
-  "sources": ["node_modules/focus-visible/dist/focus-visible.js", "node_modules/tslib/tslib.js", "node_modules/clipboard/dist/clipboard.js", "node_modules/escape-html/index.js", "src/assets/javascripts/bundle.ts", "node_modules/tslib/modules/index.js", "node_modules/rxjs/src/internal/util/isFunction.ts", "node_modules/rxjs/src/internal/util/createErrorClass.ts", "node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "node_modules/rxjs/src/internal/util/arrRemove.ts", "node_modules/rxjs/src/internal/Subscription.ts", "node_modules/rxjs/src/internal/config.ts", "node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts", "node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "node_modules/rxjs/src/internal/util/noop.ts", "node_modules/rxjs/src/internal/NotificationFactories.ts", "node_modules/rxjs/src/internal/Subscriber.ts", "node_modules/rxjs/src/internal/symbol/observable.ts", "node_modules/rxjs/src/internal/util/identity.ts", "node_modules/rxjs/src/internal/util/pipe.ts", "node_modules/rxjs/src/internal/Observable.ts", "node_modules/rxjs/src/internal/util/lift.ts", "node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts", "node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts", "node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "node_modules/rxjs/src/internal/Subject.ts", "node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "node_modules/rxjs/src/internal/ReplaySubject.ts", "node_modules/rxjs/src/internal/scheduler/Action.ts", "node_modules/rxjs/src/internal/scheduler/intervalProvider.ts", "node_modules/rxjs/src/internal/scheduler/AsyncAction.ts", "node_modules/rxjs/src/internal/Scheduler.ts", "node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts", "node_modules/rxjs/src/internal/scheduler/async.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts", "node_modules/rxjs/src/internal/scheduler/animationFrame.ts", "node_modules/rxjs/src/interna!
 l/observable/empty.ts", "node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "node_modules/rxjs/src/internal/util/isArrayLike.ts", "node_modules/rxjs/src/internal/util/isPromise.ts", "node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "node_modules/rxjs/src/internal/symbol/iterator.ts", "node_modules/rxjs/src/internal/util/caughtSchedule.ts", "node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "node_modules/rxjs/src/internal/util/isInteropObservable.ts", "node_modules/rxjs/src/internal/util/isIterable.ts", "node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "node_modules/rxjs/src/internal/util/isReadableStreamLike.ts", "node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "node_modules/rxjs/src/internal/scheduled/scheduled.ts", "node_modules/rxjs/src/internal/observable/from.ts", "node_modules/rxjs/src/internal/observable/fromArray.ts", "node_modules/rxjs/src/internal/util/isScheduler.ts", "node_modules/rxjs/src/internal/util/args.ts", "node_modules/rxjs/src/internal/observable/of.ts", "node_modules/rxjs/src/internal/util/isDate.ts", "node_modules/rxjs/src/internal/operators/map.ts", "node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts", "node_modules/rxjs/src/internal/operators/observeOn.ts", "node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts", "node_modules/rxjs/src/internal/util/createObject.ts", "node_modules/rxjs/src/internal/observable/combineLatest.ts", "node_modules/rxjs/src/internal/operators/mergeInternals.ts", "node_modules/rxjs/src/internal/operators/mergeMap.ts", "node_modules/rxjs/src/internal/operators/mergeAll.ts", "node_modules/rxjs/src/internal/operators/concatAll.ts", "node_modules/rxjs/src/internal/observable/concat.ts", "node_modules/rxjs/src/internal/observable/defer.ts", "node_modules/rxjs/src/internal/observable/fromEvent.!
 ts", "node_modules/rxjs/src/internal/observable/fromEventPattern.ts", "node_modules/rxjs/src/internal/observable/timer.ts", "node_modules/rxjs/src/internal/observable/merge.ts", "node_modules/rxjs/src/internal/observable/never.ts", "node_modules/rxjs/src/internal/util/argsOrArgArray.ts", "node_modules/rxjs/src/internal/operators/filter.ts", "node_modules/rxjs/src/internal/observable/zip.ts", "node_modules/rxjs/src/internal/operators/bufferCount.ts", "node_modules/rxjs/src/internal/operators/catchError.ts", "node_modules/rxjs/src/internal/operators/scanInternals.ts", "node_modules/rxjs/src/internal/operators/combineLatest.ts", "node_modules/rxjs/src/internal/operators/combineLatestWith.ts", "node_modules/rxjs/src/internal/operators/concatMap.ts", "node_modules/rxjs/src/internal/operators/debounceTime.ts", "node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts", "node_modules/rxjs/src/internal/operators/take.ts", "node_modules/rxjs/src/internal/operators/ignoreElements.ts", "node_modules/rxjs/src/internal/operators/mapTo.ts", "node_modules/rxjs/src/internal/operators/delayWhen.ts", "node_modules/rxjs/src/internal/operators/delay.ts", "node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts", "node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts", "node_modules/rxjs/src/internal/operators/finalize.ts", "node_modules/rxjs/src/internal/operators/takeLast.ts", "node_modules/rxjs/src/internal/operators/merge.ts", "node_modules/rxjs/src/internal/operators/mergeWith.ts", "node_modules/rxjs/src/internal/operators/sample.ts", "node_modules/rxjs/src/internal/operators/scan.ts", "node_modules/rxjs/src/internal/operators/share.ts", "node_modules/rxjs/src/internal/operators/shareReplay.ts", "node_modules/rxjs/src/internal/operators/skip.ts", "node_modules/rxjs/src/internal/operators/skipUntil.ts", "node_modules/rxjs/src/internal/operators/startWith.ts", "node_modules/rxjs/src/internal/operators/switchMap.ts", "node_modules/rxjs/src/internal/operators/switchMapTo.ts", "node_modules/rxjs/src/internal!
 /operators/takeUntil.ts", "node_modules/rxjs/src/internal/operators/takeWhile.ts", "node_modules/rxjs/src/internal/operators/tap.ts", "node_modules/rxjs/src/internal/operators/throttle.ts", "node_modules/rxjs/src/internal/operators/withLatestFrom.ts", "node_modules/rxjs/src/internal/operators/zip.ts", "node_modules/rxjs/src/internal/operators/zipWith.ts", "src/assets/javascripts/browser/document/index.ts", "src/assets/javascripts/browser/element/_/index.ts", "src/assets/javascripts/browser/element/focus/index.ts", "src/assets/javascripts/browser/element/size/index.ts", "src/assets/javascripts/browser/element/offset/index.ts", "src/assets/javascripts/browser/element/selection/index.ts", "src/assets/javascripts/browser/toggle/index.ts", "src/assets/javascripts/browser/keyboard/index.ts", "src/assets/javascripts/browser/location/_/index.ts", "src/assets/javascripts/browser/location/hash/index.ts", "src/assets/javascripts/browser/media/index.ts", "src/assets/javascripts/browser/request/index.ts", "src/assets/javascripts/browser/viewport/offset/index.ts", "src/assets/javascripts/browser/viewport/size/index.ts", "src/assets/javascripts/browser/viewport/_/index.ts", "src/assets/javascripts/browser/worker/index.ts", "src/assets/javascripts/_/index.ts", "src/assets/javascripts/components/_/index.ts", "src/assets/javascripts/components/content/code/index.ts", "src/assets/javascripts/actions/_/index.ts", "src/assets/javascripts/actions/anchor/index.ts", "src/assets/javascripts/actions/dialog/index.ts", "src/assets/javascripts/actions/header/_/index.ts", "src/assets/javascripts/actions/header/title/index.ts", "src/assets/javascripts/actions/search/query/index.ts", "src/assets/javascripts/utilities/h/index.ts", "src/assets/javascripts/utilities/string/index.ts", "src/assets/javascripts/actions/search/result/index.ts", "src/assets/javascripts/actions/sidebar/index.ts", "src/assets/javascripts/actions/source/index.ts", "src/assets/javascripts/actions/tabs/index.ts", "src/assets/javascripts/actions/top/index.ts", "src/assets/ja!
 vascripts/templates/clipboard/index.tsx", "src/assets/javascripts/templates/search/index.tsx", "src/assets/javascripts/templates/source/index.tsx", "src/assets/javascripts/templates/table/index.tsx", "src/assets/javascripts/templates/version/index.tsx", "src/assets/javascripts/components/content/details/index.ts", "src/assets/javascripts/components/content/table/index.ts", "src/assets/javascripts/components/content/_/index.ts", "src/assets/javascripts/components/dialog/index.ts", "src/assets/javascripts/components/header/_/index.ts", "src/assets/javascripts/components/header/title/index.ts", "src/assets/javascripts/components/main/index.ts", "src/assets/javascripts/components/palette/index.ts", "src/assets/javascripts/integrations/clipboard/index.ts", "src/assets/javascripts/integrations/instant/index.ts", "src/assets/javascripts/integrations/search/document/index.ts", "src/assets/javascripts/integrations/search/query/transform/index.ts", "src/assets/javascripts/integrations/search/worker/message/index.ts", "src/assets/javascripts/integrations/search/worker/_/index.ts", "src/assets/javascripts/integrations/version/index.ts", "src/assets/javascripts/components/search/query/index.ts", "src/assets/javascripts/components/search/result/index.ts", "src/assets/javascripts/components/search/_/index.ts", "src/assets/javascripts/components/sidebar/index.ts", "src/assets/javascripts/components/source/facts/github/index.ts", "src/assets/javascripts/components/source/facts/gitlab/index.ts", "src/assets/javascripts/components/source/facts/_/index.ts", "src/assets/javascripts/components/source/_/index.ts", "src/assets/javascripts/components/tabs/index.ts", "src/assets/javascripts/components/toc/index.ts", "src/assets/javascripts/components/top/index.ts", "src/assets/javascripts/patches/indeterminate/index.ts", "src/assets/javascripts/patches/scrollfix/index.ts", "src/assets/javascripts/patches/scrolllock/index.ts"],
-  "sourcesContent": ["(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (factory());\n}(this, (function () { 'use strict';\n\n  /**\n   * Applies the :focus-visible polyfill at the given scope.\n   * A scope in this case is either the top-level Document or a Shadow Root.\n   *\n   * @param {(Document|ShadowRoot)} scope\n   * @see https://github.com/WICG/focus-visible\n   */\n  function applyFocusVisiblePolyfill(scope) {\n    var hadKeyboardEvent = true;\n    var hadFocusVisibleRecently = false;\n    var hadFocusVisibleRecentlyTimeout = null;\n\n    var inputTypesAllowlist = {\n      text: true,\n      search: true,\n      url: true,\n      tel: true,\n      email: true,\n      password: true,\n      number: true,\n      date: true,\n      month: true,\n      week: true,\n      time: true,\n      datetime: true,\n      'datetime-local': true\n    };\n\n    /**\n     * Helper function for legacy browsers and iframes which sometimes focus\n     * elements like document, body, and non-interactive SVG.\n     * @param {Element} el\n     */\n    function isValidFocusTarget(el) {\n      if (\n        el &&\n        el !== document &&\n        el.nodeName !== 'HTML' &&\n        el.nodeName !== 'BODY' &&\n        'classList' in el &&\n        'contains' in el.classList\n      ) {\n        return true;\n      }\n      return false;\n    }\n\n    /**\n     * Computes whether the given element should automatically trigger the\n     * `focus-visible` class being added, i.e. whether it should always match\n     * `:focus-visible` when focused.\n     * @param {Element} el\n     * @return {boolean}\n     */\n    function focusTriggersKeyboardModality(el) {\n      var type = el.type;\n      var tagName = el.tagName;\n\n      if (tagName === 'INPUT' && inputTypesAllowlist[type] && !el.readOnly) {\n        return true;\n      }\n\n      if (tagName === 'TEXTAREA' && !el.readOnly) {\n        return !
 true;\n      }\n\n      if (el.isContentEditable) {\n        return true;\n      }\n\n      return false;\n    }\n\n    /**\n     * Add the `focus-visible` class to the given element if it was not added by\n     * the author.\n     * @param {Element} el\n     */\n    function addFocusVisibleClass(el) {\n      if (el.classList.contains('focus-visible')) {\n        return;\n      }\n      el.classList.add('focus-visible');\n      el.setAttribute('data-focus-visible-added', '');\n    }\n\n    /**\n     * Remove the `focus-visible` class from the given element if it was not\n     * originally added by the author.\n     * @param {Element} el\n     */\n    function removeFocusVisibleClass(el) {\n      if (!el.hasAttribute('data-focus-visible-added')) {\n        return;\n      }\n      el.classList.remove('focus-visible');\n      el.removeAttribute('data-focus-visible-added');\n    }\n\n    /**\n     * If the most recent user interaction was via the keyboard;\n     * and the key press did not include a meta, alt/option, or control key;\n     * then the modality is keyboard. Otherwise, the modality is not keyboard.\n     * Apply `focus-visible` to any current active element and keep track\n     * of our keyboard modality state with `hadKeyboardEvent`.\n     * @param {KeyboardEvent} e\n     */\n    function onKeyDown(e) {\n      if (e.metaKey || e.altKey || e.ctrlKey) {\n        return;\n      }\n\n      if (isValidFocusTarget(scope.activeElement)) {\n        addFocusVisibleClass(scope.activeElement);\n      }\n\n      hadKeyboardEvent = true;\n    }\n\n    /**\n     * If at any point a user clicks with a pointing device, ensure that we change\n     * the modality away from keyboard.\n     * This avoids the situation where a user presses a key on an already focused\n     * element, and then clicks on a different element, focusing it with a\n     * pointing device, while we still think we're in keyboard modality.\n     * @param {Event} e\n     */\n    function onPointerDown(e) {\n      hadKeyboardEvent = false;\n    }\n\n!
     /**\n     * On `focus`, add the `focus-visible` class to the target if:\n     * - the target received focus as a result of keyboard navigation, or\n     * - the event target is an element that will likely require interaction\n     *   via the keyboard (e.g. a text box)\n     * @param {Event} e\n     */\n    function onFocus(e) {\n      // Prevent IE from focusing the document or HTML element.\n      if (!isValidFocusTarget(e.target)) {\n        return;\n      }\n\n      if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n        addFocusVisibleClass(e.target);\n      }\n    }\n\n    /**\n     * On `blur`, remove the `focus-visible` class from the target.\n     * @param {Event} e\n     */\n    function onBlur(e) {\n      if (!isValidFocusTarget(e.target)) {\n        return;\n      }\n\n      if (\n        e.target.classList.contains('focus-visible') ||\n        e.target.hasAttribute('data-focus-visible-added')\n      ) {\n        // To detect a tab/window switch, we look for a blur event followed\n        // rapidly by a visibility change.\n        // If we don't see a visibility change within 100ms, it's probably a\n        // regular focus change.\n        hadFocusVisibleRecently = true;\n        window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n        hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n          hadFocusVisibleRecently = false;\n        }, 100);\n        removeFocusVisibleClass(e.target);\n      }\n    }\n\n    /**\n     * If the user changes tabs, keep track of whether or not the previously\n     * focused element had .focus-visible.\n     * @param {Event} e\n     */\n    function onVisibilityChange(e) {\n      if (document.visibilityState === 'hidden') {\n        // If the tab becomes active again, the browser will handle calling focus\n        // on the element (Safari actually calls it twice).\n        // If this tab change caused a blur on an element with focus-visible,\n        // re-apply the class when the user switches back to the tab.\n        if!
  (hadFocusVisibleRecently) {\n          hadKeyboardEvent = true;\n        }\n        addInitialPointerMoveListeners();\n      }\n    }\n\n    /**\n     * Add a group of listeners to detect usage of any pointing devices.\n     * These listeners will be added when the polyfill first loads, and anytime\n     * the window is blurred, so that they are active when the window regains\n     * focus.\n     */\n    function addInitialPointerMoveListeners() {\n      document.addEventListener('mousemove', onInitialPointerMove);\n      document.addEventListener('mousedown', onInitialPointerMove);\n      document.addEventListener('mouseup', onInitialPointerMove);\n      document.addEventListener('pointermove', onInitialPointerMove);\n      document.addEventListener('pointerdown', onInitialPointerMove);\n      document.addEventListener('pointerup', onInitialPointerMove);\n      document.addEventListener('touchmove', onInitialPointerMove);\n      document.addEventListener('touchstart', onInitialPointerMove);\n      document.addEventListener('touchend', onInitialPointerMove);\n    }\n\n    function removeInitialPointerMoveListeners() {\n      document.removeEventListener('mousemove', onInitialPointerMove);\n      document.removeEventListener('mousedown', onInitialPointerMove);\n      document.removeEventListener('mouseup', onInitialPointerMove);\n      document.removeEventListener('pointermove', onInitialPointerMove);\n      document.removeEventListener('pointerdown', onInitialPointerMove);\n      document.removeEventListener('pointerup', onInitialPointerMove);\n      document.removeEventListener('touchmove', onInitialPointerMove);\n      document.removeEventListener('touchstart', onInitialPointerMove);\n      document.removeEventListener('touchend', onInitialPointerMove);\n    }\n\n    /**\n     * When the polfyill first loads, assume the user is in keyboard modality.\n     * If any event is received from a pointing device (e.g. mouse, pointer,\n     * touch), turn off keyboard modality.\n     * This accounts for situations whe!
 re focus enters the page from the URL bar.\n     * @param {Event} e\n     */\n    function onInitialPointerMove(e) {\n      // Work around a Safari quirk that fires a mousemove on <html> whenever the\n      // window blurs, even if you're tabbing out of the page. \u00AF\\_(\u30C4)_/\u00AF\n      if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {\n        return;\n      }\n\n      hadKeyboardEvent = false;\n      removeInitialPointerMoveListeners();\n    }\n\n    // For some kinds of state, we are interested in changes at the global scope\n    // only. For example, global pointer input, global key presses and global\n    // visibility change should affect the state at every scope:\n    document.addEventListener('keydown', onKeyDown, true);\n    document.addEventListener('mousedown', onPointerDown, true);\n    document.addEventListener('pointerdown', onPointerDown, true);\n    document.addEventListener('touchstart', onPointerDown, true);\n    document.addEventListener('visibilitychange', onVisibilityChange, true);\n\n    addInitialPointerMoveListeners();\n\n    // For focus and blur, we specifically care about state changes in the local\n    // scope. This is because focus / blur events that originate from within a\n    // shadow root are not re-dispatched from the host element if it was already\n    // the active element in its own scope:\n    scope.addEventListener('focus', onFocus, true);\n    scope.addEventListener('blur', onBlur, true);\n\n    // We detect that a node is a ShadowRoot by ensuring that it is a\n    // DocumentFragment and also has a host property. This check covers native\n    // implementation and polyfill implementation transparently. If we only cared\n    // about the native implementation, we could just check if the scope was\n    // an instance of a ShadowRoot.\n    if (scope.nodeType === Node.DOCUMENT_FRAGMENT_NODE && scope.host) {\n      // Since a ShadowRoot is a special kind of DocumentFragment, it does not\n      // have a root element to add a class to. So, we add!
  this attribute to the\n      // host element instead:\n      scope.host.setAttribute('data-js-focus-visible', '');\n    } else if (scope.nodeType === Node.DOCUMENT_NODE) {\n      document.documentElement.classList.add('js-focus-visible');\n      document.documentElement.setAttribute('data-js-focus-visible', '');\n    }\n  }\n\n  // It is important to wrap all references to global window and document in\n  // these checks to support server-side rendering use cases\n  // @see https://github.com/WICG/focus-visible/issues/199\n  if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n    // Make the polyfill helper globally available. This can be used as a signal\n    // to interested libraries that wish to coordinate with the polyfill for e.g.,\n    // applying the polyfill to a shadow root:\n    window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill;\n\n    // Notify interested libraries of the polyfill's presence, in case the\n    // polyfill was loaded lazily:\n    var event;\n\n    try {\n      event = new CustomEvent('focus-visible-polyfill-ready');\n    } catch (error) {\n      // IE11 does not support using CustomEvent as a constructor directly:\n      event = document.createEvent('CustomEvent');\n      event.initCustomEvent('focus-visible-polyfill-ready', false, false, {});\n    }\n\n    window.dispatchEvent(event);\n  }\n\n  if (typeof document !== 'undefined') {\n    // Apply the polyfill to the global document, so that no JavaScript\n    // coordination is required to use the polyfill in the top-level document:\n    applyFocusVisiblePolyfill(document);\n  }\n\n})));\n", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY!
 \r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global global, define, System, Reflect, Promise */\r\nvar __extends;\r\nvar __assign;\r\nvar __rest;\r\nvar __decorate;\r\nvar __param;\r\nvar __metadata;\r\nvar __awaiter;\r\nvar __generator;\r\nvar __exportStar;\r\nvar __values;\r\nvar __read;\r\nvar __spread;\r\nvar __spreadArrays;\r\nvar __spreadArray;\r\nvar __await;\r\nvar __asyncGenerator;\r\nvar __asyncDelegator;\r\nvar __asyncValues;\r\nvar __makeTemplateObject;\r\nvar __importStar;\r\nvar __importDefault;\r\nvar __classPrivateFieldGet;\r\nvar __classPrivateFieldSet;\r\nvar __createBinding;\r\n(function (factory) {\r\n    var root = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\r\n    if (typeof define === \"function\" && define.amd) {\r\n        define(\"tslib\", [\"exports\"], function (exports) { factory(createExporter(root, createExporter(exports))); });\r\n    }\r\n    else if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n        factory(createExporter(root, createExporter(module.exports)));\r\n    }\r\n    else {\r\n        factory(createExporter(root));\r\n    }\r\n    function createExporter(exports, previous) {\r\n        if (exports !== root) {\r\n            if (typeof Object.create === \"function\") {\r\n                Object.defineProperty(exports, \"__esModule\", { value: true });\r\n            }\r\n            else {\r\n                exports.__esModule = true;\r\n            }\r\n        }\r\n        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };\r\n    }\r\n})\r\n(functio!
 n (exporter) {\r\n    var extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n\r\n    __extends = function (d, b) {\r\n        if (typeof b !== \"function\" && b !== null)\r\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    };\r\n\r\n    __assign = Object.assign || function (t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n\r\n    __rest = function (s, e) {\r\n        var t = {};\r\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n            t[p] = s[p];\r\n        if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                    t[p[i]] = s[p[i]];\r\n            }\r\n        return t;\r\n    };\r\n\r\n    __decorate = function (decorators, target, key, desc) {\r\n        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n        if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n        return c > 3 && r && Object.def!
 ineProperty(target, key, r), r;\r\n    };\r\n\r\n    __param = function (paramIndex, decorator) {\r\n        return function (target, key) { decorator(target, key, paramIndex); }\r\n    };\r\n\r\n    __metadata = function (metadataKey, metadataValue) {\r\n        if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n    };\r\n\r\n    __awaiter = function (thisArg, _arguments, P, generator) {\r\n        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n        return new (P || (P = Promise))(function (resolve, reject) {\r\n            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n            function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n            step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n        });\r\n    };\r\n\r\n    __generator = function (thisArg, body) {\r\n        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n        return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n        function verb(n) { return function (v) { return step([n, v]); }; }\r\n        function step(op) {\r\n            if (f) throw new TypeError(\"Generator is already executing.\");\r\n            while (_) try {\r\n                if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n                if (y = 0, t) op = [op[0] & 2, t.value];\r\n                switch (op[0]) {\r\n                    case 0: case 1: t = op; break;\r\n                   !
  case 4: _.label++; return { value: op[1], done: false };\r\n                    case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                    case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                    default:\r\n                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                        if (t[2]) _.ops.pop();\r\n                        _.trys.pop(); continue;\r\n                }\r\n                op = body.call(thisArg, _);\r\n            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n        }\r\n    };\r\n\r\n    __exportStar = function(m, o) {\r\n        for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n    };\r\n\r\n    __createBinding = Object.create ? (function(o, m, k, k2) {\r\n        if (k2 === undefined) k2 = k;\r\n        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n    }) : (function(o, m, k, k2) {\r\n        if (k2 === undefined) k2 = k;\r\n        o[k2] = m[k];\r\n    });\r\n\r\n    __values = function (o) {\r\n        var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n        if (m) return m.call(o);\r\n        if (o && typeof o.length === \"number\") return {\r\n            next: function () {\r\n                if (o && i >= o.length) o = void 0;\r\n                return { value: o && o[i++], done: !o };\r\n            }\r\n        };\r\n        throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\"!
 );\r\n    };\r\n\r\n    __read = function (o, n) {\r\n        var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n        if (!m) return o;\r\n        var i = m.call(o), r, ar = [], e;\r\n        try {\r\n            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n        }\r\n        catch (error) { e = { error: error }; }\r\n        finally {\r\n            try {\r\n                if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n            }\r\n            finally { if (e) throw e.error; }\r\n        }\r\n        return ar;\r\n    };\r\n\r\n    /** @deprecated */\r\n    __spread = function () {\r\n        for (var ar = [], i = 0; i < arguments.length; i++)\r\n            ar = ar.concat(__read(arguments[i]));\r\n        return ar;\r\n    };\r\n\r\n    /** @deprecated */\r\n    __spreadArrays = function () {\r\n        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n        for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n                r[k] = a[j];\r\n        return r;\r\n    };\r\n\r\n    __spreadArray = function (to, from) {\r\n        for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n            to[j] = from[i];\r\n        return to;\r\n    };\r\n\r\n    __await = function (v) {\r\n        return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n    };\r\n\r\n    __asyncGenerator = function (thisArg, _arguments, generator) {\r\n        if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n        var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n        return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n        function !
 resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }\r\n        function fulfill(value) { resume(\"next\", value); }\r\n        function reject(value) { resume(\"throw\", value); }\r\n        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n    };\r\n\r\n    __asyncDelegator = function (o) {\r\n        var i, p;\r\n        return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n    };\r\n\r\n    __asyncValues = function (o) {\r\n        if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n        var m = o[Symbol.asyncIterator], i;\r\n        return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n    };\r\n\r\n    __makeTemplateObject = function (cooked, raw) {\r\n        if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n        return cooked;\r\n    };\r\n\r\n    var __setModuleDefault = Object.create ? (function(o, v) {\r\n        Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n    }) : function(o, v) {\r\n        o[\"default\"] = v;\r\n    };\r\n\r\n    __importStar = function (mo!
 d) {\r\n        if (mod && mod.__esModule) return mod;\r\n        var result = {};\r\n        if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n        __setModuleDefault(result, mod);\r\n        return result;\r\n    };\r\n\r\n    __importDefault = function (mod) {\r\n        return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n    };\r\n\r\n    __classPrivateFieldGet = function (receiver, privateMap) {\r\n        if (!privateMap.has(receiver)) {\r\n            throw new TypeError(\"attempted to get private field on non-instance\");\r\n        }\r\n        return privateMap.get(receiver);\r\n    };\r\n\r\n    __classPrivateFieldSet = function (receiver, privateMap, value) {\r\n        if (!privateMap.has(receiver)) {\r\n            throw new TypeError(\"attempted to set private field on non-instance\");\r\n        }\r\n        privateMap.set(receiver, value);\r\n        return value;\r\n    };\r\n\r\n    exporter(\"__extends\", __extends);\r\n    exporter(\"__assign\", __assign);\r\n    exporter(\"__rest\", __rest);\r\n    exporter(\"__decorate\", __decorate);\r\n    exporter(\"__param\", __param);\r\n    exporter(\"__metadata\", __metadata);\r\n    exporter(\"__awaiter\", __awaiter);\r\n    exporter(\"__generator\", __generator);\r\n    exporter(\"__exportStar\", __exportStar);\r\n    exporter(\"__createBinding\", __createBinding);\r\n    exporter(\"__values\", __values);\r\n    exporter(\"__read\", __read);\r\n    exporter(\"__spread\", __spread);\r\n    exporter(\"__spreadArrays\", __spreadArrays);\r\n    exporter(\"__spreadArray\", __spreadArray);\r\n    exporter(\"__await\", __await);\r\n    exporter(\"__asyncGenerator\", __asyncGenerator);\r\n    exporter(\"__asyncDelegator\", __asyncDelegator);\r\n    exporter(\"__asyncValues\", __asyncValues);\r\n    exporter(\"__makeTemplateObject\", __makeTemplateObject);\r\n    exporter(\"__importStar\", __importStar);\r\n    exporter(\"__importDefault\", __importD!
 efault);\r\n    exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet);\r\n    exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet);\r\n});\r\n", "/*!\n * clipboard.js v2.0.8\n * https://clipboardjs.com/\n *\n * Licensed MIT \u00A9 Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 134:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/clipboard-action.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constr!
 uctor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/**\n * Inner class which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n */\n\nvar ClipboardAction = /*#__PURE__*/function () {\n  /**\n   * @param {Object} options\n   */\n  function ClipboardAction(options) {\n    _classCallCheck(this, ClipboardAction);\n\n    this.resolveOptions(options);\n    this.initSelection();\n  }\n  /**\n   * Defines base properties passed from constructor.\n   * @param {Object} options\n   */\n\n\n  _createClass(ClipboardAction, [{\n    key: \"resolveOptions\",\n    value: function resolveOptions() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      this.action = options.action;\n      this.container = options.container;\n      this.emitter = options.emitter;\n      this.target = options.target;\n      this.text = options.text;\n      this.trigger = options.trigger;\n      this.selectedText = '';\n    }\n    /**\n     * Decides which selection strategy is going to be applied based\n     * on the existence of `text` and `target` properties.\n     */\n\n  }, {\n    key: \"initSelection\",\n    value: function initSelection() {\n      if (this.text) {\n        this.selectFake();\n      } else if (this.target) {\n        this.selectTarget();\n      }\n    }\n    /**\n     * Creates a fake textarea element, sets its value from `text` property,\n     */\n\n  }, {\n    key!
 : \"createFakeElement\",\n    value: function createFakeElement() {\n      var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n      this.fakeElem = document.createElement('textarea'); // Prevent zooming on iOS\n\n      this.fakeElem.style.fontSize = '12pt'; // Reset box model\n\n      this.fakeElem.style.border = '0';\n      this.fakeElem.style.padding = '0';\n      this.fakeElem.style.margin = '0'; // Move element out of screen horizontally\n\n      this.fakeElem.style.position = 'absolute';\n      this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n      var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n      this.fakeElem.style.top = \"\".concat(yPosition, \"px\");\n      this.fakeElem.setAttribute('readonly', '');\n      this.fakeElem.value = this.text;\n      return this.fakeElem;\n    }\n    /**\n     * Get's the value of fakeElem,\n     * and makes a selection on it.\n     */\n\n  }, {\n    key: \"selectFake\",\n    value: function selectFake() {\n      var _this = this;\n\n      var fakeElem = this.createFakeElement();\n\n      this.fakeHandlerCallback = function () {\n        return _this.removeFake();\n      };\n\n      this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;\n      this.container.appendChild(fakeElem);\n      this.selectedText = select_default()(fakeElem);\n      this.copyText();\n      this.removeFake();\n    }\n    /**\n     * Only removes the fake element after another click event, that way\n     * a user can hit `Ctrl+C` to copy because selection still exists.\n     */\n\n  }, {\n    key: \"removeFake\",\n    value: function removeFake() {\n      if (this.fakeHandler) {\n        this.container.removeEventListener('click', this.fakeHandlerCallback);\n        this.fakeHandler = null;\n        this.fakeHandlerCallback = null;\n      }\n\n      if (this.fakeElem) {\n        this.container.removeChild(this.fakeElem);\n        this.fakeElem = null;\n!
       }\n    }\n    /**\n     * Selects the content from element passed on `target` property.\n     */\n\n  }, {\n    key: \"selectTarget\",\n    value: function selectTarget() {\n      this.selectedText = select_default()(this.target);\n      this.copyText();\n    }\n    /**\n     * Executes the copy operation based on the current selection.\n     */\n\n  }, {\n    key: \"copyText\",\n    value: function copyText() {\n      var succeeded;\n\n      try {\n        succeeded = document.execCommand(this.action);\n      } catch (err) {\n        succeeded = false;\n      }\n\n      this.handleResult(succeeded);\n    }\n    /**\n     * Fires an event based on the copy operation result.\n     * @param {Boolean} succeeded\n     */\n\n  }, {\n    key: \"handleResult\",\n    value: function handleResult(succeeded) {\n      this.emitter.emit(succeeded ? 'success' : 'error', {\n        action: this.action,\n        text: this.selectedText,\n        trigger: this.trigger,\n        clearSelection: this.clearSelection.bind(this)\n      });\n    }\n    /**\n     * Moves focus away from `target` and back to the trigger, removes current selection.\n     */\n\n  }, {\n    key: \"clearSelection\",\n    value: function clearSelection() {\n      if (this.trigger) {\n        this.trigger.focus();\n      }\n\n      document.activeElement.blur();\n      window.getSelection().removeAllRanges();\n    }\n    /**\n     * Sets the `action` to be performed which can be either 'copy' or 'cut'.\n     * @param {String} action\n     */\n\n  }, {\n    key: \"destroy\",\n\n    /**\n     * Destroy lifecycle.\n     */\n    value: function destroy() {\n      this.removeFake();\n    }\n  }, {\n    key: \"action\",\n    set: function set() {\n      var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';\n      this._action = action;\n\n      if (this._action !== 'copy' && this._action !== 'cut') {\n        throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n      }\n    }\n    /**\n     * Gets t!
 he `action` property.\n     * @return {String}\n     */\n    ,\n    get: function get() {\n      return this._action;\n    }\n    /**\n     * Sets the `target` property using an element\n     * that will be have its content copied.\n     * @param {Element} target\n     */\n\n  }, {\n    key: \"target\",\n    set: function set(target) {\n      if (target !== undefined) {\n        if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n          if (this.action === 'copy' && target.hasAttribute('disabled')) {\n            throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n          }\n\n          if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n            throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n          }\n\n          this._target = target;\n        } else {\n          throw new Error('Invalid \"target\" value, use a valid Element');\n        }\n      }\n    }\n    /**\n     * Gets the `target` property.\n     * @return {String|HTMLElement}\n     */\n    ,\n    get: function get() {\n      return this._target;\n    }\n  }]);\n\n  return ClipboardAction;\n}();\n\n/* harmony default export */ var clipboard_action = (ClipboardAction);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction clipboard_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction clipboard_defineProperties(t!
 arget, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction clipboard_createClass(Constructor, protoProps, staticProps) { if (protoProps) clipboard_defineProperties(Constructor.prototype, protoProps); if (staticProps) clipboard_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) ret!
 urn false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n  var attribute = \"data-clipboard-\".concat(suffix);\n\n  if (!element.hasAttribute(attribute)) {\n    return;\n  }\n\n  return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n  _inherits(Clipboard, _Emitter);\n\n  var _super = _createSuper(Clipboard);\n\n  /**\n   * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n   * @param {Object} options\n   */\n  function Clipboard(trigger, options) {\n    var _this;\n\n    clipboard_classCallCheck(this, Clipboard);\n\n    _this = _super.call(this);\n\n    _this.resolveOptions(options);\n\n    _this.listenClick(trigger);\n\n    return _this;\n  }\n  /**\n   * Defines if attributes would be resolved using internal setter functions\n   * or custom functions that were passed in the constructor.\n   * @param {Object} options\n   */\n\n\n  clipboard_createClass(Clipboard, [{\n    key: \"resolveOptions\",\n    value: function resolveOptions() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n      this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n      this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n    !
   this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n    }\n    /**\n     * Adds a click event listener to the passed trigger.\n     * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n     */\n\n  }, {\n    key: \"listenClick\",\n    value: function listenClick(trigger) {\n      var _this2 = this;\n\n      this.listener = listen_default()(trigger, 'click', function (e) {\n        return _this2.onClick(e);\n      });\n    }\n    /**\n     * Defines a new `ClipboardAction` on each click event.\n     * @param {Event} e\n     */\n\n  }, {\n    key: \"onClick\",\n    value: function onClick(e) {\n      var trigger = e.delegateTarget || e.currentTarget;\n\n      if (this.clipboardAction) {\n        this.clipboardAction = null;\n      }\n\n      this.clipboardAction = new clipboard_action({\n        action: this.action(trigger),\n        target: this.target(trigger),\n        text: this.text(trigger),\n        container: this.container,\n        trigger: trigger,\n        emitter: this\n      });\n    }\n    /**\n     * Default `action` lookup function.\n     * @param {Element} trigger\n     */\n\n  }, {\n    key: \"defaultAction\",\n    value: function defaultAction(trigger) {\n      return getAttributeValue('action', trigger);\n    }\n    /**\n     * Default `target` lookup function.\n     * @param {Element} trigger\n     */\n\n  }, {\n    key: \"defaultTarget\",\n    value: function defaultTarget(trigger) {\n      var selector = getAttributeValue('target', trigger);\n\n      if (selector) {\n        return document.querySelector(selector);\n      }\n    }\n    /**\n     * Returns the support of the given action, or all actions if no action is\n     * given.\n     * @param {String} [action]\n     */\n\n  }, {\n    key: \"defaultText\",\n\n    /**\n     * Default `text` lookup function.\n     * @param {Element} trigger\n     */\n    value: function defaultText(trigger) {\n      return getAttributeValue('text', trigger);\n    }\n    /**\n     * Destroy li!
 fecycle.\n     */\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this.listener.destroy();\n\n      if (this.clipboardAction) {\n        this.clipboardAction.destroy();\n        this.clipboardAction = null;\n      }\n    }\n  }], [{\n    key: \"isSupported\",\n    value: function isSupported() {\n      var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n      var actions = typeof action === 'string' ? [action] : action;\n      var support = !!document.queryCommandSupported;\n      actions.forEach(function (action) {\n        support = support && !!document.queryCommandSupported(action);\n      });\n      return support;\n    }\n  }]);\n\n  return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n    var proto = Element.prototype;\n\n    proto.matches = proto.matchesSelector ||\n                    proto.mozMatchesSelector ||\n                    proto.msMatchesSelector ||\n                    proto.oMatchesSelector ||\n                    proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n    while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n        if (typeof element.matches === 'function' &&\n            element.matches(selector)) {\n          return element;\n        }\n        element = element.parentNode;\n    }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {Str!
 ing} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n    var listenerFn = listener.apply(this, arguments);\n\n    element.addEventListener(type, listenerFn, useCapture);\n\n    return {\n        destroy: function() {\n            element.removeEventListener(type, listenerFn, useCapture);\n        }\n    }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n    // Handle the regular Element usage\n    if (typeof elements.addEventListener === 'function') {\n        return _delegate.apply(null, arguments);\n    }\n\n    // Handle Element-less usage, it defaults to global delegation\n    if (typeof type === 'function') {\n        // Use `document` as the first parameter, then apply arguments\n        // This is a short way to .unshift `arguments` without running into deoptimizations\n        return _delegate.bind(null, document).apply(null, arguments);\n    }\n\n    // Handle Selector-based usage\n    if (typeof elements === 'string') {\n        elements = document.querySelectorAll(elements);\n    }\n\n    // Handle Array-like based usage\n    return Array.prototype.map.call(elements, function (element) {\n        return _delegate(element, selector, type, callback, useCapture);\n    });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n    return function(e) {\n        e.delegateTarget = closest(e.target, selector);\n\n        if (e.delegateTarget) {\n            callback.call(element, e);\n        }\n    }\n}\n\nmodule.exports = delegate;\n\n\n/*!
 **/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n    return value !== undefined\n        && value instanceof HTMLElement\n        && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n    var type = Object.prototype.toString.call(value);\n\n    return value !== undefined\n        && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n        && ('length' in value)\n        && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n    return typeof value === 'string'\n        || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n    var type = Object.prototype.toString.call(value);\n\n    return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n    if (!target && !type && !callback) {\n        throw new Error('Missing required arguments');\n    }\n\n    if (!is.string(type)) {\n        throw new TypeError('Second argument must be a String');\n    }\n\n    if (!is.fn(callback)) {\n        throw new TypeError('Third argument must be a Function');\n    }\n\n    if (is.node(target)) {\n        return listenNode(target, !
 type, callback);\n    }\n    else if (is.nodeList(target)) {\n        return listenNodeList(target, type, callback);\n    }\n    else if (is.string(target)) {\n        return listenSelector(target, type, callback);\n    }\n    else {\n        throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n    }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n    node.addEventListener(type, callback);\n\n    return {\n        destroy: function() {\n            node.removeEventListener(type, callback);\n        }\n    }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n    Array.prototype.forEach.call(nodeList, function(node) {\n        node.addEventListener(type, callback);\n    });\n\n    return {\n        destroy: function() {\n            Array.prototype.forEach.call(nodeList, function(node) {\n                node.removeEventListener(type, callback);\n            });\n        }\n    }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n    return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n    var selectedText;\n\n    if (element.nodeName === 'SELECT') {\n        element.focus();\n\n        selectedText = element.value;\n    }\n    else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXT!
 AREA') {\n        var isReadOnly = element.hasAttribute('readonly');\n\n        if (!isReadOnly) {\n            element.setAttribute('readonly', '');\n        }\n\n        element.select();\n        element.setSelectionRange(0, element.value.length);\n\n        if (!isReadOnly) {\n            element.removeAttribute('readonly');\n        }\n\n        selectedText = element.value;\n    }\n    else {\n        if (element.hasAttribute('contenteditable')) {\n            element.focus();\n        }\n\n        var selection = window.getSelection();\n        var range = document.createRange();\n\n        range.selectNodeContents(element);\n        selection.removeAllRanges();\n        selection.addRange(range);\n\n        selectedText = selection.toString();\n    }\n\n    return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n  // Keep this empty so it's easier to inherit from\n  // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n  on: function (name, callback, ctx) {\n    var e = this.e || (this.e = {});\n\n    (e[name] || (e[name] = [])).push({\n      fn: callback,\n      ctx: ctx\n    });\n\n    return this;\n  },\n\n  once: function (name, callback, ctx) {\n    var self = this;\n    function listener () {\n      self.off(name, listener);\n      callback.apply(ctx, arguments);\n    };\n\n    listener._ = callback\n    return this.on(name, listener, ctx);\n  },\n\n  emit: function (name) {\n    var data = [].slice.call(arguments, 1);\n    var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n    var i = 0;\n    var len = evtArr.length;\n\n    for (i; i < len; i++) {\n      evtArr[i].fn.apply(evtArr[i].ctx, data);\n    }\n\n    return this;\n  },\n\n  off: function (name, callback) {\n    var e = this.e || (this.e = {});\n    var evts = e[name];\n    var liveEvents = [];\n\n    if (evts && callback) {\n      for (var i = 0, len = evts.length; i < len; i++) {\n        if (!
 evts[i].fn !== callback && evts[i].fn._ !== callback)\n          liveEvents.push(evts[i]);\n      }\n    }\n\n    // Remove event from queue to prevent memory leak\n    // Suggested by https://github.com/lazd\n    // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n    (liveEvents.length)\n      ? e[name] = liveEvents\n      : delete e[name];\n\n    return this;\n  }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/*!
 *****/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(134);\n/******/ })()\n.default;\n});", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param  {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n  var str = '' + string;\n  var match = matchHtmlRegExp.exec(str);\n\n  if (!match) {\n    return str;\n  }\n\n  var escape;\n  var html = '';\n  var index = 0;\n  var lastIndex = 0;\n\n  for (index = match.index; index < str.length; index++) {\n    switch (str.charCodeAt(index)) {\n      case 34: // \"\n     !
    escape = '"';\n        break;\n      case 38: // &\n        escape = '&';\n        break;\n      case 39: // '\n        escape = ''';\n        break;\n      case 60: // <\n        escape = '<';\n        break;\n      case 62: // >\n        escape = '>';\n        break;\n      default:\n        continue;\n    }\n\n    if (lastIndex !== index) {\n      html += str.substring(lastIndex, index);\n    }\n\n    lastIndex = index + 1;\n    html += escape;\n  }\n\n  return lastIndex !== index\n    ? html + str.substring(lastIndex, index)\n    : html;\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport \"focus-visible\"\nimport { NEVER, Subject, defer, merge } from \"rxjs\"\nimport {\n  delay,\n  filter,\n  map,\n  mergeWith,\n  shareReplay,\n  switchMap\n} from \"rxjs/operators\"\n\nimport { configuration, feature } from \"./_\"\nimport {\n  at,\n  getElement,\n  requestJSON,\n!
   setToggle,\n  watchDocument,\n  watchKeyboard,\n  watchLocation,\n  watchLocationTarget,\n  watchMedia,\n  watchPrint,\n  watchViewport\n} from \"./browser\"\nimport {\n  getComponentElement,\n  getComponentElements,\n  mountBackToTop,\n  mountContent,\n  mountDialog,\n  mountHeader,\n  mountHeaderTitle,\n  mountPalette,\n  mountSearch,\n  mountSidebar,\n  mountSource,\n  mountTableOfContents,\n  mountTabs,\n  watchHeader,\n  watchMain\n} from \"./components\"\nimport {\n  SearchIndex,\n  setupClipboardJS,\n  setupInstantLoading,\n  setupVersionSelector\n} from \"./integrations\"\nimport {\n  patchIndeterminate,\n  patchScrollfix,\n  patchScrolllock\n} from \"./patches\"\n\n/* ----------------------------------------------------------------------------\n * Application\n * ------------------------------------------------------------------------- */\n\n/* Yay, JavaScript is available */\ndocument.documentElement.classList.remove(\"no-js\")\ndocument.documentElement.classList.add(\"js\")\n\n/* Set up navigation observables and subjects */\nconst document$ = watchDocument()\nconst location$ = watchLocation()\nconst target$   = watchLocationTarget()\nconst keyboard$ = watchKeyboard()\n\n/* Set up media observables */\nconst viewport$ = watchViewport()\nconst tablet$   = watchMedia(\"(min-width: 960px)\")\nconst screen$   = watchMedia(\"(min-width: 1220px)\")\nconst print$    = watchPrint()\n\n/* Retrieve search index, if search is enabled */\nconst config = configuration()\nconst index$ = document.forms.namedItem(\"search\")\n  ? __search?.index || requestJSON<SearchIndex>(\n    `${config.base}/search/search_index.json`\n  )\n  : NEVER\n\n/* Set up Clipboard.js integration */\nconst alert$ = new Subject<string>()\nsetupClipboardJS({ alert$ })\n\n/* Set up instant loading, if enabled */\nif (feature(\"navigation.instant\"))\n  setupInstantLoading({ document$, location$, viewport$ })\n\n/* Set up version selector */\nif (config.version?.provider === \"mike\")\n  setupVersionSelector()\n\n/* Always close drawer and se!
 arch on navigation */\nmerge(location$, target$)\n  .pipe(\n    delay(125)\n  )\n    .subscribe(() => {\n      setToggle(\"drawer\", false)\n      setToggle(\"search\", false)\n    })\n\n/* Set up global keyboard handlers */\nkeyboard$\n  .pipe(\n    filter(({ mode }) => mode === \"global\")\n  )\n    .subscribe(key => {\n      switch (key.type) {\n\n        /* Go to previous page */\n        case \"p\":\n        case \",\":\n          const prev = getElement(\"[href][rel=prev]\")\n          if (typeof prev !== \"undefined\")\n            prev.click()\n          break\n\n        /* Go to next page */\n        case \"n\":\n        case \".\":\n          const next = getElement(\"[href][rel=next]\")\n          if (typeof next !== \"undefined\")\n            next.click()\n          break\n      }\n    })\n\n/* Set up patches */\npatchIndeterminate({ document$, tablet$ })\npatchScrollfix({ document$ })\npatchScrolllock({ viewport$, tablet$ })\n\n/* Set up header and main area observable */\nconst header$ = watchHeader(getComponentElement(\"header\"), { viewport$ })\nconst main$ = document$\n  .pipe(\n    map(() => getComponentElement(\"main\")),\n    switchMap(el => watchMain(el, { viewport$, header$ })),\n    shareReplay(1)\n  )\n\n/* Set up control component observables */\nconst control$ = merge(\n\n  /* Dialog */\n  ...getComponentElements(\"dialog\")\n    .map(el => mountDialog(el, { alert$ })),\n\n  /* Header */\n  ...getComponentElements(\"header\")\n    .map(el => mountHeader(el, { viewport$, header$, main$ })),\n\n  /* Color palette */\n  ...getComponentElements(\"palette\")\n    .map(el => mountPalette(el)),\n\n  /* Search */\n  ...getComponentElements(\"search\")\n    .map(el => mountSearch(el, { index$, keyboard$ })),\n\n  /* Repository information */\n  ...getComponentElements(\"source\")\n    .map(el => mountSource(el))\n)\n\n/* Set up content component observables */\nconst content$ = defer(() => merge(\n\n  /* Content */\n  ...getComponentElements(\"content\")\n    .map(el => mountContent(el, { targe!
 t$, viewport$, print$ })),\n\n  /* Header title */\n  ...getComponentElements(\"header-title\")\n    .map(el => mountHeaderTitle(el, { viewport$, header$ })),\n\n  /* Sidebar */\n  ...getComponentElements(\"sidebar\")\n    .map(el => el.getAttribute(\"data-md-type\") === \"navigation\"\n      ? at(screen$, () => mountSidebar(el, { viewport$, header$, main$ }))\n      : at(tablet$, () => mountSidebar(el, { viewport$, header$, main$ }))\n    ),\n\n  /* Navigation tabs */\n  ...getComponentElements(\"tabs\")\n    .map(el => mountTabs(el, { viewport$, header$ })),\n\n  /* Table of contents */\n  ...getComponentElements(\"toc\")\n    .map(el => mountTableOfContents(el, { viewport$, header$ })),\n\n  /* Back-to-top button */\n  ...getComponentElements(\"top\")\n    .map(el => mountBackToTop(el, { viewport$, main$ }))\n))\n\n/* Set up component observables */\nconst component$ = document$\n  .pipe(\n    switchMap(() => content$),\n    mergeWith(control$),\n    shareReplay(1)\n  )\n\n/* Subscribe to all components */\ncomponent$.subscribe()\n\n/* ----------------------------------------------------------------------------\n * Exports\n * ------------------------------------------------------------------------- */\n\nwindow.document$  = document$          /* Document observable */\nwindow.location$  = location$          /* Location subject */\nwindow.target$    = target$            /* Location target observable */\nwindow.keyboard$  = keyboard$          /* Keyboard observable */\nwindow.viewport$  = viewport$          /* Viewport observable */\nwindow.tablet$    = tablet$            /* Tablet observable */\nwindow.screen$    = screen$            /* Screen observable */\nwindow.print$     = print$             /* Print mode observable */\nwindow.alert$     = alert$             /* Alert subject */\nwindow.component$ = component$         /* Component observable */\n", "import tslib from '../tslib.js';\r\nconst {\r\n    __extends,\r\n    __assign,\r\n    __rest,\r\n    __decorate,\r\n    __param,\r\n    __metadata,\r\n    __a!
 waiter,\r\n    __generator,\r\n    __exportStar,\r\n    __createBinding,\r\n    __values,\r\n    __read,\r\n    __spread,\r\n    __spreadArrays,\r\n    __spreadArray,\r\n    __await,\r\n    __asyncGenerator,\r\n    __asyncDelegator,\r\n    __asyncValues,\r\n    __makeTemplateObject,\r\n    __importStar,\r\n    __importDefault,\r\n    __classPrivateFieldGet,\r\n    __classPrivateFieldSet,\r\n} = tslib;\r\nexport {\r\n    __extends,\r\n    __assign,\r\n    __rest,\r\n    __decorate,\r\n    __param,\r\n    __metadata,\r\n    __awaiter,\r\n    __generator,\r\n    __exportStar,\r\n    __createBinding,\r\n    __values,\r\n    __read,\r\n    __spread,\r\n    __spreadArrays,\r\n    __spreadArray,\r\n    __await,\r\n    __asyncGenerator,\r\n    __asyncDelegator,\r\n    __asyncValues,\r\n    __makeTemplateObject,\r\n    __importStar,\r\n    __importDefault,\r\n    __classPrivateFieldGet,\r\n    __classPrivateFieldSet,\r\n};\r\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to wh!
 om the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ReplaySubject, Subject, fromEvent } from \"rxjs\"\nimport { mapTo } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch document\n *\n * Documents are implemented as subjects, so all downstream observables are\n * automatically updated when a new document is emitted.\n *\n * @returns Document subject\n */\nexport function watchDocument(): Subject<Document> {\n  const document$ = new ReplaySubject<Document>()\n  fromEvent(document, \"DOMContentLoaded\")\n    .pipe(\n      mapTo(document)\n    )\n      .subscribe(document$)\n\n  /* Return document */\n  return document$\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright!
  notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve an element matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element or nothing\n */\nexport function getElement<T extends keyof HTMLElementTagNameMap>(\n  selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T]\n\nexport function getElement<T extends HTMLElement>(\n  selector: string, node?: ParentNode\n): T | undefined\n\nexport function getElement<T extends HTMLElement>(\n  selector: string, node: ParentNode = document\n): T | undefined {\n  return node.querySelector<T>(selector) || undefined\n}\n\n/**\n * Retrieve an element matching a query selector or throw a reference error\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getElementOrThrow<T extends keyof HTMLElementTagNameMap>(\n  selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T]\n\nexport function getElementOrThrow<T extends HTMLElement>(\n  selector: string, node?: ParentNode\n): T\n\nexport function getElementOrThrow<T extends HTMLElement>(\n  selector: string, node: ParentNode = document\n): T {\n  const el = getElement<T>(selec!
 tor, node)\n  if (typeof el === \"undefined\")\n    throw new ReferenceError(\n      `Missing element: expected \"${selector}\" to be present`\n    )\n  return el\n}\n\n/**\n * Retrieve the currently active element\n *\n * @returns Element or nothing\n */\nexport function getActiveElement(): HTMLElement | undefined {\n  return document.activeElement instanceof HTMLElement\n    ? document.activeElement\n    : undefined\n}\n\n/**\n * Retrieve all elements matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getElements<T extends keyof HTMLElementTagNameMap>(\n  selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T][]\n\nexport function getElements<T extends HTMLElement>(\n  selector: string, node?: ParentNode\n): T[]\n\nexport function getElements<T extends HTMLElement>(\n  selector: string, node: ParentNode = document\n): T[] {\n  return Array.from(node.querySelectorAll<T>(selector))\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Create an element\n *\n * @template T - Tag name type\n *\n * @param tagName - Tag name\n *\n * @returns Element\n */\nexport function createElement<T extends keyof HTMLElementTagNameMap>(\n  tagName: T\n): HTMLElementTagNameMap[T] {\n  return document.createElement(tagName)\n}\n\n/**\n * Replace an element with the given list of nodes\n *\n * @param el - Element\n * @param nodes - Replacement nodes\n */\nexport function replaceElement(\n  el: HTMLElement, ...nodes: Node[]\n): void {\n  el.replaceWith(...nodes)\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense!
 , and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport { map, startWith } from \"rxjs/operators\"\n\nimport { getActiveElement } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set element focus\n *\n * @param el - Element\n * @param value - Whether the element should be focused\n */\nexport function setElementFocus(\n  el: HTMLElement, value = true\n): void {\n  if (value)\n    el.focus()\n  else\n    el.blur()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element focus\n *\n * @param el - Element\n *\n * @returns Element focus observable\n */\nexport function watchElementFocus(\n  el: HTMLElement\n): Observable<boolean> {\n  return merge(\n    fromEvent<FocusEvent>(el, \"focus\"),\n    fromEvent<FocusEvent>(el, \"blur\")\n  )\n    .pipe(\n      map(({ type }) => type === \"focus\"),\n      startWith(el === getActiveElement())\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software !
 and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n  NEVER,\n  Observable,\n  Subject,\n  defer,\n  of\n} from \"rxjs\"\nimport {\n  filter,\n  finalize,\n  map,\n  shareReplay,\n  startWith,\n  switchMap,\n  tap\n} from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementSize {\n  width: number                        /* Element width */\n  height: number                       /* Element height */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Resize observer entry subject\n */\nconst entry$ = new Subject<ResizeObserverEntry>()\n\n/**\n * Resize observer observable\n *\n * This observable will create a `ResizeObserver` on the first subscription\n * and will automatically terminate it when there are no more subscribers.\n * It's quite importa!
 nt to centralize observation in a single `ResizeObserver`,\n * as the performance difference can be quite dramatic, as the link shows.\n *\n * @see https://bit.ly/3iIYfEm - Google Groups on performance\n */\nconst observer$ = defer(() => of(\n  new ResizeObserver(entries => {\n    for (const entry of entries)\n      entry$.next(entry)\n  })\n))\n  .pipe(\n    switchMap(resize => NEVER.pipe(startWith(resize))\n      .pipe(\n        finalize(() => resize.disconnect())\n      )\n    ),\n    shareReplay(1)\n  )\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element size\n *\n * @param el - Element\n *\n * @returns Element size\n */\nexport function getElementSize(el: HTMLElement): ElementSize {\n  return {\n    width:  el.offsetWidth,\n    height: el.offsetHeight\n  }\n}\n\n/**\n * Retrieve element content size, i.e. including overflowing content\n *\n * @param el - Element\n *\n * @returns Element size\n */\nexport function getElementContentSize(el: HTMLElement): ElementSize {\n  return {\n    width:  el.scrollWidth,\n    height: el.scrollHeight\n  }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element size\n *\n * This function returns an observable that subscribes to a single internal\n * instance of `ResizeObserver` upon subscription, and emit resize events until\n * termination. Note that this function should not be called with the same\n * element twice, as the first unsubscription will terminate observation.\n *\n * Sadly, we can't use the `DOMRect` objects returned by the observer, because\n * we need the emitted values to be consistent with `getElementSize`, which will\n * return the used values (rounded) and not actual values (unrounded). Thus, we\n * use the `offset*` properties. See the linked GitHub issue.\n *\n * @see https://bit.ly/3m0k3he - GitHub issue\n *\n * @param el - Element\n *\n * @retur!
 ns Element size observable\n */\nexport function watchElementSize(\n  el: HTMLElement\n): Observable<ElementSize> {\n  return observer$\n    .pipe(\n      tap(observer => observer.observe(el)),\n      switchMap(observer => entry$\n        .pipe(\n          filter(({ target }) => target === el),\n          finalize(() => observer.unobserve(el)),\n          map(() => getElementSize(el))\n        )\n      ),\n      startWith(getElementSize(el))\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport {\n  distinctUntilChanged,\n  map,\n  startWith\n} from \"rxjs/operators\"\n\nimport {\n  getElementContentSize,\n  getElementSize\n} from \"../size\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element!
  offset\n */\nexport interface ElementOffset {\n  x: number                            /* Horizontal offset */\n  y: number                            /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element offset\n *\n * @param el - Element\n *\n * @returns Element offset\n */\nexport function getElementOffset(el: HTMLElement): ElementOffset {\n  return {\n    x: el.scrollLeft,\n    y: el.scrollTop\n  }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element offset\n *\n * @param el - Element\n *\n * @returns Element offset observable\n */\nexport function watchElementOffset(\n  el: HTMLElement\n): Observable<ElementOffset> {\n  return merge(\n    fromEvent(el, \"scroll\"),\n    fromEvent(window, \"resize\")\n  )\n    .pipe(\n      map(() => getElementOffset(el)),\n      startWith(getElementOffset(el))\n    )\n}\n\n/**\n * Watch element threshold\n *\n * This function returns an observable which emits whether the bottom scroll\n * offset of an elements is within a certain threshold.\n *\n * @param el - Element\n * @param threshold - Threshold\n *\n * @returns Element threshold observable\n */\nexport function watchElementThreshold(\n  el: HTMLElement, threshold = 16\n): Observable<boolean> {\n  return watchElementOffset(el)\n    .pipe(\n      map(({ y }) => {\n        const visible = getElementSize(el)\n        const content = getElementContentSize(el)\n        return y >= (\n          content.height - visible.height - threshold\n        )\n      }),\n      distinctUntilChanged()\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including w!
 ithout limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set element text selection\n *\n * @param el - Element\n */\nexport function setElementSelection(\n  el: HTMLElement\n): void {\n  if (el instanceof HTMLInputElement)\n    el.select()\n  else\n    throw new Error(\"Not implemented\")\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRA!
 NTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { map, startWith } from \"rxjs/operators\"\n\nimport { getElementOrThrow } from \"../element\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle\n */\nexport type Toggle =\n  | \"drawer\"                           /* Toggle for drawer */\n  | \"search\"                           /* Toggle for search */\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle map\n */\nconst toggles: Record<Toggle, HTMLInputElement> = {\n  drawer: getElementOrThrow(\"[data-md-toggle=drawer]\"),\n  search: getElementOrThrow(\"[data-md-toggle=search]\")\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve the value of a toggle\n *\n * @param name - Toggle\n *\n * @returns Toggle value\n */\nexport function getToggle(name: Toggle): boolean {\n  return toggles[name].checked\n}\n\n/**\n * Set toggle\n *\n * Simulating a click event seems to be the most cross-browser compatible way\n * of changing the value while also emitting a `change` event. Before, Material\n * used `CustomEvent` to programmatically change the value of a toggle, but this\n * is a much simpler and cleaner solution which doesn't require a polyfill.\n *\n * @p!
 aram name - Toggle\n * @param value - Toggle value\n */\nexport function setToggle(name: Toggle, value: boolean): void {\n  if (toggles[name].checked !== value)\n    toggles[name].click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch toggle\n *\n * @param name - Toggle\n *\n * @returns Toggle value observable\n */\nexport function watchToggle(name: Toggle): Observable<boolean> {\n  const el = toggles[name]\n  return fromEvent(el, \"change\")\n    .pipe(\n      map(() => el.checked),\n      startWith(el.checked)\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { filter, map, share } from \"rxjs/operators\"\n\nimport { getActiveElement } from \"../element\"\nimport { getToggle } from \"../toggle\"\n\n/* ----------------------------------------------------------------------------\!
 n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Keyboard mode\n */\nexport type KeyboardMode =\n  | \"global\"                           /* Global */\n  | \"search\"                           /* Search is open */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Keyboard\n */\nexport interface Keyboard {\n  mode: KeyboardMode                   /* Keyboard mode */\n  type: string                         /* Key type */\n  claim(): void                        /* Key claim */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether an element may receive keyboard input\n *\n * @param el - Element\n *\n * @returns Test result\n */\nfunction isSusceptibleToKeyboard(el: HTMLElement): boolean {\n  switch (el.tagName) {\n\n    /* Form elements */\n    case \"INPUT\":\n    case \"SELECT\":\n    case \"TEXTAREA\":\n      return true\n\n    /* Everything else */\n    default:\n      return el.isContentEditable\n  }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch keyboard\n *\n * @returns Keyboard observable\n */\nexport function watchKeyboard(): Observable<Keyboard> {\n  return fromEvent<KeyboardEvent>(window, \"keydown\")\n    .pipe(\n      filter(ev => !(ev.metaKey || ev.ctrlKey)),\n      map(ev => ({\n        mode: getToggle(\"search\") ? \"search\" : \"global\",\n        type: ev.key,\n        claim() {\n          ev.preventDefault()\n          ev.stopPropagation()\n        }\n      } as Keyboard)),\n      filter(({ mode }) => {\n        if (mode === \"global\") {\n          const active = getActiveElement()\n          if (typeof active !== \"undefined\")\n            return !isSusceptibleToKeyboard(active)\n        }\n    !
     return true\n      }),\n      share()\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Subject } from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location\n *\n * This function returns a `URL` object (and not `Location`) to normalize the\n * typings across the application. Furthermore, locations need to be tracked\n * without setting them and `Location` is a singleton which represents the\n * current location.\n *\n * @returns URL\n */\nexport function getLocation(): URL {\n  return new URL(location.href)\n}\n\n/**\n * Set location\n *\n * @param url - URL to change to\n */\nexport function setLocation(url: URL): void {\n  location.href = url.href\n}\n\n/* -----------------------------------------------------------!
 -------------- */\n\n/**\n * Watch location\n *\n * @returns Location subject\n */\nexport function watchLocation(): Subject<URL> {\n  return new Subject<URL>()\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent, of } from \"rxjs\"\nimport { filter, map, share, startWith, switchMap } from \"rxjs/operators\"\n\nimport { createElement, getElement } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location hash\n *\n * @returns Location hash\n */\nexport function getLocationHash(): string {\n  return location.hash.substring(1)\n}\n\n/**\n * Set location hash\n *\n * Setting a new fragment identifier via `location.hash` will have no effect\n * if the value doesn't change. When a new fragment identifier is!
  set, we want\n * the browser to target the respective element at all times, which is why we\n * use this dirty little trick.\n *\n * @param hash - Location hash\n */\nexport function setLocationHash(hash: string): void {\n  const el = createElement(\"a\")\n  el.href = hash\n  el.addEventListener(\"click\", ev => ev.stopPropagation())\n  el.click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location hash\n *\n * @returns Location hash observable\n */\nexport function watchLocationHash(): Observable<string> {\n  return fromEvent<HashChangeEvent>(window, \"hashchange\")\n    .pipe(\n      map(getLocationHash),\n      startWith(getLocationHash()),\n      filter(hash => hash.length > 0),\n      share()\n    )\n}\n\n/**\n * Watch location target\n *\n * @returns Location target observable\n */\nexport function watchLocationTarget(): Observable<HTMLElement> {\n  return watchLocationHash()\n    .pipe(\n      switchMap(id => of(getElement(`[id=\"${id}\"]`)!))\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILI!
 TY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n  NEVER,\n  Observable,\n  fromEvent,\n  fromEventPattern\n} from \"rxjs\"\nimport {\n  mapTo,\n  startWith,\n  switchMap\n} from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch media query\n *\n * Note that although `MediaQueryList.addListener` is deprecated we have to\n * use it, because it's the only way to ensure proper downward compatibility.\n *\n * @see https://bit.ly/3dUBH2m - GitHub issue\n *\n * @param query - Media query\n *\n * @returns Media observable\n */\nexport function watchMedia(query: string): Observable<boolean> {\n  const media = matchMedia(query)\n  return fromEventPattern<boolean>(next => (\n    media.addListener(() => next(media.matches))\n  ))\n    .pipe(\n      startWith(media.matches)\n    )\n}\n\n/**\n * Watch print mode, cross-browser\n *\n * @returns Print mode observable\n */\nexport function watchPrint(): Observable<void> {\n  return fromEvent(window, \"beforeprint\")\n    .pipe(\n      mapTo(undefined)\n    )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Toggle an observable with a media observable\n *\n * @template T - Data type\n *\n * @param query$ - Media observable\n * @param factory - Observable factory\n *\n * @returns Toggled observable\n */\nexport function at<T>(\n  query$: Observable<boolean>, factory: () => Observable<T>\n): Observable<T> {\n  return query$\n    .pipe(\n      switchMap(active => active ? factory() : NEVER)\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\!
 n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, from } from \"rxjs\"\nimport {\n  filter,\n  map,\n  shareReplay,\n  switchMap\n} from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch the given URL\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Response observable\n */\nexport function request(\n  url: URL | string, options: RequestInit = { credentials: \"same-origin\" }\n): Observable<Response> {\n  return from(fetch(`${url}`, options))\n    .pipe(\n      filter(res => res.status === 200),\n    )\n}\n\n/**\n * Fetch JSON from the given URL\n *\n * @template T - Data type\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Data observable\n */\nexport function requestJSON<T>(\n  url: URL | string, options?: RequestInit\n): Observable<T> {\n  return request(url, options)\n    .pipe(\n      switchMap(res => res.json()),\n      shareReplay(1)\n    )\n}\n\n/**\n * Fetch XML from the given URL\n *\n !
 * @param url - Request URL\n * @param options - Options\n *\n * @returns Data observable\n */\nexport function requestXML(\n  url: URL | string, options?: RequestInit\n): Observable<Document> {\n  const dom = new DOMParser()\n  return request(url, options)\n    .pipe(\n      switchMap(res => res.text()),\n      map(res => dom.parseFromString(res, \"text/xml\")),\n      shareReplay(1)\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport { map, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport offset\n */\nexport interface ViewportOffset {\n  x: number                            /* Horizontal offset */\n  y: number                            /* Vertical of!
 fset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport offset\n *\n * On iOS Safari, viewport offset can be negative due to overflow scrolling.\n * As this may induce strange behaviors downstream, we'll just limit it to 0.\n *\n * @returns Viewport offset\n */\nexport function getViewportOffset(): ViewportOffset {\n  return {\n    x: Math.max(0, pageXOffset),\n    y: Math.max(0, pageYOffset)\n  }\n}\n\n/**\n * Set viewport offset\n *\n * @param offset - Viewport offset\n */\nexport function setViewportOffset(\n  { x, y }: Partial<ViewportOffset>\n): void {\n  window.scrollTo(x || 0, y || 0)\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport offset\n *\n * @returns Viewport offset observable\n */\nexport function watchViewportOffset(): Observable<ViewportOffset> {\n  return merge(\n    fromEvent(window, \"scroll\", { passive: true }),\n    fromEvent(window, \"resize\", { passive: true })\n  )\n    .pipe(\n      map(getViewportOffset),\n      startWith(getViewportOffset())\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF !
 MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { map, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport size\n */\nexport interface ViewportSize {\n  width: number                        /* Viewport width */\n  height: number                       /* Viewport height */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport size\n *\n * @returns Viewport size\n */\nexport function getViewportSize(): ViewportSize {\n  return {\n    width:  innerWidth,\n    height: innerHeight\n  }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport size\n *\n * @returns Viewport size observable\n */\nexport function watchViewportSize(): Observable<ViewportSize> {\n  return fromEvent(window, \"resize\", { passive: true })\n    .pipe(\n      map(getViewportSize),\n      startWith(getViewportSize())\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * !
 furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, combineLatest } from \"rxjs\"\nimport {\n  distinctUntilKeyChanged,\n  map,\n  shareReplay\n} from \"rxjs/operators\"\n\nimport { Header } from \"~/components\"\n\nimport {\n  ViewportOffset,\n  watchViewportOffset\n} from \"../offset\"\nimport {\n  ViewportSize,\n  watchViewportSize\n} from \"../size\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport\n */\nexport interface Viewport {\n  offset: ViewportOffset               /* Viewport offset */\n  size: ViewportSize                   /* Viewport size */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch at options\n */\ninterface WatchAtOptions {\n  viewport$: Observable<Viewport>      /* Viewport observable */\n  header$: Observable<Header>          /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport\n *\n * @returns Viewport observable\n */\nexport function watchViewport(): Observable<Vi!
 ewport> {\n  return combineLatest([\n    watchViewportOffset(),\n    watchViewportSize()\n  ])\n    .pipe(\n      map(([offset, size]) => ({ offset, size })),\n      shareReplay(1)\n    )\n}\n\n/**\n * Watch viewport relative to element\n *\n * @param el - Element\n * @param options - Options\n *\n * @returns Viewport observable\n */\nexport function watchViewportAt(\n  el: HTMLElement, { viewport$, header$ }: WatchAtOptions\n): Observable<Viewport> {\n  const size$ = viewport$\n    .pipe(\n      distinctUntilKeyChanged(\"size\")\n    )\n\n  /* Compute element offset */\n  const offset$ = combineLatest([size$, header$])\n    .pipe(\n      map((): ViewportOffset => ({\n        x: el.offsetLeft,\n        y: el.offsetTop\n      }))\n    )\n\n  /* Compute relative viewport, return hot observable */\n  return combineLatest([header$, viewport$, offset$])\n    .pipe(\n      map(([{ height }, { offset, size }, { x, y }]) => ({\n        offset: {\n          x: offset.x - x,\n          y: offset.y - y + height\n        },\n        size\n      }))\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, D!
 AMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, Subject, fromEvent } from \"rxjs\"\nimport {\n  map,\n  share,\n  switchMapTo,\n  tap,\n  throttle\n} from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Worker message\n */\nexport interface WorkerMessage {\n  type: unknown                        /* Message type */\n  data?: unknown                       /* Message data */\n}\n\n/**\n * Worker handler\n *\n * @template T - Message type\n */\nexport interface WorkerHandler<\n  T extends WorkerMessage\n> {\n  tx$: Subject<T>                      /* Message transmission subject */\n  rx$: Observable<T>                   /* Message receive observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n *\n * @template T - Worker message type\n */\ninterface WatchOptions<T extends WorkerMessage> {\n  tx$: Observable<T>                   /* Message transmission observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch a web worker\n *\n * This function returns an observable that sends all values emitted by the\n * message observable to the web worker. Web worker communication is expected\n * to be bidirectional (request-response) and synchronous. Messages that are\n * emitted during a pending request are throttled, the last one is emitted.\n *\n * @param worker - Web worker\n * @param options - Options\n *\n * @returns Worker message observable\n */\nexport function watchWorker<T exten!
 ds WorkerMessage>(\n  worker: Worker, { tx$ }: WatchOptions<T>\n): Observable<T> {\n\n  /* Intercept messages from worker-like objects */\n  const rx$ = fromEvent<MessageEvent>(worker, \"message\")\n    .pipe(\n      map(({ data }) => data as T)\n    )\n\n  /* Send and receive messages, return hot observable */\n  return tx$\n    .pipe(\n      throttle(() => rx$, { leading: true, trailing: true }),\n      tap(message => worker.postMessage(message)),\n      switchMapTo(rx$),\n      share()\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElementOrThrow, getLocation } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Feature flag\n */\nexport type Flag =\n  | \"header.autohide\"                  /* Hide header */\n  | \"naviga!
 tion.expand\"                /* Automatic expansion */\n  | \"navigation.instant\"               /* Instant loading */\n  | \"navigation.sections\"              /* Sections navigation */\n  | \"navigation.tabs\"                  /* Tabs navigation */\n  | \"navigation.top\"                   /* Back-to-top button */\n  | \"toc.integrate\"                    /* Integrated table of contents */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Translation\n */\nexport type Translation =\n  | \"clipboard.copy\"                   /* Copy to clipboard */\n  | \"clipboard.copied\"                 /* Copied to clipboard */\n  | \"search.config.lang\"               /* Search language */\n  | \"search.config.pipeline\"           /* Search pipeline */\n  | \"search.config.separator\"          /* Search separator */\n  | \"search.placeholder\"               /* Search */\n  | \"search.result.placeholder\"        /* Type to start searching */\n  | \"search.result.none\"               /* No matching documents */\n  | \"search.result.one\"                /* 1 matching document */\n  | \"search.result.other\"              /* # matching documents */\n  | \"search.result.more.one\"           /* 1 more on this page */\n  | \"search.result.more.other\"         /* # more on this page */\n  | \"search.result.term.missing\"       /* Missing */\n  | \"select.version.title\"             /* Version selector */\n\n/**\n * Translations\n */\nexport type Translations = Record<Translation, string>\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Versioning\n */\nexport interface Versioning {\n  provider: \"mike\"                     /* Version provider */\n}\n\n/**\n * Configuration\n */\nexport interface Config {\n  base: string                         /* Base URL */\n  features: Flag[]                     /* Feature flags */\n  translations: Translations           /* Translations */\n  search: string                       /* Search worker URL */\n  vers!
 ion?: Versioning                 /* Versioning */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve global configuration and make base URL absolute\n */\nconst script = getElementOrThrow(\"#__config\")\nconst config: Config = JSON.parse(script.textContent!)\nconfig.base = new URL(config.base, getLocation())\n  .toString()\n  .replace(/\\/$/, \"\")\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve global configuration\n *\n * @returns Global configuration\n */\nexport function configuration(): Config {\n  return config\n}\n\n/**\n * Check whether a feature flag is enabled\n *\n * @param flag - Feature flag\n *\n * @returns Test result\n */\nexport function feature(flag: Flag): boolean {\n  return config.features.includes(flag)\n}\n\n/**\n * Retrieve the translation for the given key\n *\n * @param key - Key to be translated\n * @param value - Positional value, if any\n *\n * @returns Translation\n */\nexport function translation(\n  key: Translation, value?: string | number\n): string {\n  return typeof value !== \"undefined\"\n    ? config.translations[key].replace(\"#\", value.toString())\n    : config.translations[key]\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall !
 be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElementOrThrow, getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component\n */\nexport type ComponentType =\n  | \"announce\"                         /* Announcement bar */\n  | \"container\"                        /* Container */\n  | \"content\"                          /* Content */\n  | \"dialog\"                           /* Dialog */\n  | \"header\"                           /* Header */\n  | \"header-title\"                     /* Header title */\n  | \"header-topic\"                     /* Header topic */\n  | \"main\"                             /* Main area */\n  | \"palette\"                          /* Color palette */\n  | \"search\"                           /* Search */\n  | \"search-query\"                     /* Search input */\n  | \"search-result\"                    /* Search results */\n  | \"sidebar\"                          /* Sidebar */\n  | \"skip\"                             /* Skip link */\n  | \"source\"                           /* Repository information */\n  | \"tabs\"                             /* Navigation tabs */\n  | \"toc\"                              /* Table of contents */\n  | \"top\"                              /* Back-to-top button */\n\n/**\n * A component\n *\n * @template T - Component type\n * @template U - Reference ty!
 pe\n */\nexport type Component<\n  T extends {} = {},\n  U extends HTMLElement = HTMLElement\n> =\n  T & {\n    ref: U                             /* Component reference */\n  }\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component type map\n */\ninterface ComponentTypeMap {\n  \"announce\": HTMLElement              /* Announcement bar */\n  \"container\": HTMLElement             /* Container */\n  \"content\": HTMLElement               /* Content */\n  \"dialog\": HTMLElement                /* Dialog */\n  \"header\": HTMLElement                /* Header */\n  \"header-title\": HTMLElement          /* Header title */\n  \"header-topic\": HTMLElement          /* Header topic */\n  \"main\": HTMLElement                  /* Main area */\n  \"palette\": HTMLElement               /* Color palette */\n  \"search\": HTMLElement                /* Search */\n  \"search-query\": HTMLInputElement     /* Search input */\n  \"search-result\": HTMLElement         /* Search results */\n  \"sidebar\": HTMLElement               /* Sidebar */\n  \"skip\": HTMLAnchorElement            /* Skip link */\n  \"source\": HTMLAnchorElement          /* Repository information */\n  \"tabs\": HTMLElement                  /* Navigation tabs */\n  \"toc\": HTMLElement                   /* Table of contents */\n  \"top\": HTMLAnchorElement             /* Back-to-top button */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve the element for a given component or throw a reference error\n *\n * @template T - Component type\n *\n * @param type - Component type\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getComponentElement<T extends ComponentType>(\n  type: T, node: ParentNode = document\n): ComponentTypeMap[T] {\!
 n  return getElementOrThrow(`[data-md-component=${type}]`, node)\n}\n\n/**\n * Retrieve all elements for a given component\n *\n * @template T - Component type\n *\n * @param type - Component type\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getComponentElements<T extends ComponentType>(\n  type: T, node: ParentNode = document\n): ComponentTypeMap[T][] {\n  return getElements(`[data-md-component=${type}]`, node)\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ClipboardJS from \"clipboard\"\nimport {\n  NEVER,\n  Observable,\n  Subject,\n  fromEvent,\n  merge,\n  of\n} from \"rxjs\"\nimport {\n  distinctUntilKeyChanged,\n  finalize,\n  map,\n  switchMap,\n  tap,\n  withLatestFrom\n} from \"rxjs/operators\"\n\nimport { resetFocusable, setFocusable } from \"~/actions\"\nimport {\n  Viewport,\n  getElementContentSize,\n  getElementSize,\n  getElements,!
 \n  watchMedia\n} from \"~/browser\"\nimport { renderClipboardButton } from \"~/templates\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Code block\n */\nexport interface CodeBlock {\n  scroll: boolean                      /* Code block overflows */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n  viewport$: Observable<Viewport>      /* Viewport observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n  viewport$: Observable<Viewport>      /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Global index for Clipboard.js integration\n */\nlet index = 0\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch code block\n *\n * This function monitors size changes of the viewport, as well as switches of\n * content tabs with embedded code blocks, as both may trigger overflow.\n *\n * @param el - Code block element\n * @param options - Options\n *\n * @returns Code block observable\n */\nexport function watchCodeBlock(\n  el: HTMLElement, { viewport$ }: WatchOptions\n): Observable<CodeBlock> {\n  const container$ = of(el)\n    .pipe(\n      switchMap(child => {\n        const container = child.closest(\"[data-tabs]\")\n        if (container instanceof HTMLElement) {\n          return merge(\n            ...getElements(\"input\", container)\n              .map(input => fromEvent(input, \"change\"))\n          )\n        }\n        return N!
 EVER\n      })\n    )\n\n  /* Check overflow on resize and tab change */\n  return merge(\n    viewport$.pipe(distinctUntilKeyChanged(\"size\")),\n    container$\n  )\n    .pipe(\n      map(() => {\n        const visible = getElementSize(el)\n        const content = getElementContentSize(el)\n        return {\n          scroll: content.width > visible.width\n        }\n      }),\n      distinctUntilKeyChanged(\"scroll\")\n    )\n}\n\n/**\n * Mount code block\n *\n * This function ensures that an overflowing code block is focusable through\n * keyboard, so it can be scrolled without a mouse to improve on accessibility.\n *\n * @param el - Code block element\n * @param options - Options\n *\n * @returns Code block component observable\n */\nexport function mountCodeBlock(\n  el: HTMLElement, options: MountOptions\n): Observable<Component<CodeBlock>> {\n  const internal$ = new Subject<CodeBlock>()\n  internal$\n    .pipe(\n      withLatestFrom(watchMedia(\"(hover)\"))\n    )\n      .subscribe(([{ scroll }, hover]) => {\n        if (scroll && hover)\n          setFocusable(el)\n        else\n          resetFocusable(el)\n      })\n\n  /* Render button for Clipboard.js integration */\n  if (ClipboardJS.isSupported()) {\n    const parent = el.closest(\"pre\")!\n    parent.id = `__code_${index++}`\n    parent.insertBefore(\n      renderClipboardButton(parent.id),\n      el\n    )\n  }\n\n  /* Create and return component */\n  return watchCodeBlock(el, options)\n    .pipe(\n      tap(internal$),\n      finalize(() => internal$.complete()),\n      map(state => ({ ref: el, ...state }))\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software!
 , and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set focusable property\n *\n * @param el - Element\n * @param value - Tabindex value\n */\nexport function setFocusable(\n  el: HTMLElement, value = 0\n): void {\n  el.setAttribute(\"tabindex\", value.toString())\n}\n\n/**\n * Reset focusable property\n *\n * @param el - Element\n */\nexport function resetFocusable(\n  el: HTMLElement\n): void {\n  el.removeAttribute(\"tabindex\")\n}\n\n/**\n * Set scroll lock\n *\n * @param el - Scrollable element\n * @param value - Vertical offset\n */\nexport function setScrollLock(\n  el: HTMLElement, value: number\n): void {\n  el.setAttribute(\"data-md-state\", \"lock\")\n  el.style.top = `-${value}px`\n}\n\n/**\n * Reset scroll lock\n *\n * @param el - Scrollable element\n */\nexport function resetScrollLock(\n  el: HTMLElement\n): void {\n  const value = -1 * parseInt(el.style.top, 10)\n  el.removeAttribute(\"data-md-state\")\n  el.style.top = \"\"\n  if (value)\n    window.scrollTo(0, value)\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining !
 a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set anchor state\n *\n * @param el - Anchor element\n * @param state - Anchor state\n */\nexport function setAnchorState(\n  el: HTMLElement, state: \"blur\"\n): void {\n  el.setAttribute(\"data-md-state\", state)\n}\n\n/**\n * Reset anchor state\n *\n * @param el - Anchor element\n */\nexport function resetAnchorState(\n  el: HTMLElement\n): void {\n  el.removeAttribute(\"data-md-state\")\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set anchor active\n *\n * @param el - Anchor element\n * @param value - Whether the anchor is active\n */\nexport function setAnchorActive(\n  el: HTMLElement, value: boolean\n): void {\n  el.classList.toggle(\"md-nav__link--active\", value)\n}\n\n/**\n * Reset anchor active\n *\n * @param el - Anchor element\n */\nexport function resetAncho!
 rActive(\n  el: HTMLElement\n): void {\n  el.classList.remove(\"md-nav__link--active\")\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set dialog message\n *\n * @param el - Dialog element\n * @param value - Dialog message\n */\nexport function setDialogMessage(\n  el: HTMLElement, value: string\n): void {\n  el.firstElementChild!.innerHTML = value\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set dialog state\n *\n * @param el - Dialog element\n * @param state - Dialog state\n */\nexport function setDialogState(\n  el: HTMLElement, state: \"open\"\n): void {\n  el.setAttribute(\"data-md-state\", state)\n}\n\n/**\n * Reset dialog state\n *\n * @param el - Dial!
 og element\n */\nexport function resetDialogState(\n  el: HTMLElement\n): void {\n  el.removeAttribute(\"data-md-state\")\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set header state\n *\n * @param el - Header element\n * @param state - Header state\n */\nexport function setHeaderState(\n  el: HTMLElement, state: \"shadow\" | \"hidden\"\n): void {\n  el.setAttribute(\"data-md-state\", state)\n}\n\n/**\n * Reset header state\n *\n * @param el - Header element\n */\nexport function resetHeaderState(\n  el: HTMLElement\n): void {\n  el.removeAttribute(\"data-md-state\")\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to an!
 y person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set header title state\n *\n * @param el - Header title element\n * @param state - Header title state\n */\nexport function setHeaderTitleState(\n  el: HTMLElement, state: \"active\"\n): void {\n  el.setAttribute(\"data-md-state\", state)\n}\n\n/**\n * Reset header title state\n *\n * @param el - Header title element\n */\nexport function resetHeaderTitleState(\n  el: HTMLElement\n): void {\n  el.removeAttribute(\"data-md-state\")\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, dist!
 ribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { translation } from \"~/_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set search query placeholder\n *\n * @param el - Search query element\n * @param value - Placeholder\n */\nexport function setSearchQueryPlaceholder(\n  el: HTMLInputElement, value: string\n): void {\n  el.placeholder = value\n}\n\n/**\n * Reset search query placeholder\n *\n * @param el - Search query element\n */\nexport function resetSearchQueryPlaceholder(\n  el: HTMLInputElement\n): void {\n  el.placeholder = translation(\"search.placeholder\")\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The !
 above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { JSX as JSXInternal } from \"preact\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * HTML attributes\n */\ntype Attributes =\n  & JSXInternal.HTMLAttributes\n  & JSXInternal.SVGAttributes\n  & Record<string, any>\n\n/**\n * Child element\n */\ntype Child =\n  | HTMLElement\n  | Text\n  | string\n  | number\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Append a child node to an element\n *\n * @param el - Element\n * @param child - Child node(s)\n */\nfunction appendChild(el: HTMLElement, child: Child | Child[]): void {\n\n  /* Handle primitive types (including raw HTML) */\n  if (typeof child === \"string\" || typeof child === \"number\") {\n    el.innerHTML += child.toString()\n\n  /* Handle nodes */\n  } else if (child instanceof Node) {\n    el.appendChild(child)\n\n  /* Handle nested children */\n  } else if (Array.isArray(child)) {\n    for (const node of child)\n      appendChild(el, node)\n  }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * JSX fac!
 tory\n *\n * @param tag - HTML tag\n * @param attributes - HTML attributes\n * @param children - Child elements\n *\n * @returns Element\n */\nexport function h(\n  tag: string, attributes: Attributes | null, ...children: Child[]\n): HTMLElement {\n  const el = document.createElement(tag)\n\n  /* Set attributes, if any */\n  if (attributes)\n    for (const attr of Object.keys(attributes))\n      if (typeof attributes[attr] !== \"boolean\")\n        el.setAttribute(attr, attributes[attr])\n      else if (attributes[attr])\n        el.setAttribute(attr, \"\")\n\n  /* Append child nodes */\n  for (const child of children)\n    appendChild(el, child)\n\n  /* Return element */\n  return el\n}\n\n/* ----------------------------------------------------------------------------\n * Namespace\n * ------------------------------------------------------------------------- */\n\nexport declare namespace h {\n  namespace JSX {\n    type Element = HTMLElement\n    type IntrinsicElements = JSXInternal.IntrinsicElements\n  }\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHE!
 R IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Truncate a string after the given number of characters\n *\n * This is not a very reasonable approach, since the summaries kind of suck.\n * It would be better to create something more intelligent, highlighting the\n * search occurrences and making a better summary out of it, but this note was\n * written three years ago, so who knows if we'll ever fix it.\n *\n * @param value - Value to be truncated\n * @param n - Number of characters\n *\n * @returns Truncated value\n */\nexport function truncate(value: string, n: number): string {\n  let i = n\n  if (value.length > i) {\n    while (value[i] !== \" \" && --i > 0) { /* keep eating */ }\n    return `${value.substring(0, i)}...`\n  }\n  return value\n}\n\n/**\n * Round a number for display with repository facts\n *\n * This is a reverse-engineered version of GitHub's weird rounding algorithm\n * for stars, forks and all other numbers. While all numbers below `1,000` are\n * returned as-is, bigger numbers are converted to fixed numbers:\n *\n * - `1,049` => `1k`\n * - `1,050` => `1.1k`\n * - `1,949` => `1.9k`\n * - `1,950` => `2k`\n *\n * @param value - Original value\n *\n * @returns Rounded value\n */\nexport function round(value: number): string {\n  if (value > 999) {\n    const digits = +((value - 950) % 1000 > 99)\n    return `${((value + 0.000001) / 1000).toFixed(digits)}k`\n  } else {\n    return value.toString()\n  }\n}\n\n/**\n * Simple hash function\n *\n * @see https://bit.ly/2wsVjJ4 - Original source\n *\n * @param value - Value to be hashed\n *\n * @returns Hash as 32bit integer\n */\nexport function hash(value: string): number {\n  let h = 0\n  for (let i = 0, len = value.length; i < len; i++) {\n    h  =!
  ((h << 5) - h) + value.charCodeAt(i)\n    h |= 0 // Convert to 32bit integer\n  }\n  return h\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { translation } from \"~/_\"\nimport { round } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set number of search results\n *\n * @param el - Search result metadata element\n * @param value - Number of results\n */\nexport function setSearchResultMeta(\n  el: HTMLElement, value: number\n): void {\n  switch (value) {\n\n    /* No results */\n    case 0:\n      el.textContent = translation(\"search.result.none\")\n      break\n\n    /* One result */\n    case 1:\n      el.textContent = translation(\"search.result.one\")\n      break\n\n    /* Multiple result */\n    default:\n      el.te!
 xtContent = translation(\"search.result.other\", round(value))\n  }\n}\n\n/**\n * Reset number of search results\n *\n * @param el - Search result metadata element\n */\nexport function resetSearchResultMeta(\n  el: HTMLElement\n): void {\n  el.textContent = translation(\"search.result.placeholder\")\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Add an element to the search result list\n *\n * @param el - Search result list element\n * @param child - Search result element\n */\nexport function addToSearchResultList(\n  el: HTMLElement, child: Element\n): void {\n  el.appendChild(child)\n}\n\n/**\n * Reset search result list\n *\n * @param el - Search result list element\n */\nexport function resetSearchResultList(\n  el: HTMLElement\n): void {\n  el.innerHTML = \"\"\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ---------------------------!
 -------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set sidebar offset\n *\n * @param el - Sidebar element\n * @param value - Sidebar offset\n */\nexport function setSidebarOffset(\n  el: HTMLElement, value: number\n): void {\n  el.style.top = `${value}px`\n}\n\n/**\n * Reset sidebar offset\n *\n * @param el - Sidebar element\n */\nexport function resetSidebarOffset(\n  el: HTMLElement\n): void {\n  el.style.top = \"\"\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set sidebar height\n *\n * This function doesn't set the height of the actual sidebar, but of its first\n * child \u2013 the `.md-sidebar__scrollwrap` element in order to mitigiate jittery\n * sidebars when the footer is scrolled into view. At some point we switched\n * from `absolute` / `fixed` positioning to `sticky` positioning, significantly\n * reducing jitter in some browsers (respectively Firefox and Safari) when\n * scrolling from the top. However, top-aligned sticky positioning means that\n * the sidebar snaps to the bottom when the end of the container is reached.\n * This is what leads to the mentioned jitter, as the sidebar's height may be\n * updated too slowly.\n *\n * This behaviour can be mitigiated by setting the height of the sidebar to `0`\n * while preserving the padding, and the height on its first element.\n *\n * @param el - Sidebar element\n * @param value - Sidebar height\n */\nexport function setSidebarHeight(\n  el: HTMLElement, value: number\n): void {\n  const scrollwrap = el.firstElementChild as HTMLElement\n  scrollwrap.style.height = `${value - 2 * scrollwrap.offsetTop}px`\n}\n\n/**\n * Reset sidebar height\n *\n * @param el - Sidebar element\n */\nexport function resetSidebarHeight(\n  el: HTMLElement\n): void {\n  const scrollwrap = el.firstElementChild as HTMLElement\n  scrollwrap.style.height = \"\"\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donat!
 h at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set repository facts\n *\n * @param el - Repository element\n * @param child - Repository facts element\n */\nexport function setSourceFacts(\n  el: HTMLElement, child: Element\n): void {\n  el.lastElementChild!.appendChild(child)\n}\n\n/**\n * Set repository state\n *\n * @param el - Repository element\n * @param state - Repository state\n */\nexport function setSourceState(\n  el: HTMLElement, state: \"done\"\n): void {\n  el.lastElementChild!.setAttribute(\"data-md-state\", state)\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n !
 * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set tabs state\n *\n * @param el - Tabs element\n * @param state - Tabs state\n */\nexport function setTabsState(\n  el: HTMLElement, state: \"hidden\"\n): void {\n  el.setAttribute(\"data-md-state\", state)\n}\n\n/**\n * Reset tabs state\n *\n * @param el - Tabs element\n */\nexport function resetTabsState(\n  el: HTMLElement\n): void {\n  el.removeAttribute(\"data-md-state\")\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following condit!
 ions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set back-to-top state\n *\n * @param el - Back-to-top element\n * @param state - Back-to-top state\n */\nexport function setBackToTopState(\n  el: HTMLElement, state: \"hidden\"\n): void {\n  el.setAttribute(\"data-md-state\", state)\n}\n\n/**\n * Reset back-to-top state\n *\n * @param el - Back-to-top element\n */\nexport function resetBackToTopState(\n  el: HTMLElement\n): void {\n  el.removeAttribute(\"data-md-state\")\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INC!
 LUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { translation } from \"~/_\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a 'copy-to-clipboard' button\n *\n * @param id - Unique identifier\n *\n * @returns Element\n */\nexport function renderClipboardButton(id: string): HTMLElement {\n  return (\n    <button\n      class=\"md-clipboard md-icon\"\n      title={translation(\"clipboard.copy\")}\n      data-clipboard-target={`#${id} > code`}\n    ></button>\n  )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTI!
 ON OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { translation } from \"~/_\"\nimport {\n  SearchDocument,\n  SearchMetadata,\n  SearchResult\n} from \"~/integrations/search\"\nimport { h, truncate } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Render flag\n */\nconst enum Flag {\n  TEASER = 1,                          /* Render teaser */\n  PARENT = 2                           /* Render as parent */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper function\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search document\n *\n * @param document - Search document\n * @param flag - Render flags\n *\n * @returns Element\n */\nfunction renderSearchDocument(\n  document: SearchDocument & SearchMetadata, flag: Flag\n): HTMLElement {\n  const parent = flag & Flag.PARENT\n  const teaser = flag & Flag.TEASER\n\n  /* Render missing query terms */\n  const missing = Object.keys(document.terms)\n    .filter(key => !document.terms[key])\n    .map(key => [<del>{key}</del>, \" \"])\n    .flat()\n    .slice(0, -1)\n\n  /* Render article or section, depending on flags */\n  const url = document.location\n  return (\n    <a href={url} class=\"md-search-result__link\" tabIndex={-1}>\n      <article\n        class={[\"md-search-result__article\", ...parent\n          ? [\"md-search-result__article--document\"]\n          : []\n        ].join(\" \")}\n        data-md-score={document.score.toFixed(2)}\n      >\n        {parent > 0 && <div class=\"md-search-result__icon md-icon\"></div>}\n        <h1 class=\"md-search-result__title\">{document.title}</h1>\n        {teaser > 0 && document.text.length > 0 &&\n          <p class=\"md-search-result__teaser\">\n      !
       {truncate(document.text, 320)}\n          </p>\n        }\n        {teaser > 0 && missing.length > 0 &&\n          <p class=\"md-search-result__terms\">\n            {translation(\"search.result.term.missing\")}: {...missing}\n          </p>\n        }\n      </article>\n    </a>\n  )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search result\n *\n * @param result - Search result\n *\n * @returns Element\n */\nexport function renderSearchResult(\n  result: SearchResult\n): HTMLElement {\n  const threshold = result[0].score\n  const docs = [...result]\n\n  /* Find and extract parent article */\n  const parent = docs.findIndex(doc => !doc.location.includes(\"#\"))\n  const [article] = docs.splice(parent, 1)\n\n  /* Determine last index above threshold */\n  let index = docs.findIndex(doc => doc.score < threshold)\n  if (index === -1)\n    index = docs.length\n\n  /* Partition sections */\n  const best = docs.slice(0, index)\n  const more = docs.slice(index)\n\n  /* Render children */\n  const children = [\n    renderSearchDocument(article, Flag.PARENT | +(!parent && index === 0)),\n    ...best.map(section => renderSearchDocument(section, Flag.TEASER)),\n    ...more.length ? [\n      <details class=\"md-search-result__more\">\n        <summary tabIndex={-1}>\n          {more.length > 0 && more.length === 1\n            ? translation(\"search.result.more.one\")\n            : translation(\"search.result.more.other\", more.length)\n          }\n        </summary>\n        {...more.map(section => renderSearchDocument(section, Flag.TEASER))}\n      </details>\n    ] : []\n  ]\n\n  /* Render search result */\n  return (\n    <li class=\"md-search-result__item\">\n      {children}\n    </li>\n  )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\!
 n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SourceFacts } from \"~/components\"\nimport { h, round } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render repository facts\n *\n * @param facts - Repository facts\n *\n * @returns Element\n */\nexport function renderSourceFacts(facts: SourceFacts): HTMLElement {\n  return (\n    <ul class=\"md-source__facts\">\n      {Object.entries(facts).map(([key, value]) => (\n        <li class={`md-source__fact md-source__fact--${key}`}>\n          {typeof value === \"number\" ? round(value) : value}\n        </li>\n      ))}\n    </ul>\n  )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without li!
 mitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a table inside a wrapper to improve scrolling on mobile\n *\n * @param table - Table element\n *\n * @returns Element\n */\nexport function renderTable(table: HTMLElement): HTMLElement {\n  return (\n    <div class=\"md-typeset__scrollwrap\">\n      <div class=\"md-typeset__table\">\n        {table}\n      </div>\n    </div>\n  )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice s!
 hall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { configuration, translation } from \"~/_\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Version\n */\nexport interface Version {\n  version: string                      /* Version identifier */\n  title: string                        /* Version title */\n  aliases: string[]                    /* Version aliases */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a version\n *\n * @param version - Version\n *\n * @returns Element\n */\nfunction renderVersion(version: Version): HTMLElement {\n  const config = configuration()\n\n  /* Ensure trailing slash, see https://bit.ly/3rL5u3f */\n  const url = new URL(`${version.version}/`, config.base)\n  return (\n    <li class=\"md-version__item\">\n      <a href={url.toString()} class=\"md-version__link\">\n        {version.title}\n      </a>\n    </li>\n  )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a version selector\n *\n * @param versions - Versions\n *\n * @returns Element\n */\nexport function renderVersionSel!
 ector(versions: Version[]): HTMLElement {\n  const config = configuration()\n\n  /* Determine active version */\n  const [, current] = config.base.match(/([^/]+)\\/?$/)!\n  const active =\n    versions.find(({ version, aliases }) => (\n      version === current || aliases.includes(current)\n    )) || versions[0]\n\n  /* Render version selector */\n  return (\n    <div class=\"md-version\">\n      <button\n        class=\"md-version__current\"\n        aria-label={translation(\"select.version.title\")}\n      >\n        {active.title}\n      </button>\n      <ul class=\"md-version__list\">\n        {versions.map(renderVersion)}\n      </ul>\n    </div>\n  )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, Subject } from \"rxjs\"\nimport {\n  filter,\n  finalize,\n  map,\n  mapTo,\n  mergeWith,\n  tap\n} from \"rxjs/operators\"\n\nimport { Component } from \"../../_\"\n\n/* -!
 ---------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Details\n */\nexport interface Details {}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n  target$: Observable<HTMLElement>     /* Location target observable */\n  print$: Observable<void>             /* Print mode observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n  target$: Observable<HTMLElement>     /* Location target observable */\n  print$: Observable<void>             /* Print mode observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch details\n *\n * @param el - Details element\n * @param options - Options\n *\n * @returns Details observable\n */\nexport function watchDetails(\n  el: HTMLDetailsElement, { target$, print$ }: WatchOptions\n): Observable<Details> {\n  return target$\n    .pipe(\n      map(target => target.closest(\"details:not([open])\")!),\n      filter(details => el === details),\n      mergeWith(print$),\n      mapTo(el)\n    )\n}\n\n/**\n * Mount details\n *\n * This function ensures that `details` tags are opened on anchor jumps and\n * prior to printing, so the whole content of the page is visible.\n *\n * @param el - Details element\n * @param options - Options\n *\n * @returns Details component observable\n */\nexport function mountDetails(\n  el: HTMLDetailsElement, options: MountOptions\n): Observable<Component<Details>> {\n  const internal$ = new Subject<Details>()\n  internal$.subscribe(() => {\n    el.setAttribute(\"open\", \"\")\n    el.scrollIntoView()\n  })\n\n  /* Create and return component */\n  return watchDetails(el, options)\n    !
 .pipe(\n      tap(internal$),\n      finalize(() => internal$.complete()),\n      mapTo({ ref: el })\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, of } from \"rxjs\"\n\nimport { createElement, replaceElement } from \"~/browser\"\nimport { renderTable } from \"~/templates\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Data table\n */\nexport interface DataTable {}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Sentinel for replacement\n */\nconst sentinel = createElement(\"table\")\n\n/* ------------------------------------------------------------------!
 ----------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount data table\n *\n * This function wraps a data table in another scrollable container, so it can\n * be smoothly scrolled on smaller screen sizes and won't break the layout.\n *\n * @param el - Data table element\n *\n * @returns Data table component observable\n */\nexport function mountDataTable(\n  el: HTMLElement\n): Observable<Component<DataTable>> {\n  replaceElement(el, sentinel)\n  replaceElement(sentinel, renderTable(el))\n\n  /* Create and return component */\n  return of({ ref: el })\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, merge } from \"rxjs\"\n\nimport { Viewport, getElements } from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { CodeBlock, mountCodeBlock } from \"../code\"\nimport { Details, mountDetails } from \"..!
 /details\"\nimport { DataTable, mountDataTable } from \"../table\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Content\n */\nexport type Content =\n  | CodeBlock\n  | DataTable\n  | Details\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n  target$: Observable<HTMLElement>     /* Location target observable */\n  viewport$: Observable<Viewport>      /* Viewport observable */\n  print$: Observable<void>             /* Print mode observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount content\n *\n * This function mounts all components that are found in the content of the\n * actual article, including code blocks, data tables and details.\n *\n * @param el - Content element\n * @param options - Options\n *\n * @returns Content component observable\n */\nexport function mountContent(\n  el: HTMLElement, { target$, viewport$, print$ }: MountOptions\n): Observable<Component<Content>> {\n  return merge(\n\n    /* Code blocks */\n    ...getElements(\"pre > code\", el)\n      .map(child => mountCodeBlock(child, { viewport$ })),\n\n    /* Data tables */\n    ...getElements(\"table:not([class])\", el)\n      .map(child => mountDataTable(child)),\n\n    /* Details */\n    ...getElements(\"details\", el)\n      .map(child => mountDetails(child, { target$, print$ }))\n  )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without re!
 striction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n  Observable,\n  Subject,\n  animationFrameScheduler,\n  merge,\n  of\n} from \"rxjs\"\nimport {\n  delay,\n  finalize,\n  map,\n  observeOn,\n  switchMap,\n  tap\n} from \"rxjs/operators\"\n\nimport {\n  resetDialogState,\n  setDialogMessage,\n  setDialogState\n} from \"~/actions\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Dialog\n */\nexport interface Dialog {\n  message: string                      /* Dialog message */\n  open: boolean                        /* Dialog is visible */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n  alert$: Subject<string>              /* Alert subject */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n  alert$: Subject<string>              /* Alert subject */\n}\n\n/* -------------------------------!
 ---------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch dialog\n *\n * @param _el - Dialog element\n * @param options - Options\n *\n * @returns Dialog observable\n */\nexport function watchDialog(\n  _el: HTMLElement, { alert$ }: WatchOptions\n): Observable<Dialog> {\n  return alert$\n    .pipe(\n      switchMap(message => merge(\n        of(true),\n        of(false).pipe(delay(2000))\n      )\n        .pipe(\n          map(open => ({ message, open }))\n        )\n      )\n    )\n}\n\n/**\n * Mount dialog\n *\n * This function reveals the dialog in the right cornerwhen a new alert is\n * emitted through the subject that is passed as part of the options.\n *\n * @param el - Dialog element\n * @param options - Options\n *\n * @returns Dialog component observable\n */\nexport function mountDialog(\n  el: HTMLElement, options: MountOptions\n): Observable<Component<Dialog>> {\n  const internal$ = new Subject<Dialog>()\n  internal$\n    .pipe(\n      observeOn(animationFrameScheduler)\n    )\n      .subscribe(({ message, open }) => {\n        setDialogMessage(el, message)\n        if (open)\n          setDialogState(el, \"open\")\n        else\n          resetDialogState(el)\n      })\n\n  /* Create and return component */\n  return watchDialog(el, options)\n    .pipe(\n      tap(internal$),\n      finalize(() => internal$.complete()),\n      map(state => ({ ref: el, ...state }))\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following condit!
 ions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n  Observable,\n  Subject,\n  animationFrameScheduler,\n  combineLatest,\n  defer,\n  of\n} from \"rxjs\"\nimport {\n  bufferCount,\n  combineLatestWith,\n  distinctUntilChanged,\n  distinctUntilKeyChanged,\n  filter,\n  map,\n  observeOn,\n  shareReplay,\n  startWith,\n  switchMap\n} from \"rxjs/operators\"\n\nimport { feature } from \"~/_\"\nimport { resetHeaderState, setHeaderState } from \"~/actions\"\nimport {\n  Viewport,\n  watchElementSize,\n  watchToggle\n} from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Main } from \"../../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface Header {\n  height: number                       /* Header visible height */\n  sticky: boolean                      /* Header stickyness */\n  hidden: boolean                      /* User scrolled past threshold */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n  viewport$: Observable<Viewport>      /* Viewport observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n  viewport$: Observable<!
 Viewport>      /* Viewport observable */\n  header$: Observable<Header>          /* Header observable */\n  main$: Observable<Main>              /* Main area observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Compute whether the header is hidden\n *\n * If the user scrolls past a certain threshold, the header can be hidden when\n * scrolling down, and shown when scrolling up.\n *\n * @param options - Options\n *\n * @returns Toggle observable\n */\nfunction isHidden({ viewport$ }: WatchOptions): Observable<boolean> {\n  if (!feature(\"header.autohide\"))\n    return of(false)\n\n  /* Compute direction and turning point */\n  const direction$ = viewport$\n    .pipe(\n      map(({ offset: { y } }) => y),\n      bufferCount(2, 1),\n      map(([a, b]) => [a < b, b] as const),\n      distinctUntilKeyChanged(0)\n    )\n\n  /* Compute whether header should be hidden */\n  const hidden$ = combineLatest([viewport$, direction$])\n    .pipe(\n      filter(([{ offset }, [, y]]) => Math.abs(y - offset.y) > 100),\n      map(([, [direction]]) => direction),\n      distinctUntilChanged()\n    )\n\n  /* Compute threshold for hiding */\n  const search$ = watchToggle(\"search\")\n  return combineLatest([viewport$, search$])\n    .pipe(\n      map(([{ offset }, search]) => offset.y > 400 && !search),\n      distinctUntilChanged(),\n      switchMap(active => active ? hidden$ : of(false)),\n      startWith(false)\n    )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header\n *\n * @param el - Header element\n * @param options - Options\n *\n * @returns Header observable\n */\nexport function watchHeader(\n  el: HTMLElement, options: WatchOptions\n): Observable<Header> {\n  return defer(() => {\n    const styles = getComputedSt!
 yle(el)\n    return of(\n      styles.position === \"sticky\" ||\n      styles.position === \"-webkit-sticky\"\n    )\n  })\n    .pipe(\n      combineLatestWith(watchElementSize(el), isHidden(options)),\n      map(([sticky, { height }, hidden]) => ({\n        height: sticky ? height : 0,\n        sticky,\n        hidden\n      })),\n      distinctUntilChanged((a, b) => (\n        a.sticky === b.sticky &&\n        a.height === b.height &&\n        a.hidden === b.hidden\n      )),\n      shareReplay(1)\n    )\n}\n\n/**\n * Mount header\n *\n * This function manages the different states of the header, i.e. whether it's\n * hidden or rendered with a shadow. This depends heavily on the main area.\n *\n * @param el - Header element\n * @param options - Options\n *\n * @returns Header component observable\n */\nexport function mountHeader(\n  el: HTMLElement, { header$, main$ }: MountOptions\n): Observable<Component<Header>> {\n  const internal$ = new Subject<Main>()\n  internal$\n    .pipe(\n      distinctUntilKeyChanged(\"active\"),\n      combineLatestWith(header$),\n      observeOn(animationFrameScheduler)\n    )\n      .subscribe(([{ active }, { hidden }]) => {\n        if (active)\n          setHeaderState(el, hidden ? \"hidden\" : \"shadow\")\n        else\n          resetHeaderState(el)\n      })\n\n  /* Connect to long-living subject and return component */\n  main$.subscribe(main => internal$.next(main))\n  return header$\n    .pipe(\n      map(state => ({ ref: el, ...state }))\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following !
 conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n  NEVER,\n  Observable,\n  Subject,\n  animationFrameScheduler\n} from \"rxjs\"\nimport {\n  distinctUntilKeyChanged,\n  finalize,\n  map,\n  observeOn,\n  tap\n} from \"rxjs/operators\"\n\nimport {\n  resetHeaderTitleState,\n  setHeaderTitleState\n} from \"~/actions\"\nimport {\n  Viewport,\n  getElement,\n  getElementSize,\n  watchViewportAt\n} from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Header } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface HeaderTitle {\n  active: boolean                      /* User scrolled past first headline */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n  viewport$: Observable<Viewport>      /* Viewport observable */\n  header$: Observable<Header>          /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n  viewport$: Observable<Viewport>      /* Viewport observable */\n  header$: Observable<Header>          /* Header observable */\n}\n\n/* ---------------------------------------------------------------!
 -------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header title\n *\n * @param el - Heading element\n * @param options - Options\n *\n * @returns Header title observable\n */\nexport function watchHeaderTitle(\n  el: HTMLHeadingElement, { viewport$, header$ }: WatchOptions\n): Observable<HeaderTitle> {\n  return watchViewportAt(el, { header$, viewport$ })\n    .pipe(\n      map(({ offset: { y } }) => {\n        const { height } = getElementSize(el)\n        return {\n          active: y >= height\n        }\n      }),\n      distinctUntilKeyChanged(\"active\")\n    )\n}\n\n/**\n * Mount header title\n *\n * This function swaps the header title from the site title to the title of the\n * current page when the user scrolls past the first headline.\n *\n * @param el - Header title element\n * @param options - Options\n *\n * @returns Header title component observable\n */\nexport function mountHeaderTitle(\n  el: HTMLElement, options: MountOptions\n): Observable<Component<HeaderTitle>> {\n  const internal$ = new Subject<HeaderTitle>()\n  internal$\n    .pipe(\n      observeOn(animationFrameScheduler)\n    )\n      .subscribe(({ active }) => {\n        if (active)\n          setHeaderTitleState(el, \"active\")\n        else\n          resetHeaderTitleState(el)\n      })\n\n  /* Obtain headline, if any */\n  const headline = getElement<HTMLHeadingElement>(\"article h1\")\n  if (typeof headline === \"undefined\")\n    return NEVER\n\n  /* Create and return component */\n  return watchHeaderTitle(headline, options)\n    .pipe(\n      tap(internal$),\n      finalize(() => internal$.complete()),\n      map(state => ({ ref: el, ...state }))\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including wit!
 hout limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n  Observable,\n  combineLatest\n} from \"rxjs\"\nimport {\n  distinctUntilChanged,\n  distinctUntilKeyChanged,\n  map,\n  switchMap\n} from \"rxjs/operators\"\n\nimport { Viewport, watchElementSize } from \"~/browser\"\n\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Main area\n */\nexport interface Main {\n  offset: number                       /* Main area top offset */\n  height: number                       /* Main area visible height */\n  active: boolean                      /* User scrolled past header */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n  viewport$: Observable<Viewport>      /* Viewport observable */\n  header$: Observable<Header>          /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * !
 Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch main area\n *\n * This function returns an observable that computes the visual parameters of\n * the main area which depends on the viewport vertical offset and height, as\n * well as the height of the header element, if the header is fixed.\n *\n * @param el - Main area element\n * @param options - Options\n *\n * @returns Main area observable\n */\nexport function watchMain(\n  el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable<Main> {\n\n  /* Compute necessary adjustment for header */\n  const adjust$ = header$\n    .pipe(\n      map(({ height }) => height),\n      distinctUntilChanged()\n    )\n\n  /* Compute the main area's top and bottom borders */\n  const border$ = adjust$\n    .pipe(\n      switchMap(() => watchElementSize(el)\n        .pipe(\n          map(({ height }) => ({\n            top:    el.offsetTop,\n            bottom: el.offsetTop + height\n          })),\n          distinctUntilKeyChanged(\"bottom\")\n        )\n      )\n    )\n\n  /* Compute the main area's offset, visible height and if we scrolled past */\n  return combineLatest([adjust$, border$, viewport$])\n    .pipe(\n      map(([header, { top, bottom }, { offset: { y }, size: { height } }]) => {\n        height = Math.max(0, height\n          - Math.max(0, top    - y,  header)\n          - Math.max(0, height + y - bottom)\n        )\n        return {\n          offset: top - header,\n          height,\n          active: top - header <= y\n        }\n      }),\n      distinctUntilChanged((a, b) => (\n        a.offset === b.offset &&\n        a.height === b.height &&\n        a.active === b.active\n      ))\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including!
  without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n  Observable,\n  Subject,\n  fromEvent,\n  of\n} from \"rxjs\"\nimport {\n  finalize,\n  map,\n  mapTo,\n  mergeMap,\n  shareReplay,\n  startWith,\n  tap\n} from \"rxjs/operators\"\n\nimport { getElements } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Palette colors\n */\nexport interface PaletteColor {\n  scheme?: string                      /* Color scheme */\n  primary?: string                     /* Primary color */\n  accent?: string                      /* Accent color */\n}\n\n/**\n * Palette\n */\nexport interface Palette {\n  index: number                        /* Palette index */\n  color: PaletteColor                  /* Palette colors */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch color palette\n *\n * @param inputs - Color palette element\n *\n * @returns Color palette obser!
 vable\n */\nexport function watchPalette(\n  inputs: HTMLInputElement[]\n): Observable<Palette> {\n  const data = localStorage.getItem(__prefix(\"__palette\"))!\n  const current = JSON.parse(data) || {\n    index: inputs.findIndex(input => (\n      matchMedia(input.getAttribute(\"data-md-color-media\")!).matches\n    ))\n  }\n\n  /* Emit changes in color palette */\n  const palette$ = of(...inputs)\n    .pipe(\n      mergeMap(input => fromEvent(input, \"change\")\n        .pipe(\n          mapTo(input)\n        )\n      ),\n      startWith(inputs[Math.max(0, current.index)]),\n      map(input => ({\n        index: inputs.indexOf(input),\n        color: {\n          scheme:  input.getAttribute(\"data-md-color-scheme\"),\n          primary: input.getAttribute(\"data-md-color-primary\"),\n          accent:  input.getAttribute(\"data-md-color-accent\")\n        }\n      } as Palette)),\n      shareReplay(1)\n    )\n\n  /* Persist preference in local storage */\n  palette$.subscribe(palette => {\n    localStorage.setItem(__prefix(\"__palette\"), JSON.stringify(palette))\n  })\n\n  /* Return palette */\n  return palette$\n}\n\n/**\n * Mount color palette\n *\n * @param el - Color palette element\n *\n * @returns Color palette component observable\n */\nexport function mountPalette(\n  el: HTMLElement\n): Observable<Component<Palette>> {\n  const internal$ = new Subject<Palette>()\n\n  /* Set color palette */\n  internal$.subscribe(palette => {\n    for (const [key, value] of Object.entries(palette.color))\n      if (typeof value === \"string\")\n        document.body.setAttribute(`data-md-color-${key}`, value)\n\n    /* Toggle visibility */\n    for (let index = 0; index < inputs.length; index++) {\n      const label = inputs[index].nextElementSibling\n      if (label instanceof HTMLElement)\n        label.hidden = palette.index !== index\n    }\n  })\n\n  /* Create and return component */\n  const inputs = getElements<HTMLInputElement>(\"input\", el)\n  return watchPalette(inputs)\n    .pipe(\n      tap(internal$),\n!
       finalize(() => internal$.complete()),\n      map(state => ({ ref: el, ...state }))\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ClipboardJS from \"clipboard\"\nimport { Observable, Subject } from \"rxjs\"\n\nimport { translation } from \"~/_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n  alert$: Subject<string>              /* Alert subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up Clipboard.js integration\n *\n * @param options - Options\n */\nexport function setupClipboardJS(\n  { alert$ }: SetupOptions\n): void {\n  if !
 (ClipboardJS.isSupported()) {\n    new Observable<ClipboardJS.Event>(subscriber => {\n      new ClipboardJS(\"[data-clipboard-target], [data-clipboard-text]\")\n        .on(\"success\", ev => subscriber.next(ev))\n    })\n      .subscribe(() => alert$.next(translation(\"clipboard.copied\")))\n  }\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n  EMPTY,\n  NEVER,\n  Observable,\n  Subject,\n  fromEvent,\n  merge,\n  of\n} from \"rxjs\"\nimport {\n  bufferCount,\n  catchError,\n  concatMap,\n  debounceTime,\n  distinctUntilChanged,\n  distinctUntilKeyChanged,\n  filter,\n  map,\n  sample,\n  share,\n  skip,\n  skipUntil,\n  switchMap\n} from \"rxjs/operators\"\n\nimport { configuration } from \"~/_\"\nimport {\n  Viewport,\n  ViewportOffset,\n  createElement,\n  getElement,\n  getElements,\n  replaceElement,\n  request,\n  requestXML,\n  setLocation,\n  setLocationHash,\n  setViewportO!
 ffset\n} from \"~/browser\"\nimport { getComponentElement } from \"~/components\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * History state\n */\nexport interface HistoryState {\n  url: URL                             /* State URL */\n  offset?: ViewportOffset              /* State viewport offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n  document$: Subject<Document>         /* Document subject */\n  location$: Subject<URL>              /* Location subject */\n  viewport$: Observable<Viewport>      /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Preprocess a list of URLs\n *\n * This function replaces the `site_url` in the sitemap with the actual base\n * URL, to allow instant loading to work in occasions like Netlify previews.\n *\n * @param urls - URLs\n *\n * @returns Processed URLs\n */\nfunction preprocess(urls: string[]): string[] {\n  if (urls.length < 2)\n    return urls\n\n  /* Take the first two URLs and remove everything after the last slash */\n  const [root, next] = urls\n    .sort((a, b) => a.length - b.length)\n    .map(url => url.replace(/[^/]+$/, \"\"))\n\n  /* Compute common prefix */\n  let index = 0\n  if (root === next)\n    index = root.length\n  else\n    while (root.charCodeAt(index) === next.charCodeAt(index))\n      index++\n\n  /* Replace common prefix (i.e. base) with effective base */\n  const config = configuration()\n  return urls.map(url => (\n    url.replace(root.slice(0, index), `${config.base}/`)\n  ))\n}\n\n/* -------------------------------------------------------!
 ---------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up instant loading\n *\n * When fetching, theoretically, we could use `responseType: \"document\"`, but\n * since all MkDocs links are relative, we need to make sure that the current\n * location matches the document we just loaded. Otherwise any relative links\n * in the document could use the old location.\n *\n * This is the reason why we need to synchronize history events and the process\n * of fetching the document for navigation changes (except `popstate` events):\n *\n * 1. Fetch document via `XMLHTTPRequest`\n * 2. Set new location via `history.pushState`\n * 3. Parse and emit fetched document\n *\n * For `popstate` events, we must not use `history.pushState`, or the forward\n * history will be irreversibly overwritten. In case the request fails, the\n * location change is dispatched regularly.\n *\n * @param options - Options\n */\nexport function setupInstantLoading(\n  { document$, location$, viewport$ }: SetupOptions\n): void {\n  const config = configuration()\n  if (location.protocol === \"file:\")\n    return\n\n  /* Disable automatic scroll restoration */\n  if (\"scrollRestoration\" in history) {\n    history.scrollRestoration = \"manual\"\n\n    /* Hack: ensure that reloads restore viewport offset */\n    fromEvent(window, \"beforeunload\")\n      .subscribe(() => {\n        history.scrollRestoration = \"auto\"\n      })\n  }\n\n  /* Hack: ensure absolute favicon link to omit 404s when switching */\n  const favicon = getElement<HTMLLinkElement>(\"link[rel=icon]\")\n  if (typeof favicon !== \"undefined\")\n    favicon.href = favicon.href\n\n  /* Intercept internal navigation */\n  const push$ = requestXML(`${config.base}/sitemap.xml`)\n    .pipe(\n      map(sitemap => preprocess(getElements(\"loc\", sitemap)\n        .map(node => node.textContent!)\n      )),\n      switchMap(urls => fromEvent<MouseEvent>(document.body, \"click\")\n        .pipe(\n          filter(e!
 v => !ev..metaKey && !ev.ctrlKey),\n          switchMap(ev => {\n\n            /* Handle HTML and SVG elements */\n            if (ev.target instanceof Element) {\n              const el = ev.target.closest(\"a\")\n              if (el && !el.target && urls.includes(el.href)) {\n                ev.preventDefault()\n                return of({\n                  url: new URL(el.href)\n                })\n              }\n            }\n            return NEVER\n          })\n        )\n      ),\n      share<HistoryState>()\n    )\n\n  /* Intercept history back and forward */\n  const pop$ = fromEvent<PopStateEvent>(window, \"popstate\")\n    .pipe(\n      filter(ev => ev.state !== null),\n      map(ev => ({\n        url: new URL(location.href),\n        offset: ev.state\n      })),\n      share<HistoryState>()\n    )\n\n  /* Emit location change */\n  merge(push$, pop$)\n    .pipe(\n      distinctUntilChanged((a, b) => a.url.href === b.url.href),\n      map(({ url }) => url)\n    )\n      .subscribe(location$)\n\n  /* Fetch document via `XMLHTTPRequest` */\n  const response$ = location$\n    .pipe(\n      distinctUntilKeyChanged(\"pathname\"),\n      switchMap(url => request(url.href)\n        .pipe(\n          catchError(() => {\n            setLocation(url)\n            return NEVER\n          })\n        )\n      ),\n      share()\n    )\n\n  /* Set new location via `history.pushState` */\n  push$\n    .pipe(\n      sample(response$)\n    )\n      .subscribe(({ url }) => {\n        history.pushState({}, \"\", `${url}`)\n      })\n\n  /* Parse and emit fetched document */\n  const dom = new DOMParser()\n  response$\n    .pipe(\n      switchMap(res => res.text()),\n      map(res => dom.parseFromString(res, \"text/html\"))\n    )\n      .subscribe(document$)\n\n  /* Emit history state change */\n  merge(push$, pop$)\n    .pipe(\n      sample(document$)\n    )\n      .subscribe(({ url, offset }) => {\n        if (url.hash && !offset)\n          setLocationHash(url.hash)\n        else\n          setViewportOffset(of!
 fset || { y: 0 })\n      })\n\n  /* Replace meta tags and components */\n  document$\n    .pipe(\n      skip(1)\n    )\n      .subscribe(replacement => {\n        for (const selector of [\n\n          /* Meta tags */\n          \"title\",\n          \"link[rel=canonical]\",\n          \"meta[name=author]\",\n          \"meta[name=description]\",\n\n          /* Components */\n          \"[data-md-component=announce]\",\n          \"[data-md-component=container]\",\n          \"[data-md-component=header-topic]\",\n          \"[data-md-component=logo], .md-logo\", // compat\n          \"[data-md-component=skip]\"\n        ]) {\n          const source = getElement(selector)\n          const target = getElement(selector, replacement)\n          if (\n            typeof source !== \"undefined\" &&\n            typeof target !== \"undefined\"\n          ) {\n            replaceElement(source, target)\n          }\n        }\n      })\n\n  /* Re-evaluate scripts */\n  document$\n    .pipe(\n      skip(1),\n      map(() => getComponentElement(\"container\")),\n      switchMap(el => of(...getElements(\"script\", el))),\n      concatMap(el => {\n        const script = createElement(\"script\")\n        if (el.src) {\n          for (const name of el.getAttributeNames())\n            script.setAttribute(name, el.getAttribute(name)!)\n          replaceElement(el, script)\n\n          /* Complete when script is loaded */\n          return new Observable(observer => {\n            script.onload = () => observer.complete()\n          })\n\n        /* Complete immediately */\n        } else {\n          script.textContent = el.textContent\n          replaceElement(el, script)\n          return EMPTY\n        }\n      })\n    )\n      .subscribe()\n\n  /* Debounce update of viewport offset */\n  viewport$\n    .pipe(\n      skipUntil(push$),\n      debounceTime(250),\n      distinctUntilKeyChanged(\"offset\")\n    )\n      .subscribe(({ offset }) => {\n        history.replaceState(offset, \"\")\n      })\n\n  /* Set viewport offs!
 et from history */\n  merge(push$, pop$)\n    .pipe(\n      bufferCount(2, 1),\n      filter(([a, b]) => a.url.pathname === b.url.pathname),\n      map(([, state]) => state)\n    )\n      .subscribe(({ offset }) => {\n        setViewportOffset(offset || { y: 0 })\n      })\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexDocument } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search document\n */\nexport interface SearchDocument extends SearchIndexDocument {\n  parent?: SearchIndexDocument         /* Parent article */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search document mapping\n */\nexport type SearchDocumentMap = Map<stri!
 ng, SearchDocument>\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search document mapping\n *\n * @param docs - Search index documents\n *\n * @returns Search document map\n */\nexport function setupSearchDocumentMap(\n  docs: SearchIndexDocument[]\n): SearchDocumentMap {\n  const documents = new Map<string, SearchDocument>()\n  const parents   = new Set<SearchDocument>()\n  for (const doc of docs) {\n    const [path, hash] = doc.location.split(\"#\")\n\n    /* Extract location and title */\n    const location = doc.location\n    const title    = doc.title\n\n    /* Escape and cleanup text */\n    const text = escapeHTML(doc.text)\n      .replace(/\\s+(?=[,.:;!?])/g, \"\")\n      .replace(/\\s+/g, \" \")\n\n    /* Handle section */\n    if (hash) {\n      const parent = documents.get(path)!\n\n      /* Ignore first section, override article */\n      if (!parents.has(parent)) {\n        parent.title = doc.title\n        parent.text  = text\n\n        /* Remember that we processed the article */\n        parents.add(parent)\n\n      /* Add subsequent section */\n      } else {\n        documents.set(location, {\n          location,\n          title,\n          text,\n          parent\n        })\n      }\n\n    /* Add article */\n    } else {\n      documents.set(location, {\n        location,\n        title,\n        text\n      })\n    }\n  }\n  return documents\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, !
 subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search transformation function\n *\n * @param value - Query value\n *\n * @returns Transformed query value\n */\nexport type SearchTransformFn = (value: string) => string\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Default transformation function\n *\n * 1. Search for terms in quotation marks and prepend a `+` modifier to denote\n *    that the resulting document must contain all terms, converting the query\n *    to an `AND` query (as opposed to the default `OR` behavior). While users\n *    may expect terms enclosed in quotation marks to map to span queries, i.e.\n *    for which order is important, Lunr.js doesn't support them, so the best\n *    we can do is to convert the terms to an `AND` query.\n *\n * 2. Replace control characters which are not located at the beginning of the\n *    query or preceded by white space, or are not followed by a non-whitespace\n *    character or are at the end of the query string. Furthermore, filter\n *    unmatched quotation marks.\n *\n * 3. Trim excess whitespace from left and right.!
 \n *\n * @param query - Query value\n *\n * @returns Transformed query value\n */\nexport function defaultTransform(query: string): string {\n  return query\n    .split(/\"([^\"]+)\"/g)                            /* => 1 */\n      .map((terms, index) => index & 1\n        ? terms.replace(/^\\b|^(?![^\\x00-\\x7F]|$)|\\s+/g, \" +\")\n        : terms\n      )\n      .join(\"\")\n    .replace(/\"|(?:^|\\s+)[*+\\-:^~]+(?=\\s+|$)/g, \"\") /* => 2 */\n    .trim()                                         /* => 3 */\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SearchIndex, SearchResult } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search message type\n */\nexport const enum SearchMessageType {\n  SETUP,                               /* Se!
 arch index setup */\n  READY,                               /* Search index ready */\n  QUERY,                               /* Search query */\n  RESULT                               /* Search results */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * A message containing the data necessary to setup the search index\n */\nexport interface SearchSetupMessage {\n  type: SearchMessageType.SETUP        /* Message type */\n  data: SearchIndex                    /* Message data */\n}\n\n/**\n * A message indicating the search index is ready\n */\nexport interface SearchReadyMessage {\n  type: SearchMessageType.READY        /* Message type */\n}\n\n/**\n * A message containing a search query\n */\nexport interface SearchQueryMessage {\n  type: SearchMessageType.QUERY        /* Message type */\n  data: string                         /* Message data */\n}\n\n/**\n * A message containing results for a search query\n */\nexport interface SearchResultMessage {\n  type: SearchMessageType.RESULT       /* Message type */\n  data: SearchResult[]                 /* Message data */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * A message exchanged with the search worker\n */\nexport type SearchMessage =\n  | SearchSetupMessage\n  | SearchReadyMessage\n  | SearchQueryMessage\n  | SearchResultMessage\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Type guard for search setup messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchSetupMessage(\n  message: SearchMessage\n): message is SearchSetupMessage {\n  return message.type === SearchMessageType.SETUP\n}\n\n/**\n * Type guard for search ready messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchReadyMessage(\n  message: Sea!
 rchMessage\n): message is SearchReadyMessage {\n  return message.type === SearchMessageType.READY\n}\n\n/**\n * Type guard for search query messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchQueryMessage(\n  message: SearchMessage\n): message is SearchQueryMessage {\n  return message.type === SearchMessageType.QUERY\n}\n\n/**\n * Type guard for search result messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchResultMessage(\n  message: SearchMessage\n): message is SearchResultMessage {\n  return message.type === SearchMessageType.RESULT\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ObservableInput, Subject, from } from \"rxjs\"\nimport { map, share } from \"rxjs/operators\"\n\nimport { configuration, translation } from \"~/_\"\nimport { WorkerHandler, watchWor!
 ker } from \"~/browser\"\n\nimport { SearchIndex, SearchIndexPipeline } from \"../../_\"\nimport {\n  SearchMessage,\n  SearchMessageType,\n  SearchSetupMessage,\n  isSearchResultMessage\n} from \"../message\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search worker\n */\nexport type SearchWorker = WorkerHandler<SearchMessage>\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up search index\n *\n * @param data - Search index\n *\n * @returns Search index\n */\nfunction setupSearchIndex(\n  { config, docs, index }: SearchIndex\n): SearchIndex {\n\n  /* Override default language with value from translation */\n  if (config.lang.length === 1 && config.lang[0] === \"en\")\n    config.lang = [\n      translation(\"search.config.lang\")\n    ]\n\n  /* Override default separator with value from translation */\n  if (config.separator === \"[\\\\s\\\\-]+\")\n    config.separator = translation(\"search.config.separator\")\n\n  /* Set pipeline from translation */\n  const pipeline = translation(\"search.config.pipeline\")\n    .split(/\\s*,\\s*/)\n    .filter(Boolean) as SearchIndexPipeline\n\n  /* Return search index after defaulting */\n  return { config, docs, index, pipeline }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up search worker\n *\n * This function creates a web worker to set up and query the search index,\n * which is done using Lunr.js. The index must be passed as an observable to\n * enable hacks like _localsearch_ via search index embedding as JSON.\n *\n * @param url - Worker URL\n * @param index - Search index observable input\n *\n * @returns Search worker\n */\nexp!
 ort function setupSearchWorker(\n  url: string, index: ObservableInput<SearchIndex>\n): SearchWorker {\n  const config = configuration()\n  const worker = new Worker(url)\n\n  /* Create communication channels and resolve relative links */\n  const tx$ = new Subject<SearchMessage>()\n  const rx$ = watchWorker(worker, { tx$ })\n    .pipe(\n      map(message => {\n        if (isSearchResultMessage(message)) {\n          for (const result of message.data)\n            for (const document of result)\n              document.location = `${config.base}/${document.location}`\n        }\n        return message\n      }),\n      share()\n    )\n\n  /* Set up search index */\n  from(index)\n    .pipe(\n      map<SearchIndex, SearchSetupMessage>(data => ({\n        type: SearchMessageType.SETUP,\n        data: setupSearchIndex(data)\n      }))\n    )\n      .subscribe(tx$.next.bind(tx$))\n\n  /* Return search worker */\n  return { tx$, rx$ }\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CO!
 NNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { configuration } from \"~/_\"\nimport { getElementOrThrow, requestJSON } from \"~/browser\"\nimport { Version, renderVersionSelector } from \"~/templates\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up version selector\n */\nexport function setupVersionSelector(): void {\n  const config = configuration()\n  requestJSON<Version[]>(new URL(\"versions.json\", config.base))\n    .subscribe(versions => {\n      const topic = getElementOrThrow(\".md-header__topic\")\n      topic.appendChild(renderVersionSelector(versions))\n    })\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n  Observable,\n  Subject,\n  combineLatest,\n  fromEvent,\n  merge\n} from!
  \"rxjs\"\nimport {\n  delay,\n  distinctUntilChanged,\n  distinctUntilKeyChanged,\n  finalize,\n  map,\n  takeLast,\n  takeUntil,\n  tap\n} from \"rxjs/operators\"\n\nimport {\n  resetSearchQueryPlaceholder,\n  setSearchQueryPlaceholder\n} from \"~/actions\"\nimport {\n  setElementFocus,\n  setToggle,\n  watchElementFocus\n} from \"~/browser\"\nimport {\n  SearchMessageType,\n  SearchQueryMessage,\n  SearchWorker,\n  defaultTransform\n} from \"~/integrations\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search query\n */\nexport interface SearchQuery {\n  value: string                        /* Query value */\n  focus: boolean                       /* Query focus */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch search query\n *\n * Note that the focus event which triggers re-reading the current query value\n * is delayed by `1ms` so the input's empty state is allowed to propagate.\n *\n * @param el - Search query element\n *\n * @returns Search query observable\n */\nexport function watchSearchQuery(\n  el: HTMLInputElement\n): Observable<SearchQuery> {\n  const fn = __search?.transform || defaultTransform\n\n  /* Intercept focus and input events */\n  const focus$ = watchElementFocus(el)\n  const value$ = merge(\n    fromEvent(el, \"keyup\"),\n    fromEvent(el, \"focus\").pipe(delay(1))\n  )\n    .pipe(\n      map(() => fn(el.value)),\n      distinctUntilChanged()\n    )\n\n  /* Combine into single observable */\n  return combineLatest([value$, focus$])\n    .pipe(\n      map(([value, focus]) => ({ value, focus }))\n    )\n}\n\n/**\n * Mount search query\n *\n * @param el - Search query element\n * @param worker - Search worker\n *\n * @returns Search query component observable\n */!
 \nexport function mountSearchQuery(\n  el: HTMLInputElement, { tx$ }: SearchWorker\n): Observable<Component<SearchQuery, HTMLInputElement>> {\n  const internal$ = new Subject<SearchQuery>()\n\n  /* Handle value changes */\n  internal$\n    .pipe(\n      distinctUntilKeyChanged(\"value\"),\n      map(({ value }): SearchQueryMessage => ({\n        type: SearchMessageType.QUERY,\n        data: value\n      }))\n    )\n      .subscribe(tx$.next.bind(tx$))\n\n  /* Handle focus changes */\n  internal$\n    .pipe(\n      distinctUntilKeyChanged(\"focus\")\n    )\n      .subscribe(({ focus }) => {\n        if (focus) {\n          setToggle(\"search\", focus)\n          setSearchQueryPlaceholder(el, \"\")\n        } else {\n          resetSearchQueryPlaceholder(el)\n        }\n      })\n\n  /* Handle reset */\n  fromEvent(el.form!, \"reset\")\n    .pipe(\n      takeUntil(internal$.pipe(takeLast(1)))\n    )\n      .subscribe(() => setElementFocus(el))\n\n  /* Create and return component */\n  return watchSearchQuery(el)\n    .pipe(\n      tap(internal$),\n      finalize(() => internal$.complete()),\n      map(state => ({ ref: el, ...state }))\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND N!
 ON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n  Observable,\n  Subject,\n  animationFrameScheduler,\n  merge,\n  of\n} from \"rxjs\"\nimport {\n  bufferCount,\n  filter,\n  finalize,\n  map,\n  observeOn,\n  startWith,\n  switchMap,\n  take,\n  tap,\n  withLatestFrom,\n  zipWith\n} from \"rxjs/operators\"\n\nimport {\n  addToSearchResultList,\n  resetSearchResultList,\n  resetSearchResultMeta,\n  setSearchResultMeta\n} from \"~/actions\"\nimport {\n  getElementOrThrow,\n  watchElementThreshold\n} from \"~/browser\"\nimport {\n  SearchResult as SearchResultData,\n  SearchWorker,\n  isSearchReadyMessage,\n  isSearchResultMessage\n} from \"~/integrations\"\nimport { renderSearchResult } from \"~/templates\"\n\nimport { Component } from \"../../_\"\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search result\n */\nexport interface SearchResult {\n  data: SearchResultData[]             /* Search result data */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n  query$: Observable<SearchQuery>      /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search result list\n *\n * This function performs a lazy rendering of the search results, depending on\n * the vertical offset of the search result container.\n *\n * @param el!
  - Search result list element\n * @param worker - Search worker\n * @param options - Options\n *\n * @returns Search result list component observable\n */\nexport function mountSearchResult(\n  el: HTMLElement, { rx$ }: SearchWorker, { query$ }: MountOptions\n): Observable<Component<SearchResult>> {\n  const internal$ = new Subject<SearchResult>()\n  const boundary$ = watchElementThreshold(el.parentElement!)\n    .pipe(\n      filter(Boolean)\n    )\n\n  /* Retrieve nested components */\n  const meta = getElementOrThrow(\":scope > :first-child\", el)\n  const list = getElementOrThrow(\":scope > :last-child\", el)\n\n  /* Update search result metadata when ready */\n  rx$\n    .pipe(\n      filter(isSearchReadyMessage),\n      take(1)\n    )\n      .subscribe(() => {\n        resetSearchResultMeta(meta)\n      })\n\n  /* Update search result metadata */\n  internal$\n    .pipe(\n      observeOn(animationFrameScheduler),\n      withLatestFrom(query$)\n    )\n      .subscribe(([{ data }, { value }]) => {\n        if (value)\n          setSearchResultMeta(meta, data.length)\n        else\n          resetSearchResultMeta(meta)\n      })\n\n  /* Update search result list */\n  internal$\n    .pipe(\n      observeOn(animationFrameScheduler),\n      tap(() => resetSearchResultList(list)),\n      switchMap(({ data }) => merge(\n        of(...data.slice(0, 10)),\n        of(...data.slice(10))\n          .pipe(\n            bufferCount(4),\n            zipWith(boundary$),\n            switchMap(([chunk]) => of(...chunk))\n          )\n      ))\n    )\n      .subscribe(result => {\n        addToSearchResultList(list, renderSearchResult(result))\n      })\n\n  /* Filter search result list */\n  const result$ = rx$\n    .pipe(\n      filter(isSearchResultMessage),\n      map(({ data }) => ({ data })),\n      startWith({ data: [] })\n    )\n\n  /* Create and return component */\n  return result$\n    .pipe(\n      tap(internal$),\n      finalize(() => internal$.complete()),\n      map(state => ({ ref: el, ...state }))\n    )\n!
 }\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable, ObservableInput, merge } from \"rxjs\"\nimport { filter, sample, take } from \"rxjs/operators\"\n\nimport { configuration } from \"~/_\"\nimport {\n  Keyboard,\n  getActiveElement,\n  getElements,\n  setElementFocus,\n  setElementSelection,\n  setToggle\n} from \"~/browser\"\nimport {\n  SearchIndex,\n  isSearchQueryMessage,\n  isSearchReadyMessage,\n  setupSearchWorker\n} from \"~/integrations\"\n\nimport { Component, getComponentElement } from \"../../_\"\nimport { SearchQuery, mountSearchQuery } from \"../query\"\nimport { SearchResult, mountSearchResult } from \"../result\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search\n */\nexport type Search =\n  | SearchQuery\n  | Searc!
 hResult\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n  index$: ObservableInput<SearchIndex> /* Search index observable */\n  keyboard$: Observable<Keyboard>      /* Keyboard observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search\n *\n * This function sets up the search functionality, including the underlying\n * web worker and all keyboard bindings.\n *\n * @param el - Search element\n * @param options - Options\n *\n * @returns Search component observable\n */\nexport function mountSearch(\n  el: HTMLElement, { index$, keyboard$ }: MountOptions\n): Observable<Component<Search>> {\n  const config = configuration()\n  const worker = setupSearchWorker(config.search, index$)\n\n  /* Retrieve nested components */\n  const query  = getComponentElement(\"search-query\", el)\n  const result = getComponentElement(\"search-result\", el)\n\n  /* Re-emit query when search is ready */\n  const { tx$, rx$ } = worker\n  tx$\n    .pipe(\n      filter(isSearchQueryMessage),\n      sample(rx$.pipe(filter(isSearchReadyMessage))),\n      take(1)\n    )\n      .subscribe(tx$.next.bind(tx$))\n\n  /* Set up search keyboard handlers */\n  keyboard$\n    .pipe(\n      filter(({ mode }) => mode === \"search\")\n    )\n      .subscribe(key => {\n        const active = getActiveElement()\n        switch (key.type) {\n\n          /* Enter: prevent form submission */\n          case \"Enter\":\n            if (active === query)\n              key.claim()\n            break\n\n          /* Escape or Tab: close search */\n          case \"Escape\":\n          case \"Tab\":\n            setToggle(\"search\", false)\n            setElementFocus(query, false)\n            break\n\n          /* V!
 ertical arrows: select previous or next search result */\n          case \"ArrowUp\":\n          case \"ArrowDown\":\n            if (typeof active === \"undefined\") {\n              setElementFocus(query)\n            } else {\n              const els = [query, ...getElements(\n                \":not(details) > [href], summary, details[open] [href]\",\n                result\n              )]\n              const i = Math.max(0, (\n                Math.max(0, els.indexOf(active)) + els.length + (\n                  key.type === \"ArrowUp\" ? -1 : +1\n                )\n              ) % els.length)\n              setElementFocus(els[i])\n            }\n\n            /* Prevent scrolling of page */\n            key.claim()\n            break\n\n          /* All other keys: hand to search query */\n          default:\n            if (query !== getActiveElement())\n              setElementFocus(query)\n        }\n      })\n\n  /* Set up global keyboard handlers */\n  keyboard$\n    .pipe(\n      filter(({ mode }) => mode === \"global\"),\n    )\n      .subscribe(key => {\n        switch (key.type) {\n\n          /* Open search and select query */\n          case \"f\":\n          case \"s\":\n          case \"/\":\n            setElementFocus(query)\n            setElementSelection(query)\n            key.claim()\n            break\n        }\n      })\n\n  /* Create and return component */\n  const query$ = mountSearchQuery(query, worker)\n  return merge(\n    query$,\n    mountSearchResult(result, worker, { query$ })\n  )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished!
  to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n  Observable,\n  Subject,\n  animationFrameScheduler,\n  combineLatest\n} from \"rxjs\"\nimport {\n  distinctUntilChanged,\n  finalize,\n  map,\n  observeOn,\n  tap,\n  withLatestFrom\n} from \"rxjs/operators\"\n\nimport {\n  resetSidebarHeight,\n  resetSidebarOffset,\n  setSidebarHeight,\n  setSidebarOffset\n} from \"~/actions\"\nimport { Viewport } from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\nimport { Main } from \"../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sidebar\n */\nexport interface Sidebar {\n  height: number                       /* Sidebar height */\n  locked: boolean                      /* User scrolled past header */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n  viewport$: Observable<Viewport>      /* Viewport observable */\n  main$: Observable<Main>              /* Main area observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n  viewport$: Observable<Viewport>      /* Viewport observable */\n  head!
 er$: Observable<Header>          /* Header observable */\n  main$: Observable<Main>              /* Main area observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch sidebar\n *\n * This function returns an observable that computes the visual parameters of\n * the sidebar which depends on the vertical viewport offset, as well as the\n * height of the main area. When the page is scrolled beyond the header, the\n * sidebar is locked and fills the remaining space.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @returns Sidebar observable\n */\nexport function watchSidebar(\n  el: HTMLElement, { viewport$, main$ }: WatchOptions\n): Observable<Sidebar> {\n  const adjust =\n    el.parentElement!.offsetTop -\n    el.parentElement!.parentElement!.offsetTop\n\n  /* Compute the sidebar's available height and if it should be locked */\n  return combineLatest([main$, viewport$])\n    .pipe(\n      map(([{ offset, height }, { offset: { y } }]) => {\n        height = height\n          + Math.min(adjust, Math.max(0, y - offset))\n          - adjust\n        return {\n          height,\n          locked: y >= offset + adjust\n        }\n      }),\n      distinctUntilChanged((a, b) => (\n        a.height === b.height &&\n        a.locked === b.locked\n      ))\n    )\n}\n\n/**\n * Mount sidebar\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @returns Sidebar component observable\n */\nexport function mountSidebar(\n  el: HTMLElement, { header$, ...options }: MountOptions\n): Observable<Component<Sidebar>> {\n  const internal$ = new Subject<Sidebar>()\n  internal$\n    .pipe(\n      observeOn(animationFrameScheduler),\n      withLatestFrom(header$)\n    )\n      .subscribe({\n\n        /* Update height and offset */\n        next([{ height }, { height: offset }]) {\n          setSidebarHeight(el, height)\n          setSidebarO!
 ffset(el, offset)\n        },\n\n        /* Reset on complete */\n        complete() {\n          resetSidebarOffset(el)\n          resetSidebarHeight(el)\n        }\n      })\n\n  /* Create and return component */\n  return watchSidebar(el, options)\n    .pipe(\n      tap(internal$),\n      finalize(() => internal$.complete()),\n      map(state => ({ ref: el, ...state }))\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Repo, User } from \"github-types\"\nimport { Observable, zip } from \"rxjs\"\nimport { defaultIfEmpty, map } from \"rxjs/operators\"\n\nimport { requestJSON } from \"~/browser\"\n\nimport { SourceFacts } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * GitHub release (partial)\n */\ninterface Release {\n  ta!
 g_name: string                     /* Tag name */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitHub repository facts\n *\n * @param user - GitHub user\n * @param repo - GitHub repository\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFactsFromGitHub(\n  user: string, repo?: string\n): Observable<SourceFacts> {\n  if (typeof repo !== \"undefined\") {\n    const url = `https://api.github.com/repos/${user}/${repo}`\n    return zip(\n\n      /* Fetch version */\n      requestJSON<Release>(`${url}/releases/latest`)\n        .pipe(\n          map(release => ({\n            version: release.tag_name\n          })),\n          defaultIfEmpty({})\n        ),\n\n      /* Fetch stars and forks */\n      requestJSON<Repo>(url)\n        .pipe(\n          map(info => ({\n            stars: info.stargazers_count,\n            forks: info.forks_count\n          })),\n          defaultIfEmpty({})\n        )\n    )\n      .pipe(\n        map(([release, info]) => ({ ...release, ...info }))\n      )\n\n  /* User or organization */\n  } else {\n    const url = `https://api.github.com/repos/${user}`\n    return requestJSON<User>(url)\n      .pipe(\n        map(info => ({\n          repositories: info.public_repos\n        })),\n        defaultIfEmpty({})\n      )\n  }\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this perm!
 ission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ProjectSchema } from \"gitlab\"\nimport { Observable } from \"rxjs\"\nimport { defaultIfEmpty, map } from \"rxjs/operators\"\n\nimport { requestJSON } from \"~/browser\"\n\nimport { SourceFacts } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitLab repository facts\n *\n * @param base - GitLab base\n * @param project - GitLab project\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFactsFromGitLab(\n  base: string, project: string\n): Observable<SourceFacts> {\n  const url = `https://${base}/api/v4/projects/${encodeURIComponent(project)}`\n  return requestJSON<ProjectSchema>(url)\n    .pipe(\n      map(({ star_count, forks_count }) => ({\n        stars: star_count,\n        forks: forks_count\n      })),\n      defaultIfEmpty({})\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do!
  so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable } from \"rxjs\"\n\nimport { fetchSourceFactsFromGitHub } from \"../github\"\nimport { fetchSourceFactsFromGitLab } from \"../gitlab\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository facts for repositories\n */\nexport interface RepositoryFacts {\n  stars?: number                       /* Number of stars */\n  forks?: number                       /* Number of forks */\n  version?: string                     /* Latest version */\n}\n\n/**\n * Repository facts for organizations\n */\nexport interface OrganizationFacts {\n  repositories?: number                /* Number of repositories */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Repository facts\n */\nexport type SourceFacts =\n  | RepositoryFacts\n  | OrganizationFacts\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch repository facts\n *\n * @param url - Repository URL\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFacts(\n  url: string\n): Observable<SourceFacts> {\n  const [type] = url.match!
 (/(git(?:hub|lab))/i) || []\n  switch (type.toLowerCase()) {\n\n    /* GitHub repository */\n    case \"github\":\n      const [, user, repo] = url.match(/^.+github\\.com\\/([^/]+)\\/?([^/]+)?/i)!\n      return fetchSourceFactsFromGitHub(user, repo)\n\n    /* GitLab repository */\n    case \"gitlab\":\n      const [, base, slug] = url.match(/^.+?([^/]*gitlab[^/]+)\\/(.+?)\\/?$/i)!\n      return fetchSourceFactsFromGitLab(base, slug)\n\n    /* Everything else */\n    default:\n      return NEVER\n  }\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable, Subject, defer, of } from \"rxjs\"\nimport {\n  catchError,\n  filter,\n  finalize,\n  map,\n  shareReplay,\n  tap\n} from \"rxjs/operators\"\n\nimport { setSourceFacts, setSourceState } from \"~/actions\"\nimport { renderSourceFacts } from \"~/templates\"\n\nimport { Component } from \"../../_\"\nimport { SourceFacts, fetc!
 hSourceFacts } from \"../facts\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository information\n */\nexport interface Source {\n  facts: SourceFacts                   /* Repository facts */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository information observable\n */\nlet fetch$: Observable<Source>\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch repository information\n *\n * This function tries to read the repository facts from session storage, and\n * if unsuccessful, fetches them from the underlying provider.\n *\n * @param el - Repository information element\n *\n * @returns Repository information observable\n */\nexport function watchSource(\n  el: HTMLAnchorElement\n): Observable<Source> {\n  return fetch$ ||= defer(() => {\n    const data = sessionStorage.getItem(__prefix(\"__source\"))\n    if (data) {\n      return of<SourceFacts>(JSON.parse(data))\n    } else {\n      const value$ = fetchSourceFacts(el.href)\n      value$.subscribe(value => {\n        try {\n          sessionStorage.setItem(__prefix(\"__source\"), JSON.stringify(value))\n        } catch (err) {\n          /* Uncritical, just swallow */\n        }\n      })\n\n      /* Return value */\n      return value$\n    }\n  })\n    .pipe(\n      catchError(() => NEVER),\n      filter(facts => Object.keys(facts).length > 0),\n      map(facts => ({ facts })),\n      shareReplay(1)\n    )\n}\n\n/**\n * Mount repository information\n *\n * @param el - Repository information element\n *\n * @returns Repository information component observable\n */\nexport function mountSource(\n  el: HTMLAnchorElement\n): Observable<C!
 omponent<Source>> {\n  const internal$ = new Subject<Source>()\n  internal$.subscribe(({ facts }) => {\n    setSourceFacts(el, renderSourceFacts(facts))\n    setSourceState(el, \"done\")\n  })\n\n  /* Create and return component */\n  return watchSource(el)\n    .pipe(\n      tap(internal$),\n      finalize(() => internal$.complete()),\n      map(state => ({ ref: el, ...state }))\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, Subject, animationFrameScheduler } from \"rxjs\"\nimport {\n  distinctUntilKeyChanged,\n  finalize,\n  map,\n  observeOn,\n  switchMap,\n  tap\n} from \"rxjs/operators\"\n\nimport { resetTabsState, setTabsState } from \"~/actions\"\nimport {\n  Viewport,\n  watchElementSize,\n  watchViewportAt\n} from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\n\n/* ------------------------------------------------!
 ----------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Navigation tabs\n */\nexport interface Tabs {\n  hidden: boolean                      /* User scrolled past tabs */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n  viewport$: Observable<Viewport>      /* Viewport observable */\n  header$: Observable<Header>          /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n  viewport$: Observable<Viewport>      /* Viewport observable */\n  header$: Observable<Header>          /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch navigation tabs\n *\n * @param el - Navigation tabs element\n * @param options - Options\n *\n * @returns Navigation tabs observable\n */\nexport function watchTabs(\n  el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable<Tabs> {\n  return watchElementSize(document.body)\n    .pipe(\n      switchMap(() => watchViewportAt(el, { header$, viewport$ })),\n      map(({ offset: { y } }) => {\n        return {\n          hidden: y >= 10\n        }\n      }),\n      distinctUntilKeyChanged(\"hidden\")\n    )\n}\n\n/**\n * Mount navigation tabs\n *\n * This function hides the navigation tabs when scrolling past the threshold\n * and makes them reappear in a nice CSS animation when scrolling back up.\n *\n * @param el - Navigation tabs element\n * @param options - Options\n *\n * @returns Navigation tabs component observable\n */\nexport function mountTabs(\n  el: HTMLElement, options: MountOptions\n): Observable<Component<Tabs>> {\n  const internal$ = new Subject<Tabs>()\n  internal$\n    .pipe(\n      observeOn(animatio!
 nFrameScheduler)\n    )\n      .subscribe({\n\n        /* Update state */\n        next({ hidden }) {\n          if (hidden)\n            setTabsState(el, \"hidden\")\n          else\n            resetTabsState(el)\n        },\n\n        /* Reset on complete */\n        complete() {\n          resetTabsState(el)\n        }\n      })\n\n  /* Create and return component */\n  return watchTabs(el, options)\n    .pipe(\n      tap(internal$),\n      finalize(() => internal$.complete()),\n      map(state => ({ ref: el, ...state }))\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n  Observable,\n  Subject,\n  animationFrameScheduler,\n  combineLatest\n} from \"rxjs\"\nimport {\n  bufferCount,\n  distinctUntilChanged,\n  distinctUntilKeyChanged,\n  finalize,\n  map,\n  observeOn,\n  scan,\n  startWith,\n  switchMap,\n  tap\n} from \"rxjs/operators\"\n\nimport {\n  resetAnchorActive,\n !
  resetAnchorState,\n  setAnchorActive,\n  setAnchorState\n} from \"~/actions\"\nimport {\n  Viewport,\n  getElement,\n  getElements,\n  watchElementSize\n} from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Table of contents\n */\nexport interface TableOfContents {\n  prev: HTMLAnchorElement[][]          /* Anchors (previous) */\n  next: HTMLAnchorElement[][]          /* Anchors (next) */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n  viewport$: Observable<Viewport>      /* Viewport observable */\n  header$: Observable<Header>          /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n  viewport$: Observable<Viewport>      /* Viewport observable */\n  header$: Observable<Header>          /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch table of contents\n *\n * This is effectively a scroll spy implementation which will account for the\n * fixed header and automatically re-calculate anchor offsets when the viewport\n * is resized. The returned observable will only emit if the table of contents\n * needs to be repainted.\n *\n * This implementation tracks an anchor element's entire path starting from its\n * level up to the top-most anchor element, e.g. `[h3, h2, h1]`. Although the\n * Material theme currently doesn't make use of this information, it enables\n * the styling of the entire hierarchy through customization.\n *\n * Note that the current anchor is the last item of the `prev` anchor !
 list.\n *\n * @param anchors - Anchor elements\n * @param options - Options\n *\n * @returns Table of contents observable\n */\nexport function watchTableOfContents(\n  anchors: HTMLAnchorElement[], { viewport$, header$ }: WatchOptions\n): Observable<TableOfContents> {\n  const table = new Map<HTMLAnchorElement, HTMLElement>()\n  for (const anchor of anchors) {\n    const id = decodeURIComponent(anchor.hash.substring(1))\n    const target = getElement(`[id=\"${id}\"]`)\n    if (typeof target !== \"undefined\")\n      table.set(anchor, target)\n  }\n\n  /* Compute necessary adjustment for header */\n  const adjust$ = header$\n    .pipe(\n      map(header => 24 + header.height)\n    )\n\n  /* Compute partition of previous and next anchors */\n  const partition$ = watchElementSize(document.body)\n    .pipe(\n      distinctUntilKeyChanged(\"height\"),\n\n      /* Build index to map anchor paths to vertical offsets */\n      map(() => {\n        let path: HTMLAnchorElement[] = []\n        return [...table].reduce((index, [anchor, target]) => {\n          while (path.length) {\n            const last = table.get(path[path.length - 1])!\n            if (last.tagName >= target.tagName) {\n              path.pop()\n            } else {\n              break\n            }\n          }\n\n          /* If the current anchor is hidden, continue with its parent */\n          let offset = target.offsetTop\n          while (!offset && target.parentElement) {\n            target = target.parentElement\n            offset = target.offsetTop\n          }\n\n          /* Map reversed anchor path to vertical offset */\n          return index.set(\n            [...path = [...path, anchor]].reverse(),\n            offset\n          )\n        }, new Map<HTMLAnchorElement[], number>())\n      }),\n\n      /* Sort index by vertical offset (see https://bit.ly/30z6QSO) */\n      map(index => new Map([...index].sort(([, a], [, b]) => a - b))),\n\n      /* Re-compute partition when viewport offset changes */\n      switchMap(index => combin!
 eLatest([adjust$, viewport$])\n        .pipe(\n          scan(([prev, next], [adjust, { offset: { y } }]) => {\n\n            /* Look forward */\n            while (next.length) {\n              const [, offset] = next[0]\n              if (offset - adjust < y) {\n                prev = [...prev, next.shift()!]\n              } else {\n                break\n              }\n            }\n\n            /* Look backward */\n            while (prev.length) {\n              const [, offset] = prev[prev.length - 1]\n              if (offset - adjust >= y) {\n                next = [prev.pop()!, ...next]\n              } else {\n                break\n              }\n            }\n\n            /* Return partition */\n            return [prev, next]\n          }, [[], [...index]]),\n          distinctUntilChanged((a, b) => (\n            a[0] === b[0] &&\n            a[1] === b[1]\n          ))\n        )\n      )\n    )\n\n  /* Compute and return anchor list migrations */\n  return partition$\n    .pipe(\n      map(([prev, next]) => ({\n        prev: prev.map(([path]) => path),\n        next: next.map(([path]) => path)\n      })),\n\n      /* Extract anchor list migrations */\n      startWith({ prev: [], next: [] }),\n      bufferCount(2, 1),\n      map(([a, b]) => {\n\n        /* Moving down */\n        if (a.prev.length < b.prev.length) {\n          return {\n            prev: b.prev.slice(Math.max(0, a.prev.length - 1), b.prev.length),\n            next: []\n          }\n\n        /* Moving up */\n        } else {\n          return {\n            prev: b.prev.slice(-1),\n            next: b.next.slice(0, b.next.length - a.next.length)\n          }\n        }\n      })\n    )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount table of contents\n *\n * @param el - Anchor list element\n * @param options - Options\n *\n * @returns Table of contents component observable\n */\nexport function mountTableOfContents(\n  el: HTMLElement, options: MountOptions\n): Obser!
 vable<Component<TableOfContents>> {\n  const internal$ = new Subject<TableOfContents>()\n  internal$\n    .pipe(\n      observeOn(animationFrameScheduler),\n    )\n      .subscribe(({ prev, next }) => {\n\n        /* Look forward */\n        for (const [anchor] of next) {\n          resetAnchorActive(anchor)\n          resetAnchorState(anchor)\n        }\n\n        /* Look backward */\n        for (const [index, [anchor]] of prev.entries()) {\n          setAnchorActive(anchor, index === prev.length - 1)\n          setAnchorState(anchor, \"blur\")\n        }\n      })\n\n  /* Create and return component */\n  const anchors = getElements<HTMLAnchorElement>(\"[href^=\\\\#]\", el)\n  return watchTableOfContents(anchors, options)\n    .pipe(\n      tap(internal$),\n      finalize(() => internal$.complete()),\n      map(state => ({ ref: el, ...state }))\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.!
 \n */\n\nimport {\n  Observable,\n  Subject,\n  animationFrameScheduler,\n  combineLatest\n} from \"rxjs\"\nimport {\n  bufferCount,\n  distinctUntilChanged,\n  distinctUntilKeyChanged,\n  finalize,\n  map,\n  observeOn,\n  tap\n} from \"rxjs/operators\"\n\nimport { resetBackToTopState, setBackToTopState } from \"~/actions\"\nimport { Viewport } from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Main } from \"../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Back-to-top button\n */\nexport interface BackToTop {\n  hidden: boolean                      /* User scrolled up */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n  viewport$: Observable<Viewport>      /* Viewport observable */\n  main$: Observable<Main>              /* Main area observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n  viewport$: Observable<Viewport>      /* Viewport observable */\n  main$: Observable<Main>              /* Main area observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch back-to-top\n *\n * @param _el - Back-to-top element\n * @param options - Options\n *\n * @returns Back-to-top observable\n */\nexport function watchBackToTop(\n  _el: HTMLElement, { viewport$, main$ }: WatchOptions\n): Observable<BackToTop> {\n\n  /* Compute direction */\n  const direction$ = viewport$\n    .pipe(\n      map(({ offset: { y } }) => y),\n      bufferCount(2, 1),\n      map(([a, b]) => a > b),\n      distinctUntilChanged()\n    )\n\n  /* Compute whether button should be hidden */\n  const hidden$ = main$\n    .pipe(\n     !
  distinctUntilKeyChanged(\"active\")\n    )\n\n  /* Compute threshold for hiding */\n  return combineLatest([hidden$, direction$])\n    .pipe(\n      map(([{ active }, direction]) => ({\n        hidden: !(active && direction)\n      })),\n      distinctUntilChanged((a, b) => (\n        a.hidden === b.hidden\n      ))\n    )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount back-to-top\n *\n * @param el - Back-to-top element\n * @param options - Options\n *\n * @returns Back-to-top component observable\n */\nexport function mountBackToTop(\n  el: HTMLElement, options: MountOptions\n): Observable<Component<BackToTop>> {\n  const internal$ = new Subject<BackToTop>()\n  internal$\n    .pipe(\n      observeOn(animationFrameScheduler)\n    )\n      .subscribe({\n\n        /* Update state */\n        next({ hidden }) {\n          if (hidden)\n            setBackToTopState(el, \"hidden\")\n          else\n            resetBackToTopState(el)\n        },\n\n        /* Reset on complete */\n        complete() {\n          resetBackToTopState(el)\n        }\n      })\n\n  /* Create and return component */\n  return watchBackToTop(el, options)\n    .pipe(\n      tap(internal$),\n      finalize(() => internal$.complete()),\n      map(state => ({ ref: el, ...state }))\n    )\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROV!
 IDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent, of } from \"rxjs\"\nimport {\n  mapTo,\n  mergeMap,\n  switchMap,\n  takeWhile,\n  tap,\n  withLatestFrom\n} from \"rxjs/operators\"\n\nimport { getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n  document$: Observable<Document>      /* Document observable */\n  tablet$: Observable<boolean>         /* Tablet breakpoint observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch indeterminate checkboxes\n *\n * This function replaces the indeterminate \"pseudo state\" with the actual\n * indeterminate state, which is used to keep navigation always expanded.\n *\n * @param options - Options\n */\nexport function patchIndeterminate(\n  { document$, tablet$ }: PatchOptions\n): void {\n  document$\n    .pipe(\n      switchMap(() => of(...getElements<HTMLInputElement>(\n        \"[data-md-state=indeterminate]\"\n      ))),\n      tap(el => {\n        el.indeterminate = true\n        el.checked = false\n      }),\n      mergeMap(el => fromEvent(el, \"change\")\n        .pipe(\n          takeWhile(() => el.hasAttribute(\"data-md-state\")),\n          mapTo(el)\n        )\n      ),\n      withLatestFrom(tablet$)\n    )\n      .subscribe(([el, tablet]) => {\!
 n        el.removeAttribute(\"data-md-state\")\n        if (tablet)\n          el.checked = false\n      })\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent, of } from \"rxjs\"\nimport {\n  filter,\n  mapTo,\n  mergeMap,\n  switchMap,\n  tap\n} from \"rxjs/operators\"\n\nimport { getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n  document$: Observable<Document>      /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether the given device is an Apple device\n *\n * @r!
 eturns Test result\n */\nfunction isAppleDevice(): boolean {\n  return /(iPad|iPhone|iPod)/.test(navigator.userAgent)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all elements with `data-md-scrollfix` attributes\n *\n * This is a year-old patch which ensures that overflow scrolling works at the\n * top and bottom of containers on iOS by ensuring a `1px` scroll offset upon\n * the start of a touch event.\n *\n * @see https://bit.ly/2SCtAOO - Original source\n *\n * @param options - Options\n */\nexport function patchScrollfix(\n  { document$ }: PatchOptions\n): void {\n  document$\n    .pipe(\n      switchMap(() => of(...getElements(\"[data-md-scrollfix]\"))),\n      tap(el => el.removeAttribute(\"data-md-scrollfix\")),\n      filter(isAppleDevice),\n      mergeMap(el => fromEvent(el, \"touchstart\")\n        .pipe(\n          mapTo(el)\n        )\n      )\n    )\n      .subscribe(el => {\n        const top = el.scrollTop\n\n        /* We're at the top of the container */\n        if (top === 0) {\n          el.scrollTop = 1\n\n        /* We're at the bottom of the container */\n        } else if (top + el.offsetHeight === el.scrollHeight) {\n          el.scrollTop = top - 1\n        }\n      })\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath <martin.donath at squidfunk.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Softw!
 are.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n  Observable,\n  animationFrameScheduler,\n  combineLatest,\n  of\n} from \"rxjs\"\nimport {\n  delay,\n  map,\n  observeOn,\n  switchMap,\n  withLatestFrom\n} from \"rxjs/operators\"\n\nimport { resetScrollLock, setScrollLock } from \"~/actions\"\nimport { Viewport, watchToggle } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n  viewport$: Observable<Viewport>      /* Viewport observable */\n  tablet$: Observable<boolean>         /* Tablet breakpoint observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch the document body to lock when search is open\n *\n * For mobile and tablet viewports, the search is rendered full screen, which\n * leads to scroll leaking when at the top or bottom of the search result. This\n * function locks the body when the search is in full screen mode, and restores\n * the scroll position when leaving.\n *\n * @param options - Options\n */\nexport function patchScrolllock(\n  { viewport$, tablet$ }: PatchOptions\n): void {\n  combineLatest([watchToggle(\"search\"), tablet$])\n    .pipe(\n      map(([active, tablet]) => active && !tablet),\n      switchMap(active => of(active)\n        .pipe(\n          delay(active ? 4!
 00 : 100),\n          observeOn(animationFrameScheduler)\n        )\n      ),\n      withLatestFrom(viewport$)\n    )\n      .subscribe(([active, { offset: { y }}]) => {\n        if (active)\n          setScrollLock(document.body, y)\n        else\n          resetScrollLock(document.body)\n      })\n}\n"],
-  "mappings": "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!
 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!
 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!
 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!
 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!
 CjC,EAAS,eAAgB,IACzB,EAAS,kBAAmB,IAC5B,EAAS,yBAA0B,IACnC,EAAS,yBAA0B,QC9SvC;AAAA;AAAA;AAAA;AAAA;AAAA,GAMA,AAAC,UAA0C,EAAM,EAAS,CACzD,AAAG,MAAO,KAAY,UAAY,MAAO,KAAW,SACnD,GAAO,QAAU,IACb,AAAG,MAAO,SAAW,YAAc,OAAO,IAC9C,OAAO,GAAI,GACP,AAAG,MAAO,KAAY,SAC1B,GAAQ,YAAiB,IAEzB,EAAK,YAAiB,MACrB,GAAM,UAAW,CACpB,MAAiB,WAAW,CAClB,GAAI,GAAuB,CAE/B,IACC,SAAS,EAAyB,EAAqB,EAAqB,CAEnF,aAGA,EAAoB,EAAE,EAAqB,CACzC,QAAW,UAAW,CAAE,MAAqB,OAI/C,GAAI,GAAe,EAAoB,KACnC,EAAoC,EAAoB,EAAE,GAE1D,EAAS,EAAoB,KAC7B,EAA8B,EAAoB,EAAE,GAEpD,EAAa,EAAoB,KACjC,EAA8B,EAAoB,EAAE,GAExD,WAAiB,EAAK,CAA6B,MAAI,OAAO,SAAW,YAAc,MAAO,QAAO,UAAa,SAAY,EAAU,SAAiB,EAAK,CAAE,MAAO,OAAO,IAAiB,EAAU,SAAiB,EAAK,CAAE,MAAO,IAAO,MAAO,SAAW,YAAc,EAAI,cAAgB,QAAU,IAAQ,OAAO,UAAY,SAAW,MAAO,IAAiB,EAAQ,GAEnX,WAAyB,EAAU,EAAa,CAAE,GAAI,CAAE,aAAoB,IAAgB,KAAM,IAAI,WAAU,qCAEhH,WAA2B,EAAQ,EAAO,CAAE,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CAAE,GAAI,GAAa,EAAM,GAAI,EAAW,WAAa,EAAW,YAAc,GAAO,EAAW,aAAe,GAAU,SAAW,IAAY,GAAW,SAAW,IAAM,OAAO,eAAe,EAAQ,EAAW,IAAK,IAE7S,WAAsB,EAAa,EAAY,EAAa,CAAE,MAAI,IAAY,EAAkB,EAAY,UAAW,GAAiB,GAAa,EAAkB,EAAa,GAAqB,EAQzM,GAAI,GAA+B,UAAY,CAI7C,WAAyB,EAAS,CAChC,EAAgB,KAAM,GAEtB,KAAK,eAAe,GACpB,KAAK,gBAQP,SAAa,EAAiB,CAAC,CAC7B,IAAK,iBACL,MAAO,UAA0B,CAC/B,GAAI,GAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,GAClF,KAAK,OAAS,EAAQ,OACtB,KAAK,UAAY,EAAQ,UACzB,KAAK,QAAU,EAAQ,QACvB,KAAK,OAAS,EAAQ,OACtB,KAAK,KAAO,EAAQ,KACpB,KAAK,QAAU,EAAQ,QACvB,KAAK,aAAe,KAOrB,CACD,IAAK,gBACL,MAAO,UAAyB,CAC9B,AAAI,KAAK,KACP,KAAK,aACI,KAAK,QACd,KAAK,iBAOR,CACD,IAAK,oBACL,MAAO,UAA6B,CAClC,GAAI,GAAQ,SAAS,gBAAgB,aAAa,SAAW,MAC7D,KAAK,SAAW,SAAS,cAAc,YAEvC,KAAK,SAAS,MAAM,SAAW,OAE/B,KAAK,SAAS,MAAM,OAAS,IAC7B,KAAK,SAAS,MAAM,QAAU,IAC9B,KAAK,SAAS,MAAM,OAAS,IAE7B,KAAK,SAAS,MAAM,SAAW,WAC/B,KAAK,SAAS,MAAM,EAAQ,QAAU,QAAU,UAEhD,GAAI,GAAY,OAAO,aAAe,SAAS,gBAAgB,UAC/D,YAAK,SAAS,MAAM,IAAM,GAAG,OAAO,EAAW,MAC/C,KAAK,SAAS,aAAa,WAAY,IACvC,KAAK,SAAS,MAAQ,KAAK,KACpB,KAAK,WAOb,CACD,IAAK,aACL,MAAO,UAAsB,CAC3B,GAAI,GAAQ,KAER,EAAW,KAAK,oBAEpB,KAAK,oBAAsB,UAAY,CACrC,MAAO,GAAM,cAGf,KAAK,YAAc,KAAK,UAAU,iBAAiB,QAAS,KAAK,sBAAwB,GACzF,KAAK,U!
 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!
 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!
 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!
 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!
 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!
 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!
 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!
 B,EAAP,CAIA,EAAK,MAAM,KA+Df,EAAA,UAAA,QAAA,SAAQ,EAA0B,EAAoC,CAAtE,GAAA,GAAA,KACE,SAAc,GAAe,GAEtB,GAAI,GAAkB,SAAC,EAAS,EAAM,CAG3C,GAAI,GACJ,EAAe,EAAK,UAClB,SAAC,EAAK,CACJ,GAAI,CACF,EAAK,SACE,EAAP,CACA,EAAO,GACP,GAAY,MAAZ,EAAc,gBAGlB,EACA,MAMI,EAAA,UAAA,WAAV,SAAqB,EAA2B,OAC9C,MAAO,GAAA,KAAK,UAAM,MAAA,IAAA,OAAA,OAAA,EAAE,UAAU,IAQhC,EAAA,UAAC,IAAD,UAAA,CACE,MAAO,OA6FT,EAAA,UAAA,KAAA,UAAA,QAAK,GAAA,GAAA,EAAA,EAAA,EAAA,UAAA,OAAA,IAAA,EAAA,GAAA,UAAA,GACH,MAAO,GAAW,OAAS,GAAc,GAAY,MAAQ,MA8B/D,EAAA,UAAA,UAAA,SAAU,EAAoC,CAA9C,GAAA,GAAA,KACE,SAAc,GAAe,GAEtB,GAAI,GAAY,SAAC,EAAS,EAAM,CACrC,GAAI,GACJ,EAAK,UACH,SAAC,EAAI,CAAK,MAAC,GAAQ,GACnB,SAAC,EAAQ,CAAK,MAAA,GAAO,IACrB,UAAA,CAAM,MAAA,GAAQ,QAldb,EAAA,OAAkC,SAAI,EAAwD,CACnG,MAAO,IAAI,GAAc,IAqd7B,KASA,YAAwB,EAA+C,OACrE,MAAO,GAAA,GAAW,KAAX,EAAe,GAAO,WAAO,MAAA,IAAA,OAAA,EAAI,QAG1C,YAAuB,EAAU,CAC/B,MAAO,IAAS,EAAW,EAAM,OAAS,EAAW,EAAM,QAAU,EAAW,EAAM,UAGxF,YAAyB,EAAU,CACjC,MAAQ,IAAS,YAAiB,KAAgB,GAAW,IAAU,GAAe,GCrhBlF,YAAkB,EAAW,CACjC,MAAO,GAAW,GAAM,KAAA,OAAN,EAAQ,MAOtB,WACJ,EAAqF,CAErF,MAAO,UAAC,EAAqB,CAC3B,GAAI,GAAQ,GACV,MAAO,GAAO,KAAK,SAA+B,EAA2B,CAC3E,GAAI,CACF,MAAO,GAAK,EAAc,YACnB,EAAP,CACA,KAAK,MAAM,MAIjB,KAAM,IAAI,WAAU,2CCvBxB,GAAA,GAAA,SAAA,EAAA,CAA2C,EAAA,EAAA,GAazC,WACE,EACA,EACA,EACA,EACQ,EAAuB,CALjC,GAAA,GAmBE,EAAA,KAAA,KAAM,IAAY,KAdV,SAAA,WAAA,EAeR,EAAK,MAAQ,EACT,SAAuC,EAAQ,CAC7C,GAAI,CACF,EAAO,SACA,EAAP,CACA,EAAY,MAAM,KAGtB,EAAA,UAAM,MACV,EAAK,OAAS,EACV,SAAuC,EAAQ,CAC7C,GAAI,CACF,EAAQ,SACD,EAAP,CAEA,EAAY,MAAM,WAGlB,KAAK,gBAGT,EAAA,UAAM,OACV,EAAK,UAAY,EACb,UAAA,CACE,GAAI,CACF,UACO,EAAP,CAEA,EAAY,MAAM,WAGlB,KAAK,gBAGT,EAAA,UAAM,YAGZ,SAAA,UAAA,YAAA,UAAA,OACU,EAAW,KAAI,OACvB,EAAA,UAAM,YAAW,KAAA,MAEjB,CAAC,GAAU,IAAA,KAAK,cAAU,MAAA,IAAA,QAAA,EAAA,KAAf,QAEf,GA5E2C,ICQpC,GAAM,IAAiD,CAG5D,SAAA,SAAS,EAAQ,CACf,GAAI,GAAU,sBACV,EAAkD,qBAC9C,EAAa,GAAsB,SAC3C,AAAI,GACF,GAAU,EAAS,sBACnB,EAAS,EAAS,sBAEpB,GAAM,GAAS,EAAQ,SAAC,EAAS,CAI/B,EAAS,OACT,EAAS,KAEX,MAAO,IAAI,IAAa,UAAA,CAAM,MAAA,IAAM,KAAA,OAAN,EAAS,MAEzC,sBAAqB,UAAA,QAAC,GAAA,GAAA,EAAA,EAAA,EAAA,UAAA,OAAA,IAAA,EAAA,GAAA,UAAA,GACZ,GA!
 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!
 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!
 A,EAAA,GAAA,EAAI,MAEnD,cAAa,SAAC,EAAM,CACV,GAAA,GAAa,GAAgB,SACrC,MAAQ,KAAQ,KAAA,OAAR,EAAU,gBAAiB,eAAe,IAEpD,SAAU,QClBZ,GAAA,IAAA,SAAA,EAAA,CAAoC,EAAA,EAAA,GAOlC,WAAsB,EAAqC,EAAmD,CAA9G,GAAA,GACE,EAAA,KAAA,KAAM,EAAW,IAAK,KADF,SAAA,UAAA,EAAqC,EAAA,KAAA,EAFjD,EAAA,QAAmB,KAMtB,SAAA,UAAA,SAAP,SAAgB,EAAW,EAAiB,CAC1C,GADyB,IAAA,QAAA,GAAA,GACrB,KAAK,OACP,MAAO,MAIT,KAAK,MAAQ,EAEb,GAAM,GAAK,KAAK,GACV,EAAY,KAAK,UAuBvB,MAAI,IAAM,MACR,MAAK,GAAK,KAAK,eAAe,EAAW,EAAI,IAK/C,KAAK,QAAU,GAEf,KAAK,MAAQ,EAEb,KAAK,GAAK,KAAK,IAAM,KAAK,eAAe,EAAW,KAAK,GAAI,GAEtD,MAGC,EAAA,UAAA,eAAV,SAAyB,EAA2B,EAAW,EAAiB,CAAjB,MAAA,KAAA,QAAA,GAAA,GACtD,GAAiB,YAAY,EAAU,MAAM,KAAK,EAAW,MAAO,IAGnE,EAAA,UAAA,eAAV,SAAyB,EAA4B,EAAS,EAAwB,CAEpF,GAF4D,IAAA,QAAA,GAAA,GAExD,GAAS,MAAQ,KAAK,QAAU,GAAS,KAAK,UAAY,GAC5D,MAAO,GAIT,GAAiB,cAAc,IAQ1B,EAAA,UAAA,QAAP,SAAe,EAAU,EAAa,CACpC,GAAI,KAAK,OACP,MAAO,IAAI,OAAM,gCAGnB,KAAK,QAAU,GACf,GAAM,GAAQ,KAAK,SAAS,EAAO,GACnC,GAAI,EACF,MAAO,GACF,AAAI,KAAK,UAAY,IAAS,KAAK,IAAM,MAc9C,MAAK,GAAK,KAAK,eAAe,KAAK,UAAW,KAAK,GAAI,QAIjD,EAAA,UAAA,SAAV,SAAmB,EAAU,EAAc,CACzC,GAAI,GAAmB,GACnB,EACJ,GAAI,CACF,KAAK,KAAK,SACH,EAAP,CACA,EAAU,GACV,EAAc,CAAC,CAAC,GAAK,GAAM,GAAI,OAAM,GAEvC,GAAI,EACF,YAAK,cACE,GAIX,EAAA,UAAA,YAAA,UAAA,CACE,GAAI,CAAC,KAAK,OAAQ,CACV,GAAA,GAAoB,KAAlB,EAAE,EAAA,GAAE,EAAS,EAAA,UACb,EAAY,EAAS,QAE7B,KAAK,KAAO,KAAK,MAAQ,KAAK,UAAY,KAC1C,KAAK,QAAU,GAEf,GAAU,EAAS,MACf,GAAM,MACR,MAAK,GAAK,KAAK,eAAe,EAAW,EAAI,OAG/C,KAAK,MAAQ,KACb,EAAA,UAAM,YAAW,KAAA,QAGvB,GAxIoC,ICiBpC,GAAA,IAAA,UAAA,CAGE,WAAoB,EAAoC,EAAiC,CAAjC,AAAA,IAAA,QAAA,GAAoB,EAAU,KAAlE,KAAA,oBAAA,EAClB,KAAK,IAAM,EA8BN,SAAA,UAAA,SAAP,SAAmB,EAAqD,EAAmB,EAAS,CAA5B,MAAA,KAAA,QAAA,GAAA,GAC/D,GAAI,MAAK,oBAAuB,KAAM,GAAM,SAAS,EAAO,IAlCvD,EAAA,IAAoB,GAAsB,IAoC1D,KCzDA,GAAA,IAAA,SAAA,EAAA,CAAoC,EAAA,EAAA,GAkBlC,WAAY,EAAgC,EAAiC,CAAjC,AAAA,IAAA,QAAA,GAAoB,GAAU,KAA1E,GAAA,GACE,EAAA,KAAA,KAAM,EAAiB,IAAI,KAlBtB,SAAA,QAAmC,GAOnC,EAAA,QAAmB,GAQnB,EAAA,WAAkB,SAMlB,SAAA,UAAA,MAAP,SAAa,EAAwB,CAC3B,GAAA,GAAY,KAAI,QAExB,GAAI,KAAK,QAAS,CAChB,EAAQ,KAAK,GACb,OAGF,GAAI,GACJ,KAAK,QAAU,GAEf,EACE,IAAK,EAA!
 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!
 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!
 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!
 ,KACrE,SAAC,EAAG,CAAK,MAAA,GAAW,IAAI,EAAU,SAAS,UAAA,CAAM,MAAA,GAAW,MAAM,IAAM,SC/DxE,GAAA,IAAY,MAAK,QACjB,GAA0D,OAAM,eAArC,GAA+B,OAAM,UAAlB,GAAY,OAAM,KAQlE,YAA+D,EAAuB,CAC1F,GAAI,EAAK,SAAW,EAAG,CACrB,GAAM,GAAQ,EAAK,GACnB,GAAI,GAAQ,GACV,MAAO,CAAE,KAAM,EAAO,KAAM,MAE9B,GAAI,GAAO,GAAQ,CACjB,GAAM,GAAO,GAAQ,GACrB,MAAO,CACL,KAAM,EAAK,IAAI,SAAC,EAAG,CAAK,MAAA,GAAM,KAC9B,KAAI,IAKV,MAAO,CAAE,KAAM,EAAa,KAAM,MAGpC,YAAgB,EAAQ,CACtB,MAAO,IAAO,MAAO,IAAQ,UAAY,GAAe,KAAS,GC5B7D,YAAuB,EAAgB,EAAa,CACxD,MAAO,GAAK,OAAO,SAAC,EAAQ,EAAK,EAAC,CAAK,MAAE,GAAO,GAAO,EAAO,GAAK,GAAS,ICmMxE,YAAuB,QAAoC,GAAA,GAAA,EAAA,EAAA,EAAA,UAAA,OAAA,IAAA,EAAA,GAAA,UAAA,GAC/D,GAAM,GAAY,GAAa,GACzB,EAAiB,GAAkB,GAEnC,EAA8B,GAAqB,GAA3C,EAAW,EAAA,KAAE,EAAI,EAAA,KAE/B,GAAI,EAAY,SAAW,EAIzB,MAAO,IAAK,GAAI,GAGlB,GAAM,GAAS,GAAI,GACjB,GACE,EACA,EACA,EAEI,SAAC,EAAM,CAAK,MAAA,IAAa,EAAM,IAE/B,KAIR,MAAO,GAAkB,EAAO,KAAK,GAAiB,IAAqC,EAGvF,YACJ,EACA,EACA,EAAiD,CAAjD,MAAA,KAAA,QAAA,GAAA,IAEO,SAAC,EAA2B,CAGjC,GACE,EACA,UAAA,CAaE,OAZQ,GAAW,EAAW,OAExB,EAAS,GAAI,OAAM,GAGrB,EAAS,EAIT,EAAuB,aAGlB,EAAC,CACR,GACE,EACA,UAAA,CACE,GAAM,GAAS,GAAK,EAAY,GAAI,GAChC,EAAgB,GACpB,EAAO,UACL,GAAI,GACF,EACA,SAAC,EAAK,CAEJ,EAAO,GAAK,EACP,GAEH,GAAgB,GAChB,KAEG,GAGH,EAAW,KAAK,EAAe,EAAO,WAG1C,UAAA,CACE,AAAK,EAAE,GAGL,EAAW,eAMrB,IAjCK,EAAI,EAAG,EAAI,EAAQ,MAAnB,IAqCX,IASN,YAAuB,EAAsC,EAAqB,EAA0B,CAC1G,AAAI,EACF,EAAa,IAAI,EAAU,SAAS,IAEpC,ICtRE,YACJ,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAA+B,CAG/B,GAAM,GAAc,GAEhB,EAAS,EAET,EAAQ,EAER,EAAa,GAKX,EAAgB,UAAA,CAIpB,AAAI,GAAc,CAAC,EAAO,QAAU,CAAC,GACnC,EAAW,YAKT,EAAY,SAAC,EAAQ,CAAK,MAAC,GAAS,EAAa,EAAW,GAAS,EAAO,KAAK,IAEjF,EAAa,SAAC,EAAQ,CAI1B,GAAU,EAAW,KAAK,GAI1B,IAKA,GAAI,GAAgB,GAGpB,EAAU,EAAQ,EAAO,MAAU,UACjC,GAAI,GACF,EACA,SAAC,EAAU,CAGT,GAAY,MAAZ,EAAe,GAEf,AAAI,EAGF,EAAU,GAGV,EAAW,KAAK,IAGpB,UAAA,CAGE,EAAgB,IAGlB,OACA,UAAA,CAIE,GAAI,EAKF,GAAI,CAIF,IAKA,qBACE,GAAM,GAAgB,EAAO,QAI7B,EAAoB,EAAW,IAAI,EAAkB,SAAS,UAAA,CAAM,MAAA,GAAW,MAAmB,EAAW,IALxG,EAAO,QAAU,EAAS,OAQjC,UACO,EAAP,CACA,EAAW,MAAM,QAS7B,SAAO,UACL,GAAI,GAAmB,EAAY,EAAW,UAAA,CAE5C,EAAa,GACb,OAMG,UAAA,CACL,GAA!
 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!
 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!
 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!
 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!
 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!
 AAU,GAAI,GAAmB,EAAY,UAAA,CAAM,MAAA,GAAW,YAAY,KAC9F,CAAC,EAAW,QAAU,EAAO,UAAU,KCSrC,YAAuB,EAAiD,EAAiB,CAAjB,MAAA,KAAA,QAAA,GAAA,IACrE,EAAQ,SAAC,EAAQ,EAAU,CAChC,GAAI,GAAQ,EACZ,EAAO,UACL,GAAI,GAAmB,EAAY,SAAC,EAAK,CACvC,GAAM,GAAS,EAAU,EAAO,KAChC,AAAC,IAAU,IAAc,EAAW,KAAK,GACzC,CAAC,GAAU,EAAW,gBC4CxB,WACJ,EACA,EACA,EAA8B,CAK9B,GAAM,GACJ,EAAW,IAAmB,GAAS,EAAW,CAAE,KAAM,EAAsC,MAAK,EAAE,SAAQ,GAAK,EAGtH,MAAO,GACH,EAAQ,SAAC,EAAQ,EAAU,CACzB,EAAO,UACL,GAAI,GACF,EACA,SAAC,EAAK,OACJ,AAAA,GAAA,EAAY,QAAI,MAAA,IAAA,QAAA,EAAA,KAAhB,EAAmB,GACnB,EAAW,KAAK,IAElB,UAAA,OACE,AAAA,GAAA,EAAY,YAAQ,MAAA,IAAA,QAAA,EAAA,KAApB,GACA,EAAW,YAEb,SAAC,EAAG,OACF,AAAA,GAAA,EAAY,SAAK,MAAA,IAAA,QAAA,EAAA,KAAjB,EAAoB,GACpB,EAAW,MAAM,QAQzB,GClIC,GAAM,IAAwC,CACnD,QAAS,GACT,SAAU,IA+CN,YACJ,EACA,EAA6D,IAA7D,GAAA,IAAA,OAAwC,GAAqB,EAA3D,EAAO,EAAA,QAAE,EAAQ,EAAA,SAEnB,MAAO,GAAQ,SAAC,EAAQ,EAAU,CAChC,GAAI,GAAW,GACX,EAAsB,KACtB,EAAiC,KACjC,EAAa,GAEX,EAAgB,UAAA,CACpB,GAAS,MAAT,EAAW,cACX,EAAY,KACR,GACF,KACA,GAAc,EAAW,aAIvB,EAAoB,UAAA,CACxB,EAAY,KACZ,GAAc,EAAW,YAGrB,EAAgB,SAAC,EAAQ,CAC7B,MAAC,GAAY,EAAU,EAAiB,IAAQ,UAAU,GAAI,GAAmB,EAAY,EAAe,KAExG,EAAO,UAAA,CACX,GAAI,EAAU,CAIZ,EAAW,GACX,GAAM,GAAQ,EACd,EAAY,KAEZ,EAAW,KAAK,GAChB,CAAC,GAAc,EAAc,KAIjC,EAAO,UACL,GAAI,GACF,EAMA,SAAC,EAAK,CACJ,EAAW,GACX,EAAY,EACZ,CAAE,IAAa,CAAC,EAAU,SAAY,GAAU,IAAS,EAAc,KAEzE,UAAA,CACE,EAAa,GACb,CAAE,IAAY,GAAY,GAAa,CAAC,EAAU,SAAW,EAAW,gBC7D5E,aAAwB,QAAO,GAAA,GAAA,EAAA,EAAA,EAAA,UAAA,OAAA,IAAA,EAAA,GAAA,UAAA,GACnC,GAAM,GAAU,GAAkB,GAElC,MAAO,GAAQ,SAAC,EAAQ,EAAU,CAehC,OAdM,GAAM,EAAO,OACb,EAAc,GAAI,OAAM,GAI1B,EAAW,EAAO,IAAI,UAAA,CAAM,MAAA,KAG5B,EAAQ,cAMH,EAAC,CACR,EAAU,EAAO,IAAI,UACnB,GAAI,GACF,EACA,SAAC,EAAK,CACJ,EAAY,GAAK,EACb,CAAC,GAAS,CAAC,EAAS,IAEtB,GAAS,GAAK,GAKb,GAAQ,EAAS,MAAM,MAAe,GAAW,QAKtD,MAlBG,EAAI,EAAG,EAAI,EAAK,MAAhB,GAwBT,EAAO,UACL,GAAI,GAAmB,EAAY,SAAC,EAAK,CACvC,GAAI,EAAO,CAET,GAAM,GAAM,EAAA,CAAI,GAAK,EAAK,IAC1B,EAAW,KAAK,EAAU,EAAO,MAAA,OAAA,EAAA,GAAA,EAAI,KAAU,SClFnD,aAAa,QAAO,GAAA,GAAA,EAAA,EAAA,EAAA,UAAA,OAAA,IAAA,EAAA,GAAA,UAAA,GACxB,MAAO,GAAQ,SAAC,EAAQ,EAAU,CAChC,GAAS,MAAA,OAAA,!
 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!
 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!
 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!
 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!
 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!
 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!
 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!
 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!
 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!
 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!
 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!
 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!
 ,CAAE,aAAW,aAG7B,GAAM,IAAU,GAAY,GAAoB,UAAW,CAAE,eACvD,GAAQ,GACX,KACC,EAAI,IAAM,GAAoB,SAC9B,EAAU,GAAM,GAAU,EAAI,CAAE,aAAW,cAC3C,GAAY,IAIV,GAAW,EAGf,GAAG,GAAqB,UACrB,IAAI,GAAM,GAAY,EAAI,CAAE,aAG/B,GAAG,GAAqB,UACrB,IAAI,GAAM,GAAY,EAAI,CAAE,aAAW,WAAS,YAGnD,GAAG,GAAqB,WACrB,IAAI,GAAM,GAAa,IAG1B,GAAG,GAAqB,UACrB,IAAI,GAAM,GAAY,EAAI,CAAE,UAAQ,gBAGvC,GAAG,GAAqB,UACrB,IAAI,GAAM,GAAY,KAIrB,GAAW,GAAM,IAAM,EAG3B,GAAG,GAAqB,WACrB,IAAI,GAAM,GAAa,EAAI,CAAE,WAAS,aAAW,aAGpD,GAAG,GAAqB,gBACrB,IAAI,GAAM,GAAiB,EAAI,CAAE,aAAW,cAG/C,GAAG,GAAqB,WACrB,IAAI,GAAM,EAAG,aAAa,kBAAoB,aAC3C,GAAG,GAAS,IAAM,GAAa,EAAI,CAAE,aAAW,WAAS,YACzD,GAAG,GAAS,IAAM,GAAa,EAAI,CAAE,aAAW,WAAS,aAI/D,GAAG,GAAqB,QACrB,IAAI,GAAM,GAAU,EAAI,CAAE,aAAW,cAGxC,GAAG,GAAqB,OACrB,IAAI,GAAM,GAAqB,EAAI,CAAE,aAAW,cAGnD,GAAG,GAAqB,OACrB,IAAI,GAAM,GAAe,EAAI,CAAE,aAAW,cAIzC,GAAa,GAChB,KACC,EAAU,IAAM,IAChB,GAAU,IACV,GAAY,IAIhB,GAAW,YAMX,OAAO,UAAa,GACpB,OAAO,UAAa,GACpB,OAAO,QAAa,GACpB,OAAO,UAAa,GACpB,OAAO,UAAa,GACpB,OAAO,QAAa,GACpB,OAAO,QAAa,GACpB,OAAO,OAAa,GACpB,OAAO,OAAa,GACpB,OAAO,WAAa",
-  "names": []
-}

Added: trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/bundle.fe8b6f2b.min.js
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/bundle.fe8b6f2b.min.js	                        (rev 0)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/bundle.fe8b6f2b.min.js	2024-08-13 00:41:00 UTC (rev 72022)
@@ -0,0 +1,29 @@
+"use strict";(()=>{var Fi=Object.create;var gr=Object.defineProperty;var ji=Object.getOwnPropertyDescriptor;var Wi=Object.getOwnPropertyNames,Dt=Object.getOwnPropertySymbols,Ui=Object.getPrototypeOf,xr=Object.prototype.hasOwnProperty,no=Object.prototype.propertyIsEnumerable;var oo=(e,t,r)=>t in e?gr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,R=(e,t)=>{for(var r in t||(t={}))xr.call(t,r)&&oo(e,r,t[r]);if(Dt)for(var r of Dt(t))no.call(t,r)&&oo(e,r,t[r]);return e};var io=(e,t)=>{var r={};for(var o in e)xr.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&Dt)for(var o of Dt(e))t.indexOf(o)<0&&no.call(e,o)&&(r[o]=e[o]);return r};var yr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Di=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Wi(t))!xr.call(e,n)&&n!==r&&gr(e,n,{get:()=>t[n],enumerable:!(o=ji(t,n))||o.enumerable});return e};var Vt=(e,t,r)=>(r=e!=null?Fi(Ui(e)):{},Di(t||!e||!e.__esModule?gr(r,"default",{value:e,enumerable:!0}):r,e));var ao=(e,t,r)=>new Promise((o,n)=>{var i=p=>{try{s(r.next(p))}catch(c){n(c)}},a=p=>{try{s(r.throw(p))}catch(c){n(c)}},s=p=>p.done?o(p.value):Promise.resolve(p.value).then(i,a);s((r=r.apply(e,t)).next())});var co=yr((Er,so)=>{(function(e,t){typeof Er=="object"&&typeof so!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(Er,function(){"use strict";function e(r){var o=!0,n=!1,i=null,a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function s(H){return!!(H&&H!==document&&H.nodeName!=="HTML"&&H.nodeName!=="BODY"&&"classList"in H&&"contains"in H.classList)}function p(H){var mt=H.type,ze=H.tagName;return!!(ze==="INPUT"&&a[mt]&&!H.readOnly||ze==="TEXTAREA"&&!H.readOnly||H.isContentEditable)}function c(H){H.classList.contains("focus-visible")||(H.classList.add("focus-visible"),H.setAttribute("data-focus-visible-added",""))}function l(H){H.hasAttribute("data-focus-visible-added")&&(H.classList.remove("focus-visible"),H.remov!
 eAttribute("data-focus-visible-added"))}function f(H){H.metaKey||H.altKey||H.ctrlKey||(s(r.activeElement)&&c(r.activeElement),o=!0)}function u(H){o=!1}function h(H){s(H.target)&&(o||p(H.target))&&c(H.target)}function w(H){s(H.target)&&(H.target.classList.contains("focus-visible")||H.target.hasAttribute("data-focus-visible-added"))&&(n=!0,window.clearTimeout(i),i=window.setTimeout(function(){n=!1},100),l(H.target))}function A(H){document.visibilityState==="hidden"&&(n&&(o=!0),te())}function te(){document.addEventListener("mousemove",J),document.addEventListener("mousedown",J),document.addEventListener("mouseup",J),document.addEventListener("pointermove",J),document.addEventListener("pointerdown",J),document.addEventListener("pointerup",J),document.addEventListener("touchmove",J),document.addEventListener("touchstart",J),document.addEventListener("touchend",J)}function ie(){document.removeEventListener("mousemove",J),document.removeEventListener("mousedown",J),document.removeEventListener("mouseup",J),document.removeEventListener("pointermove",J),document.removeEventListener("pointerdown",J),document.removeEventListener("pointerup",J),document.removeEventListener("touchmove",J),document.removeEventListener("touchstart",J),document.removeEventListener("touchend",J)}function J(H){H.target.nodeName&&H.target.nodeName.toLowerCase()==="html"||(o=!1,ie())}document.addEventListener("keydown",f,!0),document.addEventListener("mousedown",u,!0),document.addEventListener("pointerdown",u,!0),document.addEventListener("touchstart",u,!0),document.addEventListener("visibilitychange",A,!0),te(),r.addEventListener("focus",h,!0),r.addEventListener("blur",w,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEven!
 t("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var Yr=yr((Rt,Kr)=>{/*!
+ * clipboard.js v2.0.11
+ * https://clipboardjs.com/
+ *
+ * Licensed MIT © Zeno Rocha
+ */(function(t,r){typeof Rt=="object"&&typeof Kr=="object"?Kr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Rt=="object"?Rt.ClipboardJS=r():t.ClipboardJS=r()})(Rt,function(){return function(){var e={686:function(o,n,i){"use strict";i.d(n,{default:function(){return Ii}});var a=i(279),s=i.n(a),p=i(370),c=i.n(p),l=i(817),f=i.n(l);function u(V){try{return document.execCommand(V)}catch(_){return!1}}var h=function(_){var M=f()(_);return u("cut"),M},w=h;function A(V){var _=document.documentElement.getAttribute("dir")==="rtl",M=document.createElement("textarea");M.style.fontSize="12pt",M.style.border="0",M.style.padding="0",M.style.margin="0",M.style.position="absolute",M.style[_?"right":"left"]="-9999px";var j=window.pageYOffset||document.documentElement.scrollTop;return M.style.top="".concat(j,"px"),M.setAttribute("readonly",""),M.value=V,M}var te=function(_,M){var j=A(_);M.container.appendChild(j);var D=f()(j);return u("copy"),j.remove(),D},ie=function(_){var M=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},j="";return typeof _=="string"?j=te(_,M):_ instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(_==null?void 0:_.type)?j=te(_.value,M):(j=f()(_),u("copy")),j},J=ie;function H(V){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?H=function(M){return typeof M}:H=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},H(V)}var mt=function(){var _=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},M=_.action,j=M===void 0?"copy":M,D=_.container,Y=_.target,ke=_.text;if(j!=="copy"&&j!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(Y!==void 0)if(Y&&H(Y)==="object"&&Y.nodeType===1){if(j==="copy"&&Y.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(j==="cut"&&(Y.hasAttribute("readonly")||Y.hasAttribute("disabled")))t!
 hrow new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(ke)return J(ke,{container:D});if(Y)return j==="cut"?w(Y):J(Y,{container:D})},ze=mt;function Ie(V){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ie=function(M){return typeof M}:Ie=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},Ie(V)}function _i(V,_){if(!(V instanceof _))throw new TypeError("Cannot call a class as a function")}function ro(V,_){for(var M=0;M<_.length;M++){var j=_[M];j.enumerable=j.enumerable||!1,j.configurable=!0,"value"in j&&(j.writable=!0),Object.defineProperty(V,j.key,j)}}function Ai(V,_,M){return _&&ro(V.prototype,_),M&&ro(V,M),V}function Ci(V,_){if(typeof _!="function"&&_!==null)throw new TypeError("Super expression must either be null or a function");V.prototype=Object.create(_&&_.prototype,{constructor:{value:V,writable:!0,configurable:!0}}),_&&br(V,_)}function br(V,_){return br=Object.setPrototypeOf||function(j,D){return j.__proto__=D,j},br(V,_)}function Hi(V){var _=Pi();return function(){var j=Wt(V),D;if(_){var Y=Wt(this).constructor;D=Reflect.construct(j,arguments,Y)}else D=j.apply(this,arguments);return ki(this,D)}}function ki(V,_){return _&&(Ie(_)==="object"||typeof _=="function")?_:$i(V)}function $i(V){if(V===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return V}function Pi(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(V){return!1}}function Wt(V){return Wt=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},Wt(V)}function vr(V,_){var M="data-clipboard-".concat(V);if(_.hasAttribute(M))return _.getAttribute(M)}var Ri=function(V){!
 Ci(M,V);var _=Hi(M);function M(j,D){var Y;return _i(this,M),Y=_.call(this),Y.resolveOptions(D),Y.listenClick(j),Y}return Ai(M,[{key:"resolveOptions",value:function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof D.action=="function"?D.action:this.defaultAction,this.target=typeof D.target=="function"?D.target:this.defaultTarget,this.text=typeof D.text=="function"?D.text:this.defaultText,this.container=Ie(D.container)==="object"?D.container:document.body}},{key:"listenClick",value:function(D){var Y=this;this.listener=c()(D,"click",function(ke){return Y.onClick(ke)})}},{key:"onClick",value:function(D){var Y=D.delegateTarget||D.currentTarget,ke=this.action(Y)||"copy",Ut=ze({action:ke,container:this.container,target:this.target(Y),text:this.text(Y)});this.emit(Ut?"success":"error",{action:ke,text:Ut,trigger:Y,clearSelection:function(){Y&&Y.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(D){return vr("action",D)}},{key:"defaultTarget",value:function(D){var Y=vr("target",D);if(Y)return document.querySelector(Y)}},{key:"defaultText",value:function(D){return vr("text",D)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(D){var Y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return J(D,Y)}},{key:"cut",value:function(D){return w(D)}},{key:"isSupported",value:function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],Y=typeof D=="string"?[D]:D,ke=!!document.queryCommandSupported;return Y.forEach(function(Ut){ke=ke&&!!document.queryCommandSupported(Ut)}),ke}}]),M}(s()),Ii=Ri},828:function(o){var n=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function a(s,p){for(;s&&s.nodeType!==n;){if(typeof s.matches=="function"&&s.matches(p))return s;s=s.parentNode}}o.exports=a},438:function(o,n,i){var a=i(82!
 8);function s(l,f,u,h,w){var A=c.apply(this,arguments);return l.addEventListener(u,A,w),{destroy:function(){l.removeEventListener(u,A,w)}}}function p(l,f,u,h,w){return typeof l.addEventListener=="function"?s.apply(null,arguments):typeof u=="function"?s.bind(null,document).apply(null,arguments):(typeof l=="string"&&(l=document.querySelectorAll(l)),Array.prototype.map.call(l,function(A){return s(A,f,u,h,w)}))}function c(l,f,u,h){return function(w){w.delegateTarget=a(w.target,f),w.delegateTarget&&h.call(l,w)}}o.exports=p},879:function(o,n){n.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},n.nodeList=function(i){var a=Object.prototype.toString.call(i);return i!==void 0&&(a==="[object NodeList]"||a==="[object HTMLCollection]")&&"length"in i&&(i.length===0||n.node(i[0]))},n.string=function(i){return typeof i=="string"||i instanceof String},n.fn=function(i){var a=Object.prototype.toString.call(i);return a==="[object Function]"}},370:function(o,n,i){var a=i(879),s=i(438);function p(u,h,w){if(!u&&!h&&!w)throw new Error("Missing required arguments");if(!a.string(h))throw new TypeError("Second argument must be a String");if(!a.fn(w))throw new TypeError("Third argument must be a Function");if(a.node(u))return c(u,h,w);if(a.nodeList(u))return l(u,h,w);if(a.string(u))return f(u,h,w);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(u,h,w){return u.addEventListener(h,w),{destroy:function(){u.removeEventListener(h,w)}}}function l(u,h,w){return Array.prototype.forEach.call(u,function(A){A.addEventListener(h,w)}),{destroy:function(){Array.prototype.forEach.call(u,function(A){A.removeEventListener(h,w)})}}}function f(u,h,w){return s(document.body,u,h,w)}o.exports=p},817:function(o){function n(i){var a;if(i.nodeName==="SELECT")i.focus(),a=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var s=i.hasAttribute("readonly");s||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),s||i.removeAttribute("readonly")!
 ,a=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var p=window.getSelection(),c=document.createRange();c.selectNodeContents(i),p.removeAllRanges(),p.addRange(c),a=p.toString()}return a}o.exports=n},279:function(o){function n(){}n.prototype={on:function(i,a,s){var p=this.e||(this.e={});return(p[i]||(p[i]=[])).push({fn:a,ctx:s}),this},once:function(i,a,s){var p=this;function c(){p.off(i,c),a.apply(s,arguments)}return c._=a,this.on(i,c,s)},emit:function(i){var a=[].slice.call(arguments,1),s=((this.e||(this.e={}))[i]||[]).slice(),p=0,c=s.length;for(p;p<c;p++)s[p].fn.apply(s[p].ctx,a);return this},off:function(i,a){var s=this.e||(this.e={}),p=s[i],c=[];if(p&&a)for(var l=0,f=p.length;l<f;l++)p[l].fn!==a&&p[l].fn._!==a&&c.push(p[l]);return c.length?s[i]=c:delete s[i],this}},o.exports=n,o.exports.TinyEmitter=n}},t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={exports:{}};return e[o](n,n.exports,r),n.exports}return function(){r.n=function(o){var n=o&&o.__esModule?function(){return o.default}:function(){return o};return r.d(n,{a:n}),n}}(),function(){r.d=function(o,n){for(var i in n)r.o(n,i)&&!r.o(o,i)&&Object.defineProperty(o,i,{enumerable:!0,get:n[i]})}}(),function(){r.o=function(o,n){return Object.prototype.hasOwnProperty.call(o,n)}}(),r(686)}().default})});var ti=yr((gT,ei)=>{"use strict";/*!
+ * escape-html
+ * Copyright(c) 2012-2013 TJ Holowaychuk
+ * Copyright(c) 2015 Andreas Lubbe
+ * Copyright(c) 2015 Tiancheng "Timothy" Gu
+ * MIT Licensed
+ */var ts=/["'&<>]/;ei.exports=rs;function rs(e){var t=""+e,r=ts.exec(t);if(!r)return t;var o,n="",i=0,a=0;for(i=r.index;i<t.length;i++){switch(t.charCodeAt(i)){case 34:o=""";break;case 38:o="&";break;case 39:o="'";break;case 60:o="<";break;case 62:o=">";break;default:continue}a!==i&&(n+=t.substring(a,i)),a=i+1,n+=o}return a!==i?n+t.substring(a,i):n}});var t0=Vt(co());/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */var wr=function(e,t){return wr=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,o){r.__proto__=o}||function(r,o){for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(r[n]=o[n])},wr(e,t)};function re(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");wr(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}function po(e,t,r,o){function n(i){return i instanceof r?i:new r(function(a){a(i)})}return new(r||(r=Promise))(function(i,a){function s(l){try{c(o.next(l))}catch(f){a(f)}}function p(l){try{c(o.throw(l))}catch(f){a(f)}}function c(l){l.done?i(l.value):n(l.value).then(s,p)}c((o=o.apply(e,t||[])).next())})}function Nt(e,t){var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},o,n,i,a;return a={next:s(0),throw:s(1),return:s(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function s(c){return function(l){return p([c,l])}}function p(c){if(o)throw new TypeError("Generator is already executing.");for(;r;)try{if(o=1,n&&(i=c[0]&2?n.return:c[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,c[1])).done)return i;switch(n=0,i&&(c=[c[0]&2,i.value]),c[0]){case 0:case 1:i=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,n=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(i=r.trys,!(i=i.length>0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]<i[3])){r.label=c[1];break}if(c[0]===6&&r.label<i[1]){r.label=i[1],i=c;break}if(i&&r.label<i[2]){r.label=i[2],r.ops.push(c);break}i[2]&&r.ops.pop(),r.trys.pop();continue}c=t.call(e,r)}catch(l){c=[6,l],n=0}finally{o=i=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}function de(e){var t=typeof Symbol=="function"&&Symbol.iterator,r=t&&e[t],o=0;if(r)return r.call(e);if(e&&typeof e.length=="number"!
 )return{next:function(){return e&&o>=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function N(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var o=r.call(e),n,i=[],a;try{for(;(t===void 0||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(s){a={error:s}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i}function q(e,t,r){if(r||arguments.length===2)for(var o=0,n=t.length,i;o<n;o++)(i||!(o in t))&&(i||(i=Array.prototype.slice.call(t,0,o)),i[o]=t[o]);return e.concat(i||Array.prototype.slice.call(t))}function nt(e){return this instanceof nt?(this.v=e,this):new nt(e)}function lo(e,t,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=r.apply(e,t||[]),n,i=[];return n={},a("next"),a("throw"),a("return"),n[Symbol.asyncIterator]=function(){return this},n;function a(u){o[u]&&(n[u]=function(h){return new Promise(function(w,A){i.push([u,h,w,A])>1||s(u,h)})})}function s(u,h){try{p(o[u](h))}catch(w){f(i[0][3],w)}}function p(u){u.value instanceof nt?Promise.resolve(u.value.v).then(c,l):f(i[0][2],u)}function c(u){s("next",u)}function l(u){s("throw",u)}function f(u,h){u(h),i.shift(),i.length&&s(i[0][0],i[0][1])}}function mo(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof de=="function"?de(e):e[Symbol.iterator](),r={},o("next"),o("throw"),o("return"),r[Symbol.asyncIterator]=function(){return this},r);function o(i){r[i]=e[i]&&function(a){return new Promise(function(s,p){a=e[i](a),n(s,p,a.done,a.value)})}}function n(i,a,s,p){Promise.resolve(p).then(function(c){i({value:c,done:s})},a)}}function k(e){return typeof e=="function"}function ft(e){var t=function(o){Error.call(o),o.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var zt=ft(function(e){return function(r){e(this),this.message=r?r.le!
 ngth+` errors occurred during unsubscription:
+`+r.map(function(o,n){return n+1+") "+o.toString()}).join(`
+  `):"",this.name="UnsubscriptionError",this.errors=r}});function qe(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Fe=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,o,n,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var s=de(a),p=s.next();!p.done;p=s.next()){var c=p.value;c.remove(this)}}catch(A){t={error:A}}finally{try{p&&!p.done&&(r=s.return)&&r.call(s)}finally{if(t)throw t.error}}else a.remove(this);var l=this.initialTeardown;if(k(l))try{l()}catch(A){i=A instanceof zt?A.errors:[A]}var f=this._finalizers;if(f){this._finalizers=null;try{for(var u=de(f),h=u.next();!h.done;h=u.next()){var w=h.value;try{fo(w)}catch(A){i=i!=null?i:[],A instanceof zt?i=q(q([],N(i)),N(A.errors)):i.push(A)}}}catch(A){o={error:A}}finally{try{h&&!h.done&&(n=u.return)&&n.call(u)}finally{if(o)throw o.error}}}if(i)throw new zt(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)fo(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&qe(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&qe(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Tr=Fe.EMPTY;function qt(e){return e instanceof Fe||e&&"closed"in e&&k(e.remove)&&k(e.add)&&k(e.unsubscribe)}function fo(e){k(e)?e():e.unsubscribe()}var $e={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var ut={setTimeout:funct!
 ion(e,t){for(var r=[],o=2;o<arguments.length;o++)r[o-2]=arguments[o];var n=ut.delegate;return n!=null&&n.setTimeout?n.setTimeout.apply(n,q([e,t],N(r))):setTimeout.apply(void 0,q([e,t],N(r)))},clearTimeout:function(e){var t=ut.delegate;return((t==null?void 0:t.clearTimeout)||clearTimeout)(e)},delegate:void 0};function Qt(e){ut.setTimeout(function(){var t=$e.onUnhandledError;if(t)t(e);else throw e})}function he(){}var uo=function(){return Sr("C",void 0,void 0)}();function ho(e){return Sr("E",void 0,e)}function bo(e){return Sr("N",e,void 0)}function Sr(e,t,r){return{kind:e,value:t,error:r}}var it=null;function dt(e){if($e.useDeprecatedSynchronousErrorHandling){var t=!it;if(t&&(it={errorThrown:!1,error:null}),e(),t){var r=it,o=r.errorThrown,n=r.error;if(it=null,o)throw n}}else e()}function vo(e){$e.useDeprecatedSynchronousErrorHandling&&it&&(it.errorThrown=!0,it.error=e)}var Mt=function(e){re(t,e);function t(r){var o=e.call(this)||this;return o.isStopped=!1,r?(o.destination=r,qt(r)&&r.add(o)):o.destination=qi,o}return t.create=function(r,o,n){return new at(r,o,n)},t.prototype.next=function(r){this.isStopped?Mr(bo(r),this):this._next(r)},t.prototype.error=function(r){this.isStopped?Mr(ho(r),this):(this.isStopped=!0,this._error(r))},t.prototype.complete=function(){this.isStopped?Mr(uo,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(r){this.destination.next(r)},t.prototype._error=function(r){try{this.destination.error(r)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(Fe);var Vi=Function.prototype.bind;function Or(e,t){return Vi.call(e,t)}var Ni=function(){function e(t){this.partialObserver=t}return e.prototype.next=function(t){var r=this.partialObserver;if(r.next)try{r.next(t)}catch(o){Kt(o)}},e.prototype.error=function(t){var r=this.partialObserver;if(r.error)try{r.error(t)}catch(o){Kt(o)}else !
 Kt(t)},e..prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(r){Kt(r)}},e}(),at=function(e){re(t,e);function t(r,o,n){var i=e.call(this)||this,a;if(k(r)||!r)a={next:r!=null?r:void 0,error:o!=null?o:void 0,complete:n!=null?n:void 0};else{var s;i&&$e.useDeprecatedNextContext?(s=Object.create(r),s.unsubscribe=function(){return i.unsubscribe()},a={next:r.next&&Or(r.next,s),error:r.error&&Or(r.error,s),complete:r.complete&&Or(r.complete,s)}):a=r}return i.destination=new Ni(a),i}return t}(Mt);function Kt(e){$e.useDeprecatedSynchronousErrorHandling?vo(e):Qt(e)}function zi(e){throw e}function Mr(e,t){var r=$e.onStoppedNotification;r&&ut.setTimeout(function(){return r(e,t)})}var qi={closed:!0,next:he,error:zi,complete:he};var ht=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}();function le(e){return e}function go(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Lr(e)}function Lr(e){return e.length===0?le:e.length===1?e[0]:function(r){return e.reduce(function(o,n){return n(o)},r)}}var F=function(){function e(t){t&&(this._subscribe=t)}return e.prototype.lift=function(t){var r=new e;return r.source=this,r.operator=t,r},e.prototype.subscribe=function(t,r,o){var n=this,i=Ki(t)?t:new at(t,r,o);return dt(function(){var a=n,s=a.operator,p=a.source;i.add(s?s.call(i,p):p?n._subscribe(i):n._trySubscribe(i))}),i},e.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(r){t.error(r)}},e.prototype.forEach=function(t,r){var o=this;return r=xo(r),new r(function(n,i){var a=new at({next:function(s){try{t(s)}catch(p){i(p),a.unsubscribe()}},error:i,complete:n});o.subscribe(a)})},e.prototype._subscribe=function(t){var r;return(r=this.source)===null||r===void 0?void 0:r.subscribe(t)},e.prototype[ht]=function(){return this},e.prototype.pipe=function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return Lr(t)(this)},e.prototype.toPromise=function(t){var r=this;return t=xo(t),new t(function(o,n){var i;r.subscribe(function(a)!
 {return i=a},function(a){return n(a)},function(){return o(i)})})},e.create=function(t){return new e(t)},e}();function xo(e){var t;return(t=e!=null?e:$e.Promise)!==null&&t!==void 0?t:Promise}function Qi(e){return e&&k(e.next)&&k(e.error)&&k(e.complete)}function Ki(e){return e&&e instanceof Mt||Qi(e)&&qt(e)}function Yi(e){return k(e==null?void 0:e.lift)}function y(e){return function(t){if(Yi(t))return t.lift(function(r){try{return e(r,this)}catch(o){this.error(o)}});throw new TypeError("Unable to lift unknown Observable type")}}function T(e,t,r,o,n){return new Bi(e,t,r,o,n)}var Bi=function(e){re(t,e);function t(r,o,n,i,a,s){var p=e.call(this,r)||this;return p.onFinalize=a,p.shouldUnsubscribe=s,p._next=o?function(c){try{o(c)}catch(l){r.error(l)}}:e.prototype._next,p._error=i?function(c){try{i(c)}catch(l){r.error(l)}finally{this.unsubscribe()}}:e.prototype._error,p._complete=n?function(){try{n()}catch(c){r.error(c)}finally{this.unsubscribe()}}:e.prototype._complete,p}return t.prototype.unsubscribe=function(){var r;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var o=this.closed;e.prototype.unsubscribe.call(this),!o&&((r=this.onFinalize)===null||r===void 0||r.call(this))}},t}(Mt);var bt={schedule:function(e){var t=requestAnimationFrame,r=cancelAnimationFrame,o=bt.delegate;o&&(t=o.requestAnimationFrame,r=o.cancelAnimationFrame);var n=t(function(i){r=void 0,e(i)});return new Fe(function(){return r==null?void 0:r(n)})},requestAnimationFrame:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=bt.delegate;return((r==null?void 0:r.requestAnimationFrame)||requestAnimationFrame).apply(void 0,q([],N(e)))},cancelAnimationFrame:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=bt.delegate;return((r==null?void 0:r.cancelAnimationFrame)||cancelAnimationFrame).apply(void 0,q([],N(e)))},delegate:void 0};var yo=ft(function(e){return function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}});var g=function(e){re(t,e);function t(){var r=e.call(thi!
 s)||this;return r.closed=!1,r.currentObservers=null,r.observers=[],r.isStopped=!1,r.hasError=!1,r.thrownError=null,r}return t.prototype.lift=function(r){var o=new Eo(this,this);return o.operator=r,o},t.prototype._throwIfClosed=function(){if(this.closed)throw new yo},t.prototype.next=function(r){var o=this;dt(function(){var n,i;if(o._throwIfClosed(),!o.isStopped){o.currentObservers||(o.currentObservers=Array.from(o.observers));try{for(var a=de(o.currentObservers),s=a.next();!s.done;s=a.next()){var p=s.value;p.next(r)}}catch(c){n={error:c}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}}})},t.prototype.error=function(r){var o=this;dt(function(){if(o._throwIfClosed(),!o.isStopped){o.hasError=o.isStopped=!0,o.thrownError=r;for(var n=o.observers;n.length;)n.shift().error(r)}})},t.prototype.complete=function(){var r=this;dt(function(){if(r._throwIfClosed(),!r.isStopped){r.isStopped=!0;for(var o=r.observers;o.length;)o.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){var r;return((r=this.observers)===null||r===void 0?void 0:r.length)>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var o=this,n=this,i=n.hasError,a=n.isStopped,s=n.observers;return i||a?Tr:(this.currentObservers=null,s.push(r),new Fe(function(){o.currentObservers=null,qe(s,r)}))},t.prototype._checkFinalizedStatuses=function(r){var o=this,n=o.hasError,i=o.thrownError,a=o.isStopped;n?r.error(i):a&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,o){return new Eo(r,o)},t}(F);var Eo=function(e){re(t,e);function t(r,o){var n=e.call(this)||this;return n.destination=r,n.source=o,n}return!
  t.prototype.next=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.next)===null||n===void 0||n.call(o,r)},t.prototype.error=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.error)===null||n===void 0||n.call(o,r)},t.prototype.complete=function(){var r,o;(o=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||o===void 0||o.call(r)},t.prototype._subscribe=function(r){var o,n;return(n=(o=this.source)===null||o===void 0?void 0:o.subscribe(r))!==null&&n!==void 0?n:Tr},t}(g);var _r=function(e){re(t,e);function t(r){var o=e.call(this)||this;return o._value=r,o}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(r){var o=e.prototype._subscribe.call(this,r);return!o.closed&&r.next(this._value),o},t.prototype.getValue=function(){var r=this,o=r.hasError,n=r.thrownError,i=r._value;if(o)throw n;return this._throwIfClosed(),i},t.prototype.next=function(r){e.prototype.next.call(this,this._value=r)},t}(g);var Lt={now:function(){return(Lt.delegate||Date).now()},delegate:void 0};var _t=function(e){re(t,e);function t(r,o,n){r===void 0&&(r=1/0),o===void 0&&(o=1/0),n===void 0&&(n=Lt);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=o,i._timestampProvider=n,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=o===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,o),i}return t.prototype.next=function(r){var o=this,n=o.isStopped,i=o._buffer,a=o._infiniteTimeWindow,s=o._timestampProvider,p=o._windowTime;n||(i.push(r),!a&&i.push(s.now()+p)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var o=this._innerSubscribe(r),n=this,i=n._infiniteTimeWindow,a=n._buffer,s=a.slice(),p=0;p<s.length&&!r.closed;p+=i?1:2)r.next(s[p]);return this._checkFinalizedStatuses(r),o},t.prototype._trimBuffer=function(){var r=this,o=r._bufferSize,n=r._timestampProvider,i=r._buffer,a=r._infiniteTimeWi!
 ndow,s=(a?1:2)*o;if(o<1/0&&s<i.length&&i.splice(0,i.length-s),!a){for(var p=n.now(),c=0,l=1;l<i.length&&i[l]<=p;l+=2)c=l;c&&i.splice(0,c+1)}},t}(g);var wo=function(e){re(t,e);function t(r,o){return e.call(this)||this}return t.prototype.schedule=function(r,o){return o===void 0&&(o=0),this},t}(Fe);var At={setInterval:function(e,t){for(var r=[],o=2;o<arguments.length;o++)r[o-2]=arguments[o];var n=At.delegate;return n!=null&&n.setInterval?n.setInterval.apply(n,q([e,t],N(r))):setInterval.apply(void 0,q([e,t],N(r)))},clearInterval:function(e){var t=At.delegate;return((t==null?void 0:t.clearInterval)||clearInterval)(e)},delegate:void 0};var vt=function(e){re(t,e);function t(r,o){var n=e.call(this,r,o)||this;return n.scheduler=r,n.work=o,n.pending=!1,n}return t.prototype.schedule=function(r,o){var n;if(o===void 0&&(o=0),this.closed)return this;this.state=r;var i=this.id,a=this.scheduler;return i!=null&&(this.id=this.recycleAsyncId(a,i,o)),this.pending=!0,this.delay=o,this.id=(n=this.id)!==null&&n!==void 0?n:this.requestAsyncId(a,this.id,o),this},t.prototype.requestAsyncId=function(r,o,n){return n===void 0&&(n=0),At.setInterval(r.flush.bind(r,this),n)},t.prototype.recycleAsyncId=function(r,o,n){if(n===void 0&&(n=0),n!=null&&this.delay===n&&this.pending===!1)return o;o!=null&&At.clearInterval(o)},t.prototype.execute=function(r,o){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var n=this._execute(r,o);if(n)return n;this.pending===!1&&this.id!=null&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},t.prototype._execute=function(r,o){var n=!1,i;try{this.work(r)}catch(a){n=!0,i=a||new Error("Scheduled action threw falsy error")}if(n)return this.unsubscribe(),i},t.prototype.unsubscribe=function(){if(!this.closed){var r=this,o=r.id,n=r.scheduler,i=n.actions;this.work=this.state=this.scheduler=null,this.pending=!1,qe(i,this),o!=null&&(this.id=this.recycleAsyncId(n,o,null)),this.delay=null,e.prototype.unsubscribe.call(this)}},t}(wo);var Ar=function(){function e(t,r){r===void 0&&(r=e.now)!
 ,this.schedulerActionCtor=t,this.now=r}return e.prototype.schedule=function(t,r,o){return r===void 0&&(r=0),new this.schedulerActionCtor(this,t).schedule(o,r)},e.now=Lt.now,e}();var gt=function(e){re(t,e);function t(r,o){o===void 0&&(o=Ar.now);var n=e.call(this,r,o)||this;return n.actions=[],n._active=!1,n}return t.prototype.flush=function(r){var o=this.actions;if(this._active){o.push(r);return}var n;this._active=!0;do if(n=r.execute(r.state,r.delay))break;while(r=o.shift());if(this._active=!1,n){for(;r=o.shift();)r.unsubscribe();throw n}},t}(Ar);var se=new gt(vt),Cr=se;var To=function(e){re(t,e);function t(r,o){var n=e.call(this,r,o)||this;return n.scheduler=r,n.work=o,n}return t.prototype.schedule=function(r,o){return o===void 0&&(o=0),o>0?e.prototype.schedule.call(this,r,o):(this.delay=o,this.state=r,this.scheduler.flush(this),this)},t.prototype.execute=function(r,o){return o>0||this.closed?e.prototype.execute.call(this,r,o):this._execute(r,o)},t.prototype.requestAsyncId=function(r,o,n){return n===void 0&&(n=0),n!=null&&n>0||n==null&&this.delay>0?e.prototype.requestAsyncId.call(this,r,o,n):(r.flush(this),0)},t}(vt);var So=function(e){re(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t}(gt);var Hr=new So(To);var Oo=function(e){re(t,e);function t(r,o){var n=e.call(this,r,o)||this;return n.scheduler=r,n.work=o,n}return t.prototype.requestAsyncId=function(r,o,n){return n===void 0&&(n=0),n!==null&&n>0?e.prototype.requestAsyncId.call(this,r,o,n):(r.actions.push(this),r._scheduled||(r._scheduled=bt.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,o,n){var i;if(n===void 0&&(n=0),n!=null?n>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,o,n);var a=r.actions;o!=null&&((i=a[a.length-1])===null||i===void 0?void 0:i.id)!==o&&(bt.cancelAnimationFrame(o),r._scheduled=void 0)},t}(vt);var Mo=function(e){re(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var o=this._sched!
 uled;this._scheduled=void 0;var n=this.actions,i;r=r||n.shift();do if(i=r.execute(r.state,r.delay))break;while((r=n[0])&&r.id===o&&n.shift());if(this._active=!1,i){for(;(r=n[0])&&r.id===o&&n.shift();)r.unsubscribe();throw i}},t}(gt);var me=new Mo(Oo);var O=new F(function(e){return e.complete()});function Yt(e){return e&&k(e.schedule)}function kr(e){return e[e.length-1]}function Xe(e){return k(kr(e))?e.pop():void 0}function He(e){return Yt(kr(e))?e.pop():void 0}function Bt(e,t){return typeof kr(e)=="number"?e.pop():t}var xt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Gt(e){return k(e==null?void 0:e.then)}function Jt(e){return k(e[ht])}function Xt(e){return Symbol.asyncIterator&&k(e==null?void 0:e[Symbol.asyncIterator])}function Zt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Gi(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var er=Gi();function tr(e){return k(e==null?void 0:e[er])}function rr(e){return lo(this,arguments,function(){var r,o,n,i;return Nt(this,function(a){switch(a.label){case 0:r=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,nt(r.read())];case 3:return o=a.sent(),n=o.value,i=o.done,i?[4,nt(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,nt(n)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function or(e){return k(e==null?void 0:e.getReader)}function W(e){if(e instanceof F)return e;if(e!=null){if(Jt(e))return Ji(e);if(xt(e))return Xi(e);if(Gt(e))return Zi(e);if(Xt(e))return Lo(e);if(tr(e))return ea(e);if(or(e))return ta(e)}throw Zt(e)}function Ji(e){return new F(function(t){var r=e[ht]();if(k(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}functi!
 on Xi(e){return new F(function(t){for(var r=0;r<e.length&&!t.closed;r++)t.next(e[r]);t.complete()})}function Zi(e){return new F(function(t){e.then(function(r){t.closed||(t.next(r),t.complete())},function(r){return t.error(r)}).then(null,Qt)})}function ea(e){return new F(function(t){var r,o;try{for(var n=de(e),i=n.next();!i.done;i=n.next()){var a=i.value;if(t.next(a),t.closed)return}}catch(s){r={error:s}}finally{try{i&&!i.done&&(o=n.return)&&o.call(n)}finally{if(r)throw r.error}}t.complete()})}function Lo(e){return new F(function(t){ra(e,t).catch(function(r){return t.error(r)})})}function ta(e){return Lo(rr(e))}function ra(e,t){var r,o,n,i;return po(this,void 0,void 0,function(){var a,s;return Nt(this,function(p){switch(p.label){case 0:p.trys.push([0,5,6,11]),r=mo(e),p.label=1;case 1:return[4,r.next()];case 2:if(o=p.sent(),!!o.done)return[3,4];if(a=o.value,t.next(a),t.closed)return[2];p.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return s=p.sent(),n={error:s},[3,11];case 6:return p.trys.push([6,,9,10]),o&&!o.done&&(i=r.return)?[4,i.call(r)]:[3,8];case 7:p.sent(),p.label=8;case 8:return[3,10];case 9:if(n)throw n.error;return[7];case 10:return[7];case 11:return t.complete(),[2]}})})}function we(e,t,r,o,n){o===void 0&&(o=0),n===void 0&&(n=!1);var i=t.schedule(function(){r(),n?e.add(this.schedule(null,o)):this.unsubscribe()},o);if(e.add(i),!n)return i}function be(e,t){return t===void 0&&(t=0),y(function(r,o){r.subscribe(T(o,function(n){return we(o,e,function(){return o.next(n)},t)},function(){return we(o,e,function(){return o.complete()},t)},function(n){return we(o,e,function(){return o.error(n)},t)}))})}function Qe(e,t){return t===void 0&&(t=0),y(function(r,o){o.add(e.schedule(function(){return r.subscribe(o)},t))})}function _o(e,t){return W(e).pipe(Qe(t),be(t))}function Ao(e,t){return W(e).pipe(Qe(t),be(t))}function Co(e,t){return new F(function(r){var o=0;return t.schedule(function(){o===e.length?r.complete():(r.next(e[o++]),r.closed||this.schedule())})})}function Ho(e,t){return new F(function(r){var o;r!
 eturn we(r,t,function(){o=e[er](),we(r,t,function(){var n,i,a;try{n=o.next(),i=n.value,a=n.done}catch(s){r.error(s);return}a?r.complete():r.next(i)},0,!0)}),function(){return k(o==null?void 0:o.return)&&o.return()}})}function nr(e,t){if(!e)throw new Error("Iterable cannot be null");return new F(function(r){we(r,t,function(){var o=e[Symbol.asyncIterator]();we(r,t,function(){o.next().then(function(n){n.done?r.complete():r.next(n.value)})},0,!0)})})}function ko(e,t){return nr(rr(e),t)}function $o(e,t){if(e!=null){if(Jt(e))return _o(e,t);if(xt(e))return Co(e,t);if(Gt(e))return Ao(e,t);if(Xt(e))return nr(e,t);if(tr(e))return Ho(e,t);if(or(e))return ko(e,t)}throw Zt(e)}function ue(e,t){return t?$o(e,t):W(e)}function I(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=He(e);return ue(e,r)}function $r(e,t){var r=k(e)?e:function(){return e},o=function(n){return n.error(r())};return new F(t?function(n){return t.schedule(o,0,n)}:o)}var ir=ft(function(e){return function(){e(this),this.name="EmptyError",this.message="no elements in sequence"}});function Po(e){return e instanceof Date&&!isNaN(e)}function m(e,t){return y(function(r,o){var n=0;r.subscribe(T(o,function(i){o.next(e.call(t,i,n++))}))})}var oa=Array.isArray;function na(e,t){return oa(t)?e.apply(void 0,q([],N(t))):e(t)}function Ze(e){return m(function(t){return na(e,t)})}var ia=Array.isArray,aa=Object.getPrototypeOf,sa=Object.prototype,ca=Object.keys;function Ro(e){if(e.length===1){var t=e[0];if(ia(t))return{args:t,keys:null};if(pa(t)){var r=ca(t);return{args:r.map(function(o){return t[o]}),keys:r}}}return{args:e,keys:null}}function pa(e){return e&&typeof e=="object"&&aa(e)===sa}function Io(e,t){return e.reduce(function(r,o,n){return r[o]=t[n],r},{})}function z(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=He(e),o=Xe(e),n=Ro(e),i=n.args,a=n.keys;if(i.length===0)return ue([],r);var s=new F(Pr(i,r,a?function(p){return Io(a,p)}:le));return o?s.pipe(Ze(o)):s}function Pr(e,t,r){return r===void 0&&(r=le),function(o){Fo(t,function(){for(!
 var n=e.length,i=new Array(n),a=n,s=n,p=function(l){Fo(t,function(){var f=ue(e[l],t),u=!1;f.subscribe(T(o,function(h){i[l]=h,u||(u=!0,s--),s||o.next(r(i.slice()))},function(){--a||o.complete()}))},o)},c=0;c<n;c++)p(c)},o)}}function Fo(e,t,r){e?we(r,e,t):t()}function jo(e,t,r,o,n,i,a,s){var p=[],c=0,l=0,f=!1,u=function(){f&&!p.length&&!c&&t.complete()},h=function(A){return c<o?w(A):p.push(A)},w=function(A){i&&t.next(A),c++;var te=!1;W(r(A,l++)).subscribe(T(t,function(ie){n==null||n(ie),i?h(ie):t.next(ie)},function(){te=!0},void 0,function(){if(te)try{c--;for(var ie=function(){var J=p.shift();a?we(t,a,function(){return w(J)}):w(J)};p.length&&c<o;)ie();u()}catch(J){t.error(J)}}))};return e.subscribe(T(t,h,function(){f=!0,u()})),function(){s==null||s()}}function oe(e,t,r){return r===void 0&&(r=1/0),k(t)?oe(function(o,n){return m(function(i,a){return t(o,i,n,a)})(W(e(o,n)))},r):(typeof t=="number"&&(r=t),y(function(o,n){return jo(o,n,e,r)}))}function yt(e){return e===void 0&&(e=1/0),oe(le,e)}function Wo(){return yt(1)}function je(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Wo()(ue(e,He(e)))}function C(e){return new F(function(t){W(e()).subscribe(t)})}var la=["addListener","removeListener"],ma=["addEventListener","removeEventListener"],fa=["on","off"];function d(e,t,r,o){if(k(r)&&(o=r,r=void 0),o)return d(e,t,r).pipe(Ze(o));var n=N(ha(e)?ma.map(function(s){return function(p){return e[s](t,p,r)}}):ua(e)?la.map(Uo(e,t)):da(e)?fa.map(Uo(e,t)):[],2),i=n[0],a=n[1];if(!i&&xt(e))return oe(function(s){return d(s,t,r)})(W(e));if(!i)throw new TypeError("Invalid event target");return new F(function(s){var p=function(){for(var c=[],l=0;l<arguments.length;l++)c[l]=arguments[l];return s.next(1<c.length?c:c[0])};return i(p),function(){return a(p)}})}function Uo(e,t){return function(r){return function(o){return e[r](t,o)}}}function ua(e){return k(e.addListener)&&k(e.removeListener)}function da(e){return k(e.on)&&k(e.off)}function ha(e){return k(e.addEventListener)&&k(e.removeEventListener)}function ar(e,t,r){re!
 turn r?ar(e,t).pipe(Ze(r)):new F(function(o){var n=function(){for(var a=[],s=0;s<arguments.length;s++)a[s]=arguments[s];return o.next(a.length===1?a[0]:a)},i=e(n);return k(t)?function(){return t(n,i)}:void 0})}function Me(e,t,r){e===void 0&&(e=0),r===void 0&&(r=Cr);var o=-1;return t!=null&&(Yt(t)?r=t:o=t),new F(function(n){var i=Po(e)?+e-r.now():e;i<0&&(i=0);var a=0;return r.schedule(function(){n.closed||(n.next(a++),0<=o?this.schedule(void 0,o):n.complete())},i)})}function S(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=He(e),o=Bt(e,1/0),n=e;return n.length?n.length===1?W(n[0]):yt(o)(ue(n,r)):O}var Ke=new F(he);var ba=Array.isArray;function Et(e){return e.length===1&&ba(e[0])?e[0]:e}function b(e,t){return y(function(r,o){var n=0;r.subscribe(T(o,function(i){return e.call(t,i,n++)&&o.next(i)}))})}function Ct(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=Xe(e),o=Et(e);return o.length?new F(function(n){var i=o.map(function(){return[]}),a=o.map(function(){return!1});n.add(function(){i=a=null});for(var s=function(c){W(o[c]).subscribe(T(n,function(l){if(i[c].push(l),i.every(function(u){return u.length})){var f=i.map(function(u){return u.shift()});n.next(r?r.apply(void 0,q([],N(f))):f),i.some(function(u,h){return!u.length&&a[h]})&&n.complete()}},function(){a[c]=!0,!i[c].length&&n.complete()}))},p=0;!n.closed&&p<o.length;p++)s(p);return function(){i=a=null}}):O}function Do(e){return y(function(t,r){var o=!1,n=null,i=null,a=!1,s=function(){if(i==null||i.unsubscribe(),i=null,o){o=!1;var c=n;n=null,r.next(c)}a&&r.complete()},p=function(){i=null,a&&r.complete()};t.subscribe(T(r,function(c){o=!0,n=c,i||W(e(c)).subscribe(i=T(r,s,p))},function(){a=!0,(!o||!i||i.closed)&&r.complete()}))})}function Le(e,t){return t===void 0&&(t=se),Do(function(){return Me(e,t)})}function Ye(e,t){return t===void 0&&(t=null),t=t!=null?t:e,y(function(r,o){var n=[],i=0;r.subscribe(T(o,function(a){var s,p,c,l,f=null;i++%t===0&&n.push([]);try{for(var u=de(n),h=u.next();!h.done;h=u.next()){var w=h.value;w.push(a)!
 ,e<=w.length&&(f=f!=null?f:[],f.push(w))}}catch(ie){s={error:ie}}finally{try{h&&!h.done&&(p=u.return)&&p.call(u)}finally{if(s)throw s.error}}if(f)try{for(var A=de(f),te=A.next();!te.done;te=A.next()){var w=te.value;qe(n,w),o.next(w)}}catch(ie){c={error:ie}}finally{try{te&&!te.done&&(l=A.return)&&l.call(A)}finally{if(c)throw c.error}}},function(){var a,s;try{for(var p=de(n),c=p.next();!c.done;c=p.next()){var l=c.value;o.next(l)}}catch(f){a={error:f}}finally{try{c&&!c.done&&(s=p.return)&&s.call(p)}finally{if(a)throw a.error}}o.complete()},void 0,function(){n=null}))})}function ve(e){return y(function(t,r){var o=null,n=!1,i;o=t.subscribe(T(r,void 0,void 0,function(a){i=W(e(a,ve(e)(t))),o?(o.unsubscribe(),o=null,i.subscribe(r)):n=!0})),n&&(o.unsubscribe(),o=null,i.subscribe(r))})}function Vo(e,t,r,o,n){return function(i,a){var s=r,p=t,c=0;i.subscribe(T(a,function(l){var f=c++;p=s?e(p,l,f):(s=!0,l),o&&a.next(p)},n&&function(){s&&a.next(p),a.complete()}))}}function Rr(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=Xe(e);return r?go(Rr.apply(void 0,q([],N(e))),Ze(r)):y(function(o,n){Pr(q([o],N(Et(e))))(n)})}function We(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Rr.apply(void 0,q([],N(e)))}function Ht(e){return y(function(t,r){var o=!1,n=null,i=null,a=function(){if(i==null||i.unsubscribe(),i=null,o){o=!1;var s=n;n=null,r.next(s)}};t.subscribe(T(r,function(s){i==null||i.unsubscribe(),o=!0,n=s,i=T(r,a,he),W(e(s)).subscribe(i)},function(){a(),r.complete()},void 0,function(){n=i=null}))})}function _e(e,t){return t===void 0&&(t=se),y(function(r,o){var n=null,i=null,a=null,s=function(){if(n){n.unsubscribe(),n=null;var c=i;i=null,o.next(c)}};function p(){var c=a+e,l=t.now();if(l<c){n=this.schedule(void 0,c-l),o.add(n);return}s()}r.subscribe(T(o,function(c){i=c,a=t.now(),n||(n=t.schedule(p,e),o.add(n))},function(){s(),o.complete()},void 0,function(){i=n=null}))})}function Be(e){return y(function(t,r){var o=!1;t.subscribe(T(r,function(n){o=!0,r.next(n)},function(){o||r.next(e),r.complet!
 e()}))})}function Te(e){return e<=0?function(){return O}:y(function(t,r){var o=0;t.subscribe(T(r,function(n){++o<=e&&(r.next(n),e<=o&&r.complete())}))})}function X(){return y(function(e,t){e.subscribe(T(t,he))})}function No(e){return m(function(){return e})}function Ir(e,t){return t?function(r){return je(t.pipe(Te(1),X()),r.pipe(Ir(e)))}:oe(function(r,o){return W(e(r,o)).pipe(Te(1),No(r))})}function Ge(e,t){t===void 0&&(t=se);var r=Me(e,t);return Ir(function(){return r})}function K(e,t){return t===void 0&&(t=le),e=e!=null?e:va,y(function(r,o){var n,i=!0;r.subscribe(T(o,function(a){var s=t(a);(i||!e(n,s))&&(i=!1,n=s,o.next(a))}))})}function va(e,t){return e===t}function Z(e,t){return K(function(r,o){return t?t(r[e],o[e]):r[e]===o[e]})}function zo(e){return e===void 0&&(e=ga),y(function(t,r){var o=!1;t.subscribe(T(r,function(n){o=!0,r.next(n)},function(){return o?r.complete():r.error(e())}))})}function ga(){return new ir}function ne(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return function(r){return je(r,I.apply(void 0,q([],N(e))))}}function L(e){return y(function(t,r){try{t.subscribe(r)}finally{r.add(e)}})}function Ae(e,t){var r=arguments.length>=2;return function(o){return o.pipe(e?b(function(n,i){return e(n,i,o)}):le,Te(1),r?Be(t):zo(function(){return new ir}))}}function Fr(e){return e<=0?function(){return O}:y(function(t,r){var o=[];t.subscribe(T(r,function(n){o.push(n),e<o.length&&o.shift()},function(){var n,i;try{for(var a=de(o),s=a.next();!s.done;s=a.next()){var p=s.value;r.next(p)}}catch(c){n={error:c}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}r.complete()},void 0,function(){o=null}))})}function qo(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=He(e),o=Bt(e,1/0);return e=Et(e),y(function(n,i){yt(o)(ue(q([n],N(e)),r)).subscribe(i)})}function Pe(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return qo.apply(void 0,q([],N(e)))}function st(e){var t,r=1/0,o;return e!=null&&(typeof e=="object"?(t=e.count,r=t===void 0?1/0:t,o=e.de!
 lay):r=e),r<=0?function(){return O}:y(function(n,i){var a=0,s,p=function(){if(s==null||s.unsubscribe(),s=null,o!=null){var l=typeof o=="number"?Me(o):W(o(a)),f=T(i,function(){f.unsubscribe(),c()});l.subscribe(f)}else c()},c=function(){var l=!1;s=n.subscribe(T(i,void 0,function(){++a<r?s?p():l=!0:i.complete()})),l&&p()};c()})}function jr(e,t){return y(Vo(e,t,arguments.length>=2,!0))}function pe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new g}:t,o=e.resetOnError,n=o===void 0?!0:o,i=e.resetOnComplete,a=i===void 0?!0:i,s=e.resetOnRefCountZero,p=s===void 0?!0:s;return function(c){var l,f,u,h=0,w=!1,A=!1,te=function(){f==null||f.unsubscribe(),f=void 0},ie=function(){te(),l=u=void 0,w=A=!1},J=function(){var H=l;ie(),H==null||H.unsubscribe()};return y(function(H,mt){h++,!A&&!w&&te();var ze=u=u!=null?u:r();mt.add(function(){h--,h===0&&!A&&!w&&(f=Wr(J,p))}),ze.subscribe(mt),!l&&h>0&&(l=new at({next:function(Ie){return ze.next(Ie)},error:function(Ie){A=!0,te(),f=Wr(ie,n,Ie),ze.error(Ie)},complete:function(){w=!0,te(),f=Wr(ie,a),ze.complete()}}),W(H).subscribe(l))})(c)}}function Wr(e,t){for(var r=[],o=2;o<arguments.length;o++)r[o-2]=arguments[o];if(t===!0){e();return}if(t!==!1){var n=new at({next:function(){n.unsubscribe(),e()}});return W(t.apply(void 0,q([],N(r)))).subscribe(n)}}function G(e,t,r){var o,n,i,a,s=!1;return e&&typeof e=="object"?(o=e.bufferSize,a=o===void 0?1/0:o,n=e.windowTime,t=n===void 0?1/0:n,i=e.refCount,s=i===void 0?!1:i,r=e.scheduler):a=e!=null?e:1/0,pe({connector:function(){return new _t(a,t,r)},resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:s})}function Ce(e){return b(function(t,r){return e<=r})}function Ur(e){return y(function(t,r){var o=!1,n=T(r,function(){n==null||n.unsubscribe(),o=!0},he);W(e).subscribe(n),t.subscribe(T(r,function(i){return o&&r.next(i)}))})}function Q(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=He(e);return y(function(o,n){(r?je(e,o,r):je(e,o)).subscribe(n)})}function v(e,t){return y(function(r,o){var n=null,i=0,a=!1,s=fu!
 nction(){return a&&!n&&o.complete()};r.subscribe(T(o,function(p){n==null||n.unsubscribe();var c=0,l=i++;W(e(p,l)).subscribe(n=T(o,function(f){return o.next(t?t(p,f,l,c++):f)},function(){n=null,s()}))},function(){a=!0,s()}))})}function U(e){return y(function(t,r){W(e).subscribe(T(r,function(){return r.complete()},he)),!r.closed&&t.subscribe(r)})}function Dr(e,t){return t===void 0&&(t=!1),y(function(r,o){var n=0;r.subscribe(T(o,function(i){var a=e(i,n++);(a||t)&&o.next(i),!a&&o.complete()}))})}function E(e,t,r){var o=k(e)||t||r?{next:e,error:t,complete:r}:e;return o?y(function(n,i){var a;(a=o.subscribe)===null||a===void 0||a.call(o);var s=!0;n.subscribe(T(i,function(p){var c;(c=o.next)===null||c===void 0||c.call(o,p),i.next(p)},function(){var p;s=!1,(p=o.complete)===null||p===void 0||p.call(o),i.complete()},function(p){var c;s=!1,(c=o.error)===null||c===void 0||c.call(o,p),i.error(p)},function(){var p,c;s&&((p=o.unsubscribe)===null||p===void 0||p.call(o)),(c=o.finalize)===null||c===void 0||c.call(o)}))}):le}function Qo(e,t){return y(function(r,o){var n=t!=null?t:{},i=n.leading,a=i===void 0?!0:i,s=n.trailing,p=s===void 0?!1:s,c=!1,l=null,f=null,u=!1,h=function(){f==null||f.unsubscribe(),f=null,p&&(te(),u&&o.complete())},w=function(){f=null,u&&o.complete()},A=function(ie){return f=W(e(ie)).subscribe(T(o,h,w))},te=function(){if(c){c=!1;var ie=l;l=null,o.next(ie),!u&&A(ie)}};r.subscribe(T(o,function(ie){c=!0,l=ie,!(f&&!f.closed)&&(a?te():A(ie))},function(){u=!0,!(p&&c&&f&&!f.closed)&&o.complete()}))})}function ct(e,t,r){t===void 0&&(t=se);var o=Me(e,t);return Qo(function(){return o},r)}function ee(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var r=Xe(e);return y(function(o,n){for(var i=e.length,a=new Array(i),s=e.map(function(){return!1}),p=!1,c=function(f){W(e[f]).subscribe(T(n,function(u){a[f]=u,!p&&!s[f]&&(s[f]=!0,(p=s.every(le))&&(s=null))},he))},l=0;l<i;l++)c(l);o.subscribe(T(n,function(f){if(p){var u=q([f],N(a));n.next(r?r.apply(void 0,q([],N(u))):u)}}))})}function Ko(){for(var e=[],t=0;t<argument!
 s.length;t++)e[t]=arguments[t];return y(function(r,o){Ct.apply(void 0,q([r],N(e))).subscribe(o)})}function Vr(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Ko.apply(void 0,q([],N(e)))}function Yo(){let e=new _t(1);return d(document,"DOMContentLoaded",{once:!0}).subscribe(()=>e.next(document)),e}function $(e,t=document){return Array.from(t.querySelectorAll(e))}function P(e,t=document){let r=fe(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function fe(e,t=document){return t.querySelector(e)||void 0}function Re(){var e,t,r,o;return(o=(r=(t=(e=document.activeElement)==null?void 0:e.shadowRoot)==null?void 0:t.activeElement)!=null?r:document.activeElement)!=null?o:void 0}var xa=S(d(document.body,"focusin"),d(document.body,"focusout")).pipe(_e(1),Q(void 0),m(()=>Re()||document.body),G(1));function et(e){return xa.pipe(m(t=>e.contains(t)),K())}function kt(e,t){return C(()=>S(d(e,"mouseenter").pipe(m(()=>!0)),d(e,"mouseleave").pipe(m(()=>!1))).pipe(t?Ht(r=>Me(+!r*t)):le,Q(e.matches(":hover"))))}function Bo(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)Bo(e,r)}function x(e,t,...r){let o=document.createElement(e);if(t)for(let n of Object.keys(t))typeof t[n]!="undefined"&&(typeof t[n]!="boolean"?o.setAttribute(n,t[n]):o.setAttribute(n,""));for(let n of r)Bo(o,n);return o}function sr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function wt(e){let t=x("script",{src:e});return C(()=>(document.head.appendChild(t),S(d(t,"load"),d(t,"error").pipe(v(()=>$r(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(m(()=>{}),L(()=>document.head.removeChild(t)),Te(1))))}var Go=new g,ya=C(()=>typeof ResizeObserver=="undefined"?wt("https://unpkg.com/resize-observer-polyfill"):I(void 0)).pipe(m(()=>new ResizeObserver(e=>e.forEach(t=>Go.next(t)))),v(e=>S(Ke,I(e)).pipe(L(()=>e.disconnect()))!
 ),G(1));function ce(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ge(e){let t=e;for(;t.clientWidth===0&&t.parentElement;)t=t.parentElement;return ya.pipe(E(r=>r.observe(t)),v(r=>Go.pipe(b(o=>o.target===t),L(()=>r.unobserve(t)))),m(()=>ce(e)),Q(ce(e)))}function Tt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function cr(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}function Jo(e){let t=[],r=e.parentElement;for(;r;)(e.clientWidth>r.clientWidth||e.clientHeight>r.clientHeight)&&t.push(r),r=(e=r).parentElement;return t.length===0&&t.push(document.documentElement),t}function Ue(e){return{x:e.offsetLeft,y:e.offsetTop}}function Xo(e){let t=e.getBoundingClientRect();return{x:t.x+window.scrollX,y:t.y+window.scrollY}}function Zo(e){return S(d(window,"load"),d(window,"resize")).pipe(Le(0,me),m(()=>Ue(e)),Q(Ue(e)))}function pr(e){return{x:e.scrollLeft,y:e.scrollTop}}function De(e){return S(d(e,"scroll"),d(window,"scroll"),d(window,"resize")).pipe(Le(0,me),m(()=>pr(e)),Q(pr(e)))}var en=new g,Ea=C(()=>I(new IntersectionObserver(e=>{for(let t of e)en.next(t)},{threshold:0}))).pipe(v(e=>S(Ke,I(e)).pipe(L(()=>e.disconnect()))),G(1));function tt(e){return Ea.pipe(E(t=>t.observe(e)),v(t=>en.pipe(b(({target:r})=>r===e),L(()=>t.unobserve(e)),m(({isIntersecting:r})=>r))))}function tn(e,t=16){return De(e).pipe(m(({y:r})=>{let o=ce(e),n=Tt(e);return r>=n.height-o.height-t}),K())}var lr={drawer:P("[data-md-toggle=drawer]"),search:P("[data-md-toggle=search]")};function rn(e){return lr[e].checked}function Je(e,t){lr[e].checked!==t&&lr[e].click()}function Ve(e){let t=lr[e];return d(t,"change").pipe(m(()=>t.checked),Q(t.checked))}function wa(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ta(){return S(d(window,"compositionstart").pipe(m(()=>!0)),d(window,"compositionend").pipe(m(()=>!
 !1))).pipe(Q(!1))}function on(){let e=d(window,"keydown").pipe(b(t=>!(t.metaKey||t.ctrlKey)),m(t=>({mode:rn("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),b(({mode:t,type:r})=>{if(t==="global"){let o=Re();if(typeof o!="undefined")return!wa(o,r)}return!0}),pe());return Ta().pipe(v(t=>t?O:e))}function xe(){return new URL(location.href)}function pt(e,t=!1){if(B("navigation.instant")&&!t){let r=x("a",{href:e.href});document.body.appendChild(r),r.click(),r.remove()}else location.href=e.href}function nn(){return new g}function an(){return location.hash.slice(1)}function sn(e){let t=x("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Sa(e){return S(d(window,"hashchange"),e).pipe(m(an),Q(an()),b(t=>t.length>0),G(1))}function cn(e){return Sa(e).pipe(m(t=>fe(`[id="${t}"]`)),b(t=>typeof t!="undefined"))}function $t(e){let t=matchMedia(e);return ar(r=>t.addListener(()=>r(t.matches))).pipe(Q(t.matches))}function pn(){let e=matchMedia("print");return S(d(window,"beforeprint").pipe(m(()=>!0)),d(window,"afterprint").pipe(m(()=>!1))).pipe(Q(e.matches))}function Nr(e,t){return e.pipe(v(r=>r?t():O))}function zr(e,t){return new F(r=>{let o=new XMLHttpRequest;return o.open("GET",`${e}`),o.responseType="blob",o.addEventListener("load",()=>{o.status>=200&&o.status<300?(r.next(o.response),r.complete()):r.error(new Error(o.statusText))}),o.addEventListener("error",()=>{r.error(new Error("Network error"))}),o.addEventListener("abort",()=>{r.complete()}),typeof(t==null?void 0:t.progress$)!="undefined"&&(o.addEventListener("progress",n=>{var i;if(n.lengthComputable)t.progress$.next(n.loaded/n.total*100);else{let a=(i=o.getResponseHeader("Content-Length"))!=null?i:0;t.progress$.next(n.loaded/+a*100)}}),t.progress$.next(5)),o.send(),()=>o.abort()})}function Ne(e,t){return zr(e,t).pipe(v(r=>r.text()),m(r=>JSON.parse(r)),G(1))}function ln(e,t){let r=new DOMParser;return zr(e,t).pipe(v(o=>o.text()),m(o=>r.parseFromString(o,"text/html")),G(1))}function mn(e,t){let r=new!
  DOMParser;return zr(e,t).pipe(v(o=>o.text()),m(o=>r.parseFromString(o,"text/xml")),G(1))}function fn(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function un(){return S(d(window,"scroll",{passive:!0}),d(window,"resize",{passive:!0})).pipe(m(fn),Q(fn()))}function dn(){return{width:innerWidth,height:innerHeight}}function hn(){return d(window,"resize",{passive:!0}).pipe(m(dn),Q(dn()))}function bn(){return z([un(),hn()]).pipe(m(([e,t])=>({offset:e,size:t})),G(1))}function mr(e,{viewport$:t,header$:r}){let o=t.pipe(Z("size")),n=z([o,r]).pipe(m(()=>Ue(e)));return z([r,t,n]).pipe(m(([{height:i},{offset:a,size:s},{x:p,y:c}])=>({offset:{x:a.x-p,y:a.y-c+i},size:s})))}function Oa(e){return d(e,"message",t=>t.data)}function Ma(e){let t=new g;return t.subscribe(r=>e.postMessage(r)),t}function vn(e,t=new Worker(e)){let r=Oa(t),o=Ma(t),n=new g;n.subscribe(o);let i=o.pipe(X(),ne(!0));return n.pipe(X(),Pe(r.pipe(U(i))),pe())}var La=P("#__config"),St=JSON.parse(La.textContent);St.base=`${new URL(St.base,xe())}`;function ye(){return St}function B(e){return St.features.includes(e)}function Ee(e,t){return typeof t!="undefined"?St.translations[e].replace("#",t.toString()):St.translations[e]}function Se(e,t=document){return P(`[data-md-component=${e}]`,t)}function ae(e,t=document){return $(`[data-md-component=${e}]`,t)}function _a(e){let t=P(".md-typeset > :first-child",e);return d(t,"click",{once:!0}).pipe(m(()=>P(".md-typeset",e)),m(r=>({hash:__md_hash(r.innerHTML)})))}function gn(e){if(!B("announce.dismiss")||!e.childElementCount)return O;if(!e.hidden){let t=P(".md-typeset",e);__md_hash(t.innerHTML)===__md_get("__announce")&&(e.hidden=!0)}return C(()=>{let t=new g;return t.subscribe(({hash:r})=>{e.hidden=!0,__md_set("__announce",r)}),_a(e).pipe(E(r=>t.next(r)),L(()=>t.complete()),m(r=>R({ref:e},r)))})}function Aa(e,{target$:t}){return t.pipe(m(r=>({hidden:r!==e})))}function xn(e,t){let r=new g;return r.subscribe(({hidden:o})=>{e.hidden=o}),Aa(e,t).pipe(E(o=>r.next(o)),L(()=>r.complete()),m(o=>R({ref:e},o)))}function Pt(e,!
 t){return t==="inline"?x("div",{class:"md-tooltip md-tooltip--inline",id:e,role:"tooltip"},x("div",{class:"md-tooltip__inner md-typeset"})):x("div",{class:"md-tooltip",id:e,role:"tooltip"},x("div",{class:"md-tooltip__inner md-typeset"}))}function yn(...e){return x("div",{class:"md-tooltip2",role:"tooltip"},x("div",{class:"md-tooltip2__inner md-typeset"},e))}function En(e,t){if(t=t?`${t}_annotation_${e}`:void 0,t){let r=t?`#${t}`:void 0;return x("aside",{class:"md-annotation",tabIndex:0},Pt(t),x("a",{href:r,class:"md-annotation__index",tabIndex:-1},x("span",{"data-md-annotation-id":e})))}else return x("aside",{class:"md-annotation",tabIndex:0},Pt(t),x("span",{class:"md-annotation__index",tabIndex:-1},x("span",{"data-md-annotation-id":e})))}function wn(e){return x("button",{class:"md-clipboard md-icon",title:Ee("clipboard.copy"),"data-clipboard-target":`#${e} > code`})}function qr(e,t){let r=t&2,o=t&1,n=Object.keys(e.terms).filter(p=>!e.terms[p]).reduce((p,c)=>[...p,x("del",null,c)," "],[]).slice(0,-1),i=ye(),a=new URL(e.location,i.base);B("search.highlight")&&a.searchParams.set("h",Object.entries(e.terms).filter(([,p])=>p).reduce((p,[c])=>`${p} ${c}`.trim(),""));let{tags:s}=ye();return x("a",{href:`${a}`,class:"md-search-result__link",tabIndex:-1},x("article",{class:"md-search-result__article md-typeset","data-md-score":e.score.toFixed(2)},r>0&&x("div",{class:"md-search-result__icon md-icon"}),r>0&&x("h1",null,e.title),r<=0&&x("h2",null,e.title),o>0&&e.text.length>0&&e.text,e.tags&&e.tags.map(p=>{let c=s?p in s?`md-tag-icon md-tag--${s[p]}`:"md-tag-icon":"";return x("span",{class:`md-tag ${c}`},p)}),o>0&&n.length>0&&x("p",{class:"md-search-result__terms"},Ee("search.result.term.missing"),": ",...n)))}function Tn(e){let t=e[0].score,r=[...e],o=ye(),n=r.findIndex(l=>!`${new URL(l.location,o.base)}`.includes("#")),[i]=r.splice(n,1),a=r.findIndex(l=>l.score<t);a===-1&&(a=r.length);let s=r.slice(0,a),p=r.slice(a),c=[qr(i,2|+(!n&&a===0)),...s.map(l=>qr(l,1)),...p.length?[x("details",{class:"md-search-result__more"},x("!
 summary",{tabIndex:-1},x("div",null,p.length>0&&p.length===1?Ee("search.result.more.one"):Ee("search.result.more.other",p.length))),...p.map(l=>qr(l,1)))]:[]];return x("li",{class:"md-search-result__item"},c)}function Sn(e){return x("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>x("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?sr(r):r)))}function Qr(e){let t=`tabbed-control tabbed-control--${e}`;return x("div",{class:t,hidden:!0},x("button",{class:"tabbed-button",tabIndex:-1,"aria-hidden":"true"}))}function On(e){return x("div",{class:"md-typeset__scrollwrap"},x("div",{class:"md-typeset__table"},e))}function Ca(e){var o;let t=ye(),r=new URL(`../${e.version}/`,t.base);return x("li",{class:"md-version__item"},x("a",{href:`${r}`,class:"md-version__link"},e.title,((o=t.version)==null?void 0:o.alias)&&e.aliases.length>0&&x("span",{class:"md-version__alias"},e.aliases[0])))}function Mn(e,t){var o;let r=ye();return e=e.filter(n=>{var i;return!((i=n.properties)!=null&&i.hidden)}),x("div",{class:"md-version"},x("button",{class:"md-version__current","aria-label":Ee("select.version")},t.title,((o=r.version)==null?void 0:o.alias)&&t.aliases.length>0&&x("span",{class:"md-version__alias"},t.aliases[0])),x("ul",{class:"md-version__list"},e.map(Ca)))}var Ha=0;function ka(e){let t=z([et(e),kt(e)]).pipe(m(([o,n])=>o||n),K()),r=C(()=>Jo(e)).pipe(oe(De),ct(1),m(()=>Xo(e)));return t.pipe(Ae(o=>o),v(()=>z([t,r])),m(([o,n])=>({active:o,offset:n})),pe())}function $a(e,t){let{content$:r,viewport$:o}=t,n=`__tooltip2_${Ha++}`;return C(()=>{let i=new g,a=new _r(!1);i.pipe(X(),ne(!1)).subscribe(a);let s=a.pipe(Ht(c=>Me(+!c*250,Hr)),K(),v(c=>c?r:O),E(c=>c.id=n),pe());z([i.pipe(m(({active:c})=>c)),s.pipe(v(c=>kt(c,250)),Q(!1))]).pipe(m(c=>c.some(l=>l))).subscribe(a);let p=a.pipe(b(c=>c),ee(s,o),m(([c,l,{size:f}])=>{let u=e.getBoundingClientRect(),h=u.width/2;if(l.role==="tooltip")return{x:h,y:8+u.height};if(u.y>=f.height/2){let{height:w}=ce(l);return{x:h,y:-16-w}}else return{x:h,y:16+u.height}}));retur!
 n z([s,i,p]).subscribe(([c,{offset:l},f])=>{c.style.setProperty("--md-tooltip-host-x",`${l.x}px`),c.style.setProperty("--md-tooltip-host-y",`${l.y}px`),c.style.setProperty("--md-tooltip-x",`${f.x}px`),c.style.setProperty("--md-tooltip-y",`${f.y}px`),c.classList.toggle("md-tooltip2--top",f.y<0),c.classList.toggle("md-tooltip2--bottom",f.y>=0)}),a.pipe(b(c=>c),ee(s,(c,l)=>l),b(c=>c.role==="tooltip")).subscribe(c=>{let l=ce(P(":scope > *",c));c.style.setProperty("--md-tooltip-width",`${l.width}px`),c.style.setProperty("--md-tooltip-tail","0px")}),a.pipe(K(),be(me),ee(s)).subscribe(([c,l])=>{l.classList.toggle("md-tooltip2--active",c)}),z([a.pipe(b(c=>c)),s]).subscribe(([c,l])=>{l.role==="dialog"?(e.setAttribute("aria-controls",n),e.setAttribute("aria-haspopup","dialog")):e.setAttribute("aria-describedby",n)}),a.pipe(b(c=>!c)).subscribe(()=>{e.removeAttribute("aria-controls"),e.removeAttribute("aria-describedby"),e.removeAttribute("aria-haspopup")}),ka(e).pipe(E(c=>i.next(c)),L(()=>i.complete()),m(c=>R({ref:e},c)))})}function lt(e,{viewport$:t},r=document.body){return $a(e,{content$:new F(o=>{let n=e.title,i=yn(n);return o.next(i),e.removeAttribute("title"),r.append(i),()=>{i.remove(),e.setAttribute("title",n)}}),viewport$:t})}function Pa(e,t){let r=C(()=>z([Zo(e),De(t)])).pipe(m(([{x:o,y:n},i])=>{let{width:a,height:s}=ce(e);return{x:o-i.x+a/2,y:n-i.y+s/2}}));return et(e).pipe(v(o=>r.pipe(m(n=>({active:o,offset:n})),Te(+!o||1/0))))}function Ln(e,t,{target$:r}){let[o,n]=Array.from(e.children);return C(()=>{let i=new g,a=i.pipe(X(),ne(!0));return i.subscribe({next({offset:s}){e.style.setProperty("--md-tooltip-x",`${s.x}px`),e.style.setProperty("--md-tooltip-y",`${s.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}}),tt(e).pipe(U(a)).subscribe(s=>{e.toggleAttribute("data-md-visible",s)}),S(i.pipe(b(({active:s})=>s)),i.pipe(_e(250),b(({active:s})=>!s))).subscribe({next({active:s}){s?e.prepend(o):o.remove()},complete(){e.prepend(o)}}),i.pipe(Le(16,me)).subscribe(({activ!
 e:s})=>{o.classList.toggle("md-tooltip--active",s)}),i.pipe(ct(125,me),b(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:s})=>s)).subscribe({next(s){s?e.style.setProperty("--md-tooltip-0",`${-s}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}}),d(n,"click").pipe(U(a),b(s=>!(s.metaKey||s.ctrlKey))).subscribe(s=>{s.stopPropagation(),s.preventDefault()}),d(n,"mousedown").pipe(U(a),ee(i)).subscribe(([s,{active:p}])=>{var c;if(s.button!==0||s.metaKey||s.ctrlKey)s.preventDefault();else if(p){s.preventDefault();let l=e.parentElement.closest(".md-annotation");l instanceof HTMLElement?l.focus():(c=Re())==null||c.blur()}}),r.pipe(U(a),b(s=>s===o),Ge(125)).subscribe(()=>e.focus()),Pa(e,t).pipe(E(s=>i.next(s)),L(()=>i.complete()),m(s=>R({ref:e},s)))})}function Ra(e){return e.tagName==="CODE"?$(".c, .c1, .cm",e):[e]}function Ia(e){let t=[];for(let r of Ra(e)){let o=[],n=document.createNodeIterator(r,NodeFilter.SHOW_TEXT);for(let i=n.nextNode();i;i=n.nextNode())o.push(i);for(let i of o){let a;for(;a=/(\(\d+\))(!)?/.exec(i.textContent);){let[,s,p]=a;if(typeof p=="undefined"){let c=i.splitText(a.index);i=c.splitText(s.length),t.push(c)}else{i.textContent=s,t.push(i);break}}}}return t}function _n(e,t){t.append(...Array.from(e.childNodes))}function fr(e,t,{target$:r,print$:o}){let n=t.closest("[id]"),i=n==null?void 0:n.id,a=new Map;for(let s of Ia(t)){let[,p]=s.textContent.match(/\((\d+)\)/);fe(`:scope > li:nth-child(${p})`,e)&&(a.set(p,En(p,i)),s.replaceWith(a.get(p)))}return a.size===0?O:C(()=>{let s=new g,p=s.pipe(X(),ne(!0)),c=[];for(let[l,f]of a)c.push([P(".md-typeset",f),P(`:scope > li:nth-child(${l})`,e)]);return o.pipe(U(p)).subscribe(l=>{e.hidden=!l,e.classList.toggle("md-annotation-list",l);for(let[f,u]of c)l?_n(f,u):_n(u,f)}),S(...[...a].map(([,l])=>Ln(l,t,{target$:r}))).pipe(L(()=>s.complete()),pe())})}function An(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return !
 An(t)}}function Cn(e,t){return C(()=>{let r=An(e);return typeof r!="undefined"?fr(r,e,t):O})}var Hn=Vt(Yr());var Fa=0;function kn(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return kn(t)}}function ja(e){return ge(e).pipe(m(({width:t})=>({scrollable:Tt(e).width>t})),Z("scrollable"))}function $n(e,t){let{matches:r}=matchMedia("(hover)"),o=C(()=>{let n=new g,i=n.pipe(Fr(1));n.subscribe(({scrollable:c})=>{c&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")});let a=[];if(Hn.default.isSupported()&&(e.closest(".copy")||B("content.code.copy")&&!e.closest(".no-copy"))){let c=e.closest("pre");c.id=`__code_${Fa++}`;let l=wn(c.id);c.insertBefore(l,e),B("content.tooltips")&&a.push(lt(l,{viewport$}))}let s=e.closest(".highlight");if(s instanceof HTMLElement){let c=kn(s);if(typeof c!="undefined"&&(s.classList.contains("annotate")||B("content.code.annotate"))){let l=fr(c,e,t);a.push(ge(s).pipe(U(i),m(({width:f,height:u})=>f&&u),K(),v(f=>f?l:O)))}}return $(":scope > span[id]",e).length&&e.classList.add("md-code__content"),ja(e).pipe(E(c=>n.next(c)),L(()=>n.complete()),m(c=>R({ref:e},c)),Pe(...a))});return B("content.lazy")?tt(e).pipe(b(n=>n),Te(1),v(()=>o)):o}function Wa(e,{target$:t,print$:r}){let o=!0;return S(t.pipe(m(n=>n.closest("details:not([open])")),b(n=>e===n),m(()=>({action:"open",reveal:!0}))),r.pipe(b(n=>n||!o),E(()=>o=e.open),m(n=>({action:n?"open":"close"}))))}function Pn(e,t){return C(()=>{let r=new g;return r.subscribe(({action:o,reveal:n})=>{e.toggleAttribute("open",o==="open"),n&&e.scrollIntoView()}),Wa(e,t).pipe(E(o=>r.next(o)),L(()=>r.complete()),m(o=>R({ref:e},o)))})}var Rn=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:#0000}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:nor!
 mal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel rect,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel rect{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color);stroke-width:.05rem}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}g #flowchart-circleEnd,g #flowchart-circleStart,g #flowchart-crossEnd,g #flowchart-crossStart,g #flowchart-pointEnd,g #flowchart-pointStart{stroke:none}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-lab!
 el-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel,.nodeLabel p{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}a .nodeLabel{text-decoration:underline}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.attributeBoxEven,.attributeBoxOdd{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}.actor{fill:var(--md-mermaid-sequence-actor-bg-color);stroke:var(--md-mermaid-sequence-actor-border-color)}text.actor>!
 tspan{fill:var(--md-mermaid-sequence-actor-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-mermaid-sequence-actor-line-color)}.actor-man circle,.actor-man line{fill:var(--md-mermaid-sequence-actorman-bg-color);stroke:var(--md-mermaid-sequence-actorman-line-color)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-sequence-message-line-color)}.note{fill:var(--md-mermaid-sequence-note-bg-color);stroke:var(--md-mermaid-sequence-note-border-color)}.loopText,.loopText>tspan,.messageText,.noteText>tspan{stroke:none;font-family:var(--md-mermaid-font-family)!important}.messageText{fill:var(--md-mermaid-sequence-message-fg-color)}.loopText,.loopText>tspan{fill:var(--md-mermaid-sequence-loop-fg-color)}.noteText>tspan{fill:var(--md-mermaid-sequence-note-fg-color)}#arrowhead path{fill:var(--md-mermaid-sequence-message-line-color);stroke:none}.loopLine{fill:var(--md-mermaid-sequence-loop-bg-color);stroke:var(--md-mermaid-sequence-loop-border-color)}.labelBox{fill:var(--md-mermaid-sequence-label-bg-color);stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-sequence-label-fg-color);font-family:var(--md-mermaid-font-family)}.sequenceNumber{fill:var(--md-mermaid-sequence-number-fg-color)}rect.rect{fill:var(--md-mermaid-sequence-box-bg-color);stroke:none}rect.rect+text.text{fill:var(--md-mermaid-sequence-box-fg-color)}defs #sequencenumber{fill:var(--md-mermaid-sequence-number-bg-color)!important}";var Br,Da=0;function Va(){return typeof mermaid=="undefined"||mermaid instanceof Element?wt("https://unpkg.com/mermaid@10/dist/mermaid.min.js"):I(void 0)}function In(e){return e.classList.remove("mermaid"),Br||(Br=Va().pipe(E(()=>mermaid.initialize({startOnLoad:!1,themeCSS:Rn,sequence:{actorFontSize:"16px",messageFontSize:"16px",noteFontSize:"16px"}})),m(()=>{}),G(1))),Br.subscribe(()=>ao(this,null,function*(){e.classList.add("mermaid");let t=`__mermaid_${Da++}`,r=x("div",{class:"mermaid"}),o=e.textContent,{svg:n,fn:i}=yield mermaid.render(t,o),a=r.attachShadow({mode:"closed"});a.innerHTML=n,e.replaceW!
 ith(r),i==null||i(a)})),Br.pipe(m(()=>({ref:e})))}var Fn=x("table");function jn(e){return e.replaceWith(Fn),Fn.replaceWith(On(e)),I({ref:e})}function Na(e){let t=e.find(r=>r.checked)||e[0];return S(...e.map(r=>d(r,"change").pipe(m(()=>P(`label[for="${r.id}"]`))))).pipe(Q(P(`label[for="${t.id}"]`)),m(r=>({active:r})))}function Wn(e,{viewport$:t,target$:r}){let o=P(".tabbed-labels",e),n=$(":scope > input",e),i=Qr("prev");e.append(i);let a=Qr("next");return e.append(a),C(()=>{let s=new g,p=s.pipe(X(),ne(!0));z([s,ge(e),tt(e)]).pipe(U(p),Le(1,me)).subscribe({next([{active:c},l]){let f=Ue(c),{width:u}=ce(c);e.style.setProperty("--md-indicator-x",`${f.x}px`),e.style.setProperty("--md-indicator-width",`${u}px`);let h=pr(o);(f.x<h.x||f.x+u>h.x+l.width)&&o.scrollTo({left:Math.max(0,f.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),z([De(o),ge(o)]).pipe(U(p)).subscribe(([c,l])=>{let f=Tt(o);i.hidden=c.x<16,a.hidden=c.x>f.width-l.width-16}),S(d(i,"click").pipe(m(()=>-1)),d(a,"click").pipe(m(()=>1))).pipe(U(p)).subscribe(c=>{let{width:l}=ce(o);o.scrollBy({left:l*c,behavior:"smooth"})}),r.pipe(U(p),b(c=>n.includes(c))).subscribe(c=>c.click()),o.classList.add("tabbed-labels--linked");for(let c of n){let l=P(`label[for="${c.id}"]`);l.replaceChildren(x("a",{href:`#${l.htmlFor}`,tabIndex:-1},...Array.from(l.childNodes))),d(l.firstElementChild,"click").pipe(U(p),b(f=>!(f.metaKey||f.ctrlKey)),E(f=>{f.preventDefault(),f.stopPropagation()})).subscribe(()=>{history.replaceState({},"",`#${l.htmlFor}`),l.click()})}return B("content.tabs.link")&&s.pipe(Ce(1),ee(t)).subscribe(([{active:c},{offset:l}])=>{let f=c.innerText.trim();if(c.hasAttribute("data-md-switching"))c.removeAttribute("data-md-switching");else{let u=e.offsetTop-l.y;for(let w of $("[data-tabs]"))for(let A of $(":scope > input",w)){let te=P(`label[for="${A.id}"]`);if(te!==c&&te.innerText.trim()===f){te.setAttribute("data-md-switching",""),A.click();break}}window.scrollTo({top:e.offsetTop-u});!
 let h=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([f,...h])])}}),s.pipe(U(p)).subscribe(()=>{for(let c of $("audio, video",e))c.pause()}),Na(n).pipe(E(c=>s.next(c)),L(()=>s.complete()),m(c=>R({ref:e},c)))}).pipe(Qe(se))}function Un(e,{viewport$:t,target$:r,print$:o}){return S(...$(".annotate:not(.highlight)",e).map(n=>Cn(n,{target$:r,print$:o})),...$("pre:not(.mermaid) > code",e).map(n=>$n(n,{target$:r,print$:o})),...$("pre.mermaid",e).map(n=>In(n)),...$("table:not([class])",e).map(n=>jn(n)),...$("details",e).map(n=>Pn(n,{target$:r,print$:o})),...$("[data-tabs]",e).map(n=>Wn(n,{viewport$:t,target$:r})),...$("[title]",e).filter(()=>B("content.tooltips")).map(n=>lt(n,{viewport$:t})))}function za(e,{alert$:t}){return t.pipe(v(r=>S(I(!0),I(!1).pipe(Ge(2e3))).pipe(m(o=>({message:r,active:o})))))}function Dn(e,t){let r=P(".md-typeset",e);return C(()=>{let o=new g;return o.subscribe(({message:n,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=n}),za(e,t).pipe(E(n=>o.next(n)),L(()=>o.complete()),m(n=>R({ref:e},n)))})}var qa=0;function Qa(e,t){document.body.append(e);let{width:r}=ce(e);e.style.setProperty("--md-tooltip-width",`${r}px`),e.remove();let o=cr(t),n=typeof o!="undefined"?De(o):I({x:0,y:0}),i=S(et(t),kt(t)).pipe(K());return z([i,n]).pipe(m(([a,s])=>{let{x:p,y:c}=Ue(t),l=ce(t),f=t.closest("table");return f&&t.parentElement&&(p+=f.offsetLeft+t.parentElement.offsetLeft,c+=f.offsetTop+t.parentElement.offsetTop),{active:a,offset:{x:p-s.x+l.width/2-r/2,y:c-s.y+l.height+8}}}))}function Vn(e){let t=e.title;if(!t.length)return O;let r=`__tooltip_${qa++}`,o=Pt(r,"inline"),n=P(".md-typeset",o);return n.innerHTML=t,C(()=>{let i=new g;return i.subscribe({next({offset:a}){o.style.setProperty("--md-tooltip-x",`${a.x}px`),o.style.setProperty("--md-tooltip-y",`${a.y}px`)},complete(){o.style.removeProperty("--md-tooltip-x"),o.style.removeProperty("--md-tooltip-y")}}),S(i.pipe(b(({active:a})=>a)),i.pipe(_e(250),b(({active:a})=>!a))).subscribe({next({active:a}){a?(e.insertAdjacentElement("afterend",o),!
 e.setAttribute("aria-describedby",r),e.removeAttribute("title")):(o.remove(),e.removeAttribute("aria-describedby"),e.setAttribute("title",t))},complete(){o.remove(),e.removeAttribute("aria-describedby"),e.setAttribute("title",t)}}),i.pipe(Le(16,me)).subscribe(({active:a})=>{o.classList.toggle("md-tooltip--active",a)}),i.pipe(ct(125,me),b(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:a})=>a)).subscribe({next(a){a?o.style.setProperty("--md-tooltip-0",`${-a}px`):o.style.removeProperty("--md-tooltip-0")},complete(){o.style.removeProperty("--md-tooltip-0")}}),Qa(o,e).pipe(E(a=>i.next(a)),L(()=>i.complete()),m(a=>R({ref:e},a)))}).pipe(Qe(se))}function Ka({viewport$:e}){if(!B("header.autohide"))return I(!1);let t=e.pipe(m(({offset:{y:n}})=>n),Ye(2,1),m(([n,i])=>[n<i,i]),Z(0)),r=z([e,t]).pipe(b(([{offset:n},[,i]])=>Math.abs(i-n.y)>100),m(([,[n]])=>n),K()),o=Ve("search");return z([e,o]).pipe(m(([{offset:n},i])=>n.y>400&&!i),K(),v(n=>n?r:I(!1)),Q(!1))}function Nn(e,t){return C(()=>z([ge(e),Ka(t)])).pipe(m(([{height:r},o])=>({height:r,hidden:o})),K((r,o)=>r.height===o.height&&r.hidden===o.hidden),G(1))}function zn(e,{header$:t,main$:r}){return C(()=>{let o=new g,n=o.pipe(X(),ne(!0));o.pipe(Z("active"),We(t)).subscribe(([{active:a},{hidden:s}])=>{e.classList.toggle("md-header--shadow",a&&!s),e.hidden=s});let i=ue($("[title]",e)).pipe(b(()=>B("content.tooltips")),oe(a=>Vn(a)));return r.subscribe(o),t.pipe(U(n),m(a=>R({ref:e},a)),Pe(i.pipe(U(n))))})}function Ya(e,{viewport$:t,header$:r}){return mr(e,{viewport$:t,header$:r}).pipe(m(({offset:{y:o}})=>{let{height:n}=ce(e);return{active:o>=n}}),Z("active"))}function qn(e,t){return C(()=>{let r=new g;r.subscribe({next({active:n}){e.classList.toggle("md-header__title--active",n)},complete(){e.classList.remove("md-header__title--active")}});let o=fe(".md-content h1");return typeof o=="undefined"?O:Ya(o,t).pipe(E(n=>r.next(n)),L(()=>r.complete()),m(n=>R({ref:e},n)))})}function Qn(e,{viewport$:t,header$:r}){let o=r.pipe(m(({height:i})=>i),K()),n=o.pipe(v(()!
 =>ge(e).pipe(m(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),Z("bottom"))));return z([o,n,t]).pipe(m(([i,{top:a,bottom:s},{offset:{y:p},size:{height:c}}])=>(c=Math.max(0,c-Math.max(0,a-p,i)-Math.max(0,c+p-s)),{offset:a-i,height:c,active:a-i<=p})),K((i,a)=>i.offset===a.offset&&i.height===a.height&&i.active===a.active))}function Ba(e){let t=__md_get("__palette")||{index:e.findIndex(o=>matchMedia(o.getAttribute("data-md-color-media")).matches)},r=Math.max(0,Math.min(t.index,e.length-1));return I(...e).pipe(oe(o=>d(o,"change").pipe(m(()=>o))),Q(e[r]),m(o=>({index:e.indexOf(o),color:{media:o.getAttribute("data-md-color-media"),scheme:o.getAttribute("data-md-color-scheme"),primary:o.getAttribute("data-md-color-primary"),accent:o.getAttribute("data-md-color-accent")}})),G(1))}function Kn(e){let t=$("input",e),r=x("meta",{name:"theme-color"});document.head.appendChild(r);let o=x("meta",{name:"color-scheme"});document.head.appendChild(o);let n=$t("(prefers-color-scheme: light)");return C(()=>{let i=new g;return i.subscribe(a=>{if(document.body.setAttribute("data-md-color-switching",""),a.color.media==="(prefers-color-scheme)"){let s=matchMedia("(prefers-color-scheme: light)"),p=document.querySelector(s.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");a.color.scheme=p.getAttribute("data-md-color-scheme"),a.color.primary=p.getAttribute("data-md-color-primary"),a.color.accent=p.getAttribute("data-md-color-accent")}for(let[s,p]of Object.entries(a.color))document.body.setAttribute(`data-md-color-${s}`,p);for(let s=0;s<t.length;s++){let p=t[s].nextElementSibling;p instanceof HTMLElement&&(p.hidden=a.index!==s)}__md_set("__palette",a)}),d(e,"keydown").pipe(b(a=>a.key==="Enter"),ee(i,(a,s)=>s)).subscribe(({index:a})=>{a=(a+1)%t.length,t[a].click(),t[a].focus()}),i.pipe(m(()=>{let a=Se("header"),s=window.getComputedStyle(a);return o.content=s.colorScheme,s.backgroundColor.match(/\d+/g).map(p=>(+p).toString(16).padStart(2,"0")).join("")})).subscribe(a!
 =>r.content=`#${a}`),i.pipe(be(se)).subscribe(()=>{document.body.removeAttribute("data-md-color-switching")}),Ba(t).pipe(U(n.pipe(Ce(1))),st(),E(a=>i.next(a)),L(()=>i.complete()),m(a=>R({ref:e},a)))})}function Yn(e,{progress$:t}){return C(()=>{let r=new g;return r.subscribe(({value:o})=>{e.style.setProperty("--md-progress-value",`${o}`)}),t.pipe(E(o=>r.next({value:o})),L(()=>r.complete()),m(o=>({ref:e,value:o})))})}var Gr=Vt(Yr());function Ga(e){e.setAttribute("data-md-copying","");let t=e.closest("[data-copy]"),r=t?t.getAttribute("data-copy"):e.innerText;return e.removeAttribute("data-md-copying"),r.trimEnd()}function Bn({alert$:e}){Gr.default.isSupported()&&new F(t=>{new Gr.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||Ga(P(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(E(t=>{t.trigger.focus()}),m(()=>Ee("clipboard.copied"))).subscribe(e)}function Gn(e,t){return e.protocol=t.protocol,e.hostname=t.hostname,e}function Ja(e,t){let r=new Map;for(let o of $("url",e)){let n=P("loc",o),i=[Gn(new URL(n.textContent),t)];r.set(`${i[0]}`,i);for(let a of $("[rel=alternate]",o)){let s=a.getAttribute("href");s!=null&&i.push(Gn(new URL(s),t))}}return r}function ur(e){return mn(new URL("sitemap.xml",e)).pipe(m(t=>Ja(t,new URL(e))),ve(()=>I(new Map)))}function Xa(e,t){if(!(e.target instanceof Element))return O;let r=e.target.closest("a");if(r===null)return O;if(r.target||e.metaKey||e.ctrlKey)return O;let o=new URL(r.href);return o.search=o.hash="",t.has(`${o}`)?(e.preventDefault(),I(new URL(r.href))):O}function Jn(e){let t=new Map;for(let r of $(":scope > *",e.head))t.set(r.outerHTML,r);return t}function Xn(e){for(let t of $("[href], [src]",e))for(let r of["href","src"]){let o=t.getAttribute(r);if(o&&!/^(?:[a-z]+:)?\/\//i.test(o)){t[r]=t[r];break}}return I(e)}function Za(e){for(let o of["[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]!
 ","[data-md-component=skip]",...B("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let n=fe(o),i=fe(o,e);typeof n!="undefined"&&typeof i!="undefined"&&n.replaceWith(i)}let t=Jn(document);for(let[o,n]of Jn(e))t.has(o)?t.delete(o):document.head.appendChild(n);for(let o of t.values()){let n=o.getAttribute("name");n!=="theme-color"&&n!=="color-scheme"&&o.remove()}let r=Se("container");return je($("script",r)).pipe(v(o=>{let n=e.createElement("script");if(o.src){for(let i of o.getAttributeNames())n.setAttribute(i,o.getAttribute(i));return o.replaceWith(n),new F(i=>{n.onload=()=>i.complete()})}else return n.textContent=o.textContent,o.replaceWith(n),O}),X(),ne(document))}function Zn({location$:e,viewport$:t,progress$:r}){let o=ye();if(location.protocol==="file:")return O;let n=ur(o.base);I(document).subscribe(Xn);let i=d(document.body,"click").pipe(We(n),v(([p,c])=>Xa(p,c)),pe()),a=d(window,"popstate").pipe(m(xe),pe());i.pipe(ee(t)).subscribe(([p,{offset:c}])=>{history.replaceState(c,""),history.pushState(null,"",p)}),S(i,a).subscribe(e);let s=e.pipe(Z("pathname"),v(p=>ln(p,{progress$:r}).pipe(ve(()=>(pt(p,!0),O)))),v(Xn),v(Za),pe());return S(s.pipe(ee(e,(p,c)=>c)),s.pipe(v(()=>e),Z("pathname"),v(()=>e),Z("hash")),e.pipe(K((p,c)=>p.pathname===c.pathname&&p.hash===c.hash),v(()=>i),E(()=>history.back()))).subscribe(p=>{var c,l;history.state!==null||!p.hash?window.scrollTo(0,(l=(c=history.state)==null?void 0:c.y)!=null?l:0):(history.scrollRestoration="auto",sn(p.hash),history.scrollRestoration="manual")}),e.subscribe(()=>{history.scrollRestoration="manual"}),d(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}),t.pipe(Z("offset"),_e(100)).subscribe(({offset:p})=>{history.replaceState(p,"")}),s}var ri=Vt(ti());function oi(e){let t=e.separator.split("|").map(n=>n.replace(/(\(\?[!=<][^)]+\))/g,"").length===0?"\uFFFD":n).join("|"),r=new RegExp(t,"img"),o=(n,i,a)=>`${i}<mark data-md-highlight>${a}</mark>`;return n=>{n=n.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator}|)($!
 {n.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return a=>(0,ri.default)(a).replace(i,o).replace(/<\/mark>(\s+)<mark[^>]*>/img,"$1")}}function It(e){return e.type===1}function dr(e){return e.type===3}function ni(e,t){let r=vn(e);return S(I(location.protocol!=="file:"),Ve("search")).pipe(Ae(o=>o),v(()=>t)).subscribe(({config:o,docs:n})=>r.next({type:0,data:{config:o,docs:n,options:{suggest:B("search.suggest")}}})),r}function ii({document$:e}){let t=ye(),r=Ne(new URL("../versions.json",t.base)).pipe(ve(()=>O)),o=r.pipe(m(n=>{let[,i]=t.base.match(/([^/]+)\/?$/);return n.find(({version:a,aliases:s})=>a===i||s.includes(i))||n[0]}));r.pipe(m(n=>new Map(n.map(i=>[`${new URL(`../${i.version}/`,t.base)}`,i]))),v(n=>d(document.body,"click").pipe(b(i=>!i.metaKey&&!i.ctrlKey),ee(o),v(([i,a])=>{if(i.target instanceof Element){let s=i.target.closest("a");if(s&&!s.target&&n.has(s.href)){let p=s.href;return!i.target.closest(".md-version")&&n.get(p)===a?O:(i.preventDefault(),I(p))}}return O}),v(i=>ur(new URL(i)).pipe(m(a=>{let p=xe().href.replace(t.base,i);return a.has(p.split("#")[0])?new URL(p):new URL(i)})))))).subscribe(n=>pt(n,!0)),z([r,o]).subscribe(([n,i])=>{P(".md-header__topic").appendChild(Mn(n,i))}),e.pipe(v(()=>o)).subscribe(n=>{var a;let i=__md_get("__outdated",sessionStorage);if(i===null){i=!0;let s=((a=t.version)==null?void 0:a.default)||"latest";Array.isArray(s)||(s=[s]);e:for(let p of s)for(let c of n.aliases.concat(n.version))if(new RegExp(p,"i").test(c)){i=!1;break e}__md_set("__outdated",i,sessionStorage)}if(i)for(let s of ae("outdated"))s.hidden=!1})}function ns(e,{worker$:t}){let{searchParams:r}=xe();r.has("q")&&(Je("search",!0),e.value=r.get("q"),e.focus(),Ve("search").pipe(Ae(i=>!i)).subscribe(()=>{let i=xe();i.searchParams.delete("q"),history.replaceState({},"",`${i}`)}));let o=et(e),n=S(t.pipe(Ae(It)),d(e,"keyup"),o).pipe(m(()=>e.value),K());return z([n,o]).pipe(m(([i,a])=>({value:i,focus:a})),G(1))}function ai(e,{worker$:t}){let r=new g,o=r.pipe(X(),ne(!0));z([t.pipe(Ae(It)),r],(i,a)!
 =>a).pipe(Z("value")).subscribe(({value:i})=>t.next({type:2,data:i})),r.pipe(Z("focus")).subscribe(({focus:i})=>{i&&Je("search",i)}),d(e.form,"reset").pipe(U(o)).subscribe(()=>e.focus());let n=P("header [for=__search]");return d(n,"click").subscribe(()=>e.focus()),ns(e,{worker$:t}).pipe(E(i=>r.next(i)),L(()=>r.complete()),m(i=>R({ref:e},i)),G(1))}function si(e,{worker$:t,query$:r}){let o=new g,n=tn(e.parentElement).pipe(b(Boolean)),i=e.parentElement,a=P(":scope > :first-child",e),s=P(":scope > :last-child",e);Ve("search").subscribe(l=>s.setAttribute("role",l?"list":"presentation")),o.pipe(ee(r),Ur(t.pipe(Ae(It)))).subscribe(([{items:l},{value:f}])=>{switch(l.length){case 0:a.textContent=f.length?Ee("search.result.none"):Ee("search.result.placeholder");break;case 1:a.textContent=Ee("search.result.one");break;default:let u=sr(l.length);a.textContent=Ee("search.result.other",u)}});let p=o.pipe(E(()=>s.innerHTML=""),v(({items:l})=>S(I(...l.slice(0,10)),I(...l.slice(10)).pipe(Ye(4),Vr(n),v(([f])=>f)))),m(Tn),pe());return p.subscribe(l=>s.appendChild(l)),p.pipe(oe(l=>{let f=fe("details",l);return typeof f=="undefined"?O:d(f,"toggle").pipe(U(o),m(()=>f))})).subscribe(l=>{l.open===!1&&l.offsetTop<=i.scrollTop&&i.scrollTo({top:l.offsetTop})}),t.pipe(b(dr),m(({data:l})=>l)).pipe(E(l=>o.next(l)),L(()=>o.complete()),m(l=>R({ref:e},l)))}function is(e,{query$:t}){return t.pipe(m(({value:r})=>{let o=xe();return o.hash="",r=r.replace(/\s+/g,"+").replace(/&/g,"%26").replace(/=/g,"%3D"),o.search=`q=${r}`,{url:o}}))}function ci(e,t){let r=new g,o=r.pipe(X(),ne(!0));return r.subscribe(({url:n})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${n}`}),d(e,"click").pipe(U(o)).subscribe(n=>n.preventDefault()),is(e,t).pipe(E(n=>r.next(n)),L(()=>r.complete()),m(n=>R({ref:e},n)))}function pi(e,{worker$:t,keyboard$:r}){let o=new g,n=Se("search-query"),i=S(d(n,"keydown"),d(n,"focus")).pipe(be(se),m(()=>n.value),K());return o.pipe(We(i),m(([{suggest:s},p])=>{let c=p.split(/([\s-]+)/);if(s!=null&&s.length&&c[c.length-1]){let l=s[s.leng!
 th-1];l.startsWith(c[c.length-1])&&(c[c.length-1]=l)}else c.length=0;return c})).subscribe(s=>e.innerHTML=s.join("").replace(/\s/g," ")),r.pipe(b(({mode:s})=>s==="search")).subscribe(s=>{switch(s.type){case"ArrowRight":e.innerText.length&&n.selectionStart===n.value.length&&(n.value=e.innerText);break}}),t.pipe(b(dr),m(({data:s})=>s)).pipe(E(s=>o.next(s)),L(()=>o.complete()),m(()=>({ref:e})))}function li(e,{index$:t,keyboard$:r}){let o=ye();try{let n=ni(o.search,t),i=Se("search-query",e),a=Se("search-result",e);d(e,"click").pipe(b(({target:p})=>p instanceof Element&&!!p.closest("a"))).subscribe(()=>Je("search",!1)),r.pipe(b(({mode:p})=>p==="search")).subscribe(p=>{let c=Re();switch(p.type){case"Enter":if(c===i){let l=new Map;for(let f of $(":first-child [href]",a)){let u=f.firstElementChild;l.set(f,parseFloat(u.getAttribute("data-md-score")))}if(l.size){let[[f]]=[...l].sort(([,u],[,h])=>h-u);f.click()}p.claim()}break;case"Escape":case"Tab":Je("search",!1),i.blur();break;case"ArrowUp":case"ArrowDown":if(typeof c=="undefined")i.focus();else{let l=[i,...$(":not(details) > [href], summary, details[open] [href]",a)],f=Math.max(0,(Math.max(0,l.indexOf(c))+l.length+(p.type==="ArrowUp"?-1:1))%l.length);l[f].focus()}p.claim();break;default:i!==Re()&&i.focus()}}),r.pipe(b(({mode:p})=>p==="global")).subscribe(p=>{switch(p.type){case"f":case"s":case"/":i.focus(),i.select(),p.claim();break}});let s=ai(i,{worker$:n});return S(s,si(a,{worker$:n,query$:s})).pipe(Pe(...ae("search-share",e).map(p=>ci(p,{query$:s})),...ae("search-suggest",e).map(p=>pi(p,{worker$:n,keyboard$:r}))))}catch(n){return e.hidden=!0,Ke}}function mi(e,{index$:t,location$:r}){return z([t,r.pipe(Q(xe()),b(o=>!!o.searchParams.get("h")))]).pipe(m(([o,n])=>oi(o.config)(n.searchParams.get("h"))),m(o=>{var a;let n=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let s=i.nextNode();s;s=i.nextNode())if((a=s.parentElement)!=null&&a.offsetHeight){let p=s.textContent,c=o(p);c.length>p.length&&n.set(s,c)}for(let[s,p]of n){let{childNodes:c}=x("span"!
 ,null,p);s.replaceWith(...Array.from(c))}return{ref:e,nodes:n}}))}function as(e,{viewport$:t,main$:r}){let o=e.closest(".md-grid"),n=o.offsetTop-o.parentElement.offsetTop;return z([r,t]).pipe(m(([{offset:i,height:a},{offset:{y:s}}])=>(a=a+Math.min(n,Math.max(0,s-i))-n,{height:a,locked:s>=i+n})),K((i,a)=>i.height===a.height&&i.locked===a.locked))}function Jr(e,o){var n=o,{header$:t}=n,r=io(n,["header$"]);let i=P(".md-sidebar__scrollwrap",e),{y:a}=Ue(i);return C(()=>{let s=new g,p=s.pipe(X(),ne(!0)),c=s.pipe(Le(0,me));return c.pipe(ee(t)).subscribe({next([{height:l},{height:f}]){i.style.height=`${l-2*a}px`,e.style.top=`${f}px`},complete(){i.style.height="",e.style.top=""}}),c.pipe(Ae()).subscribe(()=>{for(let l of $(".md-nav__link--active[href]",e)){if(!l.clientHeight)continue;let f=l.closest(".md-sidebar__scrollwrap");if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:h}=ce(f);f.scrollTo({top:u-h/2})}}}),ue($("label[tabindex]",e)).pipe(oe(l=>d(l,"click").pipe(be(se),m(()=>l),U(p)))).subscribe(l=>{let f=P(`[id="${l.htmlFor}"]`);P(`[aria-labelledby="${l.id}"]`).setAttribute("aria-expanded",`${f.checked}`)}),as(e,r).pipe(E(l=>s.next(l)),L(()=>s.complete()),m(l=>R({ref:e},l)))})}function fi(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return Ct(Ne(`${r}/releases/latest`).pipe(ve(()=>O),m(o=>({version:o.tag_name})),Be({})),Ne(r).pipe(ve(()=>O),m(o=>({stars:o.stargazers_count,forks:o.forks_count})),Be({}))).pipe(m(([o,n])=>R(R({},o),n)))}else{let r=`https://api.github.com/users/${e}`;return Ne(r).pipe(m(o=>({repositories:o.public_repos})),Be({}))}}function ui(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return Ne(r).pipe(ve(()=>O),m(({star_count:o,forks_count:n})=>({stars:o,forks:n})),Be({}))}function di(e){let t=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);if(t){let[,r,o]=t;return fi(r,o)}if(t=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i),t){let[,r,o]=t;return ui(r,o)}return O}var ss;function cs(e){return ss||(ss=C(()=>{let t=__md_get("__source",ses!
 sionStorage);if(t)return I(t);if(ae("consent").length){let o=__md_get("__consent");if(!(o&&o.github))return O}return di(e.href).pipe(E(o=>__md_set("__source",o,sessionStorage)))}).pipe(ve(()=>O),b(t=>Object.keys(t).length>0),m(t=>({facts:t})),G(1)))}function hi(e){let t=P(":scope > :last-child",e);return C(()=>{let r=new g;return r.subscribe(({facts:o})=>{t.appendChild(Sn(o)),t.classList.add("md-source__repository--active")}),cs(e).pipe(E(o=>r.next(o)),L(()=>r.complete()),m(o=>R({ref:e},o)))})}function ps(e,{viewport$:t,header$:r}){return ge(document.body).pipe(v(()=>mr(e,{header$:r,viewport$:t})),m(({offset:{y:o}})=>({hidden:o>=10})),Z("hidden"))}function bi(e,t){return C(()=>{let r=new g;return r.subscribe({next({hidden:o}){e.hidden=o},complete(){e.hidden=!1}}),(B("navigation.tabs.sticky")?I({hidden:!1}):ps(e,t)).pipe(E(o=>r.next(o)),L(()=>r.complete()),m(o=>R({ref:e},o)))})}function ls(e,{viewport$:t,header$:r}){let o=new Map,n=$(".md-nav__link",e);for(let s of n){let p=decodeURIComponent(s.hash.substring(1)),c=fe(`[id="${p}"]`);typeof c!="undefined"&&o.set(s,c)}let i=r.pipe(Z("height"),m(({height:s})=>{let p=Se("main"),c=P(":scope > :first-child",p);return s+.8*(c.offsetTop-p.offsetTop)}),pe());return ge(document.body).pipe(Z("height"),v(s=>C(()=>{let p=[];return I([...o].reduce((c,[l,f])=>{for(;p.length&&o.get(p[p.length-1]).tagName>=f.tagName;)p.pop();let u=f.offsetTop;for(;!u&&f.parentElement;)f=f.parentElement,u=f.offsetTop;let h=f.offsetParent;for(;h;h=h.offsetParent)u+=h.offsetTop;return c.set([...p=[...p,l]].reverse(),u)},new Map))}).pipe(m(p=>new Map([...p].sort(([,c],[,l])=>c-l))),We(i),v(([p,c])=>t.pipe(jr(([l,f],{offset:{y:u},size:h})=>{let w=u+h.height>=Math.floor(s.height);for(;f.length;){let[,A]=f[0];if(A-c<u||w)l=[...l,f.shift()];else break}for(;l.length;){let[,A]=l[l.length-1];if(A-c>=u&&!w)f=[l.pop(),...f];else break}return[l,f]},[[],[...p]]),K((l,f)=>l[0]===f[0]&&l[1]===f[1])))))).pipe(m(([s,p])=>({prev:s.map(([c])=>c),next:p.map(([c])=>c)})),Q({prev:[],next:[]}),Ye(2,1),m(([s,p])=>s.prev.l!
 ength<p.prev.length?{prev:p.prev.slice(Math.max(0,s.prev.length-1),p.prev.length),next:[]}:{prev:p.prev.slice(-1),next:p.next.slice(0,p.next.length-s.next.length)}))}function vi(e,{viewport$:t,header$:r,main$:o,target$:n}){return C(()=>{let i=new g,a=i.pipe(X(),ne(!0));if(i.subscribe(({prev:s,next:p})=>{for(let[c]of p)c.classList.remove("md-nav__link--passed"),c.classList.remove("md-nav__link--active");for(let[c,[l]]of s.entries())l.classList.add("md-nav__link--passed"),l.classList.toggle("md-nav__link--active",c===s.length-1)}),B("toc.follow")){let s=S(t.pipe(_e(1),m(()=>{})),t.pipe(_e(250),m(()=>"smooth")));i.pipe(b(({prev:p})=>p.length>0),We(o.pipe(be(se))),ee(s)).subscribe(([[{prev:p}],c])=>{let[l]=p[p.length-1];if(l.offsetHeight){let f=cr(l);if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:h}=ce(f);f.scrollTo({top:u-h/2,behavior:c})}}})}return B("navigation.tracking")&&t.pipe(U(a),Z("offset"),_e(250),Ce(1),U(n.pipe(Ce(1))),st({delay:250}),ee(i)).subscribe(([,{prev:s}])=>{let p=xe(),c=s[s.length-1];if(c&&c.length){let[l]=c,{hash:f}=new URL(l.href);p.hash!==f&&(p.hash=f,history.replaceState({},"",`${p}`))}else p.hash="",history.replaceState({},"",`${p}`)}),ls(e,{viewport$:t,header$:r}).pipe(E(s=>i.next(s)),L(()=>i.complete()),m(s=>R({ref:e},s)))})}function ms(e,{viewport$:t,main$:r,target$:o}){let n=t.pipe(m(({offset:{y:a}})=>a),Ye(2,1),m(([a,s])=>a>s&&s>0),K()),i=r.pipe(m(({active:a})=>a));return z([i,n]).pipe(m(([a,s])=>!(a&&s)),K(),U(o.pipe(Ce(1))),ne(!0),st({delay:250}),m(a=>({hidden:a})))}function gi(e,{viewport$:t,header$:r,main$:o,target$:n}){let i=new g,a=i.pipe(X(),ne(!0));return i.subscribe({next({hidden:s}){e.hidden=s,s?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(U(a),Z("height")).subscribe(({height:s})=>{e.style.top=`${s+16}px`}),d(e,"click").subscribe(s=>{s.preventDefault(),window.scrollTo({top:0})}),ms(e,{viewport$:t,main$:o,target$:n}).pipe(E(s=>i.next(s)),L(()=>i.complete(!
 )),m(s=>R({ref:e},s)))}function xi({document$:e,viewport$:t}){e.pipe(v(()=>$(".md-ellipsis")),oe(r=>tt(r).pipe(U(e.pipe(Ce(1))),b(o=>o),m(()=>r),Te(1))),b(r=>r.offsetWidth<r.scrollWidth),oe(r=>{let o=r.innerText,n=r.closest("a")||r;return n.title=o,B("content.tooltips")?lt(n,{viewport$:t}).pipe(U(e.pipe(Ce(1))),L(()=>n.removeAttribute("title"))):O})).subscribe(),B("content.tooltips")&&e.pipe(v(()=>$(".md-status")),oe(r=>lt(r,{viewport$:t}))).subscribe()}function yi({document$:e,tablet$:t}){e.pipe(v(()=>$(".md-toggle--indeterminate")),E(r=>{r.indeterminate=!0,r.checked=!1}),oe(r=>d(r,"change").pipe(Dr(()=>r.classList.contains("md-toggle--indeterminate")),m(()=>r))),ee(t)).subscribe(([r,o])=>{r.classList.remove("md-toggle--indeterminate"),o&&(r.checked=!1)})}function fs(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function Ei({document$:e}){e.pipe(v(()=>$("[data-md-scrollfix]")),E(t=>t.removeAttribute("data-md-scrollfix")),b(fs),oe(t=>d(t,"touchstart").pipe(m(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function wi({viewport$:e,tablet$:t}){z([Ve("search"),t]).pipe(m(([r,o])=>r&&!o),v(r=>I(r).pipe(Ge(r?400:100))),ee(e)).subscribe(([r,{offset:{y:o}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${o}px`;else{let n=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",n&&window.scrollTo(0,n)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(!
 this);for(let r=e.length-1;r>=0;r--){let o=e[r];typeof o=="string"?o=document.createTextNode(o):o.parentNode&&o.parentNode.removeChild(o),r?t.insertBefore(this.previousSibling,o):t.replaceChild(o,this)}}}));function us(){return location.protocol==="file:"?wt(`${new URL("search/search_index.js",Xr.base)}`).pipe(m(()=>__index),G(1)):Ne(new URL("search/search_index.json",Xr.base))}document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var ot=Yo(),jt=nn(),Ot=cn(jt),Zr=on(),Oe=bn(),hr=$t("(min-width: 960px)"),Si=$t("(min-width: 1220px)"),Oi=pn(),Xr=ye(),Mi=document.forms.namedItem("search")?us():Ke,eo=new g;Bn({alert$:eo});var to=new g;B("navigation.instant")&&Zn({location$:jt,viewport$:Oe,progress$:to}).subscribe(ot);var Ti;((Ti=Xr.version)==null?void 0:Ti.provider)==="mike"&&ii({document$:ot});S(jt,Ot).pipe(Ge(125)).subscribe(()=>{Je("drawer",!1),Je("search",!1)});Zr.pipe(b(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=fe("link[rel=prev]");typeof t!="undefined"&&pt(t);break;case"n":case".":let r=fe("link[rel=next]");typeof r!="undefined"&&pt(r);break;case"Enter":let o=Re();o instanceof HTMLLabelElement&&o.click()}});xi({viewport$:Oe,document$:ot});yi({document$:ot,tablet$:hr});Ei({document$:ot});wi({viewport$:Oe,tablet$:hr});var rt=Nn(Se("header"),{viewport$:Oe}),Ft=ot.pipe(m(()=>Se("main")),v(e=>Qn(e,{viewport$:Oe,header$:rt})),G(1)),ds=S(...ae("consent").map(e=>xn(e,{target$:Ot})),...ae("dialog").map(e=>Dn(e,{alert$:eo})),...ae("header").map(e=>zn(e,{viewport$:Oe,header$:rt,main$:Ft})),...ae("palette").map(e=>Kn(e)),...ae("progress").map(e=>Yn(e,{progress$:to})),...ae("search").map(e=>li(e,{index$:Mi,keyboard$:Zr})),...ae("source").map(e=>hi(e))),hs=C(()=>S(...ae("announce").map(e=>gn(e)),...ae("content").map(e=>Un(e,{viewport$:Oe,target$:Ot,print$:Oi})),...ae("content").map(e=>B("search.highlight")?mi(e,{index$:Mi,location$:jt}):O),...ae("header-title").map(e=>qn(e,{viewport$:Oe,header$:rt})),...ae("sidebar").map(e=>e.getAttribute("data-md-!
 type")==="navigation"?Nr(Si,()=>Jr(e,{viewport$:Oe,header$:rt,main$:Ft})):Nr(hr,()=>Jr(e,{viewport$:Oe,header$:rt,main$:Ft}))),...ae("tabs").map(e=>bi(e,{viewport$:Oe,header$:rt})),...ae("toc").map(e=>vi(e,{viewport$:Oe,header$:rt,main$:Ft,target$:Ot})),...ae("top").map(e=>gi(e,{viewport$:Oe,header$:rt,main$:Ft,target$:Ot})))),Li=ot.pipe(v(()=>hs),Pe(ds),G(1));Li.subscribe();window.document$=ot;window.location$=jt;window.target$=Ot;window.keyboard$=Zr;window.viewport$=Oe;window.tablet$=hr;window.screen$=Si;window.print$=Oi;window.alert$=eo;window.progress$=to;window.component$=Li;})();
+//# sourceMappingURL=bundle.fe8b6f2b.min.js.map
+

Added: trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/bundle.fe8b6f2b.min.js.map
===================================================================
--- trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/bundle.fe8b6f2b.min.js.map	                        (rev 0)
+++ trunk/Build/source/libs/freetype2/freetype-src/docs/reference/assets/javascripts/bundle.fe8b6f2b.min.js.map	2024-08-13 00:41:00 UTC (rev 72022)
@@ -0,0 +1,7 @@
+{
+  "version": 3,
+  "sources": ["node_modules/focus-visible/dist/focus-visible.js", "node_modules/clipboard/dist/clipboard.js", "node_modules/escape-html/index.js", "src/templates/assets/javascripts/bundle.ts", "node_modules/rxjs/node_modules/tslib/tslib.es6.js", "node_modules/rxjs/src/internal/util/isFunction.ts", "node_modules/rxjs/src/internal/util/createErrorClass.ts", "node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "node_modules/rxjs/src/internal/util/arrRemove.ts", "node_modules/rxjs/src/internal/Subscription.ts", "node_modules/rxjs/src/internal/config.ts", "node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts", "node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "node_modules/rxjs/src/internal/util/noop.ts", "node_modules/rxjs/src/internal/NotificationFactories.ts", "node_modules/rxjs/src/internal/util/errorContext.ts", "node_modules/rxjs/src/internal/Subscriber.ts", "node_modules/rxjs/src/internal/symbol/observable.ts", "node_modules/rxjs/src/internal/util/identity.ts", "node_modules/rxjs/src/internal/util/pipe.ts", "node_modules/rxjs/src/internal/Observable.ts", "node_modules/rxjs/src/internal/util/lift.ts", "node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts", "node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts", "node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "node_modules/rxjs/src/internal/Subject.ts", "node_modules/rxjs/src/internal/BehaviorSubject.ts", "node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "node_modules/rxjs/src/internal/ReplaySubject.ts", "node_modules/rxjs/src/internal/scheduler/Action.ts", "node_modules/rxjs/src/internal/scheduler/intervalProvider.ts", "node_modules/rxjs/src/internal/scheduler/AsyncAction.ts", "node_modules/rxjs/src/internal/Scheduler.ts", "node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts", "node_modules/rxjs/src/internal/scheduler/async.ts", "node_modules/rxjs/src/internal/scheduler/QueueAction.ts", "node_modules/rxjs/src/internal/scheduler/QueueScheduler.ts", "node_mod!
 ules/rxjs/src/internal/scheduler/queue.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts", "node_modules/rxjs/src/internal/scheduler/animationFrame.ts", "node_modules/rxjs/src/internal/observable/empty.ts", "node_modules/rxjs/src/internal/util/isScheduler.ts", "node_modules/rxjs/src/internal/util/args.ts", "node_modules/rxjs/src/internal/util/isArrayLike.ts", "node_modules/rxjs/src/internal/util/isPromise.ts", "node_modules/rxjs/src/internal/util/isInteropObservable.ts", "node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "node_modules/rxjs/src/internal/symbol/iterator.ts", "node_modules/rxjs/src/internal/util/isIterable.ts", "node_modules/rxjs/src/internal/util/isReadableStreamLike.ts", "node_modules/rxjs/src/internal/observable/innerFrom.ts", "node_modules/rxjs/src/internal/util/executeSchedule.ts", "node_modules/rxjs/src/internal/operators/observeOn.ts", "node_modules/rxjs/src/internal/operators/subscribeOn.ts", "node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "node_modules/rxjs/src/internal/scheduled/scheduled.ts", "node_modules/rxjs/src/internal/observable/from.ts", "node_modules/rxjs/src/internal/observable/of.ts", "node_modules/rxjs/src/internal/observable/throwError.ts", "node_modules/rxjs/src/internal/util/EmptyError.ts", "node_modules/rxjs/src/internal/util/isDate.ts", "node_modules/rxjs/src/internal/operators/map.ts", "node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts", "node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts", "node_modules/rxjs/src/internal/util/createObject.ts", "node_mo!
 dules/rxjs/src/internal/observable/combineLatest.ts", "node_modules/rxjs/src/internal/operators/mergeInternals.ts", "node_modules/rxjs/src/internal/operators/mergeMap.ts", "node_modules/rxjs/src/internal/operators/mergeAll.ts", "node_modules/rxjs/src/internal/operators/concatAll.ts", "node_modules/rxjs/src/internal/observable/concat.ts", "node_modules/rxjs/src/internal/observable/defer.ts", "node_modules/rxjs/src/internal/observable/fromEvent.ts", "node_modules/rxjs/src/internal/observable/fromEventPattern.ts", "node_modules/rxjs/src/internal/observable/timer.ts", "node_modules/rxjs/src/internal/observable/merge.ts", "node_modules/rxjs/src/internal/observable/never.ts", "node_modules/rxjs/src/internal/util/argsOrArgArray.ts", "node_modules/rxjs/src/internal/operators/filter.ts", "node_modules/rxjs/src/internal/observable/zip.ts", "node_modules/rxjs/src/internal/operators/audit.ts", "node_modules/rxjs/src/internal/operators/auditTime.ts", "node_modules/rxjs/src/internal/operators/bufferCount.ts", "node_modules/rxjs/src/internal/operators/catchError.ts", "node_modules/rxjs/src/internal/operators/scanInternals.ts", "node_modules/rxjs/src/internal/operators/combineLatest.ts", "node_modules/rxjs/src/internal/operators/combineLatestWith.ts", "node_modules/rxjs/src/internal/operators/debounce.ts", "node_modules/rxjs/src/internal/operators/debounceTime.ts", "node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts", "node_modules/rxjs/src/internal/operators/take.ts", "node_modules/rxjs/src/internal/operators/ignoreElements.ts", "node_modules/rxjs/src/internal/operators/mapTo.ts", "node_modules/rxjs/src/internal/operators/delayWhen.ts", "node_modules/rxjs/src/internal/operators/delay.ts", "node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts", "node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts", "node_modules/rxjs/src/internal/operators/throwIfEmpty.ts", "node_modules/rxjs/src/internal/operators/endWith.ts", "node_modules/rxjs/src/internal/operators/finalize.ts", "node_modules/rxjs/src/int!
 ernal/operators/first.ts", "node_modules/rxjs/src/internal/operators/takeLast.ts", "node_modules/rxjs/src/internal/operators/merge.ts", "node_modules/rxjs/src/internal/operators/mergeWith.ts", "node_modules/rxjs/src/internal/operators/repeat.ts", "node_modules/rxjs/src/internal/operators/scan.ts", "node_modules/rxjs/src/internal/operators/share.ts", "node_modules/rxjs/src/internal/operators/shareReplay.ts", "node_modules/rxjs/src/internal/operators/skip.ts", "node_modules/rxjs/src/internal/operators/skipUntil.ts", "node_modules/rxjs/src/internal/operators/startWith.ts", "node_modules/rxjs/src/internal/operators/switchMap.ts", "node_modules/rxjs/src/internal/operators/takeUntil.ts", "node_modules/rxjs/src/internal/operators/takeWhile.ts", "node_modules/rxjs/src/internal/operators/tap.ts", "node_modules/rxjs/src/internal/operators/throttle.ts", "node_modules/rxjs/src/internal/operators/throttleTime.ts", "node_modules/rxjs/src/internal/operators/withLatestFrom.ts", "node_modules/rxjs/src/internal/operators/zip.ts", "node_modules/rxjs/src/internal/operators/zipWith.ts", "src/templates/assets/javascripts/browser/document/index.ts", "src/templates/assets/javascripts/browser/element/_/index.ts", "src/templates/assets/javascripts/browser/element/focus/index.ts", "src/templates/assets/javascripts/browser/element/hover/index.ts", "src/templates/assets/javascripts/utilities/h/index.ts", "src/templates/assets/javascripts/utilities/round/index.ts", "src/templates/assets/javascripts/browser/script/index.ts", "src/templates/assets/javascripts/browser/element/size/_/index.ts", "src/templates/assets/javascripts/browser/element/size/content/index.ts", "src/templates/assets/javascripts/browser/element/offset/_/index.ts", "src/templates/assets/javascripts/browser/element/offset/content/index.ts", "src/templates/assets/javascripts/browser/element/visibility/index.ts", "src/templates/assets/javascripts/browser/toggle/index.ts", "src/templates/assets/javascripts/browser/keyboard/index.ts", "src/templates/assets/javascripts/browser/loc!
 ation/_/index.ts", "src/templates/assets/javascripts/browser/location/hash/index.ts", "src/templates/assets/javascripts/browser/media/index.ts", "src/templates/assets/javascripts/browser/request/index.ts", "src/templates/assets/javascripts/browser/viewport/offset/index.ts", "src/templates/assets/javascripts/browser/viewport/size/index.ts", "src/templates/assets/javascripts/browser/viewport/_/index.ts", "src/templates/assets/javascripts/browser/viewport/at/index.ts", "src/templates/assets/javascripts/browser/worker/index.ts", "src/templates/assets/javascripts/_/index.ts", "src/templates/assets/javascripts/components/_/index.ts", "src/templates/assets/javascripts/components/announce/index.ts", "src/templates/assets/javascripts/components/consent/index.ts", "src/templates/assets/javascripts/templates/tooltip/index.tsx", "src/templates/assets/javascripts/templates/annotation/index.tsx", "src/templates/assets/javascripts/templates/clipboard/index.tsx", "src/templates/assets/javascripts/templates/search/index.tsx", "src/templates/assets/javascripts/templates/source/index.tsx", "src/templates/assets/javascripts/templates/tabbed/index.tsx", "src/templates/assets/javascripts/templates/table/index.tsx", "src/templates/assets/javascripts/templates/version/index.tsx", "src/templates/assets/javascripts/components/tooltip2/index.ts", "src/templates/assets/javascripts/components/content/annotation/_/index.ts", "src/templates/assets/javascripts/components/content/annotation/list/index.ts", "src/templates/assets/javascripts/components/content/annotation/block/index.ts", "src/templates/assets/javascripts/components/content/code/_/index.ts", "src/templates/assets/javascripts/components/content/details/index.ts", "src/templates/assets/javascripts/components/content/mermaid/index.css", "src/templates/assets/javascripts/components/content/mermaid/index.ts", "src/templates/assets/javascripts/components/content/table/index.ts", "src/templates/assets/javascripts/components/content/tabs/index.ts", "src/templates/assets/javascripts/compon!
 ents/content/_/index.ts", "src/templates/assets/javascripts/components/dialog/index.ts", "src/templates/assets/javascripts/components/tooltip/index.ts", "src/templates/assets/javascripts/components/header/_/index.ts", "src/templates/assets/javascripts/components/header/title/index.ts", "src/templates/assets/javascripts/components/main/index.ts", "src/templates/assets/javascripts/components/palette/index.ts", "src/templates/assets/javascripts/components/progress/index.ts", "src/templates/assets/javascripts/integrations/clipboard/index.ts", "src/templates/assets/javascripts/integrations/sitemap/index.ts", "src/templates/assets/javascripts/integrations/instant/index.ts", "src/templates/assets/javascripts/integrations/search/highlighter/index.ts", "src/templates/assets/javascripts/integrations/search/worker/message/index.ts", "src/templates/assets/javascripts/integrations/search/worker/_/index.ts", "src/templates/assets/javascripts/integrations/version/index.ts", "src/templates/assets/javascripts/components/search/query/index.ts", "src/templates/assets/javascripts/components/search/result/index.ts", "src/templates/assets/javascripts/components/search/share/index.ts", "src/templates/assets/javascripts/components/search/suggest/index.ts", "src/templates/assets/javascripts/components/search/_/index.ts", "src/templates/assets/javascripts/components/search/highlight/index.ts", "src/templates/assets/javascripts/components/sidebar/index.ts", "src/templates/assets/javascripts/components/source/facts/github/index.ts", "src/templates/assets/javascripts/components/source/facts/gitlab/index.ts", "src/templates/assets/javascripts/components/source/facts/_/index.ts", "src/templates/assets/javascripts/components/source/_/index.ts", "src/templates/assets/javascripts/components/tabs/index.ts", "src/templates/assets/javascripts/components/toc/index.ts", "src/templates/assets/javascripts/components/top/index.ts", "src/templates/assets/javascripts/patches/ellipsis/index.ts", "src/templates/assets/javascripts/patches/indeterminate/index!
 .ts", "src/templates/assets/javascripts/patches/scrollfix/index.ts", "src/templates/assets/javascripts/patches/scrolllock/index.ts", "src/templates/assets/javascripts/polyfills/index.ts"],

@@ Diff output truncated at 1234567 characters. @@


More information about the tex-live-commits mailing list.