From af1a266670d040d2f4083ff309d732d648afba2a Mon Sep 17 00:00:00 2001
From: Angelos Mouzakitis
Date: Tue, 10 Oct 2023 14:33:42 +0000
Subject: Add submodule dependency files
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
---
.../BrotliCustomDecompressLib.inf | 73 +
.../BrotliDecUefiSupport.c | 31 +
.../BrotliDecUefiSupport.h | 43 +
.../BrotliCustomDecompressLib/BrotliDecompress.c | 316 +
.../BrotliDecompressLib.uni | 16 +
.../BrotliDecompressLibInternal.h | 48 +
.../GuidedSectionExtraction.c | 191 +
.../BrotliCustomDecompressLib/brotli/.editorconfig | 40 +
.../brotli/.gitattributes | 1 +
.../BrotliCustomDecompressLib/brotli/.gitignore | 18 +
.../BrotliCustomDecompressLib/brotli/.gitmodules | 6 +
.../BrotliCustomDecompressLib/brotli/.travis.yml | 229 +
.../Library/BrotliCustomDecompressLib/brotli/BUILD | 144 +
.../brotli/CMakeLists.txt | 407 +
.../brotli/CONTRIBUTING.md | 27 +
.../BrotliCustomDecompressLib/brotli/LICENSE | 19 +
.../BrotliCustomDecompressLib/brotli/MANIFEST.in | 17 +
.../BrotliCustomDecompressLib/brotli/Makefile | 55 +
.../BrotliCustomDecompressLib/brotli/Makefile.am | 38 +
.../BrotliCustomDecompressLib/brotli/README | 15 +
.../BrotliCustomDecompressLib/brotli/README.md | 98 +
.../BrotliCustomDecompressLib/brotli/WORKSPACE | 21 +
.../BrotliCustomDecompressLib/brotli/bootstrap | 31 +
.../brotli/c/common/constants.h | 184 +
.../brotli/c/common/context.h | 261 +
.../brotli/c/common/dictionary.bin | 432 +
.../brotli/c/common/dictionary.c | 5914 ++++++++++
.../brotli/c/common/dictionary.h | 64 +
.../brotli/c/common/platform.h | 567 +
.../brotli/c/common/transform.c | 291 +
.../brotli/c/common/transform.h | 85 +
.../brotli/c/common/version.h | 26 +
.../brotli/c/dec/bit_reader.c | 65 +
.../brotli/c/dec/bit_reader.h | 356 +
.../brotli/c/dec/decode.c | 2605 +++++
.../brotli/c/dec/huffman.c | 339 +
.../brotli/c/dec/huffman.h | 128 +
.../brotli/c/dec/prefix.h | 750 ++
.../BrotliCustomDecompressLib/brotli/c/dec/state.c | 157 +
.../BrotliCustomDecompressLib/brotli/c/dec/state.h | 365 +
.../brotli/c/enc/backward_references.c | 145 +
.../brotli/c/enc/backward_references.h | 39 +
.../brotli/c/enc/backward_references_hq.c | 843 ++
.../brotli/c/enc/backward_references_hq.h | 95 +
.../brotli/c/enc/backward_references_inc.h | 163 +
.../brotli/c/enc/bit_cost.c | 35 +
.../brotli/c/enc/bit_cost.h | 63 +
.../brotli/c/enc/bit_cost_inc.h | 127 +
.../brotli/c/enc/block_encoder_inc.h | 34 +
.../brotli/c/enc/block_splitter.c | 194 +
.../brotli/c/enc/block_splitter.h | 51 +
.../brotli/c/enc/block_splitter_inc.h | 440 +
.../brotli/c/enc/brotli_bit_stream.c | 1329 +++
.../brotli/c/enc/brotli_bit_stream.h | 84 +
.../brotli/c/enc/cluster.c | 56 +
.../brotli/c/enc/cluster.h | 48 +
.../brotli/c/enc/cluster_inc.h | 320 +
.../brotli/c/enc/command.h | 190 +
.../brotli/c/enc/compress_fragment.c | 790 ++
.../brotli/c/enc/compress_fragment.h | 61 +
.../brotli/c/enc/compress_fragment_two_pass.c | 645 ++
.../brotli/c/enc/compress_fragment_two_pass.h | 54 +
.../brotli/c/enc/dictionary_hash.c | 1846 ++++
.../brotli/c/enc/dictionary_hash.h | 25 +
.../brotli/c/enc/encode.c | 1925 ++++
.../brotli/c/enc/encoder_dict.c | 33 +
.../brotli/c/enc/encoder_dict.h | 43 +
.../brotli/c/enc/entropy_encode.c | 501 +
.../brotli/c/enc/entropy_encode.h | 122 +
.../brotli/c/enc/entropy_encode_static.h | 539 +
.../brotli/c/enc/fast_log.h | 147 +
.../brotli/c/enc/find_match_length.h | 80 +
.../BrotliCustomDecompressLib/brotli/c/enc/hash.h | 488 +
.../brotli/c/enc/hash_composite_inc.h | 125 +
.../brotli/c/enc/hash_forgetful_chain_inc.h | 293 +
.../brotli/c/enc/hash_longest_match64_inc.h | 267 +
.../brotli/c/enc/hash_longest_match_inc.h | 262 +
.../brotli/c/enc/hash_longest_match_quickly_inc.h | 266 +
.../brotli/c/enc/hash_rolling_inc.h | 212 +
.../brotli/c/enc/hash_to_binary_tree_inc.h | 329 +
.../brotli/c/enc/histogram.c | 100 +
.../brotli/c/enc/histogram.h | 63 +
.../brotli/c/enc/histogram_inc.h | 51 +
.../brotli/c/enc/literal_cost.c | 175 +
.../brotli/c/enc/literal_cost.h | 30 +
.../brotli/c/enc/memory.c | 170 +
.../brotli/c/enc/memory.h | 114 +
.../brotli/c/enc/metablock.c | 663 ++
.../brotli/c/enc/metablock.h | 105 +
.../brotli/c/enc/metablock_inc.h | 183 +
.../brotli/c/enc/params.h | 46 +
.../brotli/c/enc/prefix.h | 53 +
.../brotli/c/enc/quality.h | 165 +
.../brotli/c/enc/ringbuffer.h | 167 +
.../brotli/c/enc/static_dict.c | 486 +
.../brotli/c/enc/static_dict.h | 40 +
.../brotli/c/enc/static_dict_lut.h | 5864 ++++++++++
.../brotli/c/enc/utf8_util.c | 85 +
.../brotli/c/enc/utf8_util.h | 32 +
.../brotli/c/enc/write_bits.h | 87 +
.../brotli/c/fuzz/decode_fuzzer.c | 58 +
.../brotli/c/fuzz/run_decode_fuzzer.c | 44 +
.../brotli/c/fuzz/test_fuzzer.sh | 33 +
.../brotli/c/include/brotli/decode.h | 344 +
.../brotli/c/include/brotli/encode.h | 448 +
.../brotli/c/include/brotli/port.h | 288 +
.../brotli/c/include/brotli/types.h | 83 +
.../brotli/c/tools/brotli.c | 1107 ++
.../brotli/c/tools/brotli.md | 107 +
.../brotli/compiler_config_setting.bzl | 28 +
.../BrotliCustomDecompressLib/brotli/configure | 8 +
.../brotli/configure-cmake | 318 +
.../BrotliCustomDecompressLib/brotli/configure.ac | 14 +
.../brotli/csharp/injected_code.txt | 32 +
.../brotli/csharp/org/brotli/dec/BitReader.cs | 271 +
.../brotli/csharp/org/brotli/dec/BitReaderTest.cs | 33 +
.../csharp/org/brotli/dec/BrotliInputStream.cs | 223 +
.../org/brotli/dec/BrotliRuntimeException.cs | 22 +
.../brotli/csharp/org/brotli/dec/Context.cs | 57 +
.../brotli/csharp/org/brotli/dec/Decode.cs | 992 ++
.../brotli/csharp/org/brotli/dec/DecodeTest.cs | 171 +
.../brotli/csharp/org/brotli/dec/Dictionary.cs | 97 +
.../brotli/csharp/org/brotli/dec/DictionaryTest.cs | 36 +
.../brotli/csharp/org/brotli/dec/Huffman.cs | 149 +
.../csharp/org/brotli/dec/HuffmanTreeGroup.cs | 50 +
.../brotli/csharp/org/brotli/dec/IntReader.cs | 36 +
.../brotli/csharp/org/brotli/dec/Prefix.cs | 33 +
.../brotli/csharp/org/brotli/dec/RunningState.cs | 37 +
.../brotli/csharp/org/brotli/dec/State.cs | 171 +
.../brotli/csharp/org/brotli/dec/SynthTest.cs | 2174 ++++
.../brotli/csharp/org/brotli/dec/Transform.cs | 154 +
.../brotli/csharp/org/brotli/dec/TransformTest.cs | 74 +
.../brotli/csharp/org/brotli/dec/Utils.cs | 59 +
.../csharp/org/brotli/dec/WordTransformType.cs | 68 +
.../brotli/csharp/sharpen.cfg | 18 +
.../brotli/csharp/transpile.sh | 94 +
.../docs/brotli-comparison-study-2015-09-22.pdf | Bin 0 -> 215208 bytes
.../BrotliCustomDecompressLib/brotli/docs/brotli.1 | 132 +
.../brotli/docs/decode.h.3 | 415 +
.../brotli/docs/encode.h.3 | 586 +
.../brotli/docs/types.h.3 | 117 +
.../brotli/fetch-spec/shared-brotli-fetch-spec.txt | 116 +
.../BrotliCustomDecompressLib/brotli/go/BUILD | 2 +
.../BrotliCustomDecompressLib/brotli/go/WORKSPACE | 21 +
.../brotli/go/cbrotli/BUILD | 26 +
.../brotli/go/cbrotli/cbrotli_test.go | 367 +
.../brotli/go/cbrotli/cgo.go | 13 +
.../brotli/go/cbrotli/reader.go | 161 +
.../brotli/go/cbrotli/writer.go | 159 +
.../BrotliCustomDecompressLib/brotli/java/BUILD | 98 +
.../brotli/java/WORKSPACE | 41 +
.../brotli/java/org/brotli/dec/BUILD | 59 +
.../brotli/java/org/brotli/dec/BitReader.java | 289 +
.../brotli/java/org/brotli/dec/BitReaderTest.java | 54 +
.../java/org/brotli/dec/BrotliInputStream.java | 160 +
.../org/brotli/dec/BrotliRuntimeException.java | 21 +
.../brotli/java/org/brotli/dec/Context.java | 58 +
.../brotli/java/org/brotli/dec/Decode.java | 1251 +++
.../brotli/java/org/brotli/dec/DecodeTest.java | 160 +
.../brotli/java/org/brotli/dec/Dictionary.java | 54 +
.../brotli/java/org/brotli/dec/DictionaryData.java | 51 +
.../brotli/java/org/brotli/dec/DictionaryTest.java | 38 +
.../java/org/brotli/dec/EagerStreamTest.java | 386 +
.../brotli/java/org/brotli/dec/Huffman.java | 137 +
.../java/org/brotli/dec/SetDictionaryTest.java | 76 +
.../brotli/java/org/brotli/dec/State.java | 89 +
.../brotli/java/org/brotli/dec/SynthTest.java | 2940 +++++
.../brotli/java/org/brotli/dec/Transform.java | 236 +
.../brotli/java/org/brotli/dec/TransformTest.java | 71 +
.../brotli/java/org/brotli/dec/Utils.java | 102 +
.../brotli/java/org/brotli/dec/build_defs.bzl | 34 +
.../brotli/java/org/brotli/dec/pom.xml | 172 +
.../brotli/java/org/brotli/dec/proguard.pgcfg | 6 +
.../brotli/java/org/brotli/integration/BUILD | 73 +
.../org/brotli/integration/BrotliJniTestBase.java | 13 +
.../java/org/brotli/integration/BundleChecker.java | 112 +
.../java/org/brotli/integration/BundleHelper.java | 113 +
.../java/org/brotli/integration/fuzz_data.zip | Bin 0 -> 23854 bytes
.../brotli/java/org/brotli/integration/pom.xml | 65 +
.../java/org/brotli/integration/test_corpus.zip | Bin 0 -> 3587214 bytes
.../java/org/brotli/integration/test_data.zip | Bin 0 -> 2859607 bytes
.../brotli/java/org/brotli/pom.xml | 101 +
.../brotli/java/org/brotli/wrapper/common/BUILD | 61 +
.../org/brotli/wrapper/common/BrotliCommon.java | 130 +
.../java/org/brotli/wrapper/common/CommonJNI.java | 16 +
.../wrapper/common/SetRfcDictionaryTest.java | 74 +
.../wrapper/common/SetZeroDictionaryTest.java | 48 +
.../java/org/brotli/wrapper/common/common_jni.cc | 47 +
.../brotli/java/org/brotli/wrapper/dec/BUILD | 84 +
.../brotli/wrapper/dec/BrotliDecoderChannel.java | 69 +
.../wrapper/dec/BrotliDecoderChannelTest.java | 84 +
.../org/brotli/wrapper/dec/BrotliInputStream.java | 115 +
.../brotli/wrapper/dec/BrotliInputStreamTest.java | 82 +
.../java/org/brotli/wrapper/dec/Decoder.java | 177 +
.../java/org/brotli/wrapper/dec/DecoderJNI.java | 121 +
.../java/org/brotli/wrapper/dec/DecoderTest.java | 77 +
.../org/brotli/wrapper/dec/EagerStreamTest.java | 75 +
.../java/org/brotli/wrapper/dec/decoder_jni.cc | 202 +
.../brotli/java/org/brotli/wrapper/enc/BUILD | 88 +
.../brotli/wrapper/enc/BrotliEncoderChannel.java | 77 +
.../wrapper/enc/BrotliEncoderChannelTest.java | 118 +
.../org/brotli/wrapper/enc/BrotliOutputStream.java | 87 +
.../brotli/wrapper/enc/BrotliOutputStreamTest.java | 118 +
.../org/brotli/wrapper/enc/EmptyInputTest.java | 29 +
.../java/org/brotli/wrapper/enc/Encoder.java | 205 +
.../java/org/brotli/wrapper/enc/EncoderJNI.java | 118 +
.../java/org/brotli/wrapper/enc/EncoderTest.java | 80 +
.../java/org/brotli/wrapper/enc/encoder_jni.cc | 195 +
.../BrotliCustomDecompressLib/brotli/js/BUILD | 43 +
.../BrotliCustomDecompressLib/brotli/js/WORKSPACE | 12 +
.../BrotliCustomDecompressLib/brotli/js/decode.js | 2029 ++++
.../brotli/js/decode.min.js | 2 +
.../brotli/js/decode_test.js | 79 +
.../brotli/js/polyfill.js | 65 +
.../BrotliCustomDecompressLib/brotli/premake5.lua | 78 +
.../brotli/python/Makefile | 57 +
.../brotli/python/README.md | 54 +
.../brotli/python/_brotli.cc | 753 ++
.../BrotliCustomDecompressLib/brotli/python/bro.py | 160 +
.../brotli/python/brotli.py | 56 +
.../brotli/python/tests/__init__.py | 0
.../brotli/python/tests/_test_utils.py | 112 +
.../brotli/python/tests/bro_test.py | 102 +
.../brotli/python/tests/compress_test.py | 41 +
.../brotli/python/tests/compressor_test.py | 94 +
.../brotli/python/tests/decompress_test.py | 42 +
.../brotli/python/tests/decompressor_test.py | 59 +
.../brotli/research/BUILD | 44 +
.../brotli/research/BUILD.libdivsufsort | 55 +
.../brotli/research/Makefile | 17 +
.../brotli/research/README.md | 67 +
.../brotli/research/WORKSPACE | 12 +
.../brotli/research/brotli_decoder.c | 93 +
.../brotli/research/brotlidump.py | 2362 ++++
.../brotli/research/deorummolae.cc | 302 +
.../brotli/research/deorummolae.h | 26 +
.../brotli/research/dictionary_generator.cc | 326 +
.../brotli/research/draw_diff.cc | 117 +
.../brotli/research/draw_histogram.cc | 197 +
.../brotli/research/durchschlag.cc | 726 ++
.../brotli/research/durchschlag.h | 99 +
.../brotli/research/esaxx/COPYING | 24 +
.../brotli/research/esaxx/README | 34 +
.../brotli/research/esaxx/cmdline.h | 704 ++
.../brotli/research/esaxx/enumSubstring.cpp | 140 +
.../brotli/research/esaxx/esa.hxx | 125 +
.../brotli/research/esaxx/sais.hxx | 364 +
.../brotli/research/esaxx/waf | Bin 0 -> 88387 bytes
.../brotli/research/esaxx/wscript | 23 +
.../brotli/research/find_opt_references.cc | 267 +
.../brotli/research/img/enwik9_brotli.png | Bin 0 -> 1981984 bytes
.../brotli/research/img/enwik9_diff.png | Bin 0 -> 5096698 bytes
.../brotli/research/img/enwik9_opt.png | Bin 0 -> 2025431 bytes
.../brotli/research/libdivsufsort/.gitignore | 32 +
.../brotli/research/libdivsufsort/CHANGELOG.md | 21 +
.../brotli/research/libdivsufsort/CMakeLists.txt | 99 +
.../CMakeModules/AppendCompilerFlags.cmake | 38 +
.../CMakeModules/CheckFunctionKeywords.cmake | 15 +
.../libdivsufsort/CMakeModules/CheckLFS.cmake | 109 +
.../libdivsufsort/CMakeModules/ProjectCPack.cmake | 38 +
.../CMakeModules/cmake_uninstall.cmake.in | 36 +
.../brotli/research/libdivsufsort/LICENSE | 21 +
.../brotli/research/libdivsufsort/README.md | 140 +
.../brotli/research/libdivsufsort/VERSION.cmake | 23 +
.../research/libdivsufsort/examples/CMakeLists.txt | 11 +
.../brotli/research/libdivsufsort/examples/bwt.c | 220 +
.../research/libdivsufsort/examples/mksary.c | 193 +
.../research/libdivsufsort/examples/sasearch.c | 165 +
.../research/libdivsufsort/examples/suftest.c | 164 +
.../brotli/research/libdivsufsort/examples/unbwt.c | 207 +
.../research/libdivsufsort/include/CMakeLists.txt | 162 +
.../research/libdivsufsort/include/config.h.cmake | 81 +
.../libdivsufsort/include/divsufsort.h.cmake | 180 +
.../libdivsufsort/include/divsufsort_private.h | 207 +
.../research/libdivsufsort/include/lfs.h.cmake | 56 +
.../research/libdivsufsort/lib/CMakeLists.txt | 31 +
.../brotli/research/libdivsufsort/lib/divsufsort.c | 398 +
.../brotli/research/libdivsufsort/lib/sssort.c | 815 ++
.../brotli/research/libdivsufsort/lib/trsort.c | 586 +
.../brotli/research/libdivsufsort/lib/utils.c | 381 +
.../libdivsufsort/pkgconfig/CMakeLists.txt | 9 +
.../libdivsufsort/pkgconfig/libdivsufsort.pc.cmake | 11 +
.../brotli/research/read_dist.h | 50 +
.../brotli/research/sieve.cc | 259 +
.../brotli/research/sieve.h | 21 +
.../brotli/scripts/.bintray.json | 19 +
.../brotli/scripts/.configure-custom.sh | 1 +
.../brotli/scripts/.travis.sh | 81 +
.../brotli/scripts/appveyor.yml | 111 +
.../brotli/scripts/dictionary/README.md | 3 +
.../scripts/dictionary/step-01-download-rfc.py | 16 +
.../scripts/dictionary/step-02-rfc-to-bin.py | 34 +
.../scripts/dictionary/step-03-validate-bin.py | 38 +
.../dictionary/step-04-generate-java-literals.py | 79 +
.../brotli/scripts/fix-win-bazel-build.py | 36 +
.../brotli/scripts/libbrotlicommon.pc.in | 11 +
.../brotli/scripts/libbrotlidec.pc.in | 12 +
.../brotli/scripts/libbrotlienc.pc.in | 12 +
.../brotli/scripts/sources.lst | 99 +
.../BrotliCustomDecompressLib/brotli/setup.cfg | 5 +
.../BrotliCustomDecompressLib/brotli/setup.py | 288 +
.../brotli/tests/Makefile | 17 +
.../brotli/tests/compatibility_test.sh | 25 +
.../brotli/tests/roundtrip_test.sh | 34 +
.../brotli/tests/run-compatibility-test.cmake | 31 +
.../brotli/tests/run-roundtrip-test.cmake | 36 +
.../brotli/tests/testdata/10x10y | 1 +
.../brotli/tests/testdata/10x10y.compressed | Bin 0 -> 12 bytes
.../brotli/tests/testdata/64x | 1 +
.../brotli/tests/testdata/64x.compressed | Bin 0 -> 10 bytes
.../brotli/tests/testdata/alice29.txt | 3609 +++++++
.../brotli/tests/testdata/alice29.txt.compressed | Bin 0 -> 50096 bytes
.../brotli/tests/testdata/asyoulik.txt | 4122 +++++++
.../brotli/tests/testdata/asyoulik.txt.compressed | Bin 0 -> 45687 bytes
.../brotli/tests/testdata/backward65536 | Bin 0 -> 65792 bytes
.../brotli/tests/testdata/backward65536.compressed | Bin 0 -> 19 bytes
.../brotli/tests/testdata/bb.binast | Bin 0 -> 12356697 bytes
.../brotli/tests/testdata/compressed_file | Bin 0 -> 50096 bytes
.../tests/testdata/compressed_file.compressed | Bin 0 -> 50100 bytes
.../brotli/tests/testdata/compressed_repeated | Bin 0 -> 144224 bytes
.../tests/testdata/compressed_repeated.compressed | Bin 0 -> 50299 bytes
.../brotli/tests/testdata/empty | 0
.../brotli/tests/testdata/empty.compressed | 1 +
.../brotli/tests/testdata/empty.compressed.00 | 1 +
.../brotli/tests/testdata/empty.compressed.01 | 1 +
.../brotli/tests/testdata/empty.compressed.02 | 1 +
.../brotli/tests/testdata/empty.compressed.03 | 1 +
.../brotli/tests/testdata/empty.compressed.04 | 1 +
.../brotli/tests/testdata/empty.compressed.05 | 1 +
.../brotli/tests/testdata/empty.compressed.06 | 1 +
.../brotli/tests/testdata/empty.compressed.07 | 1 +
.../brotli/tests/testdata/empty.compressed.08 | 1 +
.../brotli/tests/testdata/empty.compressed.09 | 1 +
.../brotli/tests/testdata/empty.compressed.10 | 1 +
.../brotli/tests/testdata/empty.compressed.11 | 1 +
.../brotli/tests/testdata/empty.compressed.12 | 1 +
.../brotli/tests/testdata/empty.compressed.13 | 1 +
.../brotli/tests/testdata/empty.compressed.14 | 1 +
.../brotli/tests/testdata/empty.compressed.15 | 1 +
.../brotli/tests/testdata/empty.compressed.16 | Bin 0 -> 4 bytes
.../brotli/tests/testdata/empty.compressed.17 | 1 +
.../brotli/tests/testdata/empty.compressed.18 | Bin 0 -> 196610 bytes
.../brotli/tests/testdata/lcet10.txt | 7519 +++++++++++++
.../brotli/tests/testdata/lcet10.txt.compressed | Bin 0 -> 124719 bytes
.../brotli/tests/testdata/mapsdatazrh | Bin 0 -> 285886 bytes
.../brotli/tests/testdata/mapsdatazrh.compressed | Bin 0 -> 161743 bytes
.../brotli/tests/testdata/monkey | 1 +
.../brotli/tests/testdata/monkey.compressed | Bin 0 -> 425 bytes
.../brotli/tests/testdata/plrabn12.txt | 10699 +++++++++++++++++++
.../brotli/tests/testdata/plrabn12.txt.compressed | Bin 0 -> 174771 bytes
.../brotli/tests/testdata/quickfox | 1 +
.../brotli/tests/testdata/quickfox.compressed | 1 +
.../brotli/tests/testdata/quickfox_repeated | 1 +
.../tests/testdata/quickfox_repeated.compressed | 2 +
.../brotli/tests/testdata/random_chunks | Bin 0 -> 2704 bytes
.../brotli/tests/testdata/random_org_10k.bin | Bin 0 -> 10000 bytes
.../tests/testdata/random_org_10k.bin.compressed | Bin 0 -> 10004 bytes
.../brotli/tests/testdata/ukkonooa | 1 +
.../brotli/tests/testdata/ukkonooa.compressed | Bin 0 -> 69 bytes
.../brotli/tests/testdata/x | 1 +
.../brotli/tests/testdata/x.compressed | Bin 0 -> 5 bytes
.../brotli/tests/testdata/x.compressed.00 | Bin 0 -> 5 bytes
.../brotli/tests/testdata/x.compressed.01 | Bin 0 -> 8 bytes
.../brotli/tests/testdata/x.compressed.02 | Bin 0 -> 5 bytes
.../brotli/tests/testdata/x.compressed.03 | Bin 0 -> 10 bytes
.../brotli/tests/testdata/xyzzy | 1 +
.../brotli/tests/testdata/xyzzy.compressed | 1 +
.../brotli/tests/testdata/zeros | Bin 0 -> 262144 bytes
.../brotli/tests/testdata/zeros.compressed | Bin 0 -> 13 bytes
.../Library/BrotliCustomDecompressLib/stddef.h | 9 +
.../Library/BrotliCustomDecompressLib/stdint.h | 9 +
.../Library/BrotliCustomDecompressLib/stdlib.h | 9 +
.../Library/BrotliCustomDecompressLib/string.h | 9 +
373 files changed, 97888 insertions(+)
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliCustomDecompressLib.inf
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecUefiSupport.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecUefiSupport.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompress.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompressLib.uni
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompressLibInternal.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/GuidedSectionExtraction.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.editorconfig
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitattributes
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitignore
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitmodules
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.travis.yml
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/BUILD
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/CMakeLists.txt
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/CONTRIBUTING.md
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/LICENSE
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/MANIFEST.in
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/Makefile
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/Makefile.am
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/README
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/README.md
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/WORKSPACE
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/bootstrap
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/constants.h
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/context.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/dictionary.bin
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/dictionary.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/dictionary.h
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/platform.h
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/transform.c
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/transform.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/version.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/dec/bit_reader.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/dec/bit_reader.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/dec/decode.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/dec/huffman.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/dec/huffman.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/dec/prefix.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/dec/state.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/dec/state.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/backward_references.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/backward_references.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/backward_references_hq.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/backward_references_hq.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/backward_references_inc.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/bit_cost.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/bit_cost.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/bit_cost_inc.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/block_encoder_inc.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/block_splitter.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/block_splitter.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/block_splitter_inc.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/brotli_bit_stream.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/brotli_bit_stream.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/cluster.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/cluster.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/cluster_inc.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/command.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/compress_fragment.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/compress_fragment.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/compress_fragment_two_pass.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/compress_fragment_two_pass.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/dictionary_hash.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/dictionary_hash.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/encode.c
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/encoder_dict.c
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/encoder_dict.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/entropy_encode.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/entropy_encode.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/entropy_encode_static.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/fast_log.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/find_match_length.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/hash.h
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/hash_composite_inc.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/hash_forgetful_chain_inc.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/hash_longest_match64_inc.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/hash_longest_match_inc.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/hash_longest_match_quickly_inc.h
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/hash_rolling_inc.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/hash_to_binary_tree_inc.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/histogram.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/histogram.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/histogram_inc.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/literal_cost.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/literal_cost.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/memory.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/memory.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/metablock.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/metablock.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/metablock_inc.h
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/params.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/prefix.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/quality.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/ringbuffer.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/static_dict.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/static_dict.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/static_dict_lut.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/utf8_util.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/utf8_util.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/write_bits.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/fuzz/decode_fuzzer.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/fuzz/run_decode_fuzzer.c
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/fuzz/test_fuzzer.sh
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/include/brotli/decode.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/include/brotli/encode.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/include/brotli/port.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/include/brotli/types.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/tools/brotli.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/tools/brotli.md
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/compiler_config_setting.bzl
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/configure
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/configure-cmake
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/configure.ac
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/injected_code.txt
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/BitReader.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/BitReaderTest.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/BrotliInputStream.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/BrotliRuntimeException.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/Context.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/Decode.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/DecodeTest.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/Dictionary.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/DictionaryTest.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/Huffman.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/HuffmanTreeGroup.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/IntReader.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/Prefix.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/RunningState.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/State.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/SynthTest.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/Transform.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/TransformTest.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/Utils.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/WordTransformType.cs
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/sharpen.cfg
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/transpile.sh
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/docs/brotli-comparison-study-2015-09-22.pdf
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/docs/brotli.1
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/docs/decode.h.3
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/docs/encode.h.3
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/docs/types.h.3
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/fetch-spec/shared-brotli-fetch-spec.txt
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/go/BUILD
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/go/WORKSPACE
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/go/cbrotli/BUILD
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/go/cbrotli/cbrotli_test.go
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/go/cbrotli/cgo.go
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/go/cbrotli/reader.go
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/go/cbrotli/writer.go
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/BUILD
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/WORKSPACE
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/BUILD
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/BitReader.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/BitReaderTest.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/BrotliInputStream.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/BrotliRuntimeException.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/Context.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/Decode.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/DecodeTest.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/Dictionary.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/DictionaryData.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/DictionaryTest.java
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/EagerStreamTest.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/Huffman.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/SetDictionaryTest.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/State.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/SynthTest.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/Transform.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/TransformTest.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/Utils.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/build_defs.bzl
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/pom.xml
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/proguard.pgcfg
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/integration/BUILD
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/integration/BrotliJniTestBase.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/integration/BundleChecker.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/integration/BundleHelper.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/integration/fuzz_data.zip
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/integration/pom.xml
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/integration/test_corpus.zip
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/integration/test_data.zip
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/pom.xml
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/common/BUILD
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/common/BrotliCommon.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/common/CommonJNI.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/common/SetRfcDictionaryTest.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/common/SetZeroDictionaryTest.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/common/common_jni.cc
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/BUILD
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/BrotliDecoderChannel.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/BrotliDecoderChannelTest.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/BrotliInputStream.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/BrotliInputStreamTest.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/Decoder.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/DecoderJNI.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/DecoderTest.java
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/EagerStreamTest.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/decoder_jni.cc
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/BUILD
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/BrotliEncoderChannel.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/BrotliEncoderChannelTest.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/BrotliOutputStream.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/BrotliOutputStreamTest.java
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/EmptyInputTest.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/Encoder.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/EncoderJNI.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/EncoderTest.java
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/encoder_jni.cc
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/js/BUILD
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/js/WORKSPACE
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/js/decode.js
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/js/decode.min.js
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/js/decode_test.js
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/js/polyfill.js
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/premake5.lua
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/Makefile
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/README.md
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/_brotli.cc
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/bro.py
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/brotli.py
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/tests/__init__.py
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/tests/_test_utils.py
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/tests/bro_test.py
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/tests/compress_test.py
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/tests/compressor_test.py
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/tests/decompress_test.py
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/tests/decompressor_test.py
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/BUILD
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/BUILD.libdivsufsort
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/Makefile
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/README.md
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/WORKSPACE
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/brotli_decoder.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/brotlidump.py
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/deorummolae.cc
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/deorummolae.h
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/dictionary_generator.cc
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/draw_diff.cc
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/draw_histogram.cc
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/durchschlag.cc
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/durchschlag.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/esaxx/COPYING
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/esaxx/README
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/esaxx/cmdline.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/esaxx/enumSubstring.cpp
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/esaxx/esa.hxx
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/esaxx/sais.hxx
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/esaxx/waf
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/esaxx/wscript
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/find_opt_references.cc
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/img/enwik9_brotli.png
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/img/enwik9_diff.png
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/img/enwik9_opt.png
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/.gitignore
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/CHANGELOG.md
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/CMakeLists.txt
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/CMakeModules/AppendCompilerFlags.cmake
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/CMakeModules/CheckFunctionKeywords.cmake
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/CMakeModules/CheckLFS.cmake
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/CMakeModules/ProjectCPack.cmake
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/CMakeModules/cmake_uninstall.cmake.in
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/LICENSE
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/README.md
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/VERSION.cmake
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/examples/CMakeLists.txt
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/examples/bwt.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/examples/mksary.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/examples/sasearch.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/examples/suftest.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/examples/unbwt.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/include/CMakeLists.txt
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/include/config.h.cmake
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/include/divsufsort.h.cmake
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/include/divsufsort_private.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/include/lfs.h.cmake
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/lib/CMakeLists.txt
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/lib/divsufsort.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/lib/sssort.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/lib/trsort.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/lib/utils.c
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/pkgconfig/CMakeLists.txt
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/pkgconfig/libdivsufsort.pc.cmake
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/read_dist.h
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/sieve.cc
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/sieve.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/.bintray.json
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/.configure-custom.sh
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/.travis.sh
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/appveyor.yml
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/dictionary/README.md
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/dictionary/step-01-download-rfc.py
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/dictionary/step-02-rfc-to-bin.py
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/dictionary/step-03-validate-bin.py
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/dictionary/step-04-generate-java-literals.py
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/fix-win-bazel-build.py
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/libbrotlicommon.pc.in
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/libbrotlidec.pc.in
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/libbrotlienc.pc.in
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/sources.lst
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/setup.cfg
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/setup.py
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/Makefile
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/compatibility_test.sh
create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/roundtrip_test.sh
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/run-compatibility-test.cmake
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/run-roundtrip-test.cmake
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/10x10y
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/10x10y.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/64x
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/64x.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/alice29.txt
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/alice29.txt.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/asyoulik.txt
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/asyoulik.txt.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/backward65536
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/backward65536.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/bb.binast
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/compressed_file
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/compressed_file.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/compressed_repeated
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/compressed_repeated.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.00
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.01
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.02
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.03
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.04
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.05
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.06
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.07
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.08
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.09
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.10
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.11
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.12
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.13
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.14
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.15
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.16
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.17
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.18
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/lcet10.txt
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/lcet10.txt.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/mapsdatazrh
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/mapsdatazrh.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/monkey
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/monkey.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/plrabn12.txt
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/plrabn12.txt.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/quickfox
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/quickfox.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/quickfox_repeated
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/quickfox_repeated.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/random_chunks
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/random_org_10k.bin
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/random_org_10k.bin.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/ukkonooa
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/ukkonooa.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/x
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/x.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/x.compressed.00
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/x.compressed.01
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/x.compressed.02
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/x.compressed.03
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/xyzzy
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/xyzzy.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/zeros
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/zeros.compressed
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/stddef.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/stdint.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/stdlib.h
create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/string.h
(limited to 'roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib')
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliCustomDecompressLib.inf b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliCustomDecompressLib.inf
new file mode 100644
index 000000000..525e92408
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliCustomDecompressLib.inf
@@ -0,0 +1,73 @@
+## @file
+# BrotliCustomDecompressLib produces BROTLI custom decompression algorithm.
+#
+# It is based on the Brotli v0.5.2.
+# Brotli was released on the website https://github.com/google/brotli.
+#
+# Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+#
+##
+
+[Defines]
+ INF_VERSION = 0x00010005
+ BASE_NAME = BrotliDecompressLib
+ MODULE_UNI_FILE = BrotliDecompressLib.uni
+ FILE_GUID = 69EC7DB2-B0DD-493A-963A-C5F330131BAA
+ MODULE_TYPE = BASE
+ VERSION_STRING = 1.0
+ LIBRARY_CLASS = NULL
+ CONSTRUCTOR = BrotliDecompressLibConstructor
+
+#
+# The following information is for reference only and not required by the build tools.
+#
+# VALID_ARCHITECTURES = IA32 X64
+#
+
+[Sources]
+ GuidedSectionExtraction.c
+ BrotliDecUefiSupport.c
+ BrotliDecUefiSupport.h
+ BrotliDecompress.c
+ BrotliDecompressLibInternal.h
+ # Wrapper header files start #
+ stddef.h
+ stdint.h
+ stdlib.h
+ string.h
+ # Wrapper header files end #
+ brotli/c/common/dictionary.c
+ brotli/c/common/transform.c
+ brotli/c/dec/bit_reader.c
+ brotli/c/dec/decode.c
+ brotli/c/dec/huffman.c
+ brotli/c/dec/state.c
+ brotli/c/include/brotli/decode.h
+ brotli/c/include/brotli/port.h
+ brotli/c/include/brotli/types.h
+ brotli/c/common/constants.h
+ brotli/c/common/context.h
+ brotli/c/common/dictionary.h
+ brotli/c/common/platform.h
+ brotli/c/common/transform.h
+ brotli/c/common/version.h
+ brotli/c/dec/bit_reader.h
+ brotli/c/dec/huffman.h
+ brotli/c/dec/state.h
+ brotli/c/dec/prefix.h
+
+[Packages]
+ MdePkg/MdePkg.dec
+ MdeModulePkg/MdeModulePkg.dec
+
+[Guids]
+ gBrotliCustomDecompressGuid ## PRODUCES ## UNDEFINED # specifies BROTLI custom decompress algorithm.
+
+[LibraryClasses]
+ BaseLib
+ DebugLib
+ BaseMemoryLib
+ ExtractGuidedSectionLib
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecUefiSupport.c b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecUefiSupport.c
new file mode 100644
index 000000000..102146535
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecUefiSupport.c
@@ -0,0 +1,31 @@
+/** @file
+ Implements for functions declared in BrotliDecUefiSupport.h
+
+ Copyright (c) 2020, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+#include
+
+/**
+ Dummy malloc function for compiler.
+**/
+VOID *
+BrDummyMalloc (
+ IN size_t Size
+ )
+{
+ ASSERT (FALSE);
+ return NULL;
+}
+
+/**
+ Dummy free function for compiler.
+**/
+VOID
+BrDummyFree (
+ IN VOID * Ptr
+ )
+{
+ ASSERT (FALSE);
+}
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecUefiSupport.h b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecUefiSupport.h
new file mode 100644
index 000000000..9f8434767
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecUefiSupport.h
@@ -0,0 +1,43 @@
+/** @file
+ BROTLI UEFI header file for definitions
+
+ Allows BROTLI code to build under UEFI (edk2) build environment
+
+ Copyright (c) 2020, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef __BROTLI_DECOMPRESS_UEFI_SUP_H__
+#define __BROTLI_DECOMPRESS_UEFI_SUP_H__
+
+#include
+#include
+#include
+#define memcpy CopyMem
+#define memmove CopyMem
+#define memset(dest,ch,count) SetMem(dest,(UINTN)(count),(UINT8)(ch))
+#define malloc BrDummyMalloc
+#define free BrDummyFree
+
+typedef INT8 int8_t;
+typedef INT16 int16_t;
+typedef INT32 int32_t;
+typedef INT64 int64_t;
+typedef UINT8 uint8_t;
+typedef UINT16 uint16_t;
+typedef UINT32 uint32_t;
+typedef UINT64 uint64_t;
+typedef UINTN size_t;
+
+VOID *
+BrDummyMalloc (
+ IN size_t Size
+ );
+
+VOID
+BrDummyFree (
+ IN VOID * Ptr
+ );
+
+#endif
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompress.c b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompress.c
new file mode 100644
index 000000000..512518699
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompress.c
@@ -0,0 +1,316 @@
+/** @file
+ Brotli Decompress interfaces
+
+ Copyright (c) 2017 - 2018, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+#include
+
+/**
+ Dummy malloc function for compiler.
+**/
+VOID *
+BrDummyMalloc (
+ IN size_t Size
+ )
+{
+ ASSERT (FALSE);
+ return NULL;
+}
+
+/**
+ Dummy free function for compiler.
+**/
+VOID
+BrDummyFree (
+ IN VOID * Ptr
+ )
+{
+ ASSERT (FALSE);
+}
+
+/**
+ Allocation routine used by BROTLI decompression.
+
+ @param Ptr Pointer to the BROTLI_BUFF instance.
+ @param Size The size in bytes to be allocated.
+
+ @return The allocated pointer address, or NULL on failure
+**/
+VOID *
+BrAlloc (
+ IN VOID * Ptr,
+ IN size_t Size
+ )
+{
+ VOID *Addr;
+ BROTLI_BUFF *Private;
+
+ Private = (BROTLI_BUFF *)Ptr;
+
+ if (Private->BuffSize >= Size) {
+ Addr = Private->Buff;
+ Private->Buff = (VOID *) ((UINT8 *)Addr + Size);
+ Private->BuffSize -= Size;
+ return Addr;
+ } else {
+ ASSERT (FALSE);
+ return NULL;
+ }
+}
+
+/**
+ Free routine used by BROTLI decompression.
+
+ @param Ptr Pointer to the BROTLI_BUFF instance
+ @param Address The address to be freed
+**/
+VOID
+BrFree (
+ IN VOID * Ptr,
+ IN VOID * Address
+ )
+{
+ //
+ // We use the 'scratch buffer' for allocations, so there is no free
+ // operation required. The scratch buffer will be freed by the caller
+ // of the decompression code.
+ //
+}
+
+/**
+ Decompresses a Brotli compressed source buffer.
+
+ Extracts decompressed data to its original form.
+ If the compressed source data specified by Source is successfully decompressed
+ into Destination, then EFI_SUCCESS is returned. If the compressed source data
+ specified by Source is not in a valid compressed data format,
+ then EFI_INVALID_PARAMETER is returned.
+
+ @param Source The source buffer containing the compressed data.
+ @param SourceSize The size of source buffer.
+ @param Destination The destination buffer to store the decompressed data.
+ @param DestSize The destination buffer size.
+ @param BuffInfo The pointer to the BROTLI_BUFF instance.
+
+ @retval EFI_SUCCESS Decompression completed successfully, and
+ the uncompressed buffer is returned in Destination.
+ @retval EFI_INVALID_PARAMETER
+ The source buffer specified by Source is corrupted
+ (not in a valid compressed format).
+**/
+EFI_STATUS
+BrotliDecompress (
+ IN CONST VOID* Source,
+ IN UINTN SourceSize,
+ IN OUT VOID* Destination,
+ IN OUT UINTN DestSize,
+ IN VOID * BuffInfo
+ )
+{
+ UINT8 * Input;
+ UINT8 * Output;
+ const UINT8 * NextIn;
+ UINT8 * NextOut;
+ size_t TotalOut;
+ size_t AvailableIn;
+ size_t AvailableOut;
+ VOID * Temp;
+ BrotliDecoderResult Result;
+ BrotliDecoderState * BroState;
+
+ TotalOut = 0;
+ AvailableOut = FILE_BUFFER_SIZE;
+ Result = BROTLI_DECODER_RESULT_ERROR;
+ BroState = BrotliDecoderCreateInstance(BrAlloc, BrFree, BuffInfo);
+ Temp = Destination;
+
+ if (BroState == NULL) {
+ return EFI_INVALID_PARAMETER;
+ }
+ Input = (UINT8 *)BrAlloc(BuffInfo, FILE_BUFFER_SIZE);
+ Output = (UINT8 *)BrAlloc(BuffInfo, FILE_BUFFER_SIZE);
+ if ((Input==NULL) || (Output==NULL)) {
+ BrFree(BuffInfo, Input);
+ BrFree(BuffInfo, Output);
+ BrotliDecoderDestroyInstance(BroState);
+ return EFI_INVALID_PARAMETER;
+ }
+ NextOut = Output;
+ Result = BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT;
+ while (1) {
+ if (Result == BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT) {
+ if (SourceSize == 0) {
+ break;
+ }
+ if (SourceSize >= FILE_BUFFER_SIZE) {
+ AvailableIn = FILE_BUFFER_SIZE;
+ }else{
+ AvailableIn = SourceSize;
+ }
+ CopyMem(Input, Source, AvailableIn);
+ Source = (VOID *)((UINT8 *)Source + AvailableIn);
+ SourceSize -= AvailableIn;
+ NextIn = Input;
+ } else if (Result == BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT) {
+ CopyMem(Temp, Output, FILE_BUFFER_SIZE);
+ AvailableOut = FILE_BUFFER_SIZE;
+ Temp = (VOID *)((UINT8 *)Temp +FILE_BUFFER_SIZE);
+ NextOut = Output;
+ } else {
+ break; /* Error or success. */
+ }
+ Result = BrotliDecoderDecompressStream(
+ BroState,
+ &AvailableIn,
+ &NextIn,
+ &AvailableOut,
+ &NextOut,
+ &TotalOut
+ );
+ }
+ if (NextOut != Output) {
+ CopyMem(Temp, Output, (size_t)(NextOut - Output));
+ }
+
+ DestSize = TotalOut;
+
+ BrFree(BuffInfo, Input);
+ BrFree(BuffInfo, Output);
+ BrotliDecoderDestroyInstance(BroState);
+ return (Result == BROTLI_DECODER_RESULT_SUCCESS) ? EFI_SUCCESS : EFI_INVALID_PARAMETER;
+}
+
+/**
+ Get the size of the uncompressed buffer by parsing EncodeData header.
+
+ @param EncodedData Pointer to the compressed data.
+ @param StartOffset Start offset of the compressed data.
+ @param EndOffset End offset of the compressed data.
+
+ @return The size of the uncompressed buffer.
+**/
+UINT64
+BrGetDecodedSizeOfBuf(
+ IN UINT8 * EncodedData,
+ IN UINT8 StartOffset,
+ IN UINT8 EndOffset
+ )
+{
+ UINT64 DecodedSize;
+ INTN Index;
+
+ /* Parse header */
+ DecodedSize = 0;
+ for (Index = EndOffset - 1; Index >= StartOffset; Index--)
+ DecodedSize = LShiftU64(DecodedSize, 8) + EncodedData[Index];
+
+ return DecodedSize;
+}
+
+/**
+ Given a Brotli compressed source buffer, this function retrieves the size of
+ the uncompressed buffer and the size of the scratch buffer required
+ to decompress the compressed source buffer.
+
+ Retrieves the size of the uncompressed buffer and the temporary scratch buffer
+ required to decompress the buffer specified by Source and SourceSize.
+ The size of the uncompressed buffer is returned in DestinationSize,
+ the size of the scratch buffer is returned in ScratchSize, and EFI_SUCCESS is returned.
+ This function does not have scratch buffer available to perform a thorough
+ checking of the validity of the source data. It just retrieves the "Original Size"
+ field from the BROTLI_SCRATCH_MAX beginning bytes of the source data and output it as DestinationSize.
+ And ScratchSize is specific to the decompression implementation.
+
+ If SourceSize is less than BROTLI_SCRATCH_MAX, then ASSERT().
+
+ @param Source The source buffer containing the compressed data.
+ @param SourceSize The size, in bytes, of the source buffer.
+ @param DestinationSize A pointer to the size, in bytes, of the uncompressed buffer
+ that will be generated when the compressed buffer specified
+ by Source and SourceSize is decompressed.
+ @param ScratchSize A pointer to the size, in bytes, of the scratch buffer that
+ is required to decompress the compressed buffer specified
+ by Source and SourceSize.
+
+ @retval EFI_SUCCESS The size of the uncompressed data was returned
+ in DestinationSize and the size of the scratch
+ buffer was returned in ScratchSize.
+**/
+EFI_STATUS
+EFIAPI
+BrotliUefiDecompressGetInfo (
+ IN CONST VOID * Source,
+ IN UINT32 SourceSize,
+ OUT UINT32 * DestinationSize,
+ OUT UINT32 * ScratchSize
+ )
+{
+ UINT64 GetSize;
+ UINT8 MaxOffset;
+
+ ASSERT(SourceSize >= BROTLI_SCRATCH_MAX);
+
+ MaxOffset = BROTLI_DECODE_MAX;
+ GetSize = BrGetDecodedSizeOfBuf((UINT8 *)Source, MaxOffset - BROTLI_INFO_SIZE, MaxOffset);
+ *DestinationSize = (UINT32)GetSize;
+ MaxOffset = BROTLI_SCRATCH_MAX;
+ GetSize = BrGetDecodedSizeOfBuf((UINT8 *)Source, MaxOffset - BROTLI_INFO_SIZE, MaxOffset);
+ *ScratchSize = (UINT32)GetSize;
+ return EFI_SUCCESS;
+}
+
+/**
+ Decompresses a Brotli compressed source buffer.
+
+ Extracts decompressed data to its original form.
+ If the compressed source data specified by Source is successfully decompressed
+ into Destination, then RETURN_SUCCESS is returned. If the compressed source data
+ specified by Source is not in a valid compressed data format,
+ then RETURN_INVALID_PARAMETER is returned.
+
+ @param Source The source buffer containing the compressed data.
+ @param SourceSize The size of source buffer.
+ @param Destination The destination buffer to store the decompressed data
+ @param Scratch A temporary scratch buffer that is used to perform the decompression.
+ This is an optional parameter that may be NULL if the
+ required scratch buffer size is 0.
+
+ @retval EFI_SUCCESS Decompression completed successfully, and
+ the uncompressed buffer is returned in Destination.
+ @retval EFI_INVALID_PARAMETER
+ The source buffer specified by Source is corrupted
+ (not in a valid compressed format).
+**/
+EFI_STATUS
+EFIAPI
+BrotliUefiDecompress (
+ IN CONST VOID * Source,
+ IN UINTN SourceSize,
+ IN OUT VOID * Destination,
+ IN OUT VOID * Scratch
+ )
+{
+ UINTN DestSize = 0;
+ EFI_STATUS Status;
+ BROTLI_BUFF BroBuff;
+ UINT64 GetSize;
+ UINT8 MaxOffset;
+
+ MaxOffset = BROTLI_SCRATCH_MAX;
+ GetSize = BrGetDecodedSizeOfBuf((UINT8 *)Source, MaxOffset - BROTLI_INFO_SIZE, MaxOffset);
+
+ BroBuff.Buff = Scratch;
+ BroBuff.BuffSize = (UINTN)GetSize;
+
+ Status = BrotliDecompress(
+ (VOID *)((UINT8 *)Source + BROTLI_SCRATCH_MAX),
+ SourceSize - BROTLI_SCRATCH_MAX,
+ Destination,
+ DestSize,
+ (VOID *)(&BroBuff)
+ );
+
+ return Status;
+}
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompressLib.uni b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompressLib.uni
new file mode 100644
index 000000000..22f9d9add
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompressLib.uni
@@ -0,0 +1,16 @@
+// /** @file
+// BrotliCustomDecompressLib produces BROTLI custom decompression algorithm.
+//
+// It is based on the Brotli v0.5.2.
+// Brotli was released on the website https://github.com/google/brotli.
+//
+// Copyright (c) 2017, Intel Corporation. All rights reserved.
+//
+// SPDX-License-Identifier: BSD-2-Clause-Patent
+//
+// **/
+
+
+#string STR_MODULE_ABSTRACT #language en-US "BrotliCustomDecompressLib produces BROTLI custom decompression algorithm"
+
+#string STR_MODULE_DESCRIPTION #language en-US "It is based on the Brotli v0.5.2. Brotli was released on the website https://github.com/google/brotli."
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompressLibInternal.h b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompressLibInternal.h
new file mode 100644
index 000000000..8f91829a0
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompressLibInternal.h
@@ -0,0 +1,48 @@
+/** @file
+ BROTLI UEFI header file
+
+ Allows BROTLI code to build under UEFI (edk2) build environment
+
+ Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef __BROTLI_DECOMPRESS_INTERNAL_H__
+#define __BROTLI_DECOMPRESS_INTERNAL_H__
+
+#include
+#include
+#include
+#include
+
+typedef struct
+{
+ VOID *Buff;
+ UINTN BuffSize;
+} BROTLI_BUFF;
+
+#define FILE_BUFFER_SIZE 65536
+#define BROTLI_INFO_SIZE 8
+#define BROTLI_DECODE_MAX 8
+#define BROTLI_SCRATCH_MAX 16
+
+EFI_STATUS
+EFIAPI
+BrotliUefiDecompressGetInfo (
+ IN CONST VOID *Source,
+ IN UINT32 SourceSize,
+ OUT UINT32 *DestinationSize,
+ OUT UINT32 *ScratchSize
+ );
+
+EFI_STATUS
+EFIAPI
+BrotliUefiDecompress (
+ IN CONST VOID *Source,
+ IN UINTN SourceSize,
+ IN OUT VOID *Destination,
+ IN OUT VOID *Scratch
+ );
+
+#endif
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/GuidedSectionExtraction.c b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/GuidedSectionExtraction.c
new file mode 100644
index 000000000..bb7665f82
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/GuidedSectionExtraction.c
@@ -0,0 +1,191 @@
+/** @file
+ BROTLI Decompress GUIDed Section Extraction Library.
+ It wraps Brotli decompress interfaces to GUIDed Section Extraction interfaces
+ and registers them into GUIDed handler table.
+
+ Copyright (c) 2017, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include
+
+/**
+ Examines a GUIDed section and returns the size of the decoded buffer and the
+ size of an scratch buffer required to actually decode the data in a GUIDed section.
+
+ Examines a GUIDed section specified by InputSection.
+ If GUID for InputSection does not match the GUID that this handler supports,
+ then RETURN_UNSUPPORTED is returned.
+ If the required information can not be retrieved from InputSection,
+ then RETURN_INVALID_PARAMETER is returned.
+ If the GUID of InputSection does match the GUID that this handler supports,
+ then the size required to hold the decoded buffer is returned in OututBufferSize,
+ the size of an optional scratch buffer is returned in ScratchSize, and the Attributes field
+ from EFI_GUID_DEFINED_SECTION header of InputSection is returned in SectionAttribute.
+
+ If InputSection is NULL, then ASSERT().
+ If OutputBufferSize is NULL, then ASSERT().
+ If ScratchBufferSize is NULL, then ASSERT().
+ If SectionAttribute is NULL, then ASSERT().
+
+
+ @param[in] InputSection A pointer to a GUIDed section of an FFS formatted file.
+ @param[out] OutputBufferSize A pointer to the size, in bytes, of an output buffer required
+ if the buffer specified by InputSection were decoded.
+ @param[out] ScratchBufferSize A pointer to the size, in bytes, required as scratch space
+ if the buffer specified by InputSection were decoded.
+ @param[out] SectionAttribute A pointer to the attributes of the GUIDed section. See the Attributes
+ field of EFI_GUID_DEFINED_SECTION in the PI Specification.
+
+ @retval RETURN_SUCCESS The information about InputSection was returned.
+ @retval RETURN_UNSUPPORTED The section specified by InputSection does not match the GUID this handler supports.
+ @retval RETURN_INVALID_PARAMETER The information can not be retrieved from the section specified by InputSection.
+
+**/
+RETURN_STATUS
+EFIAPI
+BrotliGuidedSectionGetInfo (
+ IN CONST VOID *InputSection,
+ OUT UINT32 *OutputBufferSize,
+ OUT UINT32 *ScratchBufferSize,
+ OUT UINT16 *SectionAttribute
+ )
+{
+ ASSERT (InputSection != NULL);
+ ASSERT (OutputBufferSize != NULL);
+ ASSERT (ScratchBufferSize != NULL);
+ ASSERT (SectionAttribute != NULL);
+
+ if (IS_SECTION2 (InputSection)) {
+ if (!CompareGuid (
+ &gBrotliCustomDecompressGuid,
+ &(((EFI_GUID_DEFINED_SECTION2 *) InputSection)->SectionDefinitionGuid))) {
+ return RETURN_INVALID_PARAMETER;
+ }
+
+ *SectionAttribute = ((EFI_GUID_DEFINED_SECTION2 *) InputSection)->Attributes;
+
+ return BrotliUefiDecompressGetInfo (
+ (UINT8 *) InputSection + ((EFI_GUID_DEFINED_SECTION2 *) InputSection)->DataOffset,
+ SECTION2_SIZE (InputSection) - ((EFI_GUID_DEFINED_SECTION2 *) InputSection)->DataOffset,
+ OutputBufferSize,
+ ScratchBufferSize
+ );
+ } else {
+ if (!CompareGuid (
+ &gBrotliCustomDecompressGuid,
+ &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) {
+ return RETURN_INVALID_PARAMETER;
+ }
+
+ *SectionAttribute = ((EFI_GUID_DEFINED_SECTION *) InputSection)->Attributes;
+
+ return BrotliUefiDecompressGetInfo (
+ (UINT8 *) InputSection + ((EFI_GUID_DEFINED_SECTION *) InputSection)->DataOffset,
+ SECTION_SIZE (InputSection) - ((EFI_GUID_DEFINED_SECTION *) InputSection)->DataOffset,
+ OutputBufferSize,
+ ScratchBufferSize
+ );
+ }
+}
+
+/**
+ Decompress a BROTLI compressed GUIDed section into a caller allocated output buffer.
+
+ Decodes the GUIDed section specified by InputSection.
+ If GUID for InputSection does not match the GUID that this handler supports, then RETURN_UNSUPPORTED is returned.
+ If the data in InputSection can not be decoded, then RETURN_INVALID_PARAMETER is returned.
+ If the GUID of InputSection does match the GUID that this handler supports, then InputSection
+ is decoded into the buffer specified by OutputBuffer and the authentication status of this
+ decode operation is returned in AuthenticationStatus. If the decoded buffer is identical to the
+ data in InputSection, then OutputBuffer is set to point at the data in InputSection. Otherwise,
+ the decoded data will be placed in caller allocated buffer specified by OutputBuffer.
+
+ If InputSection is NULL, then ASSERT().
+ If OutputBuffer is NULL, then ASSERT().
+ If ScratchBuffer is NULL and this decode operation requires a scratch buffer, then ASSERT().
+ If AuthenticationStatus is NULL, then ASSERT().
+
+ @param[in] InputSection A pointer to a GUIDed section of an FFS formatted file.
+ @param[out] OutputBuffer A pointer to a buffer that contains the result of a decode operation.
+ @param[out] ScratchBuffer A caller allocated buffer that may be required by this function
+ as a scratch buffer to perform the decode operation.
+ @param[out] AuthenticationStatus
+ A pointer to the authentication status of the decoded output buffer.
+ See the definition of authentication status in the EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI
+ section of the PI Specification. EFI_AUTH_STATUS_PLATFORM_OVERRIDE must
+ never be set by this handler.
+
+ @retval RETURN_SUCCESS The buffer specified by InputSection was decoded.
+ @retval RETURN_UNSUPPORTED The section specified by InputSection does not match the GUID this handler supports.
+ @retval RETURN_INVALID_PARAMETER The section specified by InputSection can not be decoded.
+
+**/
+RETURN_STATUS
+EFIAPI
+BrotliGuidedSectionExtraction (
+ IN CONST VOID *InputSection,
+ OUT VOID **OutputBuffer,
+ OUT VOID *ScratchBuffer, OPTIONAL
+ OUT UINT32 *AuthenticationStatus
+ )
+{
+ ASSERT (OutputBuffer != NULL);
+ ASSERT (InputSection != NULL);
+
+ if (IS_SECTION2 (InputSection)) {
+ if (!CompareGuid (
+ &gBrotliCustomDecompressGuid,
+ &(((EFI_GUID_DEFINED_SECTION2 *) InputSection)->SectionDefinitionGuid))) {
+ return RETURN_INVALID_PARAMETER;
+ }
+ //
+ // Authentication is set to Zero, which may be ignored.
+ //
+ *AuthenticationStatus = 0;
+
+ return BrotliUefiDecompress (
+ (UINT8 *) InputSection + ((EFI_GUID_DEFINED_SECTION2 *) InputSection)->DataOffset,
+ SECTION2_SIZE (InputSection) - ((EFI_GUID_DEFINED_SECTION2 *) InputSection)->DataOffset,
+ *OutputBuffer,
+ ScratchBuffer
+ );
+ } else {
+ if (!CompareGuid (
+ &gBrotliCustomDecompressGuid,
+ &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) {
+ return RETURN_INVALID_PARAMETER;
+ }
+ //
+ // Authentication is set to Zero, which may be ignored.
+ //
+ *AuthenticationStatus = 0;
+
+ return BrotliUefiDecompress (
+ (UINT8 *) InputSection + ((EFI_GUID_DEFINED_SECTION *) InputSection)->DataOffset,
+ SECTION_SIZE (InputSection) - ((EFI_GUID_DEFINED_SECTION *) InputSection)->DataOffset,
+ *OutputBuffer,
+ ScratchBuffer
+ );
+ }
+}
+
+/**
+ Register BrotliDecompress and BrotliDecompressGetInfo handlers with BrotliCustomerDecompressGuid.
+
+ @retval EFI_SUCCESS Register successfully.
+ @retval EFI_OUT_OF_RESOURCES No enough memory to store this handler.
+**/
+EFI_STATUS
+EFIAPI
+BrotliDecompressLibConstructor (
+ VOID
+ )
+{
+ return ExtractGuidedSectionRegisterHandlers (
+ &gBrotliCustomDecompressGuid,
+ BrotliGuidedSectionGetInfo,
+ BrotliGuidedSectionExtraction
+ );
+}
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.editorconfig b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.editorconfig
new file mode 100644
index 000000000..17ed3c197
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.editorconfig
@@ -0,0 +1,40 @@
+# http://editorconfig.org
+# Consistent coding style across different editors.
+
+# Top-most file
+root = true
+
+# Global styles:
+# - indent 2 spaces
+# - add final new line
+# - trim trailing whitespace
+[*]
+charset = utf-8
+end_of_line = lf
+indent_size = 2
+indent_style = space
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+# BUILD:
+# - indent 4 spaces
+[BUILD]
+indent_size = 4
+
+# Makefile:
+# - indent 1 tab
+[Makefile]
+indent_size = tab
+indent_style = tab
+
+# Markdown:
+# - indent 4 spaces
+# - trailing whitespace is significant
+[*.md]
+indent_size = 4
+trim_trailing_whitespace = false
+
+# Python
+# - indent 4 spaces
+[*.py]
+indent_size = 4
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitattributes b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitattributes
new file mode 100644
index 000000000..a1665dacc
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitattributes
@@ -0,0 +1 @@
+tests/testdata/* binary
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitignore b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitignore
new file mode 100644
index 000000000..e3a69e62c
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitignore
@@ -0,0 +1,18 @@
+# C
+*.o
+bin/
+buildfiles/
+**/obj/
+dist/
+**/bazel-*
+
+# Python
+__pycache__/
+*.py[cod]
+*.so
+*.egg-info/
+
+# Tests
+*.txt.uncompressed
+*.br
+*.unbr
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitmodules b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitmodules
new file mode 100644
index 000000000..3ec8760a5
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitmodules
@@ -0,0 +1,6 @@
+[submodule "research/esaxx"]
+ path = research/esaxx
+ url = https://github.com/hillbig/esaxx
+[submodule "research/libdivsufsort"]
+ path = research/libdivsufsort
+ url = https://github.com/y-256/libdivsufsort.git
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.travis.yml b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.travis.yml
new file mode 100644
index 000000000..930bd6346
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.travis.yml
@@ -0,0 +1,229 @@
+language: c
+sudo: false
+branches:
+ only:
+ - master
+matrix:
+ include:
+ ###
+ ## Linux builds using various versions of GCC.
+ ###
+ - os: linux
+ env: BUILD_SYSTEM=cmake C_COMPILER=gcc-7 CXX_COMPILER=g++-7
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gcc-7
+ - g++-7
+ - os: linux
+ env: BUILD_SYSTEM=cmake C_COMPILER=gcc-4.4 CXX_COMPILER=g++-4.4
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gcc-4.4
+ - g++-4.4
+
+ ###
+ ## Test that Autotools build works.
+ ###
+ - os: linux
+ env: BUILD_SYSTEM=autotools C_COMPILER=gcc-5 CXX_COMPILER=g++-5
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gcc-5
+ - g++-5
+
+ ###
+ ## Test that fuzzer is compiling / working.
+ ###
+ - os: linux
+ env: BUILD_SYSTEM=fuzz C_COMPILER=clang-7 CXX_COMPILER=clang++-7 ASAN_OPTIONS=detect_leaks=0
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ - llvm-toolchain-xenial-7
+ packages:
+ - clang-7
+
+ ###
+ ## clang on Linux
+ ###
+ - os: linux
+ env: BUILD_SYSTEM=cmake C_COMPILER=clang-7 CXX_COMPILER=clang++-7
+ addons:
+ apt:
+ sources:
+ - llvm-toolchain-xenial-7
+ - ubuntu-toolchain-r-test
+ packages:
+ - clang-7
+ - os: linux
+ env: BUILD_SYSTEM=cmake C_COMPILER=clang-3.5 CXX_COMPILER=clang++-3.5
+ addons:
+ apt:
+ sources:
+ - llvm-toolchain-trusty-3.5
+ - ubuntu-toolchain-r-test
+ packages:
+ - clang-3.5
+
+ ###
+ ## testing arm via qemu on Linux
+ ###
+ - os: linux
+ env: BUILD_SYSTEM=cmake C_COMPILER=arm-linux-gnueabihf-gcc CXX_COMPILER=arm-linux-gnueabihf-g++ CFLAGS="-march=armv7-a -mfloat-abi=hard -mfpu=neon"
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - qemu
+ - gcc-arm-linux-gnueabihf
+ - libc6-dev-armhf-cross
+
+ ###
+ ## PGI Community Edition on Linux
+ ###
+ - os: linux
+ env: BUILD_SYSTEM=cmake C_COMPILER=pgcc CXX_COMPILER=pgc++
+
+ ###
+ ## Python 2.7 and 3.6 builds on Linux
+ ###
+ - os: linux
+ language: python
+ python: 2.7
+ env: BUILD_SYSTEM=python C_COMPILER=gcc-5 CXX_COMPILER=g++-5
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gcc-5
+ - g++-5
+ - os: linux
+ language: python
+ python: 3.6
+ env: BUILD_SYSTEM=python C_COMPILER=gcc-5 CXX_COMPILER=g++-5
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gcc-5
+ - g++-5
+
+ ###
+ ## CMake on OS X
+ ##
+ ## These all work, but it seems unnecessary to actually build them
+ ## all since we already test all these versions of GCC on Linux.
+ ## We'll just test 4.4 and the most recent version.
+ ###
+ - os: osx
+ env: BUILD_SYSTEM=cmake C_COMPILER=gcc CXX_COMPILER=g++
+ - os: osx
+ env: BUILD_SYSTEM=cmake C_COMPILER=gcc-4.9 CXX_COMPILER=g++-4.9
+ - os: osx
+ env: BUILD_SYSTEM=cmake
+
+ ###
+ ## Python 2.7 OS X build (using the system /usr/bin/python)
+ ###
+ - os: osx
+ env: BUILD_SYSTEM=python C_COMPILER=gcc CXX_COMPILER=g++
+
+ ###
+ ## Sanitizers
+ ###
+ - os: linux
+ env: BUILD_SYSTEM=cmake C_COMPILER=clang-7 CXX_COMPILER=clang++-7 SANITIZER=address ASAN_OPTIONS=detect_leaks=0
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ - llvm-toolchain-xenial-7
+ packages:
+ - clang-7
+ - os: linux
+ env: BUILD_SYSTEM=cmake C_COMPILER=clang-7 CXX_COMPILER=clang++-7 SANITIZER=thread
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ - llvm-toolchain-xenial-7
+ packages:
+ - clang-7
+ - os: linux
+ env: BUILD_SYSTEM=cmake C_COMPILER=clang-7 CXX_COMPILER=clang++-7 SANITIZER=undefined CFLAGS="-fno-sanitize-recover=undefined,integer"
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ - llvm-toolchain-xenial-7
+ packages:
+ - clang-7
+
+ - os: linux
+ env: BUILD_SYSTEM=maven
+ jdk:
+ # maven + jdk11 + javadoc == trouble
+ - openjdk10
+ language: java
+
+ - os: linux
+ sudo: required
+ language: java
+ jdk: oraclejdk9
+ env: BUILD_SYSTEM=bazel
+ addons:
+ apt:
+ sources:
+ - sourceline: "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8"
+ key_url: "https://storage.googleapis.com/bazel-apt/doc/apt-key.pub.gpg"
+ - ubuntu-toolchain-r-test
+ packages:
+ - bazel
+
+ - os: osx
+ env: BUILD_SYSTEM=bazel
+ # Latest image with Java 1.8 (required to install Bazel).
+ osx_image: xcode9.3
+ language: java
+
+before_install:
+###
+## If we use the matrix to set CC/CXX Travis, overwrites the values,
+## so instead we use C/CXX_COMPILER, then copy the values to CC/CXX
+## here (after Travis has set CC/CXX).
+###
+- if [ -n "${C_COMPILER}" ]; then export CC="${C_COMPILER}"; fi
+- if [ -n "${CXX_COMPILER}" ]; then export CXX="${CXX_COMPILER}"; fi
+- scripts/.travis.sh before_install
+install:
+- scripts/.travis.sh install
+script:
+- scripts/.travis.sh script
+after_success:
+- scripts/.travis.sh after_success
+
+before_deploy:
+- scripts/.travis.sh before_deploy
+
+deploy:
+- provider: bintray
+ file: "scripts/.bintray.json"
+ user: "eustas"
+ key:
+ secure: "Kbam/lTAdz72fZivbs6riJT+Y4PbuKP7r6t5PAWxJxAAykjwnYTRe3zF472g9HCE14KYMsdB+KSYSgg6TGJnqGC9gL9xhhGU9U/WmA+vbMWS/MSnMWpK9IRpp77pM2i2NKZD4v33JuEwKFCBJP3Vj6QQ5Qd1NKdobuXJyznhgnw="
+ on:
+ condition: "${BUILD_SYSTEM} = bazel"
+ skip_cleanup: true
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/BUILD b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/BUILD
new file mode 100644
index 000000000..4c9b57ac9
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/BUILD
@@ -0,0 +1,144 @@
+# Description:
+# Brotli is a generic-purpose lossless compression algorithm.
+
+package(
+ default_visibility = ["//visibility:public"],
+)
+
+licenses(["notice"]) # MIT
+
+exports_files(["LICENSE"])
+
+config_setting(
+ name = "darwin",
+ values = {"cpu": "darwin"},
+ visibility = ["//visibility:public"],
+)
+
+config_setting(
+ name = "darwin_x86_64",
+ values = {"cpu": "darwin_x86_64"},
+ visibility = ["//visibility:public"],
+)
+
+config_setting(
+ name = "windows",
+ values = {"cpu": "x64_windows"},
+ visibility = ["//visibility:public"],
+)
+
+config_setting(
+ name = "windows_msvc",
+ values = {"cpu": "x64_windows_msvc"},
+ visibility = ["//visibility:public"],
+)
+
+config_setting(
+ name = "windows_msys",
+ values = {"cpu": "x64_windows_msys"},
+ visibility = ["//visibility:public"],
+)
+
+load(":compiler_config_setting.bzl", "create_msvc_config")
+
+create_msvc_config()
+
+STRICT_C_OPTIONS = select({
+ ":msvc": [],
+ "//conditions:default": [
+ "--pedantic-errors",
+ "-Wall",
+ "-Wconversion",
+ "-Werror",
+ "-Wextra",
+ "-Wlong-long",
+ "-Wmissing-declarations",
+ "-Wmissing-prototypes",
+ "-Wno-strict-aliasing",
+ "-Wshadow",
+ "-Wsign-compare",
+ ],
+})
+
+filegroup(
+ name = "public_headers",
+ srcs = glob(["c/include/brotli/*.h"]),
+)
+
+filegroup(
+ name = "common_headers",
+ srcs = glob(["c/common/*.h"]),
+)
+
+filegroup(
+ name = "common_sources",
+ srcs = glob(["c/common/*.c"]),
+)
+
+filegroup(
+ name = "dec_headers",
+ srcs = glob(["c/dec/*.h"]),
+)
+
+filegroup(
+ name = "dec_sources",
+ srcs = glob(["c/dec/*.c"]),
+)
+
+filegroup(
+ name = "enc_headers",
+ srcs = glob(["c/enc/*.h"]),
+)
+
+filegroup(
+ name = "enc_sources",
+ srcs = glob(["c/enc/*.c"]),
+)
+
+cc_library(
+ name = "brotli_inc",
+ hdrs = [":public_headers"],
+ copts = STRICT_C_OPTIONS,
+ strip_include_prefix = "c/include",
+)
+
+cc_library(
+ name = "brotlicommon",
+ srcs = [":common_sources"],
+ hdrs = [":common_headers"],
+ copts = STRICT_C_OPTIONS,
+ deps = [":brotli_inc"],
+)
+
+cc_library(
+ name = "brotlidec",
+ srcs = [":dec_sources"],
+ hdrs = [":dec_headers"],
+ copts = STRICT_C_OPTIONS,
+ deps = [":brotlicommon"],
+)
+
+cc_library(
+ name = "brotlienc",
+ srcs = [":enc_sources"],
+ hdrs = [":enc_headers"],
+ copts = STRICT_C_OPTIONS,
+ linkopts = ["-lm"],
+ deps = [":brotlicommon"],
+)
+
+cc_binary(
+ name = "brotli",
+ srcs = ["c/tools/brotli.c"],
+ copts = STRICT_C_OPTIONS,
+ linkstatic = 1,
+ deps = [
+ ":brotlidec",
+ ":brotlienc",
+ ],
+)
+
+filegroup(
+ name = "dictionary",
+ srcs = ["c/common/dictionary.bin"],
+)
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/CMakeLists.txt b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/CMakeLists.txt
new file mode 100644
index 000000000..a8ea87231
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/CMakeLists.txt
@@ -0,0 +1,407 @@
+# Ubuntu 12.04 LTS has CMake 2.8.7, and is an important target since
+# several CI services, such as Travis and Drone, use it. Solaris 11
+# has 2.8.6, and it's not difficult to support if you already have to
+# support 2.8.7.
+cmake_minimum_required(VERSION 2.8.6)
+
+project(brotli C)
+
+include(CheckCSourceCompiles)
+check_c_source_compiles(
+ "#if defined(__EMSCRIPTEN__)
+ int main() {return 0;}
+ #endif"
+ BROTLI_EMSCRIPTEN
+)
+if (BROTLI_EMSCRIPTEN)
+ message("-- Compiler is EMSCRIPTEN")
+else()
+ message("-- Compiler is not EMSCRIPTEN")
+endif()
+
+# If Brotli is being bundled in another project, we don't want to
+# install anything. However, we want to let people override this, so
+# we'll use the BROTLI_BUNDLED_MODE variable to let them do that; just
+# set it to OFF in your project before you add_subdirectory(brotli).
+get_directory_property(BROTLI_PARENT_DIRECTORY PARENT_DIRECTORY)
+if(NOT DEFINED BROTLI_BUNDLED_MODE)
+ # Bundled mode hasn't been set one way or the other, set the default
+ # depending on whether or not we are the top-level project.
+ if(BROTLI_PARENT_DIRECTORY)
+ set(BROTLI_BUNDLED_MODE ON)
+ else()
+ set(BROTLI_BUNDLED_MODE OFF)
+ endif()
+endif()
+mark_as_advanced(BROTLI_BUNDLED_MODE)
+
+include(GNUInstallDirs)
+
+# Parse version information from common/version.h. Normally we would
+# define these values here and write them out to configuration file(s)
+# (i.e., config.h), but in this case we parse them from
+# common/version.h to be less intrusive.
+function(hex_to_dec HEXADECIMAL DECIMAL)
+ string(TOUPPER "${HEXADECIMAL}" _tail)
+ set(_decimal 0)
+ string(LENGTH "${_tail}" _tail_length)
+ while (_tail_length GREATER 0)
+ math(EXPR _decimal "${_decimal} * 16")
+ string(SUBSTRING "${_tail}" 0 1 _digit)
+ string(SUBSTRING "${_tail}" 1 -1 _tail)
+ if (_digit STREQUAL "A")
+ math(EXPR _decimal "${_decimal} + 10")
+ elseif (_digit STREQUAL "B")
+ math(EXPR _decimal "${_decimal} + 11")
+ elseif (_digit STREQUAL "C")
+ math(EXPR _decimal "${_decimal} + 12")
+ elseif (_digit STREQUAL "D")
+ math(EXPR _decimal "${_decimal} + 13")
+ elseif (_digit STREQUAL "E")
+ math(EXPR _decimal "${_decimal} + 14")
+ elseif (_digit STREQUAL "F")
+ math(EXPR _decimal "${_decimal} + 15")
+ else()
+ math(EXPR _decimal "${_decimal} + ${_digit}")
+ endif()
+ string(LENGTH "${_tail}" _tail_length)
+ endwhile()
+ set(${DECIMAL} ${_decimal} PARENT_SCOPE)
+endfunction(hex_to_dec)
+
+# Version information
+file(STRINGS "c/common/version.h" _brotli_version_line REGEX "^#define BROTLI_VERSION (0x[0-9a-fA-F]+)$")
+string(REGEX REPLACE "^#define BROTLI_VERSION 0x([0-9a-fA-F]+)$" "\\1" _brotli_version_hex "${_brotli_version_line}")
+hex_to_dec("${_brotli_version_hex}" _brotli_version)
+math(EXPR BROTLI_VERSION_MAJOR "${_brotli_version} >> 24")
+math(EXPR BROTLI_VERSION_MINOR "(${_brotli_version} >> 12) & 4095")
+math(EXPR BROTLI_VERSION_PATCH "${_brotli_version} & 4095")
+set(BROTLI_VERSION "${BROTLI_VERSION_MAJOR}.${BROTLI_VERSION_MINOR}.${BROTLI_VERSION_PATCH}")
+mark_as_advanced(BROTLI_VERSION BROTLI_VERSION_MAJOR BROTLI_VERSION_MINOR BROTLI_VERSION_PATCH)
+
+# ABI Version information
+file(STRINGS "c/common/version.h" _brotli_abi_info_line REGEX "^#define BROTLI_ABI_VERSION (0x[0-9a-fA-F]+)$")
+string(REGEX REPLACE "^#define BROTLI_ABI_VERSION 0x([0-9a-fA-F]+)$" "\\1" _brotli_abi_info_hex "${_brotli_abi_info_line}")
+hex_to_dec("${_brotli_abi_info_hex}" _brotli_abi_info)
+math(EXPR BROTLI_ABI_CURRENT "${_brotli_abi_info} >> 24")
+math(EXPR BROTLI_ABI_REVISION "(${_brotli_abi_info} >> 12) & 4095")
+math(EXPR BROTLI_ABI_AGE "${_brotli_abi_info} & 4095")
+math(EXPR BROTLI_ABI_COMPATIBILITY "${BROTLI_ABI_CURRENT} - ${BROTLI_ABI_AGE}")
+mark_as_advanced(BROTLI_ABI_CURRENT BROTLI_ABI_REVISION BROTLI_ABI_AGE BROTLI_ABI_COMPATIBILITY)
+
+if (ENABLE_SANITIZER)
+ set(CMAKE_C_FLAGS " ${CMAKE_C_FLAGS} -fsanitize=${ENABLE_SANITIZER}")
+ set(CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS} -fsanitize=${ENABLE_SANITIZER}")
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=${ENABLE_SANITIZER}")
+
+ # By default, brotli depends on undefined behavior, but setting
+ # BROTLI_BUILD_PORTABLE should result in a build which does not.
+ if(ENABLE_SANITIZER STREQUAL "undefined")
+ add_definitions(-DBROTLI_BUILD_PORTABLE)
+ endif()
+endif ()
+
+include(CheckFunctionExists)
+set(LIBM_LIBRARY)
+CHECK_FUNCTION_EXISTS(log2 LOG2_RES)
+if(NOT LOG2_RES)
+ set(orig_req_libs "${CMAKE_REQUIRED_LIBRARIES}")
+ set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES};m")
+ CHECK_FUNCTION_EXISTS(log2 LOG2_LIBM_RES)
+ if(LOG2_LIBM_RES)
+ set(LIBM_LIBRARY "m")
+ else()
+ message(FATAL_ERROR "log2() not found")
+ endif()
+
+ set(CMAKE_REQUIRED_LIBRARIES "${orig_req_libs}")
+ unset(LOG2_LIBM_RES)
+ unset(orig_req_libs)
+endif()
+unset(LOG2_RES)
+
+set(BROTLI_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/c/include")
+mark_as_advanced(BROTLI_INCLUDE_DIRS)
+
+set(BROTLI_LIBRARIES_CORE brotlienc brotlidec brotlicommon)
+set(BROTLI_LIBRARIES ${BROTLI_LIBRARIES_CORE} ${LIBM_LIBRARY})
+mark_as_advanced(BROTLI_LIBRARIES)
+
+set(BROTLI_LIBRARIES_CORE_STATIC brotlienc-static brotlidec-static brotlicommon-static)
+set(BROTLI_LIBRARIES_STATIC ${BROTLI_LIBRARIES_CORE_STATIC} ${LIBM_LIBRARY})
+mark_as_advanced(BROTLI_LIBRARIES_STATIC)
+
+if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+ add_definitions(-DOS_LINUX)
+elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
+ add_definitions(-DOS_FREEBSD)
+elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ add_definitions(-DOS_MACOSX)
+endif()
+
+function(transform_sources_list INPUT_FILE OUTPUT_FILE)
+ file(READ ${INPUT_FILE} TEXT)
+ string(REGEX REPLACE "\\\\\n" "~continuation~" TEXT ${TEXT})
+ string(REGEX REPLACE "([a-zA-Z_][a-zA-Z0-9_]*)[\t ]*=[\t ]*([^\n]*)" "SET(\\1 \\2)" TEXT ${TEXT})
+ string(REPLACE "~continuation~" "\n" TEXT ${TEXT})
+ file(WRITE ${OUTPUT_FILE} ${TEXT})
+endfunction()
+
+transform_sources_list("scripts/sources.lst" "${CMAKE_CURRENT_BINARY_DIR}/sources.lst.cmake")
+include("${CMAKE_CURRENT_BINARY_DIR}/sources.lst.cmake")
+
+if(BROTLI_EMSCRIPTEN)
+ set(BROTLI_SHARED_LIBS "")
+else()
+ set(BROTLI_SHARED_LIBS brotlicommon brotlidec brotlienc)
+ add_library(brotlicommon SHARED ${BROTLI_COMMON_C})
+ add_library(brotlidec SHARED ${BROTLI_DEC_C})
+ add_library(brotlienc SHARED ${BROTLI_ENC_C})
+endif()
+
+set(BROTLI_STATIC_LIBS brotlicommon-static brotlidec-static brotlienc-static)
+add_library(brotlicommon-static STATIC ${BROTLI_COMMON_C})
+add_library(brotlidec-static STATIC ${BROTLI_DEC_C})
+add_library(brotlienc-static STATIC ${BROTLI_ENC_C})
+
+# Older CMake versions does not understand INCLUDE_DIRECTORIES property.
+include_directories(${BROTLI_INCLUDE_DIRS})
+
+foreach(lib IN LISTS BROTLI_SHARED_LIBS)
+ target_compile_definitions(${lib} PUBLIC "BROTLI_SHARED_COMPILATION" )
+ string(TOUPPER "${lib}" LIB)
+ set_target_properties (${lib} PROPERTIES DEFINE_SYMBOL "${LIB}_SHARED_COMPILATION")
+endforeach()
+
+foreach(lib IN LISTS BROTLI_SHARED_LIBS BROTLI_STATIC_LIBS)
+ target_link_libraries(${lib} ${LIBM_LIBRARY})
+ set_property(TARGET ${lib} APPEND PROPERTY INCLUDE_DIRECTORIES ${BROTLI_INCLUDE_DIRS})
+ set_target_properties(${lib} PROPERTIES
+ VERSION "${BROTLI_ABI_COMPATIBILITY}.${BROTLI_ABI_AGE}.${BROTLI_ABI_REVISION}"
+ SOVERSION "${BROTLI_ABI_COMPATIBILITY}")
+ if(NOT BROTLI_EMSCRIPTEN)
+ set_target_properties(${lib} PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
+ endif()
+ set_property(TARGET ${lib} APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${BROTLI_INCLUDE_DIRS}")
+endforeach()
+
+if(NOT BROTLI_EMSCRIPTEN)
+target_link_libraries(brotlidec brotlicommon)
+target_link_libraries(brotlienc brotlicommon)
+endif()
+
+target_link_libraries(brotlidec-static brotlicommon-static)
+target_link_libraries(brotlienc-static brotlicommon-static)
+
+# For projects stuck on older versions of CMake, this will set the
+# BROTLI_INCLUDE_DIRS and BROTLI_LIBRARIES variables so they still
+# have a relatively easy way to use Brotli:
+#
+# include_directories(${BROTLI_INCLUDE_DIRS})
+# target_link_libraries(foo ${BROTLI_LIBRARIES})
+if(BROTLI_PARENT_DIRECTORY)
+ set(BROTLI_INCLUDE_DIRS "${BROTLI_INCLUDE_DIRS}" PARENT_SCOPE)
+ set(BROTLI_LIBRARIES "${BROTLI_LIBRARIES}" PARENT_SCOPE)
+endif()
+
+# Build the brotli executable
+add_executable(brotli ${BROTLI_CLI_C})
+target_link_libraries(brotli ${BROTLI_LIBRARIES_STATIC})
+
+# Installation
+if(NOT BROTLI_EMSCRIPTEN)
+if(NOT BROTLI_BUNDLED_MODE)
+ install(
+ TARGETS brotli
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ )
+
+ install(
+ TARGETS ${BROTLI_LIBRARIES_CORE}
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ )
+
+ install(
+ TARGETS ${BROTLI_LIBRARIES_CORE_STATIC}
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ )
+
+ install(
+ DIRECTORY ${BROTLI_INCLUDE_DIRS}/brotli
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
+ )
+endif() # BROTLI_BUNDLED_MODE
+endif() # BROTLI_EMSCRIPTEN
+
+# Tests
+
+# If we're targeting Windows but not running on Windows, we need Wine
+# to run the tests...
+if(NOT BROTLI_DISABLE_TESTS)
+ if(WIN32 AND NOT CMAKE_HOST_WIN32)
+ find_program(BROTLI_WRAPPER NAMES wine)
+
+ if(NOT BROTLI_WRAPPER)
+ message(STATUS "wine not found, disabling tests")
+ set(BROTLI_DISABLE_TESTS TRUE)
+ endif()
+ endif()
+endif()
+
+# If our compiler is a cross-compiler that we know about (arm/aarch64),
+# then we need to use qemu to execute the tests.
+if(NOT BROTLI_DISABLE_TESTS)
+ if ("${CMAKE_C_COMPILER}" MATCHES "^.*/arm-linux-gnueabihf-.*$")
+ message(STATUS "Detected arm-linux-gnueabihf cross-compilation")
+ set(BROTLI_WRAPPER "qemu-arm")
+ set(BROTLI_WRAPPER_LD_PREFIX "/usr/arm-linux-gnueabihf")
+ endif()
+
+ if ("${CMAKE_C_COMPILER}" MATCHES "^.*/arm-linux-gnueabi-.*$")
+ message(STATUS "Detected arm-linux-gnueabi cross-compilation")
+ set(BROTLI_WRAPPER "qemu-arm")
+ set(BROTLI_WRAPPER_LD_PREFIX "/usr/arm-linux-gnueabi")
+ endif()
+
+ if ("${CMAKE_C_COMPILER}" MATCHES "^.*/aarch64-linux-gnu-.*$")
+ message(STATUS "Detected aarch64-linux-gnu cross-compilation")
+ set(BROTLI_WRAPPER "qemu-aarch64")
+ set(BROTLI_WRAPPER_LD_PREFIX "/usr/aarch64-linux-gnu")
+ endif()
+endif()
+
+if(NOT BROTLI_DISABLE_TESTS)
+ include(CTest)
+ enable_testing()
+
+ set(ROUNDTRIP_INPUTS
+ tests/testdata/alice29.txt
+ tests/testdata/asyoulik.txt
+ tests/testdata/lcet10.txt
+ tests/testdata/plrabn12.txt
+ c/enc/encode.c
+ c/common/dictionary.h
+ c/dec/decode.c)
+
+ foreach(INPUT ${ROUNDTRIP_INPUTS})
+ get_filename_component(OUTPUT_NAME "${INPUT}" NAME)
+
+ set(OUTPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_NAME}")
+ set(INPUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${INPUT}")
+
+ foreach(quality 1 6 9 11)
+ add_test(NAME "${BROTLI_TEST_PREFIX}roundtrip/${INPUT}/${quality}"
+ COMMAND "${CMAKE_COMMAND}"
+ -DBROTLI_WRAPPER=${BROTLI_WRAPPER}
+ -DBROTLI_WRAPPER_LD_PREFIX=${BROTLI_WRAPPER_LD_PREFIX}
+ -DBROTLI_CLI=$
+ -DQUALITY=${quality}
+ -DINPUT=${INPUT_FILE}
+ -DOUTPUT=${OUTPUT_FILE}.${quality}
+ -P ${CMAKE_CURRENT_SOURCE_DIR}/tests/run-roundtrip-test.cmake)
+ endforeach()
+ endforeach()
+
+ file(GLOB_RECURSE
+ COMPATIBILITY_INPUTS
+ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
+ tests/testdata/*.compressed*)
+
+ foreach(INPUT ${COMPATIBILITY_INPUTS})
+ add_test(NAME "${BROTLI_TEST_PREFIX}compatibility/${INPUT}"
+ COMMAND "${CMAKE_COMMAND}"
+ -DBROTLI_WRAPPER=${BROTLI_WRAPPER}
+ -DBROTLI_WRAPPER_LD_PREFIX=${BROTLI_WRAPPER_LD_PREFIX}
+ -DBROTLI_CLI=$
+ -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/${INPUT}
+ -P ${CMAKE_CURRENT_SOURCE_DIR}/tests/run-compatibility-test.cmake)
+ endforeach()
+endif()
+
+# Generate a pkg-config files
+
+function(generate_pkg_config_path outvar path)
+ string(LENGTH "${path}" path_length)
+
+ set(path_args ${ARGV})
+ list(REMOVE_AT path_args 0 1)
+ list(LENGTH path_args path_args_remaining)
+
+ set("${outvar}" "${path}")
+
+ while(path_args_remaining GREATER 1)
+ list(GET path_args 0 name)
+ list(GET path_args 1 value)
+
+ get_filename_component(value_full "${value}" ABSOLUTE)
+ string(LENGTH "${value}" value_length)
+
+ if(path_length EQUAL value_length AND path STREQUAL value)
+ set("${outvar}" "\${${name}}")
+ break()
+ elseif(path_length GREATER value_length)
+ # We might be in a subdirectory of the value, but we have to be
+ # careful about a prefix matching but not being a subdirectory
+ # (for example, /usr/lib64 is not a subdirectory of /usr/lib).
+ # We'll do this by making sure the next character is a directory
+ # separator.
+ string(SUBSTRING "${path}" ${value_length} 1 sep)
+ if(sep STREQUAL "/")
+ string(SUBSTRING "${path}" 0 ${value_length} s)
+ if(s STREQUAL value)
+ string(SUBSTRING "${path}" "${value_length}" -1 suffix)
+ set("${outvar}" "\${${name}}${suffix}")
+ break()
+ endif()
+ endif()
+ endif()
+
+ list(REMOVE_AT path_args 0 1)
+ list(LENGTH path_args path_args_remaining)
+ endwhile()
+
+ set("${outvar}" "${${outvar}}" PARENT_SCOPE)
+endfunction(generate_pkg_config_path)
+
+function(transform_pc_file INPUT_FILE OUTPUT_FILE VERSION)
+ file(READ ${INPUT_FILE} TEXT)
+
+ set(PREFIX "${CMAKE_INSTALL_PREFIX}")
+ string(REGEX REPLACE "@prefix@" "${PREFIX}" TEXT ${TEXT})
+ string(REGEX REPLACE "@exec_prefix@" "${PREFIX}" TEXT ${TEXT})
+
+ generate_pkg_config_path(LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}" prefix "${PREFIX}")
+ string(REGEX REPLACE "@libdir@" "${LIBDIR}" TEXT ${TEXT})
+
+ generate_pkg_config_path(INCLUDEDIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}" prefix "${PREFIX}")
+ string(REGEX REPLACE "@includedir@" "${INCLUDEDIR}" TEXT ${TEXT})
+
+ string(REGEX REPLACE "@PACKAGE_VERSION@" "${VERSION}" TEXT ${TEXT})
+
+ file(WRITE ${OUTPUT_FILE} ${TEXT})
+endfunction()
+
+transform_pc_file("scripts/libbrotlicommon.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libbrotlicommon.pc" "${BROTLI_VERSION}")
+
+transform_pc_file("scripts/libbrotlidec.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libbrotlidec.pc" "${BROTLI_VERSION}")
+
+transform_pc_file("scripts/libbrotlienc.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libbrotlienc.pc" "${BROTLI_VERSION}")
+
+if(NOT BROTLI_EMSCRIPTEN)
+if(NOT BROTLI_BUNDLED_MODE)
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libbrotlicommon.pc"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libbrotlidec.pc"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libbrotlienc.pc"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+endif() # BROTLI_BUNDLED_MODE
+endif() # BROTLI_EMSCRIPTEN
+
+if (ENABLE_COVERAGE STREQUAL "yes")
+ SETUP_TARGET_FOR_COVERAGE(coverage test coverage)
+endif ()
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/CONTRIBUTING.md b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/CONTRIBUTING.md
new file mode 100644
index 000000000..a00e37d17
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/CONTRIBUTING.md
@@ -0,0 +1,27 @@
+Want to contribute? Great! First, read this page (including the small print at
+the end).
+
+### Before you contribute
+Before we can use your code, you must sign the
+[Google Individual Contributor License Agreement]
+(https://cla.developers.google.com/about/google-individual)
+(CLA), which you can do online. The CLA is necessary mainly because you own the
+copyright to your changes, even after your contribution becomes part of our
+codebase, so we need your permission to use and distribute your code. We also
+need to be sure of various other things—for instance that you'll tell us if you
+know that your code infringes on other people's patents. You don't have to sign
+the CLA until after you've submitted your code for review and a member has
+approved it, but you must do it before we can put your code into our codebase.
+Before you start working on a larger contribution, you should get in touch with
+us first through the issue tracker with your idea so that we can help out and
+possibly guide you. Coordinating up front makes it much easier to avoid
+frustration later on.
+
+### Code reviews
+All submissions, including submissions by project members, require review. We
+use Github pull requests for this purpose.
+
+### The small print
+Contributions made by corporations are covered by a different agreement than
+the one above, the [Software Grant and Corporate Contributor License Agreement]
+(https://cla.developers.google.com/about/google-corporate).
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/LICENSE b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/LICENSE
new file mode 100644
index 000000000..33b7cdd2d
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/MANIFEST.in b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/MANIFEST.in
new file mode 100644
index 000000000..b7b8e7244
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/MANIFEST.in
@@ -0,0 +1,17 @@
+include CONTRIBUTING.md
+include c/common/*.c
+include c/common/*.h
+include c/dec/*.c
+include c/dec/*.h
+include c/enc/*.c
+include c/enc/*.h
+include c/include/brotli/*.h
+include LICENSE
+include MANIFEST.in
+include python/_brotli.cc
+include python/bro.py
+include python/brotli.py
+include python/README.md
+include README.md
+include setup.py
+include c/tools/brotli.c
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/Makefile b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/Makefile
new file mode 100644
index 000000000..489094090
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/Makefile
@@ -0,0 +1,55 @@
+OS := $(shell uname)
+LIBSOURCES = $(wildcard c/common/*.c) $(wildcard c/dec/*.c) \
+ $(wildcard c/enc/*.c)
+SOURCES = $(LIBSOURCES) c/tools/brotli.c
+BINDIR = bin
+OBJDIR = $(BINDIR)/obj
+LIBOBJECTS = $(addprefix $(OBJDIR)/, $(LIBSOURCES:.c=.o))
+OBJECTS = $(addprefix $(OBJDIR)/, $(SOURCES:.c=.o))
+LIB_A = libbrotli.a
+EXECUTABLE = brotli
+DIRS = $(OBJDIR)/c/common $(OBJDIR)/c/dec $(OBJDIR)/c/enc \
+ $(OBJDIR)/c/tools $(BINDIR)/tmp
+CFLAGS += -O2
+ifeq ($(os), Darwin)
+ CPPFLAGS += -DOS_MACOSX
+endif
+
+ifneq ($(strip $(CROSS_COMPILE)), )
+ CC=$(CROSS_COMPILE)-gcc
+ ARCH=$(firstword $(subst -, ,$(CROSS_COMPILE)))
+ BROTLI_WRAPPER="qemu-$(ARCH) -L /usr/$(CROSS_COMPILE)"
+endif
+
+# The arm-linux-gnueabi compiler defaults to Armv5. Since we only support Armv7
+# and beyond, we need to select Armv7 explicitly with march.
+ifeq ($(ARCH), arm)
+ CFLAGS += -march=armv7-a -mfloat-abi=hard -mfpu=neon
+endif
+
+all: test
+ @:
+
+.PHONY: all clean test
+
+$(DIRS):
+ mkdir -p $@
+
+$(EXECUTABLE): $(OBJECTS)
+ $(CC) $(LDFLAGS) $(OBJECTS) -lm -o $(BINDIR)/$(EXECUTABLE)
+
+lib: $(LIBOBJECTS)
+ rm -f $(LIB_A)
+ ar -crs $(LIB_A) $(LIBOBJECTS)
+
+test: $(EXECUTABLE)
+ tests/compatibility_test.sh $(BROTLI_WRAPPER)
+ tests/roundtrip_test.sh $(BROTLI_WRAPPER)
+
+clean:
+ rm -rf $(BINDIR) $(LIB_A)
+
+.SECONDEXPANSION:
+$(OBJECTS): $$(patsubst %.o,%.c,$$(patsubst $$(OBJDIR)/%,%,$$@)) | $(DIRS)
+ $(CC) $(CFLAGS) $(CPPFLAGS) -Ic/include \
+ -c $(patsubst %.o,%.c,$(patsubst $(OBJDIR)/%,%,$@)) -o $@
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/Makefile.am b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/Makefile.am
new file mode 100644
index 000000000..ace7a8506
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/Makefile.am
@@ -0,0 +1,38 @@
+AUTOMAKE_OPTIONS = foreign nostdinc subdir-objects
+
+ACLOCAL_AMFLAGS = -I m4
+
+# Actual ABI version is substituted by bootstrap
+LIBBROTLI_VERSION_INFO = -version-info 0:0:0
+
+bin_PROGRAMS = brotli
+lib_LTLIBRARIES = libbrotlicommon.la libbrotlidec.la libbrotlienc.la
+
+include scripts/sources.lst
+
+brotliincludedir = $(includedir)/brotli
+brotliinclude_HEADERS = $(BROTLI_INCLUDE)
+
+AM_CFLAGS = -I$(top_srcdir)/c/include
+
+brotli_SOURCES = $(BROTLI_CLI_C)
+brotli_LDADD = libbrotlidec.la libbrotlienc.la libbrotlicommon.la -lm
+#brotli_LDFLAGS = -static
+
+libbrotlicommon_la_SOURCES = $(BROTLI_COMMON_C) $(BROTLI_COMMON_H)
+libbrotlicommon_la_LDFLAGS = $(AM_LDFLAGS) $(LIBBROTLI_VERSION_INFO) $(LDFLAGS)
+libbrotlidec_la_SOURCES = $(BROTLI_DEC_C) $(BROTLI_DEC_H)
+libbrotlidec_la_LDFLAGS = $(AM_LDFLAGS) $(LIBBROTLI_VERSION_INFO) $(LDFLAGS)
+libbrotlidec_la_LIBADD = libbrotlicommon.la -lm
+libbrotlienc_la_SOURCES = $(BROTLI_ENC_C) $(BROTLI_ENC_H)
+libbrotlienc_la_LDFLAGS = $(AM_LDFLAGS) $(LIBBROTLI_VERSION_INFO) $(LDFLAGS)
+libbrotlienc_la_LIBADD = libbrotlicommon.la -lm
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = \
+ scripts/libbrotlicommon.pc \
+ scripts/libbrotlidec.pc \
+ scripts/libbrotlienc.pc
+pkgincludedir= $(brotliincludedir)
+
+dist_doc_DATA = README
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/README b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/README
new file mode 100644
index 000000000..dea729130
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/README
@@ -0,0 +1,15 @@
+BROTLI DATA COMPRESSION LIBRARY
+
+Brotli is a generic-purpose lossless compression algorithm that compresses data
+using a combination of a modern variant of the LZ77 algorithm, Huffman coding
+and 2nd order context modeling, with a compression ratio comparable to the best
+currently available general-purpose compression methods. It is similar in speed
+with deflate but offers more dense compression.
+
+The specification of the Brotli Compressed Data Format is defined in RFC 7932
+https://tools.ietf.org/html/rfc7932
+
+Brotli is open-sourced under the MIT License, see the LICENSE file.
+
+Brotli mailing list:
+https://groups.google.com/forum/#!forum/brotli
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/README.md b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/README.md
new file mode 100644
index 000000000..017173c4e
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/README.md
@@ -0,0 +1,98 @@
+
+
+### Introduction
+
+Brotli is a generic-purpose lossless compression algorithm that compresses data
+using a combination of a modern variant of the LZ77 algorithm, Huffman coding
+and 2nd order context modeling, with a compression ratio comparable to the best
+currently available general-purpose compression methods. It is similar in speed
+with deflate but offers more dense compression.
+
+The specification of the Brotli Compressed Data Format is defined in [RFC 7932](https://tools.ietf.org/html/rfc7932).
+
+Brotli is open-sourced under the MIT License, see the LICENSE file.
+
+Brotli mailing list:
+https://groups.google.com/forum/#!forum/brotli
+
+[![TravisCI Build Status](https://travis-ci.org/google/brotli.svg?branch=master)](https://travis-ci.org/google/brotli)
+[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/google/brotli?branch=master&svg=true)](https://ci.appveyor.com/project/szabadka/brotli)
+[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/brotli.svg)](https://oss-fuzz-build-logs.storage.googleapis.com/index.html#brotli)
+
+### Build instructions
+
+#### Vcpkg
+
+You can download and install brotli using the [vcpkg](https://github.com/Microsoft/vcpkg/) dependency manager:
+
+ git clone https://github.com/Microsoft/vcpkg.git
+ cd vcpkg
+ ./bootstrap-vcpkg.sh
+ ./vcpkg integrate install
+ vcpkg install brotli
+
+The brotli port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository.
+
+#### Autotools-style CMake
+
+[configure-cmake](https://github.com/nemequ/configure-cmake) is an
+autotools-style configure script for CMake-based projects (not supported on Windows).
+
+The basic commands to build, test and install brotli are:
+
+ $ mkdir out && cd out
+ $ ../configure-cmake
+ $ make
+ $ make test
+ $ make install
+
+By default, debug binaries are built. To generate "release" `Makefile` specify `--disable-debug` option to `configure-cmake`.
+
+#### Bazel
+
+See [Bazel](http://www.bazel.build/)
+
+#### CMake
+
+The basic commands to build and install brotli are:
+
+ $ mkdir out && cd out
+ $ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./installed ..
+ $ cmake --build . --config Release --target install
+
+You can use other [CMake](https://cmake.org/) configuration.
+
+#### Premake5
+
+See [Premake5](https://premake.github.io/)
+
+#### Python
+
+To install the latest release of the Python module, run the following:
+
+ $ pip install brotli
+
+To install the tip-of-the-tree version, run:
+
+ $ pip install --upgrade git+https://github.com/google/brotli
+
+See the [Python readme](python/README.md) for more details on installing
+from source, development, and testing.
+
+### Benchmarks
+* [Squash Compression Benchmark](https://quixdb.github.io/squash-benchmark/) / [Unstable Squash Compression Benchmark](https://quixdb.github.io/squash-benchmark/unstable/)
+* [Large Text Compression Benchmark](http://mattmahoney.net/dc/text.html)
+* [Lzturbo Benchmark](https://sites.google.com/site/powturbo/home/benchmark)
+
+### Related projects
+> **Disclaimer:** Brotli authors take no responsibility for the third party projects mentioned in this section.
+
+Independent [decoder](https://github.com/madler/brotli) implementation by Mark Adler, based entirely on format specification.
+
+JavaScript port of brotli [decoder](https://github.com/devongovett/brotli.js). Could be used directly via `npm install brotli`
+
+Hand ported [decoder / encoder](https://github.com/dominikhlbg/BrotliHaxe) in haxe by Dominik Homberger. Output source code: JavaScript, PHP, Python, Java and C#
+
+7Zip [plugin](https://github.com/mcmilk/7-Zip-Zstd)
+
+Dart [native bindings](https://github.com/thosakwe/brotli)
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/WORKSPACE b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/WORKSPACE
new file mode 100644
index 000000000..75f376828
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/WORKSPACE
@@ -0,0 +1,21 @@
+workspace(name = "org_brotli")
+
+local_repository(
+ name = "ignore_org_brotli_go",
+ path = "go",
+)
+
+local_repository(
+ name = "ignore_org_brotli_java",
+ path = "java",
+)
+
+local_repository(
+ name = "ignore_org_brotli_js",
+ path = "js",
+)
+
+local_repository(
+ name = "ignore_org_brotli_research",
+ path = "research",
+)
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/bootstrap b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/bootstrap
new file mode 100755
index 000000000..64aca2c40
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/bootstrap
@@ -0,0 +1,31 @@
+# !/bin/sh -e
+
+REQUIRED='is required, but not installed.'
+bc -v >/dev/null 2>&1 || { echo >&2 "'bc' $REQUIRED"; exit 1; }
+if [ `uname -s` != "FreeBSD" ]; then
+sed --version >/dev/null 2>&1 || { echo >&2 "'sed' $REQUIRED"; exit 1; }
+fi
+autoreconf --version >/dev/null 2>&1 || { echo >&2 "'autoconf' $REQUIRED"; exit 1; }
+
+# If libtool is not installed -> "error: Libtool library used but 'LIBTOOL' is undefined"
+
+mkdir m4 2>/dev/null
+
+BROTLI_ABI_HEX=`sed -n 's/#define BROTLI_ABI_VERSION 0x//p' c/common/version.h`
+BROTLI_ABI_INT=`echo "ibase=16;$BROTLI_ABI_HEX" | bc`
+BROTLI_ABI_CURRENT=`expr $BROTLI_ABI_INT / 16777216`
+BROTLI_ABI_REVISION=`expr $BROTLI_ABI_INT / 4096 % 4096`
+BROTLI_ABI_AGE=`expr $BROTLI_ABI_INT % 4096`
+BROTLI_ABI_INFO="$BROTLI_ABI_CURRENT:$BROTLI_ABI_REVISION:$BROTLI_ABI_AGE"
+
+BROTLI_VERSION_HEX=`sed -n 's/#define BROTLI_VERSION 0x//p' c/common/version.h`
+BROTLI_VERSION_INT=`echo "ibase=16;$BROTLI_VERSION_HEX" | bc`
+BROTLI_VERSION_MAJOR=`expr $BROTLI_VERSION_INT / 16777216`
+BROTLI_VERSION_MINOR=`expr $BROTLI_VERSION_INT / 4096 % 4096`
+BROTLI_VERSION_PATCH=`expr $BROTLI_VERSION_INT % 4096`
+BROTLI_VERSION="$BROTLI_VERSION_MAJOR.$BROTLI_VERSION_MINOR.$BROTLI_VERSION_PATCH"
+
+sed -i.bak -r "s/[0-9]+:[0-9]+:[0-9]+/$BROTLI_ABI_INFO/" Makefile.am
+sed -i.bak -r "s/\[[0-9]+\.[0-9]+\.[0-9]+\]/[$BROTLI_VERSION]/" configure.ac
+
+autoreconf --install --force --symlink || exit $
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/constants.h b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/constants.h
new file mode 100644
index 000000000..f6e44dc7b
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/constants.h
@@ -0,0 +1,184 @@
+/* Copyright 2016 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/**
+ * @file
+ * Common constants used in decoder and encoder API.
+ */
+
+#ifndef BROTLI_COMMON_CONSTANTS_H_
+#define BROTLI_COMMON_CONSTANTS_H_
+
+#include "./platform.h"
+#include
+
+/* Specification: 7.3. Encoding of the context map */
+#define BROTLI_CONTEXT_MAP_MAX_RLE 16
+
+/* Specification: 2. Compressed representation overview */
+#define BROTLI_MAX_NUMBER_OF_BLOCK_TYPES 256
+
+/* Specification: 3.3. Alphabet sizes: insert-and-copy length */
+#define BROTLI_NUM_LITERAL_SYMBOLS 256
+#define BROTLI_NUM_COMMAND_SYMBOLS 704
+#define BROTLI_NUM_BLOCK_LEN_SYMBOLS 26
+#define BROTLI_MAX_CONTEXT_MAP_SYMBOLS (BROTLI_MAX_NUMBER_OF_BLOCK_TYPES + \
+ BROTLI_CONTEXT_MAP_MAX_RLE)
+#define BROTLI_MAX_BLOCK_TYPE_SYMBOLS (BROTLI_MAX_NUMBER_OF_BLOCK_TYPES + 2)
+
+/* Specification: 3.5. Complex prefix codes */
+#define BROTLI_REPEAT_PREVIOUS_CODE_LENGTH 16
+#define BROTLI_REPEAT_ZERO_CODE_LENGTH 17
+#define BROTLI_CODE_LENGTH_CODES (BROTLI_REPEAT_ZERO_CODE_LENGTH + 1)
+/* "code length of 8 is repeated" */
+#define BROTLI_INITIAL_REPEATED_CODE_LENGTH 8
+
+/* "Large Window Brotli" */
+
+/**
+ * The theoretical maximum number of distance bits specified for large window
+ * brotli, for 64-bit encoders and decoders. Even when in practice 32-bit
+ * encoders and decoders only support up to 30 max distance bits, the value is
+ * set to 62 because it affects the large window brotli file format.
+ * Specifically, it affects the encoding of simple huffman tree for distances,
+ * see Specification RFC 7932 chapter 3.4.
+ */
+#define BROTLI_LARGE_MAX_DISTANCE_BITS 62U
+#define BROTLI_LARGE_MIN_WBITS 10
+/**
+ * The maximum supported large brotli window bits by the encoder and decoder.
+ * Large window brotli allows up to 62 bits, however the current encoder and
+ * decoder, designed for 32-bit integers, only support up to 30 bits maximum.
+ */
+#define BROTLI_LARGE_MAX_WBITS 30
+
+/* Specification: 4. Encoding of distances */
+#define BROTLI_NUM_DISTANCE_SHORT_CODES 16
+/**
+ * Maximal number of "postfix" bits.
+ *
+ * Number of "postfix" bits is stored as 2 bits in meta-block header.
+ */
+#define BROTLI_MAX_NPOSTFIX 3
+#define BROTLI_MAX_NDIRECT 120
+#define BROTLI_MAX_DISTANCE_BITS 24U
+#define BROTLI_DISTANCE_ALPHABET_SIZE(NPOSTFIX, NDIRECT, MAXNBITS) ( \
+ BROTLI_NUM_DISTANCE_SHORT_CODES + (NDIRECT) + \
+ ((MAXNBITS) << ((NPOSTFIX) + 1)))
+/* BROTLI_NUM_DISTANCE_SYMBOLS == 1128 */
+#define BROTLI_NUM_DISTANCE_SYMBOLS \
+ BROTLI_DISTANCE_ALPHABET_SIZE( \
+ BROTLI_MAX_NDIRECT, BROTLI_MAX_NPOSTFIX, BROTLI_LARGE_MAX_DISTANCE_BITS)
+
+/* ((1 << 26) - 4) is the maximal distance that can be expressed in RFC 7932
+ brotli stream using NPOSTFIX = 0 and NDIRECT = 0. With other NPOSTFIX and
+ NDIRECT values distances up to ((1 << 29) + 88) could be expressed. */
+#define BROTLI_MAX_DISTANCE 0x3FFFFFC
+
+/* ((1 << 31) - 4) is the safe distance limit. Using this number as a limit
+ allows safe distance calculation without overflows, given the distance
+ alphabet size is limited to corresponding size
+ (see kLargeWindowDistanceCodeLimits). */
+#define BROTLI_MAX_ALLOWED_DISTANCE 0x7FFFFFFC
+
+/* 7.1. Context modes and context ID lookup for literals */
+/* "context IDs for literals are in the range of 0..63" */
+#define BROTLI_LITERAL_CONTEXT_BITS 6
+
+/* 7.2. Context ID for distances */
+#define BROTLI_DISTANCE_CONTEXT_BITS 2
+
+/* 9.1. Format of the Stream Header */
+/* Number of slack bytes for window size. Don't confuse
+ with BROTLI_NUM_DISTANCE_SHORT_CODES. */
+#define BROTLI_WINDOW_GAP 16
+#define BROTLI_MAX_BACKWARD_LIMIT(W) (((size_t)1 << (W)) - BROTLI_WINDOW_GAP)
+
+typedef struct BrotliDistanceCodeLimit {
+ uint32_t max_alphabet_size;
+ uint32_t max_distance;
+} BrotliDistanceCodeLimit;
+
+/* This function calculates maximal size of distance alphabet, such that the
+ distances greater than the given values can not be represented.
+
+ This limits are designed to support fast and safe 32-bit decoders.
+ "32-bit" means that signed integer values up to ((1 << 31) - 1) could be
+ safely expressed.
+
+ Brotli distance alphabet symbols do not represent consecutive distance
+ ranges. Each distance alphabet symbol (excluding direct distances and short
+ codes), represent interleaved (for NPOSTFIX > 0) range of distances.
+ A "group" of consecutive (1 << NPOSTFIX) symbols represent non-interleaved
+ range. Two consecutive groups require the same amount of "extra bits".
+
+ It is important that distance alphabet represents complete "groups".
+ To avoid complex logic on encoder side about interleaved ranges
+ it was decided to restrict both sides to complete distance code "groups".
+ */
+BROTLI_UNUSED_FUNCTION BrotliDistanceCodeLimit BrotliCalculateDistanceCodeLimit(
+ uint32_t max_distance, uint32_t npostfix, uint32_t ndirect) {
+ BrotliDistanceCodeLimit result;
+ /* Marking this function as unused, because not all files
+ including "constants.h" use it -> compiler warns about that. */
+ BROTLI_UNUSED(&BrotliCalculateDistanceCodeLimit);
+ if (max_distance <= ndirect) {
+ /* This case never happens / exists only for the sake of completeness. */
+ result.max_alphabet_size = max_distance + BROTLI_NUM_DISTANCE_SHORT_CODES;
+ result.max_distance = max_distance;
+ return result;
+ } else {
+ /* The first prohibited value. */
+ uint32_t forbidden_distance = max_distance + 1;
+ /* Subtract "directly" encoded region. */
+ uint32_t offset = forbidden_distance - ndirect - 1;
+ uint32_t ndistbits = 0;
+ uint32_t tmp;
+ uint32_t half;
+ uint32_t group;
+ /* Postfix for the last dcode in the group. */
+ uint32_t postfix = (1u << npostfix) - 1;
+ uint32_t extra;
+ uint32_t start;
+ /* Remove postfix and "head-start". */
+ offset = (offset >> npostfix) + 4;
+ /* Calculate the number of distance bits. */
+ tmp = offset / 2;
+ /* Poor-man's log2floor, to avoid extra dependencies. */
+ while (tmp != 0) {ndistbits++; tmp = tmp >> 1;}
+ /* One bit is covered with subrange addressing ("half"). */
+ ndistbits--;
+ /* Find subrange. */
+ half = (offset >> ndistbits) & 1;
+ /* Calculate the "group" part of dcode. */
+ group = ((ndistbits - 1) << 1) | half;
+ /* Calculated "group" covers the prohibited distance value. */
+ if (group == 0) {
+ /* This case is added for correctness; does not occur for limit > 128. */
+ result.max_alphabet_size = ndirect + BROTLI_NUM_DISTANCE_SHORT_CODES;
+ result.max_distance = ndirect;
+ return result;
+ }
+ /* Decrement "group", so it is the last permitted "group". */
+ group--;
+ /* After group was decremented, ndistbits and half must be recalculated. */
+ ndistbits = (group >> 1) + 1;
+ /* The last available distance in the subrange has all extra bits set. */
+ extra = (1u << ndistbits) - 1;
+ /* Calculate region start. NB: ndistbits >= 1. */
+ start = (1u << (ndistbits + 1)) - 4;
+ /* Move to subregion. */
+ start += (group & 1) << ndistbits;
+ /* Calculate the alphabet size. */
+ result.max_alphabet_size = ((group << npostfix) | postfix) + ndirect +
+ BROTLI_NUM_DISTANCE_SHORT_CODES + 1;
+ /* Calculate the maximal distance representable by alphabet. */
+ result.max_distance = ((start + extra) << npostfix) + postfix + ndirect + 1;
+ return result;
+ }
+}
+
+#endif /* BROTLI_COMMON_CONSTANTS_H_ */
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/context.h b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/context.h
new file mode 100755
index 000000000..24b3eb48f
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/context.h
@@ -0,0 +1,261 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* Lookup table to map the previous two bytes to a context id.
+
+ There are four different context modeling modes defined here:
+ CONTEXT_LSB6: context id is the least significant 6 bits of the last byte,
+ CONTEXT_MSB6: context id is the most significant 6 bits of the last byte,
+ CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text,
+ CONTEXT_SIGNED: second-order context model tuned for signed integers.
+
+ If |p1| and |p2| are the previous two bytes, and |mode| is current context
+ mode, we calculate the context as:
+
+ context = ContextLut(mode)[p1] | ContextLut(mode)[p2 + 256].
+
+ For CONTEXT_UTF8 mode, if the previous two bytes are ASCII characters
+ (i.e. < 128), this will be equivalent to
+
+ context = 4 * context1(p1) + context2(p2),
+
+ where context1 is based on the previous byte in the following way:
+
+ 0 : non-ASCII control
+ 1 : \t, \n, \r
+ 2 : space
+ 3 : other punctuation
+ 4 : " '
+ 5 : %
+ 6 : ( < [ {
+ 7 : ) > ] }
+ 8 : , ; :
+ 9 : .
+ 10 : =
+ 11 : number
+ 12 : upper-case vowel
+ 13 : upper-case consonant
+ 14 : lower-case vowel
+ 15 : lower-case consonant
+
+ and context2 is based on the second last byte:
+
+ 0 : control, space
+ 1 : punctuation
+ 2 : upper-case letter, number
+ 3 : lower-case letter
+
+ If the last byte is ASCII, and the second last byte is not (in a valid UTF8
+ stream it will be a continuation byte, value between 128 and 191), the
+ context is the same as if the second last byte was an ASCII control or space.
+
+ If the last byte is a UTF8 lead byte (value >= 192), then the next byte will
+ be a continuation byte and the context id is 2 or 3 depending on the LSB of
+ the last byte and to a lesser extent on the second last byte if it is ASCII.
+
+ If the last byte is a UTF8 continuation byte, the second last byte can be:
+ - continuation byte: the next byte is probably ASCII or lead byte (assuming
+ 4-byte UTF8 characters are rare) and the context id is 0 or 1.
+ - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1
+ - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3
+
+ The possible value combinations of the previous two bytes, the range of
+ context ids and the type of the next byte is summarized in the table below:
+
+ |--------\-----------------------------------------------------------------|
+ | \ Last byte |
+ | Second \---------------------------------------------------------------|
+ | last byte \ ASCII | cont. byte | lead byte |
+ | \ (0-127) | (128-191) | (192-) |
+ |=============|===================|=====================|==================|
+ | ASCII | next: ASCII/lead | not valid | next: cont. |
+ | (0-127) | context: 4 - 63 | | context: 2 - 3 |
+ |-------------|-------------------|---------------------|------------------|
+ | cont. byte | next: ASCII/lead | next: ASCII/lead | next: cont. |
+ | (128-191) | context: 4 - 63 | context: 0 - 1 | context: 2 - 3 |
+ |-------------|-------------------|---------------------|------------------|
+ | lead byte | not valid | next: ASCII/lead | not valid |
+ | (192-207) | | context: 0 - 1 | |
+ |-------------|-------------------|---------------------|------------------|
+ | lead byte | not valid | next: cont. | not valid |
+ | (208-) | | context: 2 - 3 | |
+ |-------------|-------------------|---------------------|------------------|
+*/
+
+#ifndef BROTLI_COMMON_CONTEXT_H_
+#define BROTLI_COMMON_CONTEXT_H_
+
+#include
+
+typedef enum ContextType {
+ CONTEXT_LSB6 = 0,
+ CONTEXT_MSB6 = 1,
+ CONTEXT_UTF8 = 2,
+ CONTEXT_SIGNED = 3
+} ContextType;
+
+/* Common context lookup table for all context modes. */
+static const uint8_t kContextLookup[2048] = {
+ /* CONTEXT_LSB6, last byte. */
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+
+ /* CONTEXT_LSB6, second last byte, */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ /* CONTEXT_MSB6, last byte. */
+ 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,
+ 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
+ 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11,
+ 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15,
+ 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19,
+ 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23,
+ 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27,
+ 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31,
+ 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35,
+ 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39,
+ 40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43,
+ 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47,
+ 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51,
+ 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55,
+ 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59,
+ 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63,
+
+ /* CONTEXT_MSB6, second last byte, */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ /* CONTEXT_UTF8, last byte. */
+ /* ASCII range. */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12,
+ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,
+ 12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48,
+ 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12,
+ 12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56,
+ 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12, 0,
+ /* UTF8 continuation byte range. */
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ /* UTF8 lead byte range. */
+ 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+ 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+ 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+ 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+
+ /* CONTEXT_UTF8 second last byte. */
+ /* ASCII range. */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
+ 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
+ 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,
+ /* UTF8 continuation byte range. */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* UTF8 lead byte range. */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+
+ /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */
+ 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,
+
+ /* CONTEXT_SIGNED, second last byte. */
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,
+};
+
+typedef const uint8_t* ContextLut;
+
+/* typeof(MODE) == ContextType; returns ContextLut */
+#define BROTLI_CONTEXT_LUT(MODE) (&kContextLookup[(MODE) << 9])
+
+/* typeof(LUT) == ContextLut */
+#define BROTLI_CONTEXT(P1, P2, LUT) ((LUT)[P1] | ((LUT) + 256)[P2])
+
+#endif /* BROTLI_COMMON_CONTEXT_H_ */
diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/dictionary.bin b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/dictionary.bin
new file mode 100644
index 000000000..a585c0e29
--- /dev/null
+++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/dictionary.bin
@@ -0,0 +1,432 @@
+timedownlifeleftbackcodedatashowonlysitecityopenjustlikefreeworktextyearoverbodyloveformbookplaylivelinehelphomesidemorewordlongthemviewfindpagedaysfullheadtermeachareafromtruemarkableuponhighdatelandnewsevennextcasebothpostusedmadehandherewhatnameLinkblogsizebaseheldmakemainuser') +holdendswithNewsreadweresigntakehavegameseencallpathwellplusmenufilmpartjointhislistgoodneedwayswestjobsmindalsologorichuseslastteamarmyfoodkingwilleastwardbestfirePageknowaway.pngmovethanloadgiveselfnotemuchfeedmanyrockicononcelookhidediedHomerulehostajaxinfoclublawslesshalfsomesuchzone100%onescareTimeracebluefourweekfacehopegavehardlostwhenparkkeptpassshiproomHTMLplanTypedonesavekeepflaglinksoldfivetookratetownjumpthusdarkcardfilefearstaykillthatfallautoever.comtalkshopvotedeepmoderestturnbornbandfellroseurl(skinrolecomeactsagesmeetgold.jpgitemvaryfeltthensenddropViewcopy1.0"stopelseliestourpack.gifpastcss?graymean>rideshotlatesaidroadvar feeljohnrickportfast'UA-deadpoorbilltypeU.S.woodmust2px;Inforankwidewantwalllead[0];paulwavesure$('#waitmassarmsgoesgainlangpaid!-- lockunitrootwalkfirmwifexml"songtest20pxkindrowstoolfontmailsafestarmapscorerainflowbabyspansays4px;6px;artsfootrealwikiheatsteptriporg/lakeweaktoldFormcastfansbankveryrunsjulytask1px;goalgrewslowedgeid="sets5px;.js?40pxif (soonseatnonetubezerosentreedfactintogiftharm18pxcamehillboldzoomvoideasyringfillpeakinitcost3px;jacktagsbitsrolleditknewnearironfreddiskwentsoilputs/js/holyT22:ISBNT20:adamseesjson', 'contT21: RSSloopasiamoon
soulLINEfortcartT14:80px!--<9px;T04:mike:46ZniceinchYorkricezh:ä'));puremageparatonebond:37Z_of_']);000,zh:çtankyardbowlbush:56ZJava30px
+|}
+%C3%:34ZjeffEXPIcashvisagolfsnowzh:équer.csssickmeatmin.binddellhirepicsrent:36ZHTTP-201fotowolfEND xbox:54ZBODYdick;
+}
+exit:35Zvarsbeat'});diet999;anne}}[i].Langkm²wiretoysaddssealalex;
+ }echonine.org005)tonyjewssandlegsroof000) 200winegeardogsbootgarycutstyletemption.xmlcockgang$('.50pxPh.Dmiscalanloandeskmileryanunixdisc);}
+dustclip).
+
+70px-200DVDs7]>sonyguysfuckpipe|-
+!002)ndow[1];[];
+Log salt
+ bangtrimbath){
+00px
+});ko:ìfeesad>
s:// [];tollplug(){
+{
+ .js'200pdualboat.JPG);
+}quot);
+
+');
+
+}
201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037201320122011201020092008200720062005200420032002200120001999199819971996199519941993199219911990198919881987198619851984198319821981198019791978197719761975197419731972197119701969196819671966196519641963196219611960195919581957195619551954195319521951195010001024139400009999comomásesteestaperotodohacecadaañobiendÃaasÃvidacasootroforosolootracualdijosidograntipotemadebealgoquéestonadatrespococasabajotodasinoaguapuesunosantediceluisellamayozonaamorpisoobraclicellodioshoracasiзанаомрарутанепоотизнодотожеонихÐаеебымыВыÑовывоÐообПолиниРФÐеМытыОнимдаЗаДаÐуОбтеИзейнуммТыужÙيأنمامعكلأوردياÙىهولملكاولهبسالإنهيأيقدهلثمبهلوليبلايبكشيامأمنتبيلنØبهممشوشfirstvideolightworldmediawhitecloseblackrightsmallbooksplacemusicfieldorderpointvalueleveltableboardhousegroupworksyearsstatetodaywaterstartstyledeathpowerphonenighterrorinputabouttermstitletoolseventlocaltimeslargewordsgamesshortspacefocusclearmodelblockguideradiosharewomenagainmoneyimagenamesyounglineslatercolorgreenfront&watchforcepricerulesbeginaftervisitissueareasbelowindextotalhourslabelprintpressbuiltlinksspeedstudytradefoundsenseundershownformsrangeaddedstillmovedtakenaboveflashfixedoftenotherviewschecklegalriveritemsquickshapehumanexistgoingmoviethirdbasicpeacestagewidthloginideaswrotepagesusersdrivestorebreaksouthvoicesitesmonthwherebuildwhichearthforumthreesportpartyClicklowerlivesclasslayerentrystoryusagesoundcourtyour birthpopuptypesapplyImagebeinguppernoteseveryshowsmeansextramatchtrackknownearlybegansuperpapernorthlearngivennamedendedTermspartsGroupbrandusingwomanfalsereadyaudiotakeswhile.com/livedcasesdailychildgreatjudgethoseunitsneverbroadcoastcoverapplefilescyclesceneplansclickwritequeenpieceemailframeolderphotolimitcachecivilscaleenterthemetheretouchboundroyalaskedwholesincestock namefaithheartemptyofferscopeownedmightalbumthinkbloodarraymajortrustcanonunioncountvalidstoneStyleLoginhappyoccurleft:freshquitefilmsgradeneedsurbanfightbasishoverauto;route.htmlmixedfinalYour slidetopicbrownalonedrawnsplitreachRightdatesmarchquotegoodsLinksdoubtasyncthumballowchiefyouthnovel10px;serveuntilhandsCheckSpacequeryjamesequaltwice0,000Startpanelsongsroundeightshiftworthpostsleadsweeksavoidthesemilesplanesmartalphaplantmarksratesplaysclaimsalestextsstarswrongthing.org/multiheardPowerstandtokensolid(thisbringshipsstafftriedcallsfullyfactsagentThis //-->adminegyptEvent15px;Emailtrue"crossspentblogsbox">notedleavechinasizesguestrobotheavytrue,sevengrandcrimesignsawaredancephase>
+
+
+name=diegopage swiss-->
+
+#fff;">Log.com"treatsheet) && 14px;sleepntentfiledja:ãƒid="cName"worseshots-box-delta
+<bears:48Z spendbakershops= "";php">ction13px;brianhellosize=o=%2F joinmaybe, fjsimg" ")[0]MTopBType"newlyDanskczechtrailknowsfaq">zh-cn10);
+-1");type=bluestrulydavis.js';>
+
+form jesus100% menu.
+
+walesrisksumentddingb-likteachgif" vegasdanskeestishqipsuomisobredesdeentretodospuedeañosestátienehastaotrospartedondenuevohacerformamismomejormundoaquÃdÃassóloayudafechatodastantomenosdatosotrassitiomuchoahoralugarmayorestoshorastenerantesfotosestaspaÃsnuevasaludforosmedioquienmesespoderchileserávecesdecirjoséestarventagrupohechoellostengoamigocosasnivelgentemismaairesjuliotemashaciafavorjuniolibrepuntobuenoautorabrilbuenatextomarzosaberlistaluegocómoenerojuegoperúhaberestoynuncamujervalorfueralibrogustaigualvotoscasosguÃapuedosomosavisousteddebennochebuscafaltaeurosseriedichocursoclavecasasleónplazolargoobrasvistaapoyojuntotratavistocrearcampohemoscincocargopisosordenhacenáreadiscopedrocercapuedapapelmenorútilclarojorgecalleponertardenadiemarcasigueellassiglocochemotosmadreclaserestoniñoquedapasarbancohijosviajepabloéstevienereinodejarfondocanalnorteletracausatomarmanoslunesautosvillavendopesartipostengamarcollevapadreunidovamoszonasambosbandamariaabusomuchasubirriojavivirgradochicaallÃjovendichaestantalessalirsuelopesosfinesllamabuscoéstalleganegroplazahumorpagarjuntadobleislasbolsabañohablaluchaÃreadicenjugarnotasvalleallácargadolorabajoestégustomentemariofirmacostofichaplatahogarartesleyesaquelmuseobasespocosmitadcielochicomiedoganarsantoetapadebesplayaredessietecortecoreadudasdeseoviejodeseaaguas"domaincommonstatuseventsmastersystemactionbannerremovescrollupdateglobalmediumfilternumberchangeresultpublicscreenchoosenormaltravelissuessourcetargetspringmodulemobileswitchphotosborderregionitselfsocialactivecolumnrecordfollowtitle>eitherlengthfamilyfriendlayoutauthorcreatereviewsummerserverplayedplayerexpandpolicyformatdoublepointsseriespersonlivingdesignmonthsforcesuniqueweightpeopleenergynaturesearchfigurehavingcustomoffsetletterwindowsubmitrendergroupsuploadhealthmethodvideosschoolfutureshadowdebatevaluesObjectothersrightsleaguechromesimplenoticesharedendingseasonreportonlinesquarebuttonimagesenablemovinglatestwinterFranceperiodstrongrepeatLondondetailformeddemandsecurepassedtoggleplacesdevicestaticcitiesstreamyellowattackstreetflighthiddeninfo">openedusefulvalleycausesleadersecretseconddamagesportsexceptratingsignedthingseffectfieldsstatesofficevisualeditorvolumeReportmuseummoviesparentaccessmostlymother" id="marketgroundchancesurveybeforesymbolmomentspeechmotioninsidematterCenterobjectexistsmiddleEuropegrowthlegacymannerenoughcareeransweroriginportalclientselectrandomclosedtopicscomingfatheroptionsimplyraisedescapechosenchurchdefinereasoncorneroutputmemoryiframepolicemodelsNumberduringoffersstyleskilledlistedcalledsilvermargindeletebetterbrowselimitsGlobalsinglewidgetcenterbudgetnowrapcreditclaimsenginesafetychoicespirit-stylespreadmakingneededrussiapleaseextentScriptbrokenallowschargedividefactormember-basedtheoryconfigaroundworkedhelpedChurchimpactshouldalwayslogo" bottomlist">){var prefixorangeHeader.push(couplegardenbridgelaunchReviewtakingvisionlittledatingButtonbeautythemesforgotSearchanchoralmostloadedChangereturnstringreloadMobileincomesupplySourceordersviewed courseAbout islandPhilipawardshandleimportOfficeregardskillsnationSportsdegreeweekly (e.g.behinddoctorloggedunitedbeyond-scaleacceptservedmarineFootercamera
+_form"leavesstress" />
+.gif" onloadloaderOxfordsistersurvivlistenfemaleDesignsize="appealtext">levelsthankshigherforcedanimalanyoneAfricaagreedrecentPeople
wonderpricesturned|| {};main">inlinesundaywrap">failedcensusminutebeaconquotes150px|estateremoteemail"linkedright;signalformal1.htmlsignupprincefloat:.png" forum.AccesspaperssoundsextendHeightsliderUTF-8"& Before. WithstudioownersmanageprofitjQueryannualparamsboughtfamousgooglelongeri++) {israelsayingdecidehome">headerensurebranchpiecesblock;statedtop">boston.test(avatartested_countforumsschemaindex,filledsharesreaderalert(appearSubmitline">body">
+* TheThoughseeingjerseyNews
+System DavidcancertablesprovedApril reallydriveritem">more">boardscolorscampusfirst || [];media.guitarfinishwidth:showedOther .php" assumelayerswilsonstoresreliefswedenCustomeasily your String
+
+Whiltaylorclear:resortfrenchthough") + "buyingbrandsMembername">oppingsector5px;">vspacepostermajor coffeemartinmaturehappenkansaslink">Images=falsewhile hspace0&
+
+In powerPolski-colorjordanBottomStart -count2.htmlnews">01.jpgOnline-rightmillerseniorISBN 00,000 guidesvalue)ectionrepair.xml" rights.html-blockregExp:hoverwithinvirginphones
using
+ var >');
+
+
+bahasabrasilgalegomagyarpolskisrpskiردوä¸æ–‡ç®€ä½“ç¹é«”ä¿¡æ¯ä¸å›½æˆ‘们一个公å¸ç®¡ç†è®ºå›å¯ä»¥æœåŠ¡æ—¶é—´ä¸ªäººäº§å“自己ä¼ä¸šæŸ¥çœ‹å·¥ä½œè”系没有网站所有评论ä¸å¿ƒæ–‡ç« 用户首页作者技术问题相关下载æœç´¢ä½¿ç”¨è½¯ä»¶åœ¨çº¿ä¸»é¢˜èµ„料视频回å¤æ³¨å†Œç½‘络收è—内容推è市场消æ¯ç©ºé—´å‘布什么好å‹ç”Ÿæ´»å›¾ç‰‡å‘展如果手机新闻最新方å¼åŒ—京æ供关于更多这个系统知é“游æˆå¹¿å‘Šå…¶ä»–å‘表安全第一会员进行点击版æƒç”µå世界设计å…è´¹æ•™è‚²åŠ å…¥æ´»åŠ¨ä»–ä»¬å•†å“åšå®¢çŽ°åœ¨ä¸Šæµ·å¦‚何已ç»ç•™è¨€è¯¦ç»†ç¤¾åŒºç™»å½•æœ¬ç«™éœ€è¦ä»·æ ¼æ”¯æŒå›½é™…链接国家建设朋å‹é˜…读法律ä½ç½®ç»æµŽé€‰æ‹©è¿™æ ·å½“å‰åˆ†ç±»æŽ’è¡Œå› ä¸ºäº¤æ˜“æœ€åŽéŸ³ä¹ä¸èƒ½é€šè¿‡è¡Œä¸šç§‘技å¯èƒ½è®¾å¤‡åˆä½œå¤§å®¶ç¤¾ä¼šç ”究专业全部项目这里还是开始情况电脑文件å“牌帮助文化资æºå¤§å¦å¦ä¹ 地å€æµè§ˆæŠ•èµ„工程è¦æ±‚怎么时候功能主è¦ç›®å‰èµ„讯城市方法电影招è˜å£°æ˜Žä»»ä½•å¥åº·æ•°æ®ç¾Žå›½æ±½è½¦ä»‹ç»ä½†æ˜¯äº¤æµç”Ÿäº§æ‰€ä»¥ç”µè¯æ˜¾ç¤ºä¸€äº›å•ä½äººå‘˜åˆ†æžåœ°å›¾æ—…游工具å¦ç”Ÿç³»åˆ—网å‹å¸–å密ç 频é“控制地区基本全国网上é‡è¦ç¬¬äºŒå–œæ¬¢è¿›å…¥å‹æƒ…这些考试å‘现培è®ä»¥ä¸Šæ”¿åºœæˆä¸ºçŽ¯å¢ƒé¦™æ¸¯åŒæ—¶å¨±ä¹å‘é€ä¸€å®šå¼€å‘作å“æ ‡å‡†æ¬¢è¿Žè§£å†³åœ°æ–¹ä¸€ä¸‹ä»¥åŠè´£ä»»æˆ–者客户代表积分女人数ç 销售出现离线应用列表ä¸åŒç¼–辑统计查询ä¸è¦æœ‰å…³æœºæž„很多æ’放组织政ç–直接能力æ¥æºæ™‚間看到çƒé—¨å…³é”®ä¸“区éžå¸¸è‹±è¯ç™¾åº¦å¸Œæœ›ç¾Žå¥³æ¯”较知识规定建议部门æ„è§ç²¾å½©æ—¥æœ¬æ高å‘言方é¢åŸºé‡‘处ç†æƒé™å½±ç‰‡é“¶è¡Œè¿˜æœ‰åˆ†äº«ç‰©å“ç»è¥æ·»åŠ 专家这ç§è¯é¢˜èµ·æ¥ä¸šåŠ¡å…¬å‘Šè®°å½•ç®€ä»‹è´¨é‡ç”·äººå½±å“引用报告部分快速咨询时尚注æ„申请å¦æ ¡åº”该历å²åªæ˜¯è¿”回è´ä¹°å称为了æˆåŠŸè¯´æ˜Žä¾›åº”å©å专题程åºä¸€èˆ¬æœƒå“¡åªæœ‰å…¶å®ƒä¿æŠ¤è€Œä¸”今天窗å£åŠ¨æ€çŠ¶æ€ç‰¹åˆ«è®¤ä¸ºå¿…须更新å°è¯´æˆ‘å€‘ä½œä¸ºåª’ä½“åŒ…æ‹¬é‚£ä¹ˆä¸€æ ·å›½å†…æ˜¯å¦æ ¹æ®ç”µè§†å¦é™¢å…·æœ‰è¿‡ç¨‹ç”±äºŽäººæ‰å‡ºæ¥ä¸è¿‡æ£åœ¨æ˜Žæ˜Ÿæ•…äº‹å…³ç³»æ ‡é¢˜å•†åŠ¡è¾“å…¥ä¸€ç›´åŸºç¡€æ•™å¦äº†è§£å»ºç‘结果全çƒé€šçŸ¥è®¡åˆ’对于艺术相册å‘生真的建立ç‰çº§ç±»åž‹ç»éªŒå®žçŽ°åˆ¶ä½œæ¥è‡ªæ ‡ç¾ä»¥ä¸‹åŽŸåˆ›æ— 法其ä¸å€‹äººä¸€åˆ‡æŒ‡å—å…³é—é›†å›¢ç¬¬ä¸‰å…³æ³¨å› æ¤ç…§ç‰‡æ·±åœ³å•†ä¸šå¹¿å·žæ—¥æœŸé«˜çº§æœ€è¿‘综åˆè¡¨ç¤ºä¸“辑行为交通评价觉得精åŽå®¶åºå®Œæˆæ„Ÿè§‰å®‰è£…得到邮件制度食å“虽然转载报价记者方案行政人民用å“东西æ出酒店然åŽä»˜æ¬¾çƒç‚¹ä»¥å‰å®Œå…¨å‘帖设置领导工业医院看看ç»å…¸åŽŸå› å¹³å°å„ç§å¢žåŠ æ料新增之åŽèŒä¸šæ•ˆæžœä»Šå¹´è®ºæ–‡æˆ‘国告诉版主修改å‚与打å°å¿«ä¹æœºæ¢°è§‚点å˜åœ¨ç²¾ç¥žèŽ·å¾—利用继ç»ä½ 们这么模å¼è¯è¨€èƒ½å¤Ÿé›…虎æ“ä½œé£Žæ ¼ä¸€èµ·ç§‘å¦ä½“育çŸä¿¡æ¡ä»¶æ²»ç–—è¿åŠ¨äº§ä¸šä¼šè®®å¯¼èˆªå…ˆç”Ÿè”盟å¯æ˜¯å•é¡Œç»“构作用调查資料自动负责农业访问实施接å—讨论那个åé¦ˆåŠ å¼ºå¥³æ€§èŒƒå›´æœå‹™ä¼‘闲今日客æœè§€çœ‹å‚åŠ çš„è¯ä¸€ç‚¹ä¿è¯å›¾ä¹¦æœ‰æ•ˆæµ‹è¯•ç§»åŠ¨æ‰èƒ½å†³å®šè‚¡ç¥¨ä¸æ–需求ä¸å¾—办法之间采用è¥é”€æŠ•è¯‰ç›®æ ‡çˆ±æƒ…摄影有些複製文å¦æœºä¼šæ•°å—装修è´ç‰©å†œæ‘å…¨é¢ç²¾å“其实事情水平æç¤ºä¸Šå¸‚è°¢è°¢æ™®é€šæ•™å¸ˆä¸Šä¼ ç±»åˆ«æŒæ›²æ‹¥æœ‰åˆ›æ–°é…件åªè¦æ—¶ä»£è³‡è¨Šè¾¾åˆ°äººç”Ÿè®¢é˜…è€å¸ˆå±•ç¤ºå¿ƒç†è´´å網站主題自然级别简å•æ”¹é©é‚£äº›æ¥è¯´æ‰“开代ç åˆ é™¤è¯åˆ¸èŠ‚ç›®é‡ç‚¹æ¬¡æ•¸å¤šå°‘规划资金找到以åŽå¤§å…¨ä¸»é¡µæœ€ä½³å›žç”天下ä¿éšœçŽ°ä»£æ£€æŸ¥æŠ•ç¥¨å°æ—¶æ²’有æ£å¸¸ç”šè‡³ä»£ç†ç›®å½•å…¬å¼€å¤åˆ¶é‡‘èžå¹¸ç¦ç‰ˆæœ¬å½¢æˆå‡†å¤‡è¡Œæƒ…回到æ€æƒ³æ€Žæ ·å议认è¯æœ€å¥½äº§ç”ŸæŒ‰ç…§æœè£…广东动漫采è´æ–°æ‰‹ç»„图é¢æ¿å‚考政治容易天地努力人们å‡çº§é€Ÿåº¦äººç‰©è°ƒæ•´æµè¡Œé€ æˆæ–‡å—韩国贸易开展相關表现影视如æ¤ç¾Žå®¹å¤§å°æŠ¥é“æ¡æ¬¾å¿ƒæƒ…许多法规家居书店连接立å³ä¸¾æŠ¥æŠ€å·§å¥¥è¿ç™»å…¥ä»¥æ¥ç†è®ºäº‹ä»¶è‡ªç”±ä¸åŽåŠžå…¬å¦ˆå¦ˆçœŸæ£ä¸é”™å…¨æ–‡åˆåŒä»·å€¼åˆ«äººç›‘ç£å…·ä½“世纪团队创业承担增长有人ä¿æŒå•†å®¶ç»´ä¿®å°æ¹¾å·¦å³è‚¡ä»½ç”案实际电信ç»ç†ç”Ÿå‘½å®£ä¼ 任务æ£å¼ç‰¹è‰²ä¸‹æ¥å会åªèƒ½å½“然é‡æ–°å…§å®¹æŒ‡å¯¼è¿è¡Œæ—¥å¿—賣家超过土地浙江支付推出站长æå·žæ‰§è¡Œåˆ¶é€ ä¹‹ä¸€æŽ¨å¹¿çŽ°åœºæè¿°å˜åŒ–ä¼ ç»ŸæŒæ‰‹ä¿é™©è¯¾ç¨‹åŒ»ç–—ç»è¿‡è¿‡åŽ»ä¹‹å‰æ”¶å…¥å¹´åº¦æ‚志美丽最高登陆未æ¥åŠ å·¥å…责教程版å—身体é‡åº†å‡ºå”®æˆæœ¬å½¢å¼åœŸè±†å‡ºåƒ¹ä¸œæ–¹é‚®ç®±å—京求èŒå–å¾—èŒä½ç›¸ä¿¡é¡µé¢åˆ†é’Ÿç½‘页确定图例网å€ç§¯æžé”™è¯¯ç›®çš„å®è´æœºå…³é£Žé™©æŽˆæƒç—…æ¯’å® ç‰©é™¤äº†è©•è«–ç–¾ç—…åŠæ—¶æ±‚è´ç«™ç‚¹å„¿ç«¥æ¯å¤©ä¸å¤®è®¤è¯†æ¯ä¸ªå¤©æ´¥å—体å°ç£ç»´æŠ¤æœ¬é¡µä¸ªæ€§å®˜æ–¹å¸¸è§ç›¸æœºæˆ˜ç•¥åº”å½“å¾‹å¸ˆæ–¹ä¾¿æ ¡å›è‚¡å¸‚房屋æ 目员工导致çªç„¶é“具本网结åˆæ¡£æ¡ˆåŠ³åŠ¨å¦å¤–美元引起改å˜ç¬¬å››ä¼šè®¡èªªæ˜Žéšç§å®å®è§„范消费共åŒå¿˜è®°ä½“系带æ¥åå—ç™¼è¡¨å¼€æ”¾åŠ ç›Ÿå—到二手大é‡æˆäººæ•°é‡å…±äº«åŒºåŸŸå¥³å©åŽŸåˆ™æ‰€åœ¨ç»“æŸé€šä¿¡è¶…级é…置当时优秀性感房产éŠæˆ²å‡ºå£æ交就业ä¿å¥ç¨‹åº¦å‚数事业整个山东情感特殊分類æœå°‹å±žäºŽé—¨æˆ·è´¢åŠ¡å£°éŸ³åŠå…¶è´¢ç»åšæŒå¹²éƒ¨æˆç«‹åˆ©ç›Šè€ƒè™‘æˆéƒ½åŒ…装用戶比赛文明招商完整真是眼ç›ä¼™ä¼´å¨æœ›é¢†åŸŸå«ç”Ÿä¼˜æƒ 論壇公共良好充分符åˆé™„件特点ä¸å¯è‹±æ–‡èµ„äº§æ ¹æœ¬æ˜Žæ˜¾å¯†ç¢¼å…¬ä¼—æ°‘æ—æ›´åŠ äº«å—åŒå¦å¯åŠ¨é€‚åˆåŽŸæ¥é—®ç”本文美食绿色稳定终于生物供求æœç‹åŠ›é‡ä¸¥é‡æ°¸è¿œå†™çœŸæœ‰é™ç«žäº‰å¯¹è±¡è´¹ç”¨ä¸å¥½ç»å¯¹å分促进点评影音优势ä¸å°‘欣èµå¹¶ä¸”有点方å‘å…¨æ–°ä¿¡ç”¨è®¾æ–½å½¢è±¡èµ„æ ¼çªç ´éšç€é‡å¤§äºŽæ˜¯æ¯•ä¸šæ™ºèƒ½åŒ–å·¥å®Œç¾Žå•†åŸŽç»Ÿä¸€å‡ºç‰ˆæ‰“é€ ç”¢å“概况用于ä¿ç•™å› ç´ ä¸åœ‹å˜å‚¨è´´å›¾æœ€æ„›é•¿æœŸå£ä»·ç†è´¢åŸºåœ°å®‰æŽ’æ¦æ±‰é‡Œé¢åˆ›å»ºå¤©ç©ºé¦–先完善驱动下é¢ä¸å†è¯šä¿¡æ„义阳光英国漂亮军事玩家群众农民å³å¯å稱家具动画想到注明å°å¦æ€§èƒ½è€ƒç ”硬件观看清楚æžç¬‘首é 黄金适用江è‹çœŸå®žä¸»ç®¡é˜¶æ®µè¨»å†Šç¿»è¯‘æƒåˆ©åšå¥½ä¼¼ä¹Žé€šè®¯æ–½å·¥ç‹€æ…‹ä¹Ÿè®¸çŽ¯ä¿åŸ¹å…»æ¦‚念大型机票ç†è§£åŒ¿åcuandoenviarmadridbuscariniciotiempoporquecuentaestadopuedenjuegoscontraestánnombretienenperfilmaneraamigosciudadcentroaunquepuedesdentroprimerpreciosegúnbuenosvolverpuntossemanahabÃaagostonuevosunidoscarlosequiponiñosmuchosalgunacorreoimagenpartirarribamarÃahombreempleoverdadcambiomuchasfueronpasadolÃneaparecenuevascursosestabaquierolibroscuantoaccesomiguelvarioscuatrotienesgruposseráneuropamediosfrenteacercademásofertacochesmodeloitalialetrasalgúncompracualesexistecuerposiendoprensallegarviajesdineromurciapodrápuestodiariopuebloquieremanuelpropiocrisisciertoseguromuertefuentecerrargrandeefectopartesmedidapropiaofrecetierrae-mailvariasformasfuturoobjetoseguirriesgonormasmismosúnicocaminositiosrazóndebidopruebatoledotenÃajesúsesperococinaorigentiendacientocádizhablarserÃalatinafuerzaestiloguerraentraréxitolópezagendavÃdeoevitarpaginametrosjavierpadresfácilcabezaáreassalidaenvÃojapónabusosbienestextosllevarpuedanfuertecomúnclaseshumanotenidobilbaounidadestáseditarcreadoдлÑчтокакилиÑтовÑеегопритакещеужеКакбезбылониВÑеподÐтотомчемнетлетразонагдемнеДлÑПринаÑнихтемктогодвоттамСШÐмаÑЧтоваÑвамемуТакдванамÑтиÑтуВамтехпротутнадднÑВоттринейВаÑнимÑамтотрубОнимирнееОООлицÑтаОнанемдоммойдвеоноÑудकेहैकीसेकाकोऔरपरनेà¤à¤•à¤•à¤¿à¤à¥€à¤‡à¤¸à¤•à¤°à¤¤à¥‹à¤¹à¥‹à¤†à¤ªà¤¹à¥€à¤¯à¤¹à¤¯à¤¾à¤¤à¤•à¤¥à¤¾jagranआजजोअबदोगईजागà¤à¤¹à¤®à¤‡à¤¨à¤µà¤¹à¤¯à¥‡à¤¥à¥‡à¤¥à¥€à¤˜à¤°à¤œà¤¬à¤¦à¥€à¤•à¤ˆà¤œà¥€à¤µà¥‡à¤¨à¤ˆà¤¨à¤à¤¹à¤°à¤‰à¤¸à¤®à¥‡à¤•à¤®à¤µà¥‹à¤²à¥‡à¤¸à¤¬à¤®à¤ˆà¤¦à¥‡à¤“रआमबसà¤à¤°à¤¬à¤¨à¤šà¤²à¤®à¤¨à¤†à¤—सीलीعلىإلىهذاآخرعددالىهذهصورغيركانولابينعرضذلكهنايومقالعليانالكنØتىقبلوØةاخرÙقطعبدركنإذاكمااØدإلاÙيهبعضكيÙبØثومنوهوأناجدالهاسلمعندليسعبرصلىمنذبهاأنهمثلكنتالاØيثمصرشرØØولوÙياذالكلمرةانتالÙأبوخاصأنتانهاليعضووقدابنخيربنتلكمشاءوهيابوقصصومارقمأØدنØنعدمرأياØةكتبدونيجبمنهتØتجهةسنةيتمكرةغزةنÙسبيتللهلناتلكقلبلماعنهأولشيءنورأماÙيكبكلذاترتببأنهمسانكبيعÙقدØسنلهمشعرأهلشهرقطرطلبprofileservicedefaulthimselfdetailscontentsupportstartedmessagesuccessfashioncountryaccountcreatedstoriesresultsrunningprocesswritingobjectsvisiblewelcomearticleunknownnetworkcompanydynamicbrowserprivacyproblemServicerespectdisplayrequestreservewebsitehistoryfriendsoptionsworkingversionmillionchannelwindow.addressvisitedweathercorrectproductedirectforwardyou canremovedsubjectcontrolarchivecurrentreadinglibrarylimitedmanagerfurthersummarymachineminutesprivatecontextprogramsocietynumberswrittenenabledtriggersourcesloadingelementpartnerfinallyperfectmeaningsystemskeepingculture",journalprojectsurfaces"expiresreviewsbalanceEnglishContentthroughPlease opinioncontactaverageprimaryvillageSpanishgallerydeclinemeetingmissionpopularqualitymeasuregeneralspeciessessionsectionwriterscounterinitialreportsfiguresmembersholdingdisputeearlierexpressdigitalpictureAnothermarriedtrafficleadingchangedcentralvictoryimages/reasonsstudiesfeaturelistingmust beschoolsVersionusuallyepisodeplayinggrowingobviousoverlaypresentactions
+wrapperalreadycertainrealitystorageanotherdesktopofferedpatternunusualDigitalcapitalWebsitefailureconnectreducedAndroiddecadesregular & animalsreleaseAutomatgettingmethodsnothingPopularcaptionletterscapturesciencelicensechangesEngland=1&History = new CentralupdatedSpecialNetworkrequirecommentwarningCollegetoolbarremainsbecauseelectedDeutschfinanceworkersquicklybetweenexactlysettingdiseaseSocietyweaponsexhibit<!--Controlclassescoveredoutlineattacksdevices(windowpurposetitle="Mobile killingshowingItaliandroppedheavilyeffects-1']);
+confirmCurrentadvancesharingopeningdrawingbillionorderedGermanyrelatedincludewhetherdefinedSciencecatalogArticlebuttonslargestuniformjourneysidebarChicagoholidayGeneralpassage,"animatefeelingarrivedpassingnaturalroughly.
+
+The but notdensityBritainChineselack oftributeIreland" data-factorsreceivethat isLibraryhusbandin factaffairsCharlesradicalbroughtfindinglanding:lang="return leadersplannedpremiumpackageAmericaEdition]"Messageneed tovalue="complexlookingstationbelievesmaller-mobilerecordswant tokind ofFirefoxyou aresimilarstudiedmaximumheadingrapidlyclimatekingdomemergedamountsfoundedpioneerformuladynastyhow to SupportrevenueeconomyResultsbrothersoldierlargelycalling."AccountEdward segmentRobert effortsPacificlearnedup withheight:we haveAngelesnations_searchappliedacquiremassivegranted: falsetreatedbiggestbenefitdrivingStudiesminimumperhapsmorningsellingis usedreversevariant role="missingachievepromotestudentsomeoneextremerestorebottom:evolvedall thesitemapenglishway to AugustsymbolsCompanymattersmusicalagainstserving})();
+paymenttroubleconceptcompareparentsplayersregionsmonitor ''The winningexploreadaptedGalleryproduceabilityenhancecareers). The collectSearch ancientexistedfooter handlerprintedconsoleEasternexportswindowsChannelillegalneutralsuggest_headersigning.html">settledwesterncausing-webkitclaimedJusticechaptervictimsThomas mozillapromisepartieseditionoutside:false,hundredOlympic_buttonauthorsreachedchronicdemandssecondsprotectadoptedprepareneithergreatlygreateroverallimprovecommandspecialsearch.worshipfundingthoughthighestinsteadutilityquarterCulturetestingclearlyexposedBrowserliberal} catchProjectexamplehide();FloridaanswersallowedEmperordefenseseriousfreedomSeveral-buttonFurtherout of != nulltrainedDenmarkvoid(0)/all.jspreventRequestStephen
+
+When observe
+Modern provide" alt="borders.
+
+For
+
+Many artistspoweredperformfictiontype ofmedicalticketsopposedCouncilwitnessjusticeGeorge Belgium...twitternotablywaitingwarfare Other rankingphrasesmentionsurvivescholar
+ Countryignoredloss ofjust asGeorgiastrange
+ severalbecomesselect wedding00.htmlmonarchoff theteacherhighly biologylife ofor evenrise of»plusonehunting(thoughDouglasjoiningcirclesFor theAncientVietnamvehiclesuch ascrystalvalue =Windowsenjoyeda smallassumed