{"version":3,"sources":["jsdelivr-header.js","/npm/hyparquet-compressors@1.1.2/src/brotli.bitreader.js","/npm/hyparquet-compressors@1.1.2/src/brotli.huffman.js","/npm/hyparquet-compressors@1.1.2/src/brotli.prefix.js","/npm/hyparquet-compressors@1.1.2/src/gzip.huffman.js","/npm/hyparquet-compressors@1.1.2/src/brotli.blocks.js","/npm/hyparquet-compressors@1.1.2/src/brotli.context.js","/npm/hyparquet-compressors@1.1.2/src/brotli.contextmap.js","/npm/hyparquet-compressors@1.1.2/src/brotli.streams.js","/npm/hyparquet-compressors@1.1.2/src/gzip.js","/npm/hyparquet-compressors@1.1.2/src/brotli.dictionary.js","/npm/hyparquet-compressors@1.1.2/src/brotli.transform.js","/npm/hyparquet-compressors@1.1.2/src/brotli.js","/npm/hyparquet-compressors@1.1.2/src/lz4.js","/npm/hyparquet-compressors@1.1.2/src/compressors.js","/npm/hyparquet-compressors@1.1.2/src/index.js"],"names":[],"mappings":"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GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAE5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAG7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAClD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAClD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAClD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAClD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACpD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,E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","file":"/npm/hyparquet-compressors@1.1.2/src/index.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v4.62.2 and esbuild v0.28.1.\n * Original file: /npm/hyparquet-compressors@1.1.2/src/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n   Bit reading helpers\n*/\n\nconst BROTLI_READ_SIZE = 4096\nconst BROTLI_IBUF_SIZE = 2 * BROTLI_READ_SIZE + 32\nconst BROTLI_IBUF_MASK = 2 * BROTLI_READ_SIZE - 1\n\nconst kBitMask = new Uint32Array([\n  0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767,\n  65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215,\n])\n\nexport class BrotliBitReader {\n  /**\n   * Input byte buffer, consist of a ringbuffer and a \"slack\" region where\n   * bytes from the start of the ringbuffer are copied.\n   *\n   * @typedef {import('./brotli.streams.js').BrotliInput} BrotliInput\n   * @param {BrotliInput} input\n   */\n  constructor(input) {\n    this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE)\n    this.input_ = input /* input callback */\n\n    this.buf_ptr_ = 0 /* next input will write here */\n    this.val_ = 0 /* pre-fetched bits */\n    this.pos_ = 0 /* byte position in stream */\n\n    this.bit_pos_ = 0\n    this.bit_end_pos_ = 0\n    this.eos_ = 0\n\n    this.reset()\n  }\n\n  static READ_SIZE = BROTLI_READ_SIZE\n  static IBUF_MASK = BROTLI_IBUF_MASK\n\n  reset() {\n    this.buf_ptr_ = 0 /* next input will write here */\n    this.val_ = 0 /* pre-fetched bits */\n    this.pos_ = 0 /* byte position in stream */\n    this.bit_pos_ = 0 /* current bit-reading position in val_ */\n    this.bit_end_pos_ = 0 /* bit-reading end position from LSB of val_ */\n    this.eos_ = 0 /* input stream is finished */\n\n    this.readMoreInput()\n    for (let i = 0; i < 4; i++) {\n      this.val_ |= this.buf_[this.pos_] << 8 * i\n      this.pos_++\n    }\n\n    return this.bit_end_pos_ > 0\n  }\n\n  /**\n   * Fills up the input ringbuffer by calling the input callback.\n   *\n   * Does nothing if there are at least 32 bytes present after current position.\n   *\n   * Returns 0 if either:\n   *  - the input callback returned an error, or\n   *  - there is no more input and the position is past the end of the stream.\n   *\n   * After encountering the end of the input stream, 32 additional zero bytes are\n   * copied to the ringbuffer, therefore it is safe to call this function after\n   * every 32 bytes of input is read.\n   */\n  readMoreInput() {\n    if (this.bit_end_pos_ > 256) {\n      // return\n    } else if (this.eos_) {\n      if (this.bit_pos_ > this.bit_end_pos_)\n        throw new Error('Unexpected end of input ' + this.bit_pos_ + ' ' + this.bit_end_pos_)\n    } else {\n      const dst = this.buf_ptr_\n      const bytes_read = this.input_.read(this.buf_, dst, BROTLI_READ_SIZE)\n      if (bytes_read < 0) {\n        throw new Error('Unexpected end of input')\n      }\n\n      if (bytes_read < BROTLI_READ_SIZE) {\n        this.eos_ = 1\n        /* Store 32 bytes of zero after the stream end. */\n        for (let p = 0; p < 32; p++)\n          this.buf_[dst + bytes_read + p] = 0\n      }\n\n      if (dst === 0) {\n        /* Copy the head of the ringbuffer to the slack region. */\n        for (let p = 0; p < 32; p++)\n          this.buf_[(BROTLI_READ_SIZE << 1) + p] = this.buf_[p]\n\n        this.buf_ptr_ = BROTLI_READ_SIZE\n      } else {\n        this.buf_ptr_ = 0\n      }\n\n      this.bit_end_pos_ += bytes_read << 3\n    }\n  }\n\n  /* Guarantees that there are at least 24 bits in the buffer. */\n  fillBitWindow() {\n    while (this.bit_pos_ >= 8) {\n      this.val_ >>>= 8\n      this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24\n      this.pos_++\n      this.bit_pos_ = this.bit_pos_ - 8 >>> 0\n      this.bit_end_pos_ = this.bit_end_pos_ - 8 >>> 0\n    }\n  }\n\n  /**\n   * Reads the specified number of bits from Read Buffer.\n   *\n   * @param {number} n_bits\n   * @returns {number}\n   */\n  readBits(n_bits) {\n    if (32 - this.bit_pos_ < n_bits) this.fillBitWindow()\n    const val = this.val_ >>> this.bit_pos_ & kBitMask[n_bits]\n    this.bit_pos_ += n_bits\n    return val\n  }\n}\n","\nconst kDefaultCodeLength = 8\n\nconst HUFFMAN_TABLE_BITS = 8\nconst HUFFMAN_TABLE_MASK = 0xff\n\nconst CODE_LENGTH_CODES = 18\nconst kCodeLengthCodeOrder = new Uint8Array([\n  1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n])\n\nconst kMaxHuffmanTableSize = new Uint16Array([\n  256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822,\n  854, 886, 920, 952, 984, 1016, 1048, 1080,\n])\n\nexport class HuffmanCode {\n  /**\n   * @param {number} bits\n   * @param {number} value\n   */\n  constructor(bits, value) {\n    this.bits = bits // number of bits used for this symbol\n    this.value = value // symbol value or table offset\n  }\n}\n\nconst kCodeLengthRepeatCode = 16\nconst MAX_LENGTH = 15\n\n/**\n * Returns reverse(reverse(key, len) + 1, len), where reverse(key, len) is the\n * bit-wise reversal of the len least significant bits of key.\n * @param {number} key\n * @param {number} len\n * @returns {number}\n */\nfunction getNextKey(key, len) {\n  let step = 1 << len - 1\n  while (key & step) {\n    step >>= 1\n  }\n  return (key & step - 1) + step\n}\n\n/**\n * Stores code in table[0], table[step], table[2*step], ..., table[end]\n * Assumes that end is an integer multiple of step\n * @param {HuffmanCode[]} table\n * @param {number} i\n * @param {number} step\n * @param {number} end\n * @param {HuffmanCode} code\n */\nfunction replicateValue(table, i, step, end, code) {\n  do {\n    end -= step\n    table[i + end] = new HuffmanCode(code.bits, code.value)\n  } while (end > 0)\n}\n\n/**\n * Returns the table width of the next 2nd level table. count is the histogram\n * of bit lengths for the remaining symbols, len is the code length of the next\n * processed symbol\n * @param {Int32Array} count\n * @param {number} len\n * @param {number} root_bits\n * @returns {number}\n */\nfunction nextTableBitSize(count, len, root_bits) {\n  let left = 1 << len - root_bits\n  while (len < MAX_LENGTH) {\n    left -= count[len]\n    if (left <= 0) break\n    ++len\n    left <<= 1\n  }\n  return len - root_bits\n}\n\n/**\n * @param {HuffmanCode[]} root_table\n * @param {number} table\n * @param {number} root_bits\n * @param {Uint8Array} code_lengths\n * @param {number} code_lengths_size\n * @returns {number}\n */\nfunction buildHuffmanTable(root_table, table, root_bits, code_lengths, code_lengths_size) {\n  const start_table = table\n  const count = new Int32Array(MAX_LENGTH + 1) // number of codes of each length\n  const offset = new Int32Array(MAX_LENGTH + 1) // offsets in sorted table for each length\n  const sorted = new Int32Array(code_lengths_size) // symbols sorted by code length\n\n  // build histogram of code lengths\n  for (let i = 0; i < code_lengths_size; i++) {\n    count[code_lengths[i]]++\n  }\n\n  // generate offsets into sorted symbol table by code length\n  offset[1] = 0\n  for (let i = 1; i < MAX_LENGTH; i++) {\n    offset[i + 1] = offset[i] + count[i]\n  }\n\n  // sort symbols by length, by symbol order within each length\n  for (let i = 0; i < code_lengths_size; i++) {\n    if (code_lengths[i] !== 0) {\n      sorted[offset[code_lengths[i]]++] = i\n    }\n  }\n\n  let table_bits = root_bits // key length of current table\n  let table_size = 1 << table_bits\n  let total_size = table_size // sum of root table size and 2nd level table sizes\n\n  // special case code with only one value\n  if (offset[MAX_LENGTH] === 1) {\n    for (let key = 0; key < total_size; ++key) {\n      root_table[table + key] = new HuffmanCode(0, sorted[0] & 0xffff)\n    }\n\n    return total_size\n  }\n\n  // fill in root table\n  let key = 0 // reversed prefix code\n  let symbol = 0 // symbol index in original or sorted table\n  for (let len = 1, step = 2; len <= root_bits; ++len, step <<= 1) {\n    for (; count[len] > 0; --count[len]) {\n      const code = new HuffmanCode(len & 0xff, sorted[symbol++] & 0xffff)\n      replicateValue(root_table, table + key, step, table_size, code)\n      key = getNextKey(key, len)\n    }\n  }\n\n  // fill in 2nd level tables and add pointers to root table\n  const mask = total_size - 1\n  let low = -1 // low bits for current root entry\n  for (let len = root_bits + 1, step = 2; len <= MAX_LENGTH; ++len, step <<= 1) {\n    for (; count[len] > 0; --count[len]) {\n      if ((key & mask) !== low) {\n        table += table_size\n        table_bits = nextTableBitSize(count, len, root_bits)\n        table_size = 1 << table_bits\n        total_size += table_size\n        low = key & mask\n        root_table[start_table + low] = new HuffmanCode(table_bits + root_bits & 0xff, table - start_table - low & 0xffff)\n      }\n      const code = new HuffmanCode(len - root_bits & 0xff, sorted[symbol++] & 0xffff)\n      replicateValue(root_table, table + (key >> root_bits), step, table_size, code)\n      key = getNextKey(key, len)\n    }\n  }\n\n  return total_size\n}\n\n/**\n * @import {BrotliBitReader} from './brotli.bitreader.js'\n * @param {number} alphabet_size\n * @param {HuffmanCode[]} tables\n * @param {number} table\n * @param {BrotliBitReader} br\n * @returns {number}\n */\nexport function readHuffmanCode(alphabet_size, tables, table, br) {\n  const code_lengths = new Uint8Array(alphabet_size)\n\n  br.readMoreInput()\n\n  // simple_code_or_skip is used as follows:\n  // - 1 for simple code;\n  // - 0 for no skipping, 2 skips 2 code lengths, 3 skips 3 code lengths\n  const simple_code_or_skip = br.readBits(2)\n  if (simple_code_or_skip === 1) {\n    // Read symbols, codes & code lengths directly\n    let max_bits_counter = alphabet_size - 1\n    let max_bits = 0\n    const symbols = new Int32Array(4)\n    const num_symbols = br.readBits(2) + 1\n    while (max_bits_counter) {\n      max_bits_counter >>= 1\n      max_bits++\n    }\n\n    for (let i = 0; i < num_symbols; i++) {\n      symbols[i] = br.readBits(max_bits) % alphabet_size\n      code_lengths[symbols[i]] = 2\n    }\n    code_lengths[symbols[0]] = 1\n    switch (num_symbols) {\n    case 1:\n      break\n    case 3:\n      if (symbols[0] === symbols[1] ||\n            symbols[0] === symbols[2] ||\n            symbols[1] === symbols[2]) {\n        throw new Error('[ReadHuffmanCode] invalid symbols')\n      }\n      break\n    case 2:\n      if (symbols[0] === symbols[1]) {\n        throw new Error('[ReadHuffmanCode] invalid symbols')\n      }\n\n      code_lengths[symbols[1]] = 1\n      break\n    case 4:\n      if (symbols[0] === symbols[1] ||\n            symbols[0] === symbols[2] ||\n            symbols[0] === symbols[3] ||\n            symbols[1] === symbols[2] ||\n            symbols[1] === symbols[3] ||\n            symbols[2] === symbols[3]) {\n        throw new Error('[ReadHuffmanCode] invalid symbols')\n      }\n\n      if (br.readBits(1)) {\n        code_lengths[symbols[2]] = 3\n        code_lengths[symbols[3]] = 3\n      } else {\n        code_lengths[symbols[0]] = 2\n      }\n      break\n    }\n  } else { // Decode Huffman-coded code lengths\n    const code_length_code_lengths = new Uint8Array(CODE_LENGTH_CODES)\n    let space = 32\n    let num_codes = 0\n    // Static Huffman code for the code length code lengths\n    const huff = [\n      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2),\n      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 1),\n      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2),\n      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 5),\n    ]\n    for (let i = simple_code_or_skip; i < CODE_LENGTH_CODES && space > 0; i++) {\n      const code_len_idx = kCodeLengthCodeOrder[i]\n      let p = 0\n      br.fillBitWindow()\n      p += br.val_ >>> br.bit_pos_ & 15\n      br.bit_pos_ += huff[p].bits\n      const v = huff[p].value\n      code_length_code_lengths[code_len_idx] = v\n      if (v !== 0) {\n        space -= 32 >> v\n        num_codes++\n      }\n    }\n\n    if (!(num_codes === 1 || space === 0))\n      throw new Error('[ReadHuffmanCode] invalid num_codes or space')\n\n    readHuffmanCodeLengths(code_length_code_lengths, alphabet_size, code_lengths, br)\n  }\n\n  const table_size = buildHuffmanTable(tables, table, HUFFMAN_TABLE_BITS, code_lengths, alphabet_size)\n  if (!table_size) throw new Error('brotli BuildHuffmanTable failed')\n  return table_size\n}\n\n/**\n * Decodes the next Huffman code from bit-stream.\n * @param {HuffmanCode[]} table\n * @param {number} index\n * @param {BrotliBitReader} br\n * @returns {number}\n\n */\nexport function readSymbol(table, index, br) {\n  br.fillBitWindow()\n  index += br.val_ >>> br.bit_pos_ & HUFFMAN_TABLE_MASK\n  const nbits = table[index].bits - HUFFMAN_TABLE_BITS\n  if (nbits > 0) {\n    br.bit_pos_ += HUFFMAN_TABLE_BITS\n    index += table[index].value\n    index += br.val_ >>> br.bit_pos_ & (1 << nbits) - 1\n  }\n  br.bit_pos_ += table[index].bits\n  return table[index].value\n}\n\n/**\n * @param {Uint8Array} code_length_code_lengths\n * @param {number} num_symbols\n * @param {Uint8Array} code_lengths\n * @param {BrotliBitReader} br\n */\nfunction readHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) {\n  let symbol = 0\n  let prev_code_len = kDefaultCodeLength\n  let repeat = 0\n  let repeat_code_len = 0\n  let space = 32768\n\n  const table = []\n  for (let i = 0; i < 32; i++)\n    table.push(new HuffmanCode(0, 0))\n\n  buildHuffmanTable(table, 0, 5, code_length_code_lengths, CODE_LENGTH_CODES)\n\n  while (symbol < num_symbols && space > 0) {\n    let p = 0\n\n    br.readMoreInput()\n    br.fillBitWindow()\n    p += br.val_ >>> br.bit_pos_ & 31\n    br.bit_pos_ += table[p].bits\n    const code_len = table[p].value & 0xff\n    if (code_len < kCodeLengthRepeatCode) {\n      repeat = 0\n      code_lengths[symbol++] = code_len\n      if (code_len !== 0) {\n        prev_code_len = code_len\n        space -= 32768 >> code_len\n      }\n    } else {\n      const extra_bits = code_len - 14\n      let new_len = 0\n      if (code_len === kCodeLengthRepeatCode) {\n        new_len = prev_code_len\n      }\n      if (repeat_code_len !== new_len) {\n        repeat = 0\n        repeat_code_len = new_len\n      }\n      const old_repeat = repeat\n      if (repeat > 0) {\n        repeat -= 2\n        repeat <<= extra_bits\n      }\n      repeat += br.readBits(extra_bits) + 3\n      const repeat_delta = repeat - old_repeat\n      if (symbol + repeat_delta > num_symbols) {\n        throw new Error('[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols')\n      }\n\n      for (let x = 0; x < repeat_delta; x++)\n        code_lengths[symbol + x] = repeat_code_len\n\n      symbol += repeat_delta\n\n      if (repeat_code_len !== 0) {\n        space -= repeat_delta << 15 - repeat_code_len\n      }\n    }\n  }\n  if (space !== 0) {\n    throw new Error('[ReadHuffmanCodeLengths] space = ' + space)\n  }\n\n  for (; symbol < num_symbols; symbol++)\n    code_lengths[symbol] = 0\n}\n\n\nexport class HuffmanTreeGroup {\n  /**\n   * Contains a collection of huffman trees with the same alphabet size.\n   *\n   * @param {number} alphabet_size\n   * @param {number} num_htrees\n   */\n  constructor(alphabet_size, num_htrees) {\n    this.alphabet_size = alphabet_size\n    this.num_htrees = num_htrees\n    this.codes = new Array(num_htrees + num_htrees * kMaxHuffmanTableSize[alphabet_size + 31 >>> 5])\n    this.htrees = new Uint32Array(num_htrees)\n  }\n\n  /**\n   * @param {BrotliBitReader} br\n   */\n  decode(br) {\n    let next = 0\n    for (let i = 0; i < this.num_htrees; i++) {\n      this.htrees[i] = next\n      next += readHuffmanCode(this.alphabet_size, this.codes, next, br)\n    }\n  }\n}\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n   Lookup tables to map prefix codes to value ranges. This is used during\n   decoding of the block lengths, literal insertion lengths and copy lengths.\n*/\n\n/**\n * Represents the range of values belonging to a prefix code:\n * [offset, offset + 2^nbits)\n * @param {number[]} pair\n * @returns {{offset: number, nbits: number}}\n */\nfunction prefix([ offset, nbits ]) {\n  return { offset, nbits }\n}\n\nexport const kBlockLengthPrefixCode = [\n  [1, 2], [5, 2], [9, 2], [13, 2],\n  [17, 3], [25, 3], [33, 3], [41, 3],\n  [49, 4], [65, 4], [81, 4], [97, 4],\n  [113, 5], [145, 5], [177, 5], [209, 5],\n  [241, 6], [305, 6], [369, 7], [497, 8],\n  [753, 9], [1265, 10], [2289, 11], [4337, 12],\n  [8433, 13], [16625, 24],\n].map(prefix)\n\nexport const kInsertLengthPrefixCode = [\n  [0, 0], [1, 0], [2, 0], [3, 0],\n  [4, 0], [5, 0], [6, 1], [8, 1],\n  [10, 2], [14, 2], [18, 3], [26, 3],\n  [34, 4], [50, 4], [66, 5], [98, 5],\n  [130, 6], [194, 7], [322, 8], [578, 9],\n  [1090, 10], [2114, 12], [6210, 14], [22594, 24],\n].map(prefix)\n\nexport const kCopyLengthPrefixCode = [\n  [2, 0], [3, 0], [4, 0], [5, 0],\n  [6, 0], [7, 0], [8, 0], [9, 0],\n  [10, 1], [12, 1], [14, 2], [18, 2],\n  [22, 3], [30, 3], [38, 4], [54, 4],\n  [70, 5], [102, 5], [134, 6], [198, 7],\n  [326, 8], [582, 9], [1094, 10], [2118, 24],\n].map(prefix)\n\nexport const kInsertRangeLut = [\n  0, 0, 8, 8, 0, 16, 8, 16, 16,\n]\n\nexport const kCopyRangeLut = [\n  0, 8, 0, 8, 16, 0, 16, 8, 16,\n]\n","// Adapted from https://github.com/101arrowz/fflate Copyright (c) 2023 Arjun Barrett\n// https://tools.ietf.org/html/rfc1951\n\n/* Maximum possible Huffman table size for an alphabet size of 704, max code\n * length 15 and root table bits 8. */\nexport const HUFFMAN_MAX_TABLE_SIZE = 1080\n\n// fixed length extra bits\nexport const fixedLengthExtraBits = new Uint8Array([\n  0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0,\n])\nexport const fixedDistanceExtraBits = new Uint8Array([\n  0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0,\n])\n\n/**\n * get base, reverse index map from extra bits\n * @param {Uint8Array} eb\n * @param {number} start\n * @returns {{base: Uint16Array, rev: Int32Array}}\n */\nfunction freb(eb, start) {\n  const base = new Uint16Array(31)\n  for (let i = 0; i < 31; i++) {\n    base[i] = start += 1 << eb[i - 1]\n  }\n  // numbers here are max 18 bits\n  const rev = new Int32Array(base[30])\n  for (let i = 1; i < 30; i++) {\n    for (let j = base[i]; j < base[i + 1]; ++j) {\n      rev[j] = j - base[i] << 5 | i\n    }\n  }\n  return { base, rev }\n}\n\nconst { base: fixedLength, rev: revfl } = freb(fixedLengthExtraBits, 2)\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfixedLength[28] = 258\nrevfl[258] = 28\nconst { base: fixedDistance } = freb(fixedDistanceExtraBits, 0)\n\n// map of value to reverse (assuming 16 bits)\nconst rev = new Uint16Array(32768)\nfor (let i = 0; i < 32768; i++) {\n  // reverse table algorithm from SO\n  let x = (i & 0xAAAA) >> 1 | (i & 0x5555) << 1\n  x = (x & 0xCCCC) >> 2 | (x & 0x3333) << 2\n  x = (x & 0xF0F0) >> 4 | (x & 0x0F0F) << 4\n  rev[i] = ((x & 0xFF00) >> 8 | (x & 0x00FF) << 8) >> 1\n}\n\n/**\n * create huffman tree from Uint8Array \"map\": index -> code length for code index\n * maxBits must be at most 15\n * @param {Uint8Array} cd\n * @param {number} maxBits\n * @param {0 | 1} r\n * @returns {Uint16Array}\n */\nexport function huffMap(cd, maxBits, r) {\n  // u16 \"map\": index -> # of codes with bit length = index\n  const l = new Uint16Array(maxBits)\n  // length of cd must be 288 (total # of codes)\n  for (let i = 0; i < cd.length; i++) {\n    if (cd[i]) ++l[cd[i] - 1]\n  }\n  // u16 \"map\": index -> minimum code for bit length = index\n  const le = new Uint16Array(maxBits)\n  for (let i = 1; i < maxBits; i++) {\n    le[i] = le[i - 1] + l[i - 1] << 1\n  }\n  let co\n  if (r) {\n    // u16 \"map\": index -> number of actual bits, symbol for code\n    co = new Uint16Array(1 << maxBits)\n    // bits to remove for reverser\n    const rvb = 15 - maxBits\n    for (let i = 0; i < cd.length; i++) {\n      // ignore 0 lengths\n      if (cd[i]) {\n        // num encoding both symbol and bits read\n        const sv = i << 4 | cd[i]\n        const freeBits = maxBits - cd[i]\n        let startValue = le[cd[i] - 1]++ << freeBits\n        for (const endValue = startValue | (1 << freeBits) - 1; startValue <= endValue; startValue++) {\n          // every 16 bit value starting with the code yields the same result\n          co[rev[startValue] >> rvb] = sv\n        }\n      }\n    }\n  } else {\n    co = new Uint16Array(cd.length)\n    for (let i = 0; i < cd.length; i++) {\n      if (cd[i]) {\n        co[i] = rev[le[cd[i] - 1]++] >> 15 - cd[i]\n      }\n    }\n  }\n  return co\n}\n\n// construct huffman trees\nconst fixedLengthTree = new Uint8Array(288)\nfor (let i = 0; i < 144; i++) fixedLengthTree[i] = 8\nfor (let i = 144; i < 256; i++) fixedLengthTree[i] = 9\nfor (let i = 256; i < 280; i++) fixedLengthTree[i] = 7\nfor (let i = 280; i < 288; i++) fixedLengthTree[i] = 8\nconst fixedDistanceTree = new Uint8Array(32)\nfor (let i = 0; i < 32; i++) fixedDistanceTree[i] = 5\n\nexport const fixedLengthMap = /*#__PURE__*/ huffMap(fixedLengthTree, 9, 1)\nexport const fixedDistanceMap = /*#__PURE__*/ huffMap(fixedDistanceTree, 5, 1)\nexport { fixedLength, fixedDistance }\n","import { readSymbol } from './brotli.huffman.js'\nimport { BrotliBitReader } from './brotli.bitreader.js'\nimport { kBlockLengthPrefixCode } from './brotli.prefix.js'\nimport { HUFFMAN_MAX_TABLE_SIZE } from './gzip.huffman.js'\n\n/**\n * @import {HuffmanCode} from './brotli.huffman.js'\n * @param {number} max_block_type\n * @param {HuffmanCode[]} trees\n * @param {number} tree_type\n * @param {number[]} block_types\n * @param {number[]} ringbuffers\n * @param {number[]} indexes\n * @param {BrotliBitReader} br\n */\nexport function decodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) {\n  const ringbuffer = tree_type * 2\n  const index = tree_type\n  const type_code = readSymbol(trees, tree_type * HUFFMAN_MAX_TABLE_SIZE, br)\n  let block_type\n  if (type_code === 0) {\n    block_type = ringbuffers[ringbuffer + (indexes[index] & 1)]\n  } else if (type_code === 1) {\n    block_type = ringbuffers[ringbuffer + (indexes[index] - 1 & 1)] + 1\n  } else {\n    block_type = type_code - 2\n  }\n  if (block_type >= max_block_type) {\n    block_type -= max_block_type\n  }\n  block_types[tree_type] = block_type\n  ringbuffers[ringbuffer + (indexes[index] & 1)] = block_type\n  indexes[index]++\n}\n\n/**\n * @typedef {{ input_end: number, is_metadata: boolean, meta_block_length: number, is_uncompressed: number }} MetaBlockLength\n * @param {BrotliBitReader} br\n * @returns {MetaBlockLength}\n */\nexport function decodeMetaBlockLength(br) {\n  const out = {\n    meta_block_length: 0,\n    input_end: 0,\n    is_uncompressed: 0,\n    is_metadata: false,\n  }\n\n  out.input_end = br.readBits(1)\n  if (out.input_end && br.readBits(1)) {\n    return out\n  }\n\n  const size_nibbles = br.readBits(2) + 4\n  if (size_nibbles === 7) {\n    out.is_metadata = true\n\n    if (br.readBits(1) !== 0)\n      throw new Error('Invalid reserved bit')\n\n    const size_bytes = br.readBits(2)\n    if (size_bytes === 0)\n      return out\n\n    for (let i = 0; i < size_bytes; i++) {\n      const next_byte = br.readBits(8)\n      if (i + 1 === size_bytes && size_bytes > 1 && next_byte === 0)\n        throw new Error('Invalid size byte')\n\n      out.meta_block_length |= next_byte << i * 8\n    }\n  } else {\n    for (let i = 0; i < size_nibbles; i++) {\n      const next_nibble = br.readBits(4)\n      if (i + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0)\n        throw new Error('Invalid size nibble')\n\n      out.meta_block_length |= next_nibble << i * 4\n    }\n  }\n\n  out.meta_block_length++\n\n  if (!out.input_end && !out.is_metadata) {\n    out.is_uncompressed = br.readBits(1)\n  }\n\n  return out\n}\n\n\n/**\n * @import {BrotliOutput} from './brotli.streams.js'\n * @param {BrotliOutput} output\n * @param {number} len\n * @param {number} pos\n * @param {Uint8Array} ringbuffer\n * @param {number} ringbuffer_mask\n * @param {BrotliBitReader} br\n */\nexport function copyUncompressedBlockToOutput(output, len, pos, ringbuffer, ringbuffer_mask, br) {\n  const rb_size = ringbuffer_mask + 1\n  let rb_pos = pos & ringbuffer_mask\n  let br_pos = br.pos_ & BrotliBitReader.IBUF_MASK\n\n  // For short lengths copy byte-by-byte\n  if (len < 8 || br.bit_pos_ + (len << 3) < br.bit_end_pos_) {\n    while (len-- > 0) {\n      br.readMoreInput()\n      ringbuffer[rb_pos++] = br.readBits(8)\n      if (rb_pos === rb_size) {\n        output.write(ringbuffer, rb_size)\n        rb_pos = 0\n      }\n    }\n    return\n  }\n\n  if (br.bit_end_pos_ < 32) {\n    throw new Error('copyUncompressedBlockToOutput: br.bit_end_pos_ < 32')\n  }\n\n  // Copy remaining 0-4 bytes from br.val_ to ringbuffer\n  while (br.bit_pos_ < 32) {\n    ringbuffer[rb_pos] = br.val_ >>> br.bit_pos_\n    br.bit_pos_ += 8\n    rb_pos++\n    len--\n  }\n\n  // Copy remaining bytes from br.buf_ to ringbuffer\n  let nbytes = br.bit_end_pos_ - br.bit_pos_ >> 3\n  if (br_pos + nbytes > BrotliBitReader.IBUF_MASK) {\n    const tail = BrotliBitReader.IBUF_MASK + 1 - br_pos\n    for (let x = 0; x < tail; x++)\n      ringbuffer[rb_pos + x] = br.buf_[br_pos + x]\n\n    nbytes -= tail\n    rb_pos += tail\n    len -= tail\n    br_pos = 0\n  }\n\n  for (let x = 0; x < nbytes; x++)\n    ringbuffer[rb_pos + x] = br.buf_[br_pos + x]\n\n  rb_pos += nbytes\n  len -= nbytes\n\n  // If we wrote past the logical end of the ringbuffer, copy the tail of the\n  // ringbuffer to its beginning and flush the ringbuffer to the output\n  if (rb_pos >= rb_size) {\n    output.write(ringbuffer, rb_size)\n    rb_pos -= rb_size\n    for (let x = 0; x < rb_pos; x++)\n      ringbuffer[x] = ringbuffer[rb_size + x]\n  }\n\n  // If we have more to copy than the remaining size of the ringbuffer, then we\n  // first fill the ringbuffer from the input and then flush the ringbuffer\n  while (rb_pos + len >= rb_size) {\n    nbytes = rb_size - rb_pos\n    if (br.input_.read(ringbuffer, rb_pos, nbytes) < nbytes) {\n      throw new Error('copyUncompressedBlockToOutput: not enough bytes')\n    }\n    output.write(ringbuffer, rb_size)\n    len -= nbytes\n    rb_pos = 0\n  }\n\n  // Copy straight from the input onto the ringbuffer\n  // Ringbuffer will be flushed to output later\n  if (br.input_.read(ringbuffer, rb_pos, len) < len) {\n    throw new Error('copyUncompressedBlockToOutput: not enough bytes')\n  }\n\n  // Restore the state of the bit reader\n  br.reset()\n}\n\n/**\n * Decodes a number in the range [0..255], by reading 1 - 11 bits.\n * @param {BrotliBitReader} br\n * @returns {number}\n */\nexport function decodeVarLenUint8(br) {\n  if (br.readBits(1)) {\n    const nbits = br.readBits(3)\n    if (nbits === 0) {\n      return 1\n    } else {\n      return br.readBits(nbits) + (1 << nbits)\n    }\n  }\n  return 0\n}\n\n/**\n * @param {BrotliBitReader} br\n * @returns {number}\n */\nexport function decodeWindowBits(br) {\n  if (br.readBits(1) === 0) return 16\n\n  let n = br.readBits(3)\n  if (n > 0) return 17 + n\n\n  n = br.readBits(3)\n  if (n > 0) return 8 + n\n\n  return 17\n}\n\n/**\n * Advances the bit reader position to the next byte boundary and verifies\n * that any skipped bits are set to zero.\n * @param {BrotliBitReader} br\n * @returns {boolean}\n */\nexport function jumpToByteBoundary(br) {\n  const new_bit_pos = br.bit_pos_ + 7 & ~7\n  return !br.readBits(new_bit_pos - br.bit_pos_)\n}\n\n/**\n * @param {HuffmanCode[]} table\n * @param {number} index\n * @param {BrotliBitReader} br\n * @returns {number}\n */\nexport function readBlockLength(table, index, br) {\n  const code = readSymbol(table, index, br)\n  const { offset, nbits } = kBlockLengthPrefixCode[code]\n  return offset + br.readBits(nbits)\n}\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Lookup table to map the previous two bytes to a context id.\n\n   There are four different context modeling modes defined here:\n     CONTEXT_LSB6: context id is the least significant 6 bits of the last byte,\n     CONTEXT_MSB6: context id is the most significant 6 bits of the last byte,\n     CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text,\n     CONTEXT_SIGNED: second-order context model tuned for signed integers.\n\n   The context id for the UTF8 context model is calculated as follows. If p1\n   and p2 are the previous two bytes, we calcualte the context as\n\n     context = kContextLookup[p1] | kContextLookup[p2 + 256].\n\n   If the previous two bytes are ASCII characters (i.e. < 128), this will be\n   equivalent to\n\n     context = 4 * context1(p1) + context2(p2),\n\n   where context1 is based on the previous byte in the following way:\n\n     0  : non-ASCII control\n     1  : \\t, \\n, \\r\n     2  : space\n     3  : other punctuation\n     4  : \" '\n     5  : %\n     6  : ( < [ {\n     7  : ) > ] }\n     8  : , ; :\n     9  : .\n     10 : =\n     11 : number\n     12 : upper-case vowel\n     13 : upper-case consonant\n     14 : lower-case vowel\n     15 : lower-case consonant\n\n   and context2 is based on the second last byte:\n\n     0 : control, space\n     1 : punctuation\n     2 : upper-case letter, number\n     3 : lower-case letter\n\n   If the last byte is ASCII, and the second last byte is not (in a valid UTF8\n   stream it will be a continuation byte, value between 128 and 191), the\n   context is the same as if the second last byte was an ASCII control or space.\n\n   If the last byte is a UTF8 lead byte (value >= 192), then the next byte will\n   be a continuation byte and the context id is 2 or 3 depending on the LSB of\n   the last byte and to a lesser extent on the second last byte if it is ASCII.\n\n   If the last byte is a UTF8 continuation byte, the second last byte can be:\n     - continuation byte: the next byte is probably ASCII or lead byte (assuming\n       4-byte UTF8 characters are rare) and the context id is 0 or 1.\n     - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1\n     - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3\n\n   The possible value combinations of the previous two bytes, the range of\n   context ids and the type of the next byte is summarized in the table below:\n\n   |--------\\-----------------------------------------------------------------|\n   |         \\                         Last byte                              |\n   | Second   \\---------------------------------------------------------------|\n   | last byte \\    ASCII            |   cont. byte        |   lead byte      |\n   |            \\   (0-127)          |   (128-191)         |   (192-)         |\n   |=============|===================|=====================|==================|\n   |  ASCII      | next: ASCII/lead  |  not valid          |  next: cont.     |\n   |  (0-127)    | context: 4 - 63   |                     |  context: 2 - 3  |\n   |-------------|-------------------|---------------------|------------------|\n   |  cont. byte | next: ASCII/lead  |  next: ASCII/lead   |  next: cont.     |\n   |  (128-191)  | context: 4 - 63   |  context: 0 - 1     |  context: 2 - 3  |\n   |-------------|-------------------|---------------------|------------------|\n   |  lead byte  | not valid         |  next: ASCII/lead   |  not valid       |\n   |  (192-207)  |                   |  context: 0 - 1     |                  |\n   |-------------|-------------------|---------------------|------------------|\n   |  lead byte  | not valid         |  next: cont.        |  not valid       |\n   |  (208-)     |                   |  context: 2 - 3     |                  |\n   |-------------|-------------------|---------------------|------------------|\n\n   The context id for the signed context mode is calculated as:\n\n     context = (kContextLookup[512 + p1] << 3) | kContextLookup[512 + p2].\n\n   For any context modeling modes, the context ids can be calculated by |-ing\n   together two lookups from one table using context model dependent offsets:\n\n     context = kContextLookup[offset1 + p1] | kContextLookup[offset2 + p2].\n\n   where offset1 and offset2 are dependent on the context mode.\n*/\n\n/* Common context lookup table for all context modes. */\nexport const lookup = new Uint8Array([\n  /* CONTEXT_UTF8, last byte. */\n  /* ASCII range. */\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12,\n  44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,\n  12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48,\n  52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12,\n  12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56,\n  60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12, 0,\n  /* UTF8 continuation byte range. */\n  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n  /* UTF8 lead byte range. */\n  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n  /* CONTEXT_UTF8 second last byte. */\n  /* ASCII range. */\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,\n  1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,\n  1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,\n  /* UTF8 continuation byte range. */\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  /* UTF8 lead byte range. */\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n  /* CONTEXT_SIGNED, second last byte. */\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,\n  /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */\n  0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n  48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,\n  /* CONTEXT_LSB6, last byte. */\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n  /* CONTEXT_MSB6, last byte. */\n  0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,\n  4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,\n  8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11,\n  12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15,\n  16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19,\n  20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23,\n  24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27,\n  28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31,\n  32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35,\n  36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39,\n  40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43,\n  44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47,\n  48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51,\n  52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55,\n  56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59,\n  60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63,\n  /* CONTEXT_{M,L}SB6, second last byte, */\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n])\n\nexport const lookupOffsets = new Uint16Array([\n  /* CONTEXT_LSB6 */\n  1024, 1536,\n  /* CONTEXT_MSB6 */\n  1280, 1536,\n  /* CONTEXT_UTF8 */\n  0, 256,\n  /* CONTEXT_SIGNED */\n  768, 512,\n])\n","import { decodeVarLenUint8 } from './brotli.blocks.js'\nimport { HuffmanCode, readHuffmanCode, readSymbol } from './brotli.huffman.js'\nimport { HUFFMAN_MAX_TABLE_SIZE } from './gzip.huffman.js'\n\n/**\n * @import {BrotliBitReader} from './brotli.bitreader.js'\n * @param {number} context_map_size\n * @param {BrotliBitReader} br\n * @returns {[number, Uint8Array]} // num_htrees, context_map\n */\nexport function decodeContextMap(context_map_size, br) {\n  let max_run_length_prefix = 0\n\n  br.readMoreInput()\n  const num_htrees = decodeVarLenUint8(br) + 1\n\n  const context_map = new Uint8Array(context_map_size)\n  if (num_htrees <= 1) {\n    return [num_htrees, context_map]\n  }\n\n  const use_rle_for_zeros = br.readBits(1)\n  if (use_rle_for_zeros) {\n    max_run_length_prefix = br.readBits(4) + 1\n  }\n\n  const table = []\n  for (let i = 0; i < HUFFMAN_MAX_TABLE_SIZE; i++) {\n    table[i] = new HuffmanCode(0, 0)\n  }\n\n  readHuffmanCode(num_htrees + max_run_length_prefix, table, 0, br)\n\n  for (let i = 0; i < context_map_size;) {\n    br.readMoreInput()\n    const code = readSymbol(table, 0, br)\n    if (code === 0) {\n      context_map[i] = 0\n      i++\n    } else if (code <= max_run_length_prefix) {\n      let reps = 1 + (1 << code) + br.readBits(code)\n      while (--reps) {\n        if (i >= context_map_size) {\n          throw new Error('[DecodeContextMap] i >= context_map_size')\n        }\n        context_map[i] = 0\n        i++\n      }\n    } else {\n      context_map[i] = code - max_run_length_prefix\n      i++\n    }\n  }\n  if (br.readBits(1)) {\n    inverseMoveToFrontTransform(context_map, context_map_size)\n  }\n\n  return [num_htrees, context_map]\n}\n\n/**\n * @param {Uint8Array} v\n * @param {number} index\n */\nfunction moveToFront(v, index) {\n  const value = v[index]\n  for (let i = index; i; i--) v[i] = v[i - 1]\n  v[0] = value\n}\n\n/**\n * @param {Uint8Array} v\n * @param {number} v_len\n */\nfunction inverseMoveToFrontTransform(v, v_len) {\n  const mtf = new Uint8Array(256)\n  for (let i = 0; i < 256; i++) {\n    mtf[i] = i\n  }\n  for (let i = 0; i < v_len; i++) {\n    const index = v[i]\n    v[i] = mtf[index]\n    if (index) moveToFront(mtf, index)\n  }\n}\n","export class BrotliInput {\n  /**\n   * @param {Uint8Array} buffer\n   */\n  constructor(buffer) {\n    this.buffer = buffer\n    this.pos = 0\n  }\n\n  /**\n   * @param {Uint8Array} buf\n   * @param {number} i\n   * @param {number} count\n   * @returns {number}\n   */\n  read(buf, i, count) {\n    if (this.pos + count > this.buffer.length) {\n      count = this.buffer.length - this.pos\n    }\n\n    for (let p = 0; p < count; p++)\n      buf[i + p] = this.buffer[this.pos + p]\n\n    this.pos += count\n    return count\n  }\n}\n\nexport class BrotliOutput {\n  /**\n   * @param {Uint8Array} buf\n   */\n  constructor(buf) {\n    this.buffer = buf\n    this.pos = 0\n  }\n\n  /**\n   * @param {Uint8Array} buf\n   * @param {number} count\n   * @returns {number}\n   */\n  write(buf, count) {\n    if (this.pos + count > this.buffer.length) throw new Error('brotli output buffer is not large enough')\n\n    this.buffer.set(buf.subarray(0, count), this.pos)\n    this.pos += count\n    return count\n  }\n}\n","// Adapted from https://github.com/101arrowz/fflate Copyright (c) 2023 Arjun Barrett\n// https://tools.ietf.org/html/rfc1951\n\nimport { fixedDistance, fixedDistanceExtraBits, fixedDistanceMap, fixedLength, fixedLengthExtraBits, fixedLengthMap, huffMap } from './gzip.huffman.js'\n\nconst codeLengthIndexMap = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15])\n\n/**\n * read d, starting at bit p and mask with m\n * @param {Uint8Array} input\n * @param {number} pos\n * @param {number} mask\n * @returns {number}\n */\nfunction bits(input, pos, mask) {\n  const o = pos / 8 | 0\n  return (input[o] | input[o + 1] << 8) >> (pos & 7) & mask\n}\n\n/**\n * read d, starting at bit p continuing for at least 16 bits\n * @param {Uint8Array} d\n * @param {number} p\n * @returns {number}\n */\nfunction bits16(d, p) {\n  const o = p / 8 | 0\n  return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p & 7)\n}\n\n/**\n * get end of byte\n * @param {number} p\n * @returns {number}\n */\nfunction shft(p) {\n  return (p + 7) / 8 | 0\n}\n\n/**\n * return start of gzip payload index\n * @param {Uint8Array} input\n * @param {number} i inputIndex\n * @returns {number}\n */\nfunction gzipStart(input, i) {\n  // if missing gzip header, assume raw deflate stream\n  if (input[i++] !== 31 || input[i++] !== 139 || input[i++] !== 8) return 0\n  const flag = input[i++]\n  i += 6 // skip header\n  if (flag & 4) i += (input[i + 10] | input[i + 11] << 8) + 2 // skip extra\n  // skip name and comment\n  for (let zs = (flag >> 3 & 1) + (flag >> 4 & 1); zs > 0; zs -= Number(!input[i++]));\n  return i + (flag & 2)\n}\n\n/**\n * GZip decompression\n * @param {Uint8Array} input\n * @param {Uint8Array} [output]\n * @param {number} [inputIndex]\n * @param {number} [outputIndex]\n * @returns {Uint8Array}\n */\nexport function gunzip(input, output, inputIndex = 0, outputIndex = 0) {\n  let out = output ?? new Uint8Array(1024) // initial size\n  if (!(input.length - inputIndex)) return out\n  const payloadStart = gzipStart(input, inputIndex)\n  if (payloadStart === input.length - 8) return out\n  if (payloadStart > input.length - 8) throw new Error('unexpected EOF')\n  let pos = payloadStart * 8 // position in bits\n  let final = 0 // last chunk?\n  let lengthBits = 0\n  let distBits = 0\n  let lengthMap\n  let distMap\n  const totalBits = input.length * 8\n\n  /** @param {number} length */\n  function ensureSize(length) {\n    if (!output && length > out.length) {\n      const old = out\n      out = new Uint8Array(Math.max(old.length * 2, length))\n      out.set(old)\n    }\n  }\n\n  do {\n    if (!lengthMap) {\n      // final chunk is next?\n      final = bits(input, pos, 1)\n      const type = bits(input, pos + 1, 3)\n      pos += 3\n      if (!type) {\n        // no compression\n        // go to end of byte boundary\n        const s = shft(pos) + 4\n        const l = input[s - 4] | input[s - 3] << 8\n        const t = s + l\n        if (t > input.length) throw new Error('unexpected EOF')\n        // copy uncompressed data\n        ensureSize(outputIndex + l)\n        out.set(input.subarray(s, t), outputIndex)\n        outputIndex += l\n        pos = t * 8\n        continue\n      } else if (type === 1) {\n        // fixed huffman\n        lengthMap = fixedLengthMap\n        distMap = fixedDistanceMap\n        lengthBits = 9\n        distBits = 5\n      } else if (type === 2) {\n        // dynamic huffman\n        const hLiteral = bits(input, pos, 31) + 257\n        const hcLengths = bits(input, pos + 10, 15) + 4\n        const tl = hLiteral + bits(input, pos + 5, 31) + 1\n        pos += 14\n        // length+distance tree\n        const lengthDistanceTree = new Uint8Array(tl)\n        const codeLengthTree = new Uint8Array(19)\n        for (let i = 0; i < hcLengths; ++i) {\n          // use index map to get real code\n          codeLengthTree[codeLengthIndexMap[i]] = bits(input, pos + i * 3, 7)\n        }\n        pos += hcLengths * 3\n        const codeLengthBits = Math.max(...codeLengthTree)\n        const clbMask = (1 << codeLengthBits) - 1\n        const codeLengthMap = huffMap(codeLengthTree, codeLengthBits, 1)\n        for (let i = 0; i < tl;) {\n          const r = codeLengthMap[bits(input, pos, clbMask)]\n          // bits read\n          pos += r & 15\n          const symbol = r >> 4\n          // code length to copy\n          if (symbol < 16) {\n            lengthDistanceTree[i++] = symbol\n          } else {\n            let copy = 0\n            let n = 0 // count\n            if (symbol === 16) {\n              n = 3 + bits(input, pos, 3)\n              pos += 2\n              copy = lengthDistanceTree[i - 1]\n            } else if (symbol === 17) {\n              n = 3 + bits(input, pos, 7)\n              pos += 3\n            } else if (symbol === 18) {\n              n = 11 + bits(input, pos, 127)\n              pos += 7\n            }\n            while (n--) lengthDistanceTree[i++] = copy\n          }\n        }\n        const lengthTree = lengthDistanceTree.subarray(0, hLiteral)\n        const distanceTree = lengthDistanceTree.subarray(hLiteral)\n        // max length/dist bits\n        lengthBits = Math.max(...lengthTree)\n        distBits = Math.max(...distanceTree)\n        lengthMap = huffMap(lengthTree, lengthBits, 1)\n        distMap = huffMap(distanceTree, distBits, 1)\n      } else throw new Error('invalid block type')\n      if (pos > totalBits) throw new Error('unexpected EOF')\n    }\n\n    ensureSize(outputIndex + 131072) // max chunk size?\n    const lms = (1 << lengthBits) - 1\n    const dms = (1 << distBits) - 1\n    for (;;) {\n      // bits read, code\n      const code = lengthMap[bits16(input, pos) & lms]\n      const sym = code >> 4\n      pos += code & 15\n      if (pos > totalBits) throw new Error('unexpected EOF')\n      if (!code) throw new Error('invalid length/literal')\n      if (sym < 256) out[outputIndex++] = sym\n      else if (sym === 256) {\n        lengthMap = undefined\n        break\n      } else {\n        let add = sym - 254\n        // no extra bits needed if less\n        if (sym > 264) {\n          const index = sym - 257\n          const b = fixedLengthExtraBits[index]\n          add = bits(input, pos, (1 << b) - 1) + fixedLength[index]\n          pos += b\n        }\n        // dist\n        if (!distMap) throw new Error('invalid distance map')\n        const d = distMap[bits16(input, pos) & dms]\n        const dsym = d >> 4\n        if (!d) throw new Error('invalid distance')\n        pos += d & 15\n        let dt = fixedDistance[dsym]\n        if (dsym > 3) {\n          const b = fixedDistanceExtraBits[dsym]\n          dt += bits16(input, pos) & (1 << b) - 1\n          pos += b\n        }\n        if (pos > totalBits) throw new Error('unexpected EOF')\n        const end = outputIndex + add\n        if (outputIndex < dt) throw new Error('unexpected dictionary case')\n        ensureSize(end)\n        for (; outputIndex < end; outputIndex++) out[outputIndex] = out[outputIndex - dt]\n      }\n    }\n    if (lengthMap) final = 1\n  } while (!final)\n\n  if (outputIndex < out.length) {\n    // multiple gzip blocks\n    const nextBlock = Math.ceil(pos / 8) + 8 // 8 byte gzip footer\n    gunzip(input, out, nextBlock, outputIndex)\n  }\n\n  if (!output) return out.subarray(0, outputIndex)\n  return out\n}\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Collection of static dictionary words.\n*/\n\nimport { gunzip } from './gzip.js'\n\nconst dictionaryGz64 = `\n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\nXH/9kw/e+uTa937x6JlPn7j+86ee/PnpG7e/+yefvfzM7ddetBc/+977t3/83mcf/PknV4/fPvfq7e+/\n+cm7P/z0/F/84uwzn7154uc/PvHp69//9I9/+Ml7P7r9/IXbz57/9Pqf3r7y5GdvX/vs+KlPn/7LT0+9\n8en505+dP/PZ+eufPnP99jtvffripU+vnrz9J+duf/+GtefTZ37wyfU37JVPT7/+6bnXfv79lz678vTt\nv3jV/v25Pc73HsfFP3j59ok3rc0BJ2xs7t08Zz7DAKYbJnK5UgK2jQzJmCC4augYsG4CCZp91RPMCbYW\n8rY2w92psSU9JsJr5eZ15HTJPhdaiJXaqRIg7wbBWKEHHX5adwdhvA2PhJOVkIQAXgHUR5kUgqH6MGbJ\nTde53MIZEy6yqT3ANRAzmtC71THhd+I63zxX1ps3X4Z9ESjZchjwqiFzLkBagm7Pm5oZd/Ona2Dpo0SW\nY7IEIhOZVrcgTg4z9eUeatU7/9w2XQdQNR4xq0vb/pGqKBvnbA8aB2VF1VrreWvMzZdXR+KVEBjpfVg7\nksxeQS+zV7Fw2NR4Ckd5E65GGF/Zc94LlRfsBWghULUSXnoJFac+6hn2H7HmV49EANm8/B5nSxkwvsbN\nMkyBIZCVfSDxXmYmA5BcYsTQZk6SrdK/FWjBJmCS0fODJopqn2RJ7A+85DaKjp9kYWwVBb/Kf1/lu5f5\n1gV+7ImoRK4i5Sf+9vSf+1v4/Bv89zVW7L4W11FV8mv88HNxneNshm76GptxJr5+ultDqWKw2ngJcDTp\nwt++epL1y8/wM+f5+2n+/jN+/QKLo1/li6ejSRejbLnu/njc4kJUDb8Sb1lLXuArF3k7Nen5uJeKlL/B\neurHvan45Ud8imd4R/XYxahQ/gILnD8Vdcpf4/9Oq846r6BOuBL1zk/xuz/gTc/FXX4Q5d7Vkxeyeu0a\nuKeiSDwHzvvZOuqElznHWy95b+MBv8NC7M9HJ5yKe/0gCrefZm+kausvRUed5IfVnu/FTc9Hj6nlN2LQ\n7c+no0r9j+Je34su0gVVEv4Dvqjevsi+0nx4IwZaj6O5eiN69Tg74Q027wxbq68/EQ17HK97XXnNZ81V\njc5TbO25KGN/IZ7iRZ8q3s/n/bnw7ln++2I84Ktxr+Ns/7Woaq9G/jj+1IdP8JG1gk7zxTRbTkfzXmOb\n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\n+y++LtIcOB5PrcLur8W9XuSTnkS9eG//1agFf7V95DRv/Qrsf3z+xayvLscKusrLnon+POMF7ts2q69+\nGCXUL7bP5b16nO15Ij7P5uHKp9nmC+zJk+yli+3Y+Tq6EaXkH8/2jcvx+pl2DqvfMMfeiK9ci8/rM1dj\nnV5j807zk5pvmv8vRZ+cjkG5EnNAbb7iDda4t3M19eETsd6f5NWuRJ+8lu0Px7NnzPYcf6LoUtw3tecC\nq9WnfYb3xdXOZ/Mnzc/jMUsv8y0WsvfxeiGbY6dizrzKm6a1prXwwvT+eZzf0lo7z2f/IK6j+a9N/vnp\nPf9afOa1bM5oYl/M9oGfRZ+8ETv5ad+j8JXz0bAf8InS9S/ECnqv7Qe89Xi8dTZG/EyMAluibmnX+wtT\ne0U7uLHWfJ5f9odN+4P/qbHQ3HuG1+e08V36QnvG+fOmfj7FP6/yM29EI5/zZ/TPXI0Bupg94xPx7wu8\nwmW+/k52Vl7w72Lf0Hn3ahp3qkVDF/tpKiS/TT3pR5Pq86Vb74Ri88cnoC798Sm+foWKyK1Ws5SUT926\nSDXvpAOeFJZfzzSW37QrvAldcOhphzI4Xp3SEH9Myti438cn/V7hAVNVmrrXev0NtMnVpi+46jh+P4fP\n+jXPfXySV1J73qLudVzzdXvvFBSp7TpX/fNQ6H6cn4K+9ROhUU4V6VeSNvlbt37Cp4DW+Jnsvk9Sn5tt\nc4VzKVJfomq3FL+hzX0Kz88+DWXst6hv/rj0xqVdTR3xS9Sf1uuPUsX8rPfb43zKM1KsvnUWz4/r8NUr\n1Et/mq9Dxfws+iB9lxrdrtd9ht94068v3XK1B9d+x5/xvM2Dp29d4hXfSnrdP8v+vUwFbe/zVuvcZkbb\nJ+ehh+7j/oara7fa8U/E62lMoe99DXMvxiKe8dZraI36wa7qiuPWX49TuTzUvWNcMPPe8vnzpv32JK+M\n+X/d/oJO+mW2IObGGSq+n/W2XcXrjCsi8ge3vS0nisj/3gxmJm1wx55SUmN9PPToZb99h3LTEVam+DDY\neIPN2R1MhkivZQIUDyJ7KqK1Wg9Xx5secZzPscE5Jr9Z+hwSs81tZ2JWwHlAB8Fztq2eUu1y1p1U5D20\nNMlAP4KSuvP2TyeERIdKtYd8IsJh9yO/s7oxhuyJyBae+d3L5F9kZhhkjzDs1hBlrT2hkWEgvrgWIHQy\n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`\n\n/** @type {Uint8Array} */\nlet dictionary\n\nexport function getDictionary() {\n  if (!dictionary) {\n    dictionary = new Uint8Array(122784)\n    const gzipString = atob(dictionaryGz64)\n    const gzipBytes = new Uint8Array(gzipString.length)\n    for (let i = 0; i < gzipString.length; i++) {\n      gzipBytes[i] = gzipString.charCodeAt(i)\n    }\n    gunzip(gzipBytes, dictionary)\n  }\n  return dictionary\n}\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n   Transformations on dictionary words.\n*/\n\nimport { getDictionary } from './brotli.dictionary.js'\n\nconst kIdentity = 0\nconst kOmitLast1 = 1\nconst kOmitLast2 = 2\nconst kOmitLast3 = 3\nconst kOmitLast4 = 4\nconst kOmitLast5 = 5\nconst kOmitLast6 = 6\nconst kOmitLast7 = 7\nconst kOmitLast8 = 8\nconst kOmitLast9 = 9\nconst kUppercaseFirst = 10\nconst kUppercaseAll = 11\nconst kOmitFirst1 = 12\nconst kOmitFirst2 = 13\nconst kOmitFirst3 = 14\nconst kOmitFirst4 = 15\nconst kOmitFirst5 = 16\nconst kOmitFirst6 = 17\nconst kOmitFirst7 = 18\n// const kOmitFirst8 = 19\nconst kOmitFirst9 = 20\n\nclass Transform {\n  /**\n   * @param {string} prefix\n   * @param {number} transform\n   * @param {string} suffix\n   */\n  constructor(prefix, transform, suffix) {\n    this.prefix = new Uint8Array(prefix.length)\n    this.transform = transform\n    this.suffix = new Uint8Array(suffix.length)\n\n    for (let i = 0; i < prefix.length; i++) this.prefix[i] = prefix.charCodeAt(i)\n    for (let i = 0; i < suffix.length; i++) this.suffix[i] = suffix.charCodeAt(i)\n  }\n}\n\nexport const kTransforms = [\n  new Transform( '', kIdentity, '' ),\n  new Transform( '', kIdentity, ' ' ),\n  new Transform( ' ', kIdentity, ' ' ),\n  new Transform( '', kOmitFirst1, '' ),\n  new Transform( '', kUppercaseFirst, ' ' ),\n  new Transform( '', kIdentity, ' the ' ),\n  new Transform( ' ', kIdentity, '' ),\n  new Transform( 's ', kIdentity, ' ' ),\n  new Transform( '', kIdentity, ' of ' ),\n  new Transform( '', kUppercaseFirst, '' ),\n  new Transform( '', kIdentity, ' and ' ),\n  new Transform( '', kOmitFirst2, '' ),\n  new Transform( '', kOmitLast1, '' ),\n  new Transform( ', ', kIdentity, ' ' ),\n  new Transform( '', kIdentity, ', ' ),\n  new Transform( ' ', kUppercaseFirst, ' ' ),\n  new Transform( '', kIdentity, ' in ' ),\n  new Transform( '', kIdentity, ' to ' ),\n  new Transform( 'e ', kIdentity, ' ' ),\n  new Transform( '', kIdentity, '\"' ),\n  new Transform( '', kIdentity, '.' ),\n  new Transform( '', kIdentity, '\">' ),\n  new Transform( '', kIdentity, '\\n' ),\n  new Transform( '', kOmitLast3, '' ),\n  new Transform( '', kIdentity, ']' ),\n  new Transform( '', kIdentity, ' for ' ),\n  new Transform( '', kOmitFirst3, '' ),\n  new Transform( '', kOmitLast2, '' ),\n  new Transform( '', kIdentity, ' a ' ),\n  new Transform( '', kIdentity, ' that ' ),\n  new Transform( ' ', kUppercaseFirst, '' ),\n  new Transform( '', kIdentity, '. ' ),\n  new Transform( '.', kIdentity, '' ),\n  new Transform( ' ', kIdentity, ', ' ),\n  new Transform( '', kOmitFirst4, '' ),\n  new Transform( '', kIdentity, ' with ' ),\n  new Transform( '', kIdentity, '\\'' ),\n  new Transform( '', kIdentity, ' from ' ),\n  new Transform( '', kIdentity, ' by ' ),\n  new Transform( '', kOmitFirst5, '' ),\n  new Transform( '', kOmitFirst6, '' ),\n  new Transform( ' the ', kIdentity, '' ),\n  new Transform( '', kOmitLast4, '' ),\n  new Transform( '', kIdentity, '. The ' ),\n  new Transform( '', kUppercaseAll, '' ),\n  new Transform( '', kIdentity, ' on ' ),\n  new Transform( '', kIdentity, ' as ' ),\n  new Transform( '', kIdentity, ' is ' ),\n  new Transform( '', kOmitLast7, '' ),\n  new Transform( '', kOmitLast1, 'ing ' ),\n  new Transform( '', kIdentity, '\\n\\t' ),\n  new Transform( '', kIdentity, ':' ),\n  new Transform( ' ', kIdentity, '. ' ),\n  new Transform( '', kIdentity, 'ed ' ),\n  new Transform( '', kOmitFirst9, '' ),\n  new Transform( '', kOmitFirst7, '' ),\n  new Transform( '', kOmitLast6, '' ),\n  new Transform( '', kIdentity, '(' ),\n  new Transform( '', kUppercaseFirst, ', ' ),\n  new Transform( '', kOmitLast8, '' ),\n  new Transform( '', kIdentity, ' at ' ),\n  new Transform( '', kIdentity, 'ly ' ),\n  new Transform( ' the ', kIdentity, ' of ' ),\n  new Transform( '', kOmitLast5, '' ),\n  new Transform( '', kOmitLast9, '' ),\n  new Transform( ' ', kUppercaseFirst, ', ' ),\n  new Transform( '', kUppercaseFirst, '\"' ),\n  new Transform( '.', kIdentity, '(' ),\n  new Transform( '', kUppercaseAll, ' ' ),\n  new Transform( '', kUppercaseFirst, '\">' ),\n  new Transform( '', kIdentity, '=\"' ),\n  new Transform( ' ', kIdentity, '.' ),\n  new Transform( '.com/', kIdentity, '' ),\n  new Transform( ' the ', kIdentity, ' of the ' ),\n  new Transform( '', kUppercaseFirst, '\\'' ),\n  new Transform( '', kIdentity, '. This ' ),\n  new Transform( '', kIdentity, ',' ),\n  new Transform( '.', kIdentity, ' ' ),\n  new Transform( '', kUppercaseFirst, '(' ),\n  new Transform( '', kUppercaseFirst, '.' ),\n  new Transform( '', kIdentity, ' not ' ),\n  new Transform( ' ', kIdentity, '=\"' ),\n  new Transform( '', kIdentity, 'er ' ),\n  new Transform( ' ', kUppercaseAll, ' ' ),\n  new Transform( '', kIdentity, 'al ' ),\n  new Transform( ' ', kUppercaseAll, '' ),\n  new Transform( '', kIdentity, '=\\'' ),\n  new Transform( '', kUppercaseAll, '\"' ),\n  new Transform( '', kUppercaseFirst, '. ' ),\n  new Transform( ' ', kIdentity, '(' ),\n  new Transform( '', kIdentity, 'ful ' ),\n  new Transform( ' ', kUppercaseFirst, '. ' ),\n  new Transform( '', kIdentity, 'ive ' ),\n  new Transform( '', kIdentity, 'less ' ),\n  new Transform( '', kUppercaseAll, '\\'' ),\n  new Transform( '', kIdentity, 'est ' ),\n  new Transform( ' ', kUppercaseFirst, '.' ),\n  new Transform( '', kUppercaseAll, '\">' ),\n  new Transform( ' ', kIdentity, '=\\'' ),\n  new Transform( '', kUppercaseFirst, ',' ),\n  new Transform( '', kIdentity, 'ize ' ),\n  new Transform( '', kUppercaseAll, '.' ),\n  new Transform( '\\xc2\\xa0', kIdentity, '' ),\n  new Transform( ' ', kIdentity, ',' ),\n  new Transform( '', kUppercaseFirst, '=\"' ),\n  new Transform( '', kUppercaseAll, '=\"' ),\n  new Transform( '', kIdentity, 'ous ' ),\n  new Transform( '', kUppercaseAll, ', ' ),\n  new Transform( '', kUppercaseFirst, '=\\'' ),\n  new Transform( ' ', kUppercaseFirst, ',' ),\n  new Transform( ' ', kUppercaseAll, '=\"' ),\n  new Transform( ' ', kUppercaseAll, ', ' ),\n  new Transform( '', kUppercaseAll, ',' ),\n  new Transform( '', kUppercaseAll, '(' ),\n  new Transform( '', kUppercaseAll, '. ' ),\n  new Transform( ' ', kUppercaseAll, '.' ),\n  new Transform( '', kUppercaseAll, '=\\'' ),\n  new Transform( ' ', kUppercaseAll, '. ' ),\n  new Transform( ' ', kUppercaseFirst, '=\"' ),\n  new Transform( ' ', kUppercaseAll, '=\\'' ),\n  new Transform( ' ', kUppercaseFirst, '=\\'' ),\n]\n\nexport const kNumTransforms = kTransforms.length\n\n/**\n * @param {Uint8Array} p\n * @param {number} i\n * @returns {number}\n */\nfunction ToUpperCase(p, i) {\n  if (p[i] < 0xc0) {\n    if (p[i] >= 97 && p[i] <= 122) {\n      p[i] ^= 32\n    }\n    return 1\n  }\n\n  /* An overly simplified uppercasing model for utf-8. */\n  if (p[i] < 0xe0) {\n    p[i + 1] ^= 32\n    return 2\n  }\n\n  /* An arbitrary transform for three byte characters. */\n  p[i + 2] ^= 5\n  return 3\n}\n\n/**\n * @param {Uint8Array} dst\n * @param {number} idx\n * @param {number} word\n * @param {number} len\n * @param {number} transform\n * @returns {number}\n */\nexport function transformDictionaryWord(dst, idx, word, len, transform) {\n  const dictionary = getDictionary()\n  const { prefix } = kTransforms[transform]\n  const { suffix } = kTransforms[transform]\n  const t = kTransforms[transform].transform\n  let skip = t < kOmitFirst1 ? 0 : t - (kOmitFirst1 - 1)\n  const start_idx = idx\n\n  if (skip > len) skip = len\n\n  let prefix_pos = 0\n  while (prefix_pos < prefix.length) {\n    dst[idx++] = prefix[prefix_pos++]\n  }\n\n  word += skip\n  len -= skip\n\n  if (t <= kOmitLast9) len -= t\n\n  for (let i = 0; i < len; i++) {\n    dst[idx++] = dictionary[word + i]\n  }\n\n  let uppercase = idx - len\n\n  if (t === kUppercaseFirst) {\n    ToUpperCase(dst, uppercase)\n  } else if (t === kUppercaseAll) {\n    while (len > 0) {\n      const step = ToUpperCase(dst, uppercase)\n      uppercase += step\n      len -= step\n    }\n  }\n\n  let suffix_pos = 0\n  while (suffix_pos < suffix.length) {\n    dst[idx++] = suffix[suffix_pos++]\n  }\n\n  return idx - start_idx\n}\n","/* Adapted from https://github.com/foliojs/brotli.js\n * Copyright 2015 Devon Govett, MIT License\n * Copyright 2013 Google Inc, Apache License 2.0\n */\n\nimport { BrotliBitReader } from './brotli.bitreader.js'\nimport { copyUncompressedBlockToOutput, decodeBlockType, decodeMetaBlockLength, decodeVarLenUint8, decodeWindowBits, jumpToByteBoundary, readBlockLength } from './brotli.blocks.js'\nimport { lookup, lookupOffsets } from './brotli.context.js'\nimport { decodeContextMap } from './brotli.contextmap.js'\nimport { HuffmanCode, HuffmanTreeGroup, readHuffmanCode, readSymbol } from './brotli.huffman.js'\nimport { kCopyLengthPrefixCode, kCopyRangeLut, kInsertLengthPrefixCode, kInsertRangeLut } from './brotli.prefix.js'\nimport { BrotliInput, BrotliOutput } from './brotli.streams.js'\nimport { kNumTransforms, transformDictionaryWord } from './brotli.transform.js'\nimport { HUFFMAN_MAX_TABLE_SIZE } from './gzip.huffman.js'\n\nconst kNumLiteralCodes = 256\nconst kNumInsertAndCopyCodes = 704\nconst kNumBlockLengthCodes = 26\nconst kLiteralContextBits = 6\nconst kDistanceContextBits = 2\n\nconst NUM_DISTANCE_SHORT_CODES = 16\nconst kDistanceShortCodeIndexOffset = new Uint8Array([\n  3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2,\n])\n\nconst kDistanceShortCodeValueOffset = new Int8Array([\n  0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3,\n])\n\n// Brotli dictionary\nconst offsetsByLength = new Uint32Array([\n  0, 0, 0, 0, 0, 4096, 9216, 21504, 35840, 44032,\n  53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536,\n  115968, 118528, 119872, 121280, 122016,\n])\n\nconst sizeBitsByLength = new Uint8Array([\n  0, 0, 0, 0, 10, 10, 11, 11, 10, 10,\n  10, 10, 10, 9, 9, 8, 7, 7, 8, 7,\n  7, 6, 6, 5, 5,\n])\n\nconst minDictionaryWordLength = 4\nconst maxDictionaryWordLength = 24\n\n/**\n * @param {Uint8Array} input\n * @param {number} outputLength\n * @returns {Uint8Array}\n */\nexport function decompressBrotli(input, outputLength) {\n  const output = new Uint8Array(outputLength)\n  const brotliInput = new BrotliInput(input)\n  const brotliOutput = new BrotliOutput(output)\n  brotli(brotliInput, brotliOutput)\n  return output\n}\n\n/**\n * @param {BrotliInput} input\n * @param {BrotliOutput} output\n */\nfunction brotli(input, output) {\n  let pos = 0\n  let input_end = 0\n  let max_distance = 0\n  // This ring buffer holds a few past copy distances that will be used by special distance codes\n  const dist_rb = [ 16, 15, 11, 4 ]\n  let dist_rb_idx = 0\n  const hgroup = [new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0)]\n\n  // We need the slack region for the following reasons:\n  //   - always doing two 8-byte copies for fast backward copying\n  //   - transforms\n  //   - flushing the input ringbuffer when decoding uncompressed blocks\n  const kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE\n\n  const br = new BrotliBitReader(input)\n\n  // Decode window size\n  const window_bits = decodeWindowBits(br)\n  const max_backward_distance = (1 << window_bits) - 16\n\n  const ringbuffer_size = 1 << window_bits\n  const ringbuffer_mask = ringbuffer_size - 1\n  const ringbuffer = new Uint8Array(ringbuffer_size + kRingBufferWriteAheadSlack + maxDictionaryWordLength)\n  const ringbuffer_end = ringbuffer_size\n\n  const block_type_trees = []\n  const block_len_trees = []\n  for (let x = 0; x < 3 * HUFFMAN_MAX_TABLE_SIZE; x++) {\n    block_type_trees[x] = new HuffmanCode(0, 0)\n    block_len_trees[x] = new HuffmanCode(0, 0)\n  }\n\n  while (!input_end) {\n    const block_length = [ 1 << 28, 1 << 28, 1 << 28 ]\n    const block_type = [ 0 ]\n    const num_block_types = [ 1, 1, 1 ]\n    const block_type_rb = [ 0, 1, 0, 1, 0, 1 ]\n    const block_type_rb_index = [ 0 ]\n\n    for (let i = 0; i < 3; i++) {\n      hgroup[i].codes = []\n      hgroup[i].htrees = new Uint32Array()\n    }\n\n    br.readMoreInput()\n\n    const _out = decodeMetaBlockLength(br)\n    let meta_block_remaining_len = _out.meta_block_length\n    if (pos + meta_block_remaining_len > output.buffer.length) {\n      // We need to grow the output buffer to fit the additional data\n      const tmp = new Uint8Array( pos + meta_block_remaining_len )\n      tmp.set( output.buffer )\n      output.buffer = tmp\n    }\n    input_end = _out.input_end\n\n    if (_out.is_metadata) {\n      jumpToByteBoundary(br)\n\n      for (; meta_block_remaining_len > 0; --meta_block_remaining_len) {\n        br.readMoreInput()\n        // Read one byte and ignore it\n        br.readBits(8)\n      }\n\n      continue\n    }\n\n    if (meta_block_remaining_len === 0) continue\n\n    if (_out.is_uncompressed) {\n      br.bit_pos_ = br.bit_pos_ + 7 & ~7\n      copyUncompressedBlockToOutput(output, meta_block_remaining_len, pos, ringbuffer, ringbuffer_mask, br)\n      pos += meta_block_remaining_len\n      continue\n    }\n\n    for (let i = 0; i < 3; i++) {\n      num_block_types[i] = decodeVarLenUint8(br) + 1\n      if (num_block_types[i] >= 2) {\n        readHuffmanCode(num_block_types[i] + 2, block_type_trees, i * HUFFMAN_MAX_TABLE_SIZE, br)\n        readHuffmanCode(kNumBlockLengthCodes, block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br)\n        block_length[i] = readBlockLength(block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br)\n        block_type_rb_index[i] = 1\n      }\n    }\n\n    br.readMoreInput()\n\n    const distance_postfix_bits = br.readBits(2)\n    const num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits)\n    const distance_postfix_mask = (1 << distance_postfix_bits) - 1\n    const num_distance_codes = num_direct_distance_codes + (48 << distance_postfix_bits)\n    const context_modes = new Uint8Array(num_block_types[0])\n\n    for (let i = 0; i < num_block_types[0]; i++) {\n      br.readMoreInput()\n      context_modes[i] = br.readBits(2) << 1\n    }\n\n    const [num_literal_htrees, context_map] = decodeContextMap(num_block_types[0] << kLiteralContextBits, br)\n    const [num_dist_htrees, dist_context_map] = decodeContextMap(num_block_types[2] << kDistanceContextBits, br)\n\n    hgroup[0] = new HuffmanTreeGroup(kNumLiteralCodes, num_literal_htrees)\n    hgroup[1] = new HuffmanTreeGroup(kNumInsertAndCopyCodes, num_block_types[1])\n    hgroup[2] = new HuffmanTreeGroup(num_distance_codes, num_dist_htrees)\n\n    for (let i = 0; i < 3; ++i) {\n      hgroup[i].decode(br)\n    }\n\n    let context_map_slice = 0\n    let dist_context_map_slice = 0\n    let context_mode = context_modes[block_type[0]]\n    let context_lookup_offset1 = lookupOffsets[context_mode]\n    let context_lookup_offset2 = lookupOffsets[context_mode + 1]\n    let htree_command = hgroup[1].htrees[0]\n\n    while (meta_block_remaining_len > 0) {\n      let distance_code\n\n      br.readMoreInput()\n\n      if (block_length[1] === 0) {\n        decodeBlockType(num_block_types[1],\n          block_type_trees, 1, block_type, block_type_rb,\n          block_type_rb_index, br)\n        block_length[1] = readBlockLength(block_len_trees, HUFFMAN_MAX_TABLE_SIZE, br)\n        htree_command = hgroup[1].htrees[block_type[1]]\n      }\n      block_length[1]--\n      const cmd_code = readSymbol(hgroup[1].codes, htree_command, br)\n      let range_idx = cmd_code >> 6\n      if (range_idx >= 2) {\n        range_idx -= 2\n        distance_code = -1\n      } else {\n        distance_code = 0\n      }\n      const insertIndex = kInsertRangeLut[range_idx] + (cmd_code >> 3 & 7)\n      const insertPrefix = kInsertLengthPrefixCode[insertIndex]\n      const insertLength = insertPrefix.offset + br.readBits(insertPrefix.nbits)\n      const copyIndex = kCopyRangeLut[range_idx] + (cmd_code & 7)\n      const copyCode = kCopyLengthPrefixCode[copyIndex]\n      const copyLength = copyCode.offset + br.readBits(copyCode.nbits)\n      let prev_byte1 = ringbuffer[pos - 1 & ringbuffer_mask]\n      let prev_byte2 = ringbuffer[pos - 2 & ringbuffer_mask]\n      for (let j = 0; j < insertLength; j++) {\n        br.readMoreInput()\n\n        if (block_length[0] === 0) {\n          decodeBlockType(num_block_types[0],\n            block_type_trees, 0, block_type, block_type_rb,\n            block_type_rb_index, br)\n          block_length[0] = readBlockLength(block_len_trees, 0, br)\n          const context_offset = block_type[0] << kLiteralContextBits\n          context_map_slice = context_offset\n          context_mode = context_modes[block_type[0]]\n          context_lookup_offset1 = lookupOffsets[context_mode]\n          context_lookup_offset2 = lookupOffsets[context_mode + 1]\n        }\n        const context = lookup[context_lookup_offset1 + prev_byte1] |\n                   lookup[context_lookup_offset2 + prev_byte2]\n        const literal_htree_index = context_map[context_map_slice + context]\n        block_length[0]--\n        prev_byte2 = prev_byte1\n        prev_byte1 = readSymbol(hgroup[0].codes, hgroup[0].htrees[literal_htree_index], br)\n        ringbuffer[pos & ringbuffer_mask] = prev_byte1\n        if ((pos & ringbuffer_mask) === ringbuffer_mask) {\n          output.write(ringbuffer, ringbuffer_size)\n        }\n        pos++\n      }\n      meta_block_remaining_len -= insertLength\n      if (meta_block_remaining_len <= 0) break\n\n      if (distance_code < 0) {\n        br.readMoreInput()\n        if (block_length[2] === 0) {\n          decodeBlockType(num_block_types[2],\n            block_type_trees, 2, block_type, block_type_rb,\n            block_type_rb_index, br)\n          block_length[2] = readBlockLength(block_len_trees, 2 * HUFFMAN_MAX_TABLE_SIZE, br)\n          dist_context_map_slice = block_type[2] << kDistanceContextBits\n        }\n        block_length[2]--\n        const context = (copyLength > 4 ? 3 : copyLength - 2) & 0xff\n        const dist_htree_index = dist_context_map[dist_context_map_slice + context]\n        distance_code = readSymbol(hgroup[2].codes, hgroup[2].htrees[dist_htree_index], br)\n        if (distance_code >= num_direct_distance_codes) {\n          distance_code -= num_direct_distance_codes\n          const postfix = distance_code & distance_postfix_mask\n          distance_code >>= distance_postfix_bits\n          const nbits = (distance_code >> 1) + 1\n          const offset = (2 + (distance_code & 1) << nbits) - 4\n          distance_code = num_direct_distance_codes +\n              (offset + br.readBits(nbits) <<\n               distance_postfix_bits) + postfix\n        }\n      }\n\n      // Convert distance code to actual distance by possibly looking up past distnaces from the ringbuffer\n      const distance = translateShortCodes(distance_code, dist_rb, dist_rb_idx)\n      if (distance < 0) throw new Error('[BrotliDecompress] invalid distance')\n\n      if (pos < max_backward_distance && max_distance !== max_backward_distance) {\n        max_distance = pos\n      } else {\n        max_distance = max_backward_distance\n      }\n\n      let copy_dst = pos & ringbuffer_mask\n\n      if (distance > max_distance) {\n        if (copyLength >= minDictionaryWordLength && copyLength <= maxDictionaryWordLength) {\n          let offset = offsetsByLength[copyLength]\n          const word_id = distance - max_distance - 1\n          const shift = sizeBitsByLength[copyLength]\n          const mask = (1 << shift) - 1\n          const word_idx = word_id & mask\n          const transform_idx = word_id >> shift\n          offset += word_idx * copyLength\n          if (transform_idx < kNumTransforms) {\n            const len = transformDictionaryWord(ringbuffer, copy_dst, offset, copyLength, transform_idx)\n            copy_dst += len\n            pos += len\n            meta_block_remaining_len -= len\n            if (copy_dst >= ringbuffer_end) {\n              output.write(ringbuffer, ringbuffer_size)\n\n              for (let _x = 0; _x < copy_dst - ringbuffer_end; _x++)\n                ringbuffer[_x] = ringbuffer[ringbuffer_end + _x]\n            }\n          } else {\n            throw new Error('Invalid backward reference')\n          }\n        } else {\n          throw new Error('Invalid backward reference')\n        }\n      } else {\n        if (distance_code > 0) {\n          dist_rb[dist_rb_idx & 3] = distance\n          dist_rb_idx++\n        }\n\n        if (copyLength > meta_block_remaining_len) {\n          throw new Error('Invalid backward reference')\n        }\n\n        for (let j = 0; j < copyLength; j++) {\n          ringbuffer[pos & ringbuffer_mask] = ringbuffer[pos - distance & ringbuffer_mask]\n          if ((pos & ringbuffer_mask) === ringbuffer_mask) {\n            output.write(ringbuffer, ringbuffer_size)\n          }\n          pos++\n          meta_block_remaining_len--\n        }\n      }\n    }\n\n    // Protect pos from overflow, wrap it around at every GB of input data\n    pos &= 0x3fffffff\n  }\n\n  output.write(ringbuffer, pos & ringbuffer_mask)\n}\n\n/**\n * @param {number} code\n * @param {number[]} ringbuffer\n * @param {number} index\n * @returns {number}\n */\nfunction translateShortCodes(code, ringbuffer, index) {\n  if (code < NUM_DISTANCE_SHORT_CODES) {\n    index += kDistanceShortCodeIndexOffset[code]\n    index &= 3\n    return ringbuffer[index] + kDistanceShortCodeValueOffset[code]\n  } else {\n    return code - NUM_DISTANCE_SHORT_CODES + 1\n  }\n}\n","/**\n * LZ4 decompression with legacy hadoop support.\n * https://github.com/apache/arrow/blob/apache-arrow-16.1.0/cpp/src/arrow/util/compression_lz4.cc#L475\n *\n * @param {Uint8Array} input\n * @param {number} outputLength\n * @returns {Uint8Array}\n */\nexport function decompressLz4(input, outputLength) {\n  const output = new Uint8Array(outputLength)\n  try {\n    let i = 0 // input index\n    let o = 0 // output index\n    while (i < input.length - 8) {\n      const expectedOutputLength = input[i++] << 24 | input[i++] << 16 | input[i++] << 8 | input[i++]\n      const expectedInputLength = input[i++] << 24 | input[i++] << 16 | input[i++] << 8 | input[i++]\n      if (input.length - i < expectedInputLength) throw new Error('lz4 not hadoop')\n      if (output.length < expectedOutputLength) throw new Error('lz4 not hadoop')\n\n      // decompress and compare with expected\n      const chunk = lz4basic(input.subarray(i, i + expectedInputLength), output, o)\n      if (chunk !== expectedOutputLength) throw new Error('lz4 not hadoop')\n      i += expectedInputLength\n      o += expectedOutputLength\n\n      if (i === input.length) return output\n    }\n    if (i < input.length) throw new Error('lz4 not hadoop')\n  } catch (error) {\n    if (error instanceof Error && error.message !== 'lz4 not hadoop') throw error\n    // fallback to basic lz4\n    lz4basic(input, output, 0)\n  }\n  return output\n}\n\n/**\n * Basic LZ4 block decompression.\n *\n * @param {Uint8Array} input\n * @param {number} outputLength\n * @returns {Uint8Array}\n */\nexport function decompressLz4Raw(input, outputLength) {\n  const output = new Uint8Array(outputLength)\n  lz4basic(input, output, 0)\n  return output\n}\n\n/**\n * @param {Uint8Array} input\n * @param {Uint8Array} output\n * @param {number} outputIndex\n * @returns {number} bytes written\n */\nfunction lz4basic(input, output, outputIndex) {\n  let len = outputIndex // output position\n  for (let i = 0; i < input.length;) {\n    const token = input[i++]\n\n    let literals = token >> 4\n    if (literals) {\n      // literal length\n      let byte = literals + 240\n      while (byte === 255) literals += byte = input[i++]\n      // copy literals\n      output.set(input.subarray(i, i + literals), len)\n      len += literals\n      i += literals\n      if (i >= input.length) return len - outputIndex\n    }\n\n    const offset = input[i++] | input[i++] << 8\n    if (!offset || offset > len) {\n      throw new Error(`lz4 offset out of range ${offset}`)\n    }\n    // match length\n    let matchLength = token & 0xf\n    let byte = matchLength + 240\n    while (byte === 255) matchLength += byte = input[i++]\n    matchLength += 4 // minmatch 4\n    // copy match\n    // TODO: fast path when no overlap\n    let pos = len - offset\n    const end = len + matchLength\n    while (len < end) output[len++] = output[pos++]\n  }\n  return len - outputIndex\n}\n","import { decompress as decompressZstd } from 'fzstd'\nimport { snappyUncompressor } from 'hysnappy'\nimport { decompressBrotli } from './brotli.js'\nimport { gunzip } from './gzip.js'\nimport { decompressLz4, decompressLz4Raw } from './lz4.js'\n\n/** @type {import('hyparquet').Compressors} */\nexport const compressors = {\n  SNAPPY: snappyUncompressor(), // loads wasm\n  GZIP: (input, length) => gunzip(input, new Uint8Array(length)),\n  BROTLI: decompressBrotli,\n  ZSTD: input => decompressZstd(input),\n  LZ4: decompressLz4,\n  LZ4_RAW: decompressLz4Raw,\n}\n","import { decompress as decompressZstd } from 'fzstd'\nimport { snappyUncompress as decompressSnappy } from 'hysnappy'\nimport { decompressBrotli } from './brotli.js'\nimport { gunzip } from './gzip.js'\nimport { decompressLz4, decompressLz4Raw } from './lz4.js'\n\nexport { compressors } from './compressors.js'\n\n/**\n * @param {Uint8Array} input\n * @param {number} outputLength\n * @returns {Uint8Array}\n */\nfunction decompressGzip(input, outputLength) {\n  return gunzip(input, new Uint8Array(outputLength))\n}\n\nexport {\n  decompressBrotli,\n  decompressGzip,\n  decompressLz4,\n  decompressLz4Raw,\n  decompressSnappy,\n  decompressZstd,\n  gunzip,\n}\n"]}